S3に500,000以上のオブジェクトがあります。各オブジェクトのサイズを取得しようとしています。そのために次のPythonコードを使用しています。
import boto3
bucket = 'bucket'
prefix = 'prefix'
contents = boto3.client('s3').list_objects_v2(Bucket=bucket, MaxKeys=1000, Prefix=prefix)["Contents"]
for c in contents:
print(c["Size"])
しかし、上位 1000 個のオブジェクトのサイズが示されただけです。ドキュメントによると、1000 個を超えるサイズを取得することはできません。それ以上のサイズを取得する方法はありますか?
ベストアンサー1
組み込みのboto3Paginator
クラスは、の1000レコード制限を克服する最も簡単な方法ですlist-objects-v2
。これは次のように実装できます。
s3 = boto3.client('s3')
paginator = s3.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket='bucket', Prefix='prefix')
for page in pages:
for obj in page['Contents']:
print(obj['Size'])