AWS python boto3でフォルダーの件数を調べる

boto3でフォルダーの件数を出力したかったので作成しました。

pythonコード

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の数をカウントしています。