Article Outline
awsを使っていると何かとapiで情報を取得したくなることがよくある。 今回は特に使用頻度が高いS3を例に上げて取得サンプルを記載してみる。
boto3
の場合、s3.list_objects_v2()
を使用するのが良いと思う。
メタ情報もついてくるので取得した後に時刻ソートとかできる。
以下サンプル↓
import boto3
def get_objects_list(bucket='test_bucket):
#s3clientのインスタンス化
s3 = boto3.client('s3')
contents = []
response = s3.list_objects_v2(
Bucket=bucket,
)
contents.extend(response["Contents"])
#次ページが有る場合、NextContinuationTokenがresponseに含まれているため、次のリクエスト時に'ContinuationToken'に指定している。
while 'NextContinuationToken' in response:
token = response['NextContinuationToken']
response = s3.list_objects_v2(
Bucket=bucket,
ContinuationToken=token,
)
contents.extend(response["Contents"])
# responseに最後の更新時刻('LastModified')が含まれているのでそれでソート
main_contents = sorted(contents, key=lambda x: x['LastModified'])
return main_contents
見ての通りなんてことはないコード。
初めて使う場合はNextContinuationToken
の存在を忘れていて全件取得を忘れていたりしたので一応その備忘録として記録する。