AWS S3はkey-value型のストレージであり、基本的にはディレクトリなどの階層的な概念がない。aws-cliなどではS3を擬似階層的に使用できるが、boto3はkeyに対応するobjectを取得という形が基本であるので、PrefixとDellimiterをうまく使いS3を階層的に使う。
import boto3 client = boto3.client('s3') result = client.list_objects(Bucket_name=<BUCKET_NAME>, Prefix=<PREFIX>, Delimiter='/') for o in result.get('CommonPrefixes'): print(o.get('Prefix'))
これで特定の階層のディレクトリ(ファイル)一覧を取得できる。最上位の階層の場合はPrefixはいらない。 それ以下の階層の場合はPrefixにそれ以前のkey値を入れる。