Python の boto3 で S3 とダウンロード/アップロードする
以前に Python の boto3 で S3 の操作を行うサンプルというメモを書きました。 今回はアップロード / ダウンロードサンプルをメモしておきます。
事前準備¶
awscli と boto3 をインストールしておきます。
awscli の設定を済ませておきます。
# aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json
ローカルファイルをアップロード¶
ローカルファイルを S3 Bucket へアップロードするには S3.Bucket.upload_file を使います。
#!/usr/bin/env python
import boto3
BUCKET = 'BUCKET'
KEY = 'hello.txt'
s3 = boto3.resource('s3')
s3.Bucket(BUCKET).upload_file(Filename=KEY, Key=KEY)
ローカルファイルへダウンロード¶
S3 Bucket 上のファイルをローカルへダウンロードするには S3.Bucket.download_file を使います。
#!/usr/bin/env python
import boto3
BUCKET = 'BUCKET'
KEY = 'hello.txt'
s3 = boto3.resource('s3')
s3.Bucket(BUCKET).download_file(Filename=KEY, Key=KEY)
メモリ上へダウンロード¶
S3 Bucket 上のファイルをローカルにはダウンロードせず、オンメモリで処理したい場合は S3.Client.get_object でオブジェクトを取得し、その Body のバイト配列を利用します。 下記の例では単純に表示させているので .decode() して表示しています。