LoginSignup
3
2

More than 3 years have passed since last update.

Boto3を使って、S3のファイルリストから1000件以上のPrefixを取り出す

Posted at

備忘録として

S3からのPrefixはデフォルトで1000件までしか取得できないので、1000件以上ある場合はpaginatorを利用する。

Boto3 ドキュメント

import boto3

# Create a client
client = boto3.client('s3', region_name='us-west-2')

# Create a reusable Paginator
paginator = client.get_paginator('list_objects')

# Create a PageIterator from the Paginator
page_iterator = paginator.paginate(Bucket='my-bucket')

for page in page_iterator:
    print(page['Contents'])

ドキュメントのデフォルトでは以上の通りで、page_iteratorのリストの中に、1000件ずつのPrefixのリストが格納されています。
それらを扱いやすくするために、展開してしまいます。

import boto3
import itertools

client = boto3.client('s3', region_name='us-west-2')
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket='my-bucket')
contents = list(itertools.chain.from_iterable(page_iterator))

これで、1000件以上のprefixを扱うことができます

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2