boto3 でファイルをアップロードする

python 経由で s3 にファイルをアップロードしたくなる場合がある。

本記事はその際のメモ。

import boto3

# 書き込み先バケット
BUCKET = 'output-bucket'
INPUT= 'hoge.csv'
OUTPUT = 'hoge.csv'
# OUTPUT = 'DIR/DIR/hoge.csv'


s3 = boto3.resource('s3')
s3.Bucket(BUCKET).upload_file(Filename=INPUT, Key=OUTPUT)

ポイントとして、書き込み先の s3 のディレクトリに対し書き込むとき、存在しないディレクトリを対象にすると、存在しないディレクトリは一緒に作られる。これは、そもそも s3 にディレクトリという考えがないためである。

それについては以下の記事を参照