s3 でプレフィックス、サフィックス両方を使ってオブジェクトを取得したいとき、
boto3のメソッドはプレフィックスのみでしか検索できなくて少し不便だったので自作の関数を用意して実装しました。
引数suffix
に正規表現で検索文字を入れると、ヒットするオブジェクトが配列で返ってくる
import boto3
import re
def get_s3_objects(bucket, prefix, suffix):
suffix += "$" # 末尾文字を付与
s3 = boto3.client("s3")
obj_list = s3.list_objects_v2(Bucket=bucket, Prefix=prefix)["Contents"]
obj_list = list(filter(lambda x: re.compile(suffix).search(x["Key"]), obj_list))
return obj_list