boto3でフォルダーの件数を出力したかったので作成しました。
pythonコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import json import boto3 BUCKET_NAME = 'バケット名' s3c = boto3.client('s3') s3r = boto3.resource('s3') def count_folder(vid): bucket = s3r.Bucket(BUCKET_NAME) result = bucket.meta.client.list_objects(Bucket=bucket.name, Delimiter='/',Prefix=vid) cnt=len(result.get('CommonPrefixes')) return cnt def main(): bucket = s3r.Bucket(BUCKET_NAME) result = bucket.meta.client.list_objects(Bucket=bucket.name, Delimiter='/',Prefix='flda/') for o in result.get('CommonPrefixes'): vid=o.get('Prefix') cnt=count_folder(vid) ptn=vid.split('/') print("%s: %d\n" % (ptn[1],cnt)) if __name__ == '__main__': main()b |
バケット名/flda/fldb1/fldc1/file1
で、fldc,fldcが複数ある場合の、fldcの数をカウントしています。