Ich habe mehrere AWS- Konten und muss alle S3- Buckets pro Konto auflisten und dann die Gesamtgröße der einzelnen Buckets anzeigen.
Derzeit kann ich nur die Speichergröße eines einzelnen S3- Buckets anzeigen mit:
aws s3 ls s3://mybucket --recursive --human-readable --summarize
Antworten:
Beschluss 1
Also habe ich das mit dem folgenden Skript gelöst. Ich habe die Frage ursprünglich nur für den Fall gestellt, dass es einen einfacheren Weg gibt, den ich nicht kenne.
Beschluss 2
Verwenden von Dashboards in CloudWatch in der AWS-Konsole.
Sie können dann einfach alle S3-Buckets angeben und die Zahlenstatistiken hinzufügen, um die Speichergrößenmetriken anzuzeigen.
Dies kostet Sie nicht viele API-Aufrufe und kann je nach Größe der s3-Buckets erheblich schneller sein (es dauert eine Weile, bis die Größe bei sehr großen Buckets erreicht ist).
Urteil
Das Erstellen des Dashboards ( Auflösung 2 ) für jedes AWS-Konto war für mich die effizienteste Option, da ich mich viel schneller anmelden und die Metriken manuell von jedem AWS-Konto abrufen kann, als auf den Abschluss der Skript-API-Aufrufe zu warten. :(
quelle
| awk END'{print}'
?[@]
in"${buckets[@]}"
?Sie müssen ein Skript schreiben, das diese Daten analysiert und abfragt, da meines Wissens kein Tool oder keine CLI-Funktion vorhanden ist, die dies ausführt. Glücklicherweise können Sie all diese Informationen mit der CLI sammeln.
Listen Sie alle Konten in Ihrer Organisation auf und analysieren Sie sie.
Listen Sie für jedes Konto alle Buckets auf und analysieren Sie sie.
Schließlich erhalten Sie die Größe jedes Buckets in jedem Konto. Sie können den gleichen Befehl wie zuvor verwenden, aber seien Sie gewarnt, dass Sie die individuelle Größe jedes Elements im Bucket auflisten werden. Sie können diesen Befehl cli auch verwenden, um die Bucket-Größe abzurufen.
quelle
Sie müssen dazu ein Skript schreiben, es sei denn, es gibt ein Tool, das ich nicht finden kann.
Wenn Sie mit mehreren aws-Konten arbeiten, müssen Sie zwischen Konten wechseln, um die Bucket-Größen zu erhalten.
Um alle Eimer und ihre Gesamtgröße zu erhalten, können Sie ' aws s3api ' verwenden. Mit
list-buckets
können Sie alle Buckets in einem Konto abrufen und dann ihre Größen auflisten und das nächste Konto ausprobieren.quelle
Keiner dieser Werte zeigt die Größe des Buckets an, wenn die Versionierung aktiviert ist und große Datenmengen "gelöscht" wurden. In der S3-GUI-Konsole wird auf der Registerkarte Metriken angezeigt, was Ihnen in Rechnung gestellt wird.
Der folgende Befehl wurde aus einem Skript entfernt, das unter /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket gefunden wurde . Es funktioniert gut unter Windows. Ersatz
yourregion
undyourbucketname
:aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2019-05-09T00:01:00Z --end-time 2019-05-11T23:59:00Z --period 86400 --statistics Average --region yourregion --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=yourbucketname Name=StorageType,Value=StandardStorage
Dies gibt die durchschnittliche Größe in Bytes über die Tage an, die durch die Start- und Endzeit begrenzt sind. Das Ergebnis kann Sie schockieren, wenn in Ihrem Bucket die Versionierung aktiviert (aktiv) ist und Sie der Meinung sind, dass Sie große Datenmengen "gelöscht" haben.
Um versionierungsfähige Buckets zu bereinigen, müssen Sie eine LifeCycle-Regel festlegen. Sie können Vorherige Versionen dauerhaft löschen. Sie können die Kontrollkästchen im Schritt Übergänge weglassen.
quelle