Open1

S3からすべてのKeyを取得するTips

Chidoriashi1990Chidoriashi1990
def get_all_keys(s3_client, bucket_name, prefix, keys, marker):
    objects = s3_client.list_objects_v2(
        Bucket=bucket_name, Prefix=prefix, Delimiter="/", StartAfter=marker
    )

    if "Contents" in objects:
        keys.extend(content["Key"] for content in objects["Contents"])
        # 返り値のIsTruncatedがTrueかどうかを確認する
        if objects.get("IsTruncated"):
            # marker引数に取得したkeysの末尾の値を設定して再度get_all_keysを実行する
            return get_all_keys(
                s3_client,
                bucket_name=bucket_name,
                prefix=prefix,
                keys=keys,
                marker=keys[-1],
            )
    return keys