web-dev-qa-db-ja.com

S3バケットに保存したオブジェクトの数を確認するにはどうすればよいですか?

何かが足りない場合を除き、S3バケット/フォルダー(プレフィックス)に含まれるオブジェクトの数は、これまで調べたAPIのいずれにも示されていないようです。カウントを取得する方法はありますか?

119
fields

あなたがいない限り、方法はありません

  1. それらをすべて1000のバッチでリストします(これは遅く、帯域幅を消費する可能性があります-AmazonはXMLレスポンスを圧縮しないようです)、または

  2. s3でアカウントにログインし、[アカウント-使用法]に移動します。請求部門は、保存したオブジェクトの数を正確に把握しているようです!

5000万個のオブジェクトを保存している場合、すべてのオブジェクトのリストをダウンロードするだけで実際には時間がかかり、費用がかかります。

StorageObjectCountについてのこのスレッド -使用データにあるも参照してください。

少なくとも基本を取得するためのS3 APIは、たとえそれが数時間前であっても素晴らしいでしょう。

31
Tom Andersen

AWS CLIを使用する

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

AWS Webコンソールを使用する

cloudwatchのメトリックセクション を見ると、保存されているオブジェクトのおよその数を取得できます。 enter image description here

約5,000万の製品があり、aws s3 lsを使用してカウントするのに1時間以上かかりました

208
Mayank Jaiswal

--summarizeスイッチがあり、これにはバケットの要約情報(つまり、オブジェクト、合計サイズ)。

AWS CLIを使用した正しい答えは次のとおりです。

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

Total Objects: 194273

ドキュメント を参照してください

114
advncd

s3cmd コマンドラインツールを使用すると、特定のバケットの再帰的なリストを取得して、テキストファイルに出力できます。

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

Linuxでは、ファイルに対してwc -lを実行して行をカウントできます(オブジェクトごとに1行)。

wc -l listing.txt
48
Jim Murphy

これは古い質問であり、フィードバックは2015年に提供されましたが、S3 Webコンソールが「サイズを取得」オプションを有効にしているため、現時点でははるかに簡単です。

enter image description here

次のものを提供します。

enter image description here

48
gvasquez

現在、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[])]"
43
Raphael

S3のAWSクラウドウォッチメトリックスを使用して、各バケットの正確なカウントを確認できます。 cloudwatch metric when you select bucket

35
mastaBlasta

S3cmdで、次のコマンドを実行します(Ubuntuシステムで):

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

AWS Billing、レポート、AWS Usageレポートの順に進みます。 Amazon Simple Storage Serviceを選択してから、Operation StandardStorageを選択します。その後、各バケットのアイテム数をリストするStorageObjectCountのUsageTypeを含むCSVファイルをダウンロードできます。

5
Kenan

APIは、1000単位でリストを返します。IsTruncatedプロパティをチェックして、まだ他にあるかどうかを確認します。ある場合は、別の呼び出しを行い、最後に取得したキーを次の呼び出しのMarkerプロパティとして渡す必要があります。その後、IsTruncatedがfalseになるまで、このようなループを続けます。

詳細については、次のAmazonドキュメントを参照してください。 マルチページ結果の反復

2
BigJoe714

古いスレッドですが、私はこれを理解するまで答えを探していたので、まだ関連しています。 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分未満でファイルをカウントしました。

2
Darby

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 :

それが役に立てば幸い。

1
pdm

S3コンソールの[管理]タブに移動して[メトリック]をクリックすると、合計数と履歴を簡単に取得できます... タブのスクリーンショット

1
Tilan Ukwatta

それを行うためのAmazon固有のAPIが実際に存在しないため、どのAPIもあなたに価値を与えません。リストコンテンツを実行し、返される結果の数を数えるだけです。

1
Mitch Dempsey

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
1
Tayler

http://s3browser.com/ からs3ブラウザーをダウンロードしてインストールできます。中央の右隅でバケットを選択すると、バケット内のファイルの数を確認できます。しかし、それが示すサイズは現在のバージョンでは正しくありません。

グブス

0
gubs

私はS3ブラウザツールが非常にユーザーであることがわかりました、それはファイルとフォルダを提供し、フォルダの合計数とサイズを再帰的に提供します

ダウンロードリンク: https://s3browser.com/download.aspx

0

特定のファイルを探している場合、たとえば.jpg画像とすると、次のことができます。

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

Hub は廃止されました。より良い解決策があります。 Transmit (Macのみ)を使用し、バケットに接続してViewメニューからShow Item Countを選択するだけです。

0
arielcr

gsutil du でも実行できます(はい、Google Cloudツール)

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

S3ストレージクラス分析はどうですか-コンソールだけでなくAPIも取得できます- https://docs.aws.Amazon.com/AmazonS3/latest/dev/analytics-storage-class.html

0
Prabhat

AWS CLIのコマンドラインから、ls plus --summarizeを使用します。すべてのアイテムのリストと、特定のバケット内のドキュメントの総数が表示されます。私はサブバケットを含むバケットでこれを試していません:

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

少し時間がかかりますが(16 + Kのドキュメントを約4分リストするのに時間がかかりました)、一度に1Kを数えるよりも高速です。

0
Ricardo

この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
0
Indunil Asanka

最も簡単な方法は、開発者コンソールを使用することです。たとえば、クロムを使用している場合、開発者ツールを選択すると、次のように表示されます。280-279+ 1 = 2など

...

0
zeroc00l