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?

KennyPowers
źródło
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"}'
cudds
źródło
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
thaavik
źródło
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.

endriju
źródło
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.

markusk
źródło
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[])]"
Christophera Hacketta
źródło
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

JScoobyCed
źródło
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.

rowelee
źródło
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';
?>
JonLovett
źródło
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.

ruletkin
źródło
5

Pobieranie dużych rozmiarów wiader za pośrednictwem interfejsu API (albo aws cli, albo s4cmd) jest dość powolne. Oto moje HowTo wyjaśniające, jak analizować raport użycia S3 za pomocą bash one liner:

cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n
Jakub Głazik
źródło
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.

Geoff Appleford
źródło
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.

Evgeny Goldin
źródło
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

user7191982
źródło
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.

Yiannis Tsimalis
źródło
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.

maksion
źródło
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ń.

Danny Schoemann
źródło
-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.

Sangram Anand
źródło
8
Uważaj na to oprogramowanie. Instaluje dodatkowe rozszerzenia Chrome i wydaje się być raczej spamerską.
styks