AWS LambdaにてS3バケット内のオブジェクトの一覧を取得するサンプルを紹介します。
S3バケット内のオブジェクト一覧を取得するサンプル
import botocore
import boto3
s3 = boto3.resource('s3')
s3Client = boto3.client('s3')
prefix = 'SampleFolder/'
bucketName = 'S3BucketName'
s3BucketObj = s3.Bucket(bucketName)
objs = s3BucketObj.meta.client.list_objects_v2(Bucket=bucketName, Prefix=prefix)
if not('Contents' in objs):
print('対象S3にファイルが存在しないため、処理を終了します。bucketName={0}, folderName={1}'.format(bucketName, prefix))
return []
return objs['Contents']
S3内のオブジェクトの一覧を取得する際には、meta.client.list_objects_v2を使用します。
このメソッドは以下のパラメータを与えることができます。
Bucket…一覧を取得するバケットの名前
Prefix…どのフォルダ配下から検索するか
例えば、S3バケット内のSampleFolder配下を検索したい場合、Prefix='SampleFolder'としてやればいいです。
全件とる場合は、このオプションを付けなければいい(はず)。
また、最大1000件までしか取得できないので、続きを取得したい場合は、ContinuationTokenパラメータを使用します。