AWS S3: Wie sehe ich, wie viel Speicherplatz verwendet wird?

112

Ich habe ein AWS-Konto. Ich verwende S3, um Backups von verschiedenen Servern zu speichern. Die Frage: Gibt es in der AWS-Konsole Informationen darüber, wie viel Speicherplatz in meiner S3-Cloud verwendet wird?

KennyPowers
quelle
1
Sie müssen alle Objekte abrufen und dann alle Dateigrößen zusammenfassen. Sie können es nicht in einer einzigen Operation tun.
Layke
Es ist seltsam, dass es für dieses Problem keine wirkliche Lösung gibt. Alle Elemente durchzugehen und zu berechnen ist keine Lösung, wenn Sie 10 Millionen Dateien haben! In der s3-Benutzeroberfläche von AWS können Sie die Verwendung unter Verwaltung -> Metriken leicht sehen. Warum gibt es keine Möglichkeit, dies über die Befehlszeile abzurufen?
Sarang

Antworten:

116

Yippe - ein Update auf AWS CLI ermöglicht es Ihnen, rekursiv durch Eimer zu ls ...

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
quelle
print total / 1024/1024/1024 * .03 gibt eine gute Schätzung für die Verwendung von $ an, wenn Sie unter 1 TB sind. @cudds awesomeness - vielen Dank !!!
chrislovecnm
4
Sie brauchen den grep-Teil nicht, wenn Sie einen einzelnen Eimer haben.
Jpbochi
7
AWS Cloudwatch verfügt jetzt über eine Metrik für die Bucket-Größe und die Anzahl der Objekte, die täglich aktualisiert wird. Über die Zeit! aws.amazon.com/blogs/aws/…
cudds
3
Beispiel 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 Wichtig: Sie müssen sowohl StorageType als auch BucketName im Dimensionsargument angeben, sonst erhalten Sie keine Ergebnisse.
Sam Martin
@SamMartin Was muss StorageType sein? Auch diese Antwort dauert sehr lange, um für Eimer größer als 100 GB zu berechnen
Vivek Katial
104

Ich bin mir nicht sicher, wann dies zur AWSCLI hinzugefügt wurde, da die ursprüngliche Frage vor 3 Jahren gestellt wurde, aber das Befehlszeilentool bietet eine schöne Zusammenfassung, indem es Folgendes ausführt:

aws s3 ls s3://mybucket --recursive --human-readable --summarize
thaavik
quelle
4
Ihre und Christophers sind bei weitem die besten Antworten.
Michael Ahlers
2
Viel einfachere Lösung als die akzeptierte Antwort. Vielen Dank!
Adrian Macneil
1
Dies zeigt nicht die wahre Größe bei Versionen. Gibt es eine Möglichkeit, die Gesamtgröße des s3-Buckets bei allen Versionen zu überprüfen?
Shanika Ediriweera
1
Drucken Sie die Gesamtgröße jedes Ihrer Eimer aus: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

So ermitteln Sie die Größe des S3-Buckets mithilfe der AWS-Konsole:

  1. Klicken Sie auf den Namen des S3-Buckets
  2. Wählen Sie die Registerkarte "Management"
  3. Klicken Sie auf die Navigationsschaltfläche "Metriken"
  4. Standardmäßig sollte die Speichermetrik des Buckets angezeigt werden

Hoffe das hilft.

endriju
quelle
3
Dies funktioniert schneller, wenn Ihr Bucket TBs an Daten enthält. Die akzeptierten Antworten benötigen viel Zeit, um alle Objekte in dieser Skala zu berechnen.
Sokras
Beachten Sie auch, dass dadurch hängende unvollständige Uploads erfasst werden, bei den lsbasierten Lösungen jedoch nicht.
David Moles
Der schnellste Weg, dies zu tun, ist diese Antwort
Mohammad Zekrallah,
36

s3cmd kann Ihnen dies zeigen, indem es ausgeführt wird s3cmd duund optional den Bucket-Namen als Argument übergibt.

