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

Yuya Sato 172views 更新:2016年6月22日

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

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません