wake-up-neo.net

Wie kann ich feststellen, wie viele Objekte ich in einem S3-Bucket gespeichert habe?

Wenn mir nicht etwas fehlt, scheint es, dass keine der APIs, die ich mir angesehen habe, Ihnen sagen wird, wie viele Objekte sich in einem S3-Bucket/Ordner (Präfix) befinden. Gibt es eine Möglichkeit, eine Zählung zu erhalten?

94
fields

Es gibt keinen Weg, außer du 

  1. listen Sie sie alle in Stapel von 1000 auf (was langsam sein kann und die Bandbreite ausnutzt - Amazon scheint die XML-Antworten nie zu komprimieren) oder

  2. melden Sie sich unter S3 bei Ihrem Konto an und gehen Sie zu Konto - Verwendung. Es scheint, dass die Rechnungsabteilung genau weiß, wie viele Objekte Sie gespeichert haben!

Ein einfaches Herunterladen der Liste aller Ihrer Objekte wird einige Zeit in Anspruch nehmen und kostet etwas Geld, wenn Sie 50 Millionen Objekte gespeichert haben.

Siehe auch diesen Thread zu StorageObjectCount -, der in den Nutzungsdaten enthalten ist.

Eine S3-API, um zumindest die Grundlagen zu erhalten, auch wenn sie Stunden alt ist, wäre großartig. 

27
Tom Andersen

AWS CLI verwenden

aws s3 ls s3://mybucket/ --recursive | wc -l 

oder 

aws cloudwatch get-metric-statistics \
  --namespace AWS/S3 --metric-name NumberOfObjects \
  --dimensions Name=BucketName,Value=BUCKETNAME \
              Name=StorageType,Value=AllStorageTypes \
  --start-time 2016-11-05T00:00 --end-time 2016-11-05T00:10 \
  --period 60 --statistic Average

Hinweis: Der obige Befehl cloudwatch scheint für einige Zeit nicht zu funktionieren. Hier besprochen: https://forums.aws.Amazon.com/thread.jspa?threadID=217050

AWS Web Console verwenden

Sie können sich den Metrikbereich von cloudwatch ansehen , um ungefähr die Anzahl der gespeicherten Objekte abzurufen .  enter image description here

Ich habe ca. 50 Millionen Produkte und es dauerte mehr als eine Stunde, mit aws s3 ls zu zählen.

181
Mayank Jaiswal

Es gibt einen --summarize Schalter, der Bucket-Übersichtsinformationen enthält (d. H. Anzahl der Objekte, Gesamtgröße). 

Hier ist die richtige Antwort mit AWS cli:

aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"

Total Objects: 194273

Siehe die Dokumentation

93
advncd

Wenn Sie das Befehlszeilenwerkzeug s3cmd verwenden, können Sie eine rekursive Auflistung eines bestimmten Buckets erhalten und diese in einer Textdatei ausgeben. 

s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt

In Linux können Sie dann ein wc -l in der Datei ausführen, um die Zeilen zu zählen (1 Zeile pro Objekt).

wc -l listing.txt
48
Jim Murphy

Es gibt jetzt eine einfache Lösung mit der S3-API (verfügbar in AWS cli):

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

oder für einen bestimmten Ordner:

aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"
41
Raphael

Obwohl dies eine alte Frage ist und 2015 Feedback gegeben wurde, ist es jetzt viel einfacher, da S3 Web Console die Option "Größe ermitteln" aktiviert hat:

 enter image description here

Welche bietet Folgendes:

 enter image description here

38
gvasquez

Sie können AWS Cloudwatch-Messdaten für S3 verwenden, um die genaue Anzahl für jeden Bucket anzuzeigen  cloudwatch metric when you select bucket

31
mastaBlasta

Führen Sie in s3cmd einfach den folgenden Befehl aus (auf einem Ubuntu-System):

s3cmd ls -r s3://mybucket | wc -l
6
mjsa

Wechseln Sie zu AWS Billing, erstatten Sie Berichte und dann AWS Usage-Berichte. Wählen Sie Amazon Simple Storage Service und dann Operation StandardStorage aus. Anschließend können Sie eine CSV-Datei herunterladen, die einen UsageType von StorageObjectCount enthält, in dem die Elementanzahl für jeden Bereich aufgelistet ist .

5
Kenan

Die API gibt die Liste in Schritten von 1000 zurück. Überprüfen Sie die IsTruncated-Eigenschaft, um zu sehen, ob noch weitere vorhanden sind. Wenn dies der Fall ist, müssen Sie einen weiteren Anruf tätigen und den letzten Schlüssel, den Sie als Marker-Eigenschaft erhalten haben, beim nächsten Anruf übergeben. Sie würden dann so lange weiterlaufen, bis IsTruncated false ist.

Weitere Informationen finden Sie in diesem Amazon-Dokument: Durch mehrseitige Ergebnisse iterieren

2
BigJoe714

Alter Thread, aber immer noch relevant, als ich nach der Antwort suchte, bis ich das herausgefunden hatte. Ich wollte eine Dateizählung mit einem GUI-basierten Werkzeug (d. H. Ohne Code). Ich benutze bereits ein Tool namens 3Hub für Drag & Drop-Transfers von und nach S3. Ich wollte wissen, wie viele Dateien ich in einem bestimmten Eimer hatte (ich glaube nicht, dass die Abrechnung die Eimer unterbricht). 