Markusk
quelle
1
Zu Ihrer Information - Ich habe dies versucht und die aws cli-Version in cudds antwortet. Beide funktionieren einwandfrei, aber s3cmd war in den Fällen, die ich ab Release 1.5.0-rc1 ausprobiert habe, deutlich langsamer.
DougW
@DougW: Danke, nützliche Infos. AWS CLI 1.0.0 wurde im September 2013 veröffentlicht und war zum Zeitpunkt des Schreibens meiner Antwort noch nicht vorhanden.
Markusk
s3cmd unterstützt kein AWS4-Hashing und funktioniert daher nicht mit neuen Regionen, einschließlich der EU-Region "eu-central-1"
Koen.
@Koen.: Danke, das war mir nicht bewusst. Anscheinend versucht der s3cmd-Betreuer, Unterstützung für AWS4 hinzuzufügen: github.com/s3tools/s3cmd/issues/402
markusk
@Koen.: S3cmd unterstützt jetzt AWS4-Hashing ab 1.5.0, das am 12.01.2015 veröffentlicht wurde. Siehe s3tools.org/news .
Markusk
28

Die AWS CLI unterstützt jetzt die --query Parameter, der einen JMESPath akzeptiert Ausdrücke .

Dies bedeutet, dass Sie die angegebenen Größenwerte mit list-objectsverwenden könnensum(Contents[].Size) und zählen können length(Contents[]).

Dies kann mit der offiziellen AWS-CLI wie folgt ausgeführt werden und wurde im Februar 2014 eingeführt

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
Christopher Hackett
quelle
Ich musste doppelte Anführungszeichen um die Abfragezeichenfolge in der Windows-Befehlszeile verwenden. Funktioniert aber wie ein Champion.
Travis Steel
Achtung: Wenn der Bucket leer ist, schlägt der Befehl mit folgendem Fehler fehl: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null"Andernfalls funktioniert die Abfrage hervorragend!
Mechatroner
7

Unter Linux-Box mit python(mit pipInstallationsprogramm) grepund awkAWS CLI installieren (Befehlszeilentools für EC2, S3 und viele andere Dienste)

sudo pip install awscli

Erstellen Sie dann eine .awssecretDatei in Ihrem Home-Ordner mit dem folgenden Inhalt (passen Sie Schlüssel, Geheimnis und Region nach Bedarf an):

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

Lassen Sie diese Datei nur für Ihren Benutzer lesen und schreiben:

sudo chmod 600 .awssecret

und exportieren Sie es in Ihre Umgebung

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

Führen Sie dann das Terminal aus (dies ist ein einzeiliger Befehl, der \zum leichteren Lesen hier durch getrennt ist):

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"}'
  • Das awsTeil listet den Bucket auf (oder optional einen 'Unterordner').
  • Der grepTeil entfernt (mit -v) die Zeilen, die mit dem regulären Ausdruck übereinstimmen (mit -E). ^$ist für leere Zeile,-- steht für die Trennlinien in der Ausgabe vonaws s3 ls
  • Die letzte wird awkeinfach zur total3. Spalte der resultierenden Ausgabe hinzugefügt (die Größe in KB) und am Ende angezeigt

HINWEIS Dieser Befehl funktioniert nicht rekursiv für den aktuellen Bucket oder 'Ordner'

JScoobyCed
quelle
7

Mit Cloud Watch können Sie auch Metriken für Ihren S3-Bucket erstellen. Es zeigt Ihnen Metriken nach Größe und Objektanzahl. Dienste> Verwaltungstools> Cloud Watch. Wählen Sie die Region aus, in der sich Ihr S3-Bucket befindet, und die Metriken für Größe und Objektanzahl gehören zu den verfügbaren Metriken.

Rowelee
quelle
6

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

Beantwortet von 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
quelle
Wissen Sie, ob Gigabyte in diesem Fall 1024 3 oder 1000 3 ist? Es fällt mir schwer, eine endgültige S3-Aussage zu finden.
dfrankow
@dfrankow Die Zeile echo ($totalSize / 1024 / 1024 / 1024) . ' GB';befindet sich genau dort unten im Quellcode.
MJD
@ MJD Ich erinnere mich nicht, was meine Gedanken hier waren. Es wurde entweder nach der Verwendung des Wortes "Gigabyte" durch s3cmd oder S3 gefragt, nicht nach diesem PHP-Code.
dfrankow
5

