目的
ローカルに保存された画像ファイルををS3にアップロードする手順は見かけるのですが、本記事は表題の通り、ダウンロードした画像をファイルに保存することなく直接アップロードすることを目的としています。
方法
requests.get
で取得したバイナリデータをio.BytesIO
に渡すことでファイルオブジェクトとして扱います。
import requests
import io
import boto3
# 画像をダウンロード
res = requests.get('画像のURL')
res.raise_for_status()
# 取得したバイナリデータをファイルオブジェクトに変換
img = io.BytesIO(res.content)
# S3にアップロード
s3 = boto3.client('s3')
s3.upload_fileobj(img, 'bucket_name', 's3/path')