pythonでboto3モジュールを使用してS3とやり取りしていますが、現在、S3バケット内のすべての個々のキーのサイズを取得できます。しかし私の動機は、のスペースストレージのみを見つけることです。トップレベルのフォルダー(すべてのフォルダーは異なるプロジェクトです)であり、使用されたスペースに対してプロジェクトごとに課金する必要があります。トップレベルのフォルダーの名前は取得できますが、フォルダー内のフォルダーのサイズに関する詳細は取得できません。以下は、トップレベルのフォルダー名を取得するための私の実装です。
import boto
import boto.s3.connection
AWS_ACCESS_KEY_ID = "access_id"
AWS_SECRET_ACCESS_KEY = "secret_access_key"
Bucketname = 'Bucket-name'
conn = boto.s3.connect_to_region('ap-south-1',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
is_secure=True, # uncomment if you are not using ssl
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.get_bucket('bucket')
folders = bucket.list("", "/")
for folder in folders:
print(folder.name)
ここでのフォルダーのタイプはboto.s3.prefix.Prefixであり、サイズの詳細は表示されません。 S3バケット内のフォルダー/オブジェクトをその名前で検索し、そのオブジェクトのサイズを取得する方法はありますか?
Boto3を使用せず、aws cliだけですが、この簡単なワンライナーが目的を果たします。私は通常、要約フォルダーのサイズのみを取得するためにテール-1を付けます。ただし、オブジェクトが多数あるフォルダの場合、少し遅くなる可能性があります。
aws s3 ls --summarize --human-読み取り可能--recursive s3:// bucket-name/folder-name |テール-1