0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS S3に保存しているファイル名を取得する(1000件以上)

Posted at

やりたいこと

AWS S3のとあるバケットのとあるフォルダ以下に保存しているファイル名を全て知りたい。
このとき、とあるバケットのとあるフォルダ以下にはファイルが1000件以上ある。

注意点
list_objectは1000件までしか取得しないので、ファイル情報を取得する処理を工夫する必要がある。

方法

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html
に記されている通り。

コード

※awsのコンフィグは設定しておく。
※python3で実行する。

sample.py
import boto3

MY_REGION = 'リージョン名';
MY_BUCKET = 'バケット名';

# バケット以下のディレクトリ
TARGET_PATH = 'tmp/YYYY/MM/DD/';

client = boto3.client('s3', region_name=MY_REGION)
paginator = client.get_paginator('list_objects')

# フィルタリング設定
operation_parameters = {
    'Bucket': MY_BUCKET,
    'Prefix': TARGET_PATH
}

page_iterator = paginator.paginate(**operation_parameters)

# S3のオブジェクトキーを出力
for page in page_iterator:
    for content in page['Contents']:
        print(content['Key'])

上記コードの出力例

tmp/YYYY/MM/DD/0001.txt
tmp/YYYY/MM/DD/0002.txt
tmp/YYYY/MM/DD/0003.txt
....
tmp/YYYY/MM/DD/1000.txt
tmp/YYYY/MM/DD/1001.txt
tmp/YYYY/MM/DD/1002.txt

memo

・個人的に1000件以上あるファイルの情報を取得するのが難しかった記憶があったが、最近は簡単にできるんだと少し感動したので記事にしました。
・また、特定のフォルダ以下というようなフィルタリングも指定できるのを知らなかったので、メモメモ。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?