lambdaでboto3を使いs3を階層的に探索する

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値を入れる。

AWS構築サービスの全てをまとめた資料を公開中

ハックノート(TOWN株式会社)では、AWSの導入や構築支援を行っています。AWS導入メニューやサービス詳細、構成例や費用を掲載した資料をダウンロードできます。

AWSの新規導入やAWSへの移行を検討の際は、ぜひご参考ください。


APNコンサルティングパートナー

TOWN株式会社はAmazon公認コンサルティングパートナーです。