web-dev-qa-db-ja.com

S3バケット内のフォルダーのサイズを見つける方法は?

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バケット内のフォルダー/オブジェクトをその名前で検索し、そのオブジェクトのサイズを取得する方法はありますか?

5

Boto3を使用せず、aws cliだけですが、この簡単なワンライナーが目的を果たします。私は通常、要約フォルダーのサイズのみを取得するためにテール-1を付けます。ただし、オブジェクトが多数あるフォルダの場合、少し遅くなる可能性があります。

aws s3 ls --summarize --human-読み取り可能--recursive s3:// bucket-name/folder-name |テール-1

1
Yeamin Rajeev