AWS S3: jak sprawdzić, ile miejsca na dysku jest używane


113

Mam konto AWS. Używam S3 do przechowywania kopii zapasowych z różnych serwerów. Pytanie, czy w konsoli AWS są jakieś informacje o tym, ile miejsca na dysku jest używane w mojej chmurze S3?


1
Musisz pobrać wszystkie obiekty, a następnie zsumować rozmiary wszystkich plików. Nie możesz tego zrobić w jednej operacji.
— Layke

To dziwne, że nie ma prawdziwego rozwiązania tego problemu. Przeglądanie wszystkich pozycji i obliczanie nie jest rozwiązaniem, jeśli masz 10 milionów plików! W interfejsie użytkownika AWS s3 można łatwo zobaczyć użycie w sekcji Zarządzanie -> Metryki. Dlaczego nie ma sposobu, aby uzyskać to z wiersza poleceń?
— Sarang

Odpowiedzi:


117

Yippe - aktualizacja AWS CLI pozwala na rekurencyjne ls przez buckets ...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

print total / 1024/1024/1024 * .03 daje niezłe oszacowanie wykorzystania $, jeśli masz mniej niż 1 TB. @cudds awesomeness - wielkie dzięki !!!
— chrislovecnm

4
Nie potrzebujesz części grep, jeśli masz jedno wiadro.
— jpbochi

7
AWS Cloudwatch ma teraz metrykę rozmiaru zasobnika i liczby obiektów, która jest aktualizowana codziennie. Najwyższy czas! aws.amazon.com/blogs/aws/…
— cudds

3
Przykład aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 --period 86400 --statistics Average --region eu-west-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=toukakoukan.com Name=StorageType,Value=StandardStorage Ważne: musisz określić zarówno StorageType, jak i BucketName w argumencie Dimensions, w przeciwnym razie nie otrzymasz żadnych wyników.
— Sam Martin

@SamMartin jaki powinien być typ pamięci? Również ta odpowiedź zajmuje bardzo dużo czasu, aby obliczyć dla
— zasobników

104

Nie jestem pewien, kiedy dodano to do AWSCLI, biorąc pod uwagę, że oryginalne pytanie było 3 lata temu, ale narzędzie wiersza poleceń daje ładne podsumowanie, uruchamiając:

aws s3 ls s3://mybucket --recursive --human-readable --summarize

4
Twoja i Christophera to zdecydowanie najlepsze odpowiedzi.
— Michael Ahlers,

2
Znacznie prostsze rozwiązanie niż przyjęta odpowiedź. Dzięki!
— Adrian Macneil,

1
to nie pokazuje prawdziwego rozmiaru z wersjami. Czy istnieje sposób sprawdzenia całkowitego rozmiaru łyżki s3 we wszystkich wersjach?
— Shanika Ediriweera

1
Wydrukuj całkowity rozmiar każdego z twoich wiader:for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
— Matt White

69

Aby sprawdzić rozmiar wiadra S3 za pomocą konsoli AWS:

  1. Kliknij nazwę zasobnika S3
  2. Wybierz zakładkę „Zarządzanie”
  3. Kliknij przycisk nawigacyjny „Dane”
  4. Domyślnie powinieneś zobaczyć metrykę pamięci zasobnika

Mam nadzieję że to pomoże.


3
Działa to szybciej, jeśli Twój zasobnik ma TB danych. Zaakceptowane odpowiedzi zajmują dużo czasu, aby obliczyć wszystkie obiekty w tej skali.
— sokras

Należy również zauważyć, że spowoduje to przechwycenie zawieszonych niekompletnych wysyłanych plików, a lsrozwiązania oparte na rozwiązaniach nie.
— David Moles,

najszybszym sposobem na to jest ta odpowiedź
— Mohammad Zekrallah

36

s3cmd może ci to pokazać, uruchamiając s3cmd du, opcjonalnie przekazując nazwę zasobnika jako argument.


1
FYI - próbowałem tego i wersji AWS CLI w odpowiedzi cudds. Oba działają dobrze, ale s3cmd był znacznie wolniejszy w przypadkach, które wypróbowałem od wersji 1.5.0-rc1.
— DougW,

@DougW: Dzięki, przydatne informacje. AWS CLI 1.0.0 został wydany we wrześniu 2013 roku , więc nie istniał w momencie, gdy pisałem odpowiedź.
— markusk

s3cmd nie obsługuje mieszania AWS4, więc nie będzie działać z żadnymi nowymi regionami, w tym z regionem UE „eu-central-1”
— Koen.

@Koen .: Dzięki, nie wiedziałem o tym. Wygląda na to, że opiekun s3cmd rozważa dodanie obsługi AWS4: github.com/s3tools/s3cmd/issues/402
— markusk

@Koen .: s3cmd obsługuje teraz mieszanie AWS4 od wersji 1.5.0, która została wydana 2015-01-12. Zobacz s3tools.org/news .
— markusk

28

Interfejs wiersza polecenia AWS obsługuje teraz --queryparametr, który przyjmuje wyrażenia JMESPath .

Oznacza to, że możesz zsumować podane wartości rozmiaru za list-objectspomocą sum(Contents[].Size)i policzyć podobnie length(Contents[]).

Można to uruchomić za pomocą oficjalnego interfejsu wiersza polecenia AWS, jak poniżej i zostało wprowadzone w lutym 2014 r

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"

Musiałem użyć podwójnych cudzysłowów wokół ciągu zapytania w wierszu poleceń systemu Windows. Działa jednak jak mistrz.
— Travis Steel

Uwaga: jeśli zasobnik jest pusty, polecenie zakończy się niepowodzeniem z następującym błędem: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"W przeciwnym razie zapytanie działa świetnie!
— mechatroner

7

Na Linuksie, które mają python(z pipinstalatorem) grepi awkzainstaluj AWS CLI (narzędzia wiersza poleceń dla EC2, S3 i wielu innych usług)

sudo pip install awscli

następnie utwórz .awssecretplik w swoim katalogu domowym z zawartością jak poniżej (dostosuj klucz, sekret i region według potrzeb):

[default]
aws_access_key_id=<YOUR_KEY_HERE>
aws_secret_access_key=<YOUR_SECRET_KEY_HERE>
region=<AWS_REGION>

Ustaw ten plik tylko do odczytu i zapisu dla Twojego użytkownika:

sudo chmod 600 .awssecret

i wyeksportuj go do swojego środowiska

 export AWS_CONFIG_FILE=/home/<your_name>/.awssecret

następnie uruchom w terminalu (jest to polecenie jednowierszowe, oddzielone znakiem \dla ułatwienia czytania):

aws s3 ls s3://<bucket_name>/foo/bar | \
grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | \
awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
  • awsczęść wymieniono wiadro lub ewentualnie (a „podkatalogu”)
  • na grepusunięcie części (za pomocą -v) linii pasujących wyrażenie regularne (używając -E). ^$jest dla pustej linii, --jest dla linii separatora na wyjściuaws s3 ls
  • ostatni awkpo prostu dodaj do totaltrzeciej kolumny wynikowego wyniku (rozmiar w KB), a następnie wyświetl go na końcu

UWAGA to polecenie działa dla bieżącego zasobnika lub „folderu”, a nie rekurencyjnie


7

Zegarek w chmurze umożliwia również tworzenie wskaźników dla Twojego segmentu S3. Pokazuje metryki według rozmiaru i liczby obiektów. Usługi> Narzędzia do zarządzania> Zegarek w chmurze. Wybierz region, w którym znajduje się Twój zasobnik S3, a metryki rozmiaru i liczby obiektów będą wśród tych dostępnych danych.


6

Zobacz /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

Odpowiedział Vic ...

<?php
if (!class_exists('S3')) require_once 'S3.php';

// Instantiate the class
$s3 = new S3('accessKeyId', 'secretAccessKey');
S3::$useSSL = false;

// List your buckets:
echo "S3::listBuckets(): ";
echo '<pre>' . print_r($s3->listBuckets(), 1). '</pre>';

$totalSize = 0;
$objects = $s3->getBucket('name-of-your-bucket');
foreach ($objects as $name => $val) {
    // If you want to get the size of a particular directory, you can do
    // only that.
    // if (strpos($name, 'directory/sub-directory') !== false)
    $totalSize += $val['size'];
}

echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
?>

Czy wiesz, czy gigabajt w tym przypadku to 1024 3 czy 1000 3? Trudno mi znaleźć ostateczne stwierdzenie S3.
— dfrankow

@dfrankow Linia echo ($totalSize / 1024 / 1024 / 1024) . ' GB';znajduje się na dole kodu źródłowego.
— MJD,

@MJD Nie pamiętam, co myślałem tutaj. Pytał o użycie słowa „gigabyte” przez s3cmd lub S3, a nie o ten kod PHP.
— dfrankow

5

Oprócz odpowiedzi Christophera.

Jeśli chcesz policzyć całkowity rozmiar zasobnika z wersjami, użyj:

aws s3api list-object-versions --bucket BUCKETNAME --output json --query "[sum(Versions[].Size)]"

Uwzględnia zarówno najnowsze, jak i zarchiwizowane wersje.



1

Konsola AWS nie pokaże tego, ale możesz użyć Bucket Explorer lub Cloudberry Explorer, aby uzyskać całkowity rozmiar wiadra. Oba mają dostępne bezpłatne wersje.

Uwaga: te produkty nadal muszą uzyskać rozmiar każdego pojedynczego przedmiotu, więc w przypadku wiader z wieloma przedmiotami może to zająć dużo czasu.


Jednak widzę tylko wersję próbną. Czy ta oferta została usunięta?
— Trefex

1

Na podstawie odpowiedzi @ cudds:

function s3size()
{
    for path in $*; do
        size=$(aws s3 ls "s3://$path" --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{printf "%.2fGb\n", (total/1024/1024/1024)}')
        echo "[s3://$path]=[$size]"
    done
}

...

$ s3size bucket-a bucket-b/dir
[s3://bucket-a]=[24.04Gb]
[s3://bucket-b/dir]=[26.69Gb]

Ponadto Cyberduck w wygodny sposób pozwala obliczyć rozmiar wiadra lub folderu.



1

To jest stare zapytanie, ale ponieważ szukałem odpowiedzi, trafiłem na nie. Niektóre odpowiedzi przypomniały mi, że używam przeglądarki S3 do zarządzania danymi. Możesz kliknąć wiadro i kliknąć właściwości, a zobaczysz sumę. Dość proste. Bardzo polecam przeglądarkę: https://s3browser.com/default.aspx?v=6-1-1&fam=x64


0

Cóż, możesz to zrobić również za pośrednictwem klienta S3, jeśli wolisz przyjazny dla człowieka interfejs użytkownika.

Używam CrossFTP , który jest darmowy i wieloplatformowy i tam możesz kliknąć prawym przyciskiem myszy katalog folderu -> wybierz "Właściwości ..." -> kliknij przycisk "Oblicz" obok Rozmiaru i voila.


0

s3admin to aplikacja typu opensource (UI), która umożliwia przeglądanie zasobników, obliczanie całkowitego rozmiaru, wyświetlanie największych / najmniejszych plików. Jest dostosowany do szybkiego przeglądu Twoich zasobników i ich wykorzystania.


0

Zapytałeś: informacje w konsoli AWS o tym, ile miejsca na dysku zajmuje moja chmura S3 ?

I tak do Panelu Rozliczeń i sprawdzam użycie S3 na aktualnym rachunku .

Podają informacje - MTD - w GB do 6 miejsc po przecinku, IOW, do poziomu Kb.

Jest podzielony na regiony, ale dodanie ich (zakładając, że używasz więcej niż jednego regionu) jest dość łatwe.

BTW: aby uzyskać dostęp do informacji rozliczeniowych, możesz potrzebować określonych uprawnień.


-2

Używam Cloud Turtle, aby uzyskać rozmiar poszczególnych wiader. Jeśli rozmiar wiadra przekracza> 100 Gb, wyświetlenie rozmiaru zajmie trochę czasu. Cloud Turtle jest programem darmowym.


8
Uważaj na to oprogramowanie. Instaluje dodatkowe rozszerzenia Chrome i wydaje się być raczej spamerską.
— styks
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.