何かが足りない場合を除き、S3バケット/フォルダー(プレフィックス)に含まれるオブジェクトの数は、これまで調べたAPIのいずれにも示されていないようです。カウントを取得する方法はありますか?
あなたがいない限り、方法はありません
それらをすべて1000のバッチでリストします(これは遅く、帯域幅を消費する可能性があります-AmazonはXMLレスポンスを圧縮しないようです)、または
s3でアカウントにログインし、[アカウント-使用法]に移動します。請求部門は、保存したオブジェクトの数を正確に把握しているようです!
5000万個のオブジェクトを保存している場合、すべてのオブジェクトのリストをダウンロードするだけで実際には時間がかかり、費用がかかります。
StorageObjectCountについてのこのスレッド -使用データにあるも参照してください。
少なくとも基本を取得するためのS3 APIは、たとえそれが数時間前であっても素晴らしいでしょう。
aws s3 ls s3://mybucket/ --recursive | wc -l
または
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
注:上記のcloudwatchコマンドは、一部のユーザーでは機能するが、他のユーザーでは機能しないようです。ここで議論: https://forums.aws.Amazon.com/thread.jspa?threadID=21705
cloudwatchのメトリックセクション を見ると、保存されているオブジェクトのおよその数を取得できます。
約5,000万の製品があり、aws s3 ls
を使用してカウントするのに1時間以上かかりました
--summarize
スイッチがあり、これにはバケットの要約情報(つまり、オブジェクト、合計サイズ)。
AWS CLIを使用した正しい答えは次のとおりです。
aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"
Total Objects: 194273
ドキュメント を参照してください
s3cmd コマンドラインツールを使用すると、特定のバケットの再帰的なリストを取得して、テキストファイルに出力できます。
s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt
Linuxでは、ファイルに対してwc -lを実行して行をカウントできます(オブジェクトごとに1行)。
wc -l listing.txt
現在、S3 APIを使用した簡単なソリューションがあります(AWS CLIで利用可能):
aws s3api list-objects --bucket BUCKETNAME --output json --query "[length(Contents[])]"
または特定のフォルダーの場合:
aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"
S3cmdで、次のコマンドを実行します(Ubuntuシステムで):
s3cmd ls -r s3://mybucket | wc -l
AWS Billing、レポート、AWS Usageレポートの順に進みます。 Amazon Simple Storage Serviceを選択してから、Operation StandardStorageを選択します。その後、各バケットのアイテム数をリストするStorageObjectCountのUsageTypeを含むCSVファイルをダウンロードできます。
APIは、1000単位でリストを返します。IsTruncatedプロパティをチェックして、まだ他にあるかどうかを確認します。ある場合は、別の呼び出しを行い、最後に取得したキーを次の呼び出しのMarkerプロパティとして渡す必要があります。その後、IsTruncatedがfalseになるまで、このようなループを続けます。
詳細については、次のAmazonドキュメントを参照してください。 マルチページ結果の反復
古いスレッドですが、私はこれを理解するまで答えを探していたので、まだ関連しています。 GUIベースのツールを使用したファイルカウント(つまり、コードなし)が必要でした。 S3との間のドラッグアンドドロップ転送には、すでに3Hubというツールを使用しています。特定のバケットにあるファイルの数を知りたい(請求によってバケットごとに分割されるとは思わない)。
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
バケットに20521個のファイルがあり、1分未満でファイルをカウントしました。
WindowsでAWS CLIを使用している場合、* nixのMeasure-Object
と同様に、PowerShellのwc -l
を使用してファイルの合計数を取得できます。
PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object
Count : 25
Average :
Sum :
Maximum :
Minimum :
Property :
それが役に立てば幸い。
S3コンソールの[管理]タブに移動して[メトリック]をクリックすると、合計数と履歴を簡単に取得できます... タブのスクリーンショット
それを行うためのAmazon固有のAPIが実際に存在しないため、どのAPIもあなたに価値を与えません。リストコンテンツを実行し、返される結果の数を数えるだけです。
scalablelogic.com からpythonスクリプトを使用しました(カウントロギングに追加)。うまくいきました。
#!/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
http://s3browser.com/ からs3ブラウザーをダウンロードしてインストールできます。中央の右隅でバケットを選択すると、バケット内のファイルの数を確認できます。しかし、それが示すサイズは現在のバージョンでは正しくありません。
グブス
私はS3ブラウザツールが非常にユーザーであることがわかりました、それはファイルとフォルダを提供し、フォルダの合計数とサイズを再帰的に提供します
ダウンロードリンク: https://s3browser.com/download.aspx
特定のファイルを探している場合、たとえば.jpg
画像とすると、次のことができます。
aws s3 ls s3://your_bucket | grep jpg | wc -l
gsutil du
でも実行できます(はい、Google Cloudツール)
gsutil du s3://mybucket/ | wc -l
S3ストレージクラス分析はどうですか-コンソールだけでなくAPIも取得できます- https://docs.aws.Amazon.com/AmazonS3/latest/dev/analytics-storage-class.html
AWS CLIのコマンドラインから、ls plus --summarize
を使用します。すべてのアイテムのリストと、特定のバケット内のドキュメントの総数が表示されます。私はサブバケットを含むバケットでこれを試していません:
aws s3 ls "s3://MyBucket" --summarize
少し時間がかかりますが(16 + Kのドキュメントを約4分リストするのに時間がかかりました)、一度に1Kを数えるよりも高速です。
このcliコマンドを実行するだけで、バケットまたは特定のフォルダー内の合計ファイル数を取得できます
バケット全体をスキャンする
aws s3api list-objects-v2 --bucket testbucket | grep "Key" | wc -l
aws s3api list-objects-v2 --bucket BUCKET_NAME | grep "Key" | wc -l
このコマンドを使用して詳細を取得できます
aws s3api list-objects-v2 --bucket BUCKET_NAME
特定のフォルダーをスキャンする
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
最も簡単な方法は、開発者コンソールを使用することです。たとえば、クロムを使用している場合、開発者ツールを選択すると、次のように表示されます。280-279+ 1 = 2など
...