以前に Python の boto3 で S3 の操作を行うサンプルというメモを書きました。 今回はアップロード / ダウンロードサンプルをメモしておきます。
事前準備
awscli
と boto3
をインストールしておきます。
pip install 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()
して表示しています。
import boto3
BUCKET = 'BUCKET'
KEY = 'hello.txt'
s3 = boto3.client('s3')
obj = s3.get_object(Bucket=BUCKET, Key=KEY)
print(obj['Body'].read().decode())
コメント