Neben Christophers Antwort.

Wenn Sie die Gesamtgröße des versionierten Buckets zählen müssen, verwenden Sie:

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

Es werden sowohl die neueste als auch die archivierte Version gezählt.

Regelkin
quelle
5

Das Abrufen großer Buckets über die API (entweder aws cli oder s4cmd) ist ziemlich langsam. Hier ist meine Anleitung zum Parsen des S3-Nutzungsberichts mit 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
quelle
1

Die AWS-Konsole zeigt Ihnen dies nicht an, Sie können jedoch den Bucket Explorer oder den Cloudberry Explorer verwenden , um die Gesamtgröße eines zu ermitteln. Beide haben kostenlose Versionen zur Verfügung.

Hinweis: Diese Produkte müssen immer noch die Größe jedes einzelnen Objekts erhalten, daher kann es bei Eimern mit vielen Objekten lange dauern.

Geoff Appleford
quelle
Ich kann allerdings nur eine Trialware sehen. Wurde dieses Angebot entfernt?
Trefex
1

Basierend auf der Antwort von @ 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]

Außerdem ermöglicht Cyberduck bequem die Berechnung der Größe für einen Bucket oder einen Ordner.

Evgeny Goldin
quelle
1

Die Antwort von Mini John hat für mich total funktioniert! Genial ... musste hinzufügen

--region eu-west-1 

aus Europa

pitxon_net
quelle
1

Dies ist eine alte Anfrage, aber da ich nach der Antwort gesucht habe, bin ich darauf gestoßen. Einige der Antworten haben mich daran erinnert, dass ich den S3-Browser zum Verwalten von Daten verwende. Sie können auf einen Bucket klicken und auf Eigenschaften klicken, um die Gesamtsumme anzuzeigen. Ziemlich einfach. Ich kann den Browser nur empfehlen: https://s3browser.com/default.aspx?v=6-1-1&fam=x64

user7191982
quelle
0

Sie können dies auch über einen S3-Client tun, wenn Sie eine benutzerfreundliche Benutzeroberfläche bevorzugen.

Ich verwende CrossFTP , das kostenlos und plattformübergreifend ist, und dort können Sie mit der rechten Maustaste auf das Ordnerverzeichnis klicken -> "Eigenschaften ..." auswählen -> auf die Schaltfläche "Berechnen" neben Größe und Voila klicken.

Yiannis Tsimalis
quelle
0

s3admin ist eine OpenSource-App (UI), mit der Sie Buckets durchsuchen, die Gesamtgröße berechnen und die größten / kleinsten Dateien anzeigen können. Es ist darauf zugeschnitten, einen schnellen Überblick über Ihre Eimer und deren Verwendung zu erhalten.

maksion
quelle
0

Sie haben gefragt: Informationen in der AWS-Konsole darüber, wie viel Speicherplatz in meiner S3-Cloud verwendet wird ?

Ich gehe also zum Abrechnungs-Dashboard und überprüfe die S3-Nutzung in der aktuellen Rechnung .

Sie geben Ihnen die Information - MTD - in Gb bis 6 Dezimalstellen, IOW, bis zur Kb-Ebene.

Es ist nach Regionen unterteilt, aber das Addieren (vorausgesetzt, Sie verwenden mehr als eine Region) ist einfach genug.

Übrigens: Möglicherweise benötigen Sie bestimmte IAM-Berechtigungen, um zu den Rechnungsinformationen zu gelangen.

Danny Schoemann
quelle
-2

Ich benutze Cloud Turtle , um die Größe einzelner Eimer zu ermitteln. Wenn die Bucket-Größe> 100 GB überschreitet, dauert es einige Zeit, bis die Größe angezeigt wird. Wolkenschildkröte ist Freeware.

Sangram Anand
quelle
8
Seien Sie vorsichtig mit dieser Software. Es installiert zusätzliche Chrome-Erweiterungen und scheint ziemlich spammig zu sein.
Styks