So, using 3Hub, 
- list the contents of the bucket (looks basically like a Finder or Explorer window)
- go to the bottom of the list, click 'show all'
- select all (ctrl+a)
- choose copy URLs from right-click menu
- paste the list into a text file (I use TextWrangler for Mac) 
- look at the line count  

Ich hatte 20521 Dateien im Bucket und habe die Datei in weniger als einer Minute gezählt.

2
Darby

Sie können die Gesamtzahl und den Verlauf einfach abrufen, indem Sie auf die Registerkarte "Verwaltung" der s3-Konsole gehen und dann auf "Metriken" klicken ... Screenshot der Registerkarte

1
Tilan Ukwatta

Keine der APIs gibt Ihnen eine Zählung, da es wirklich keine für Amazon spezifische API gibt. Sie müssen nur einen Listeninhalt ausführen und die Anzahl der Ergebnisse zählen, die zurückgegeben werden.

1
Mitch Dempsey

Ich habe das Python-Skript von scalablelogic.com verwendet (in der Zählerprotokollierung). Hat super gearbeitet.

#!/usr/local/bin/python

import sys

from boto.s3.connection import S3Connection

s3bucket = S3Connection().get_bucket(sys.argv[1])
size = 0
totalCount = 0

for key in s3bucket.list():
    totalCount += 1
    size += key.size

print 'total size:'
print "%.3f GB" % (size*1.0/1024/1024/1024)
print 'total count:'
print totalCount
1
Tayler

Wenn Sie AWS CLI unter Windows verwenden, können Sie mit Measure-Object von PowerShell die Gesamtzahl der Dateien abrufen, genau wie wc -l unter * nix.

PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object

Count    : 25
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Ich hoffe es hilft.

0
pdm

Sie können den S3-Browser unter http://s3browser.com/ herunterladen und installieren. Wenn Sie einen Bucket in der mittleren rechten Ecke auswählen, können Sie die Anzahl der Dateien im Bucket sehen. Die angezeigte Größe ist jedoch in der aktuellen Version falsch. 

Gubs

0
gubs

Ich fand das S3-Browser-Tool sehr benutzerfreundlich. Es bietet Dateien und Ordner und die Gesamtzahl sowie die Größe für jeden Ordner rekursiv an

Link zum Herunterladen: https://s3browser.com/download.aspx

0

Wenn Sie nach bestimmten Dateien suchen, sagen wir .jpg Images, dann können Sie Folgendes tun:

aws s3 ls s3://your_bucket | grep jpg | wc -l
0
tsveti_iko

3Hub wird eingestellt. Es gibt eine bessere Lösung, Sie können Transmit verwenden (nur Mac), dann verbinden Sie sich einfach mit Ihrem Bucket und wählen Show Item Count aus dem Menü View

0
arielcr

Kann auch mit gsutil du ausgeführt werden (Ja, ein Google Cloud-Tool)

gsutil du s3://mybucket/ | wc -l
0
Ghilas BELHADJ

Wie wäre es mit S3-Storage-Klassenanalysen - Sie erhalten APIs sowie auf der Konsole - https://docs.aws.Amazon.com/AmazonS3/latest/dev/analytics-storage-class.html

0
Prabhat

Verwenden Sie in der Befehlszeile in AWS CLI ls plus --summarize. Sie erhalten eine Liste aller Ihrer Artikel und die Gesamtzahl der Dokumente in einem bestimmten Bereich. Ich habe dies nicht mit Buckets mit Sub-Buckets versucht:

aws s3 ls "s3://MyBucket" --summarize

Es dauert etwas länger (es dauerte etwa 4 Minuten, bis meine 16 + K-Dokumente aufgelistet waren), aber es ist schneller als jeweils 1 KB zu zählen.

0
Ricardo

Sie können einfach diesen Befehl cli ausführen, um die Gesamtzahl der Dateien im Bucket oder in einem bestimmten Ordner abzurufen

Gesamten Eimer scannen

aws s3api list-objects-v2 --bucket testbucket | grep "Key" | wc -l
aws s3api list-objects-v2 --bucket BUCKET_NAME | grep "Key" | wc -l

mit diesem Befehl können Sie Details abrufen

aws s3api list-objects-v2 --bucket BUCKET_NAME

Scannen Sie einen bestimmten Ordner

aws s3api list-objects-v2 --bucket testbucket --prefix testfolder --start-after testfolder/ | grep "Key" | wc -l

aws s3api list-objects-v2 --bucket BUCKET_NAME --prefix FOLDER_NAME --start-after FOLDER_NAME/ | grep "Key" | wc -l
0
Indunil Asanka

Die einfachste Methode ist die Verwendung der Entwicklerkonsole. Wenn Sie beispielsweise Chrome verwenden, wählen Sie Developer Tools. Sie können Folgendes sehen: Sie können entweder suchen und zählen oder Übereinstimmungen durchführen, z

... 

0
zeroc00l