#はじめに
BotoはPython用のAWSのSDKである。Botoを使用することで、Amazon S3やAmazon EC2をPythonから操作することができる。今回は、Botoを使用してAmazon S3を操作する際のTipsをまとめた。
#準備
以下の「準備」までしておく。
Botoを使用してPythonからAWSを操作する(入門編)
#Tips
###バケットの作成
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('[バケット名]')
bucket.create()
バケット名がすでに存在している場合には、botocore.errorfactory.BucketAlreadyExistsエラーが返ってくる。
###バケットの削除
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('[バケット名]')
bucket.delete()
バケット名が存在しない場合には、botocore.errorfactory.NoSuchBucketエラーが返ってくる。
###すべてのバケットを取得
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket)
実行結果
s3.Bucket(name='[バケット名1]')
s3.Bucket(name='[バケット名2]')
...
###バケット内のすべてのオブジェクトを取得
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('[バケット名]')
for object in bucket.objects.all():
print(object)
実行結果
s3.ObjectSummary(bucket_name='[バケット名]', key=u'[ファイル名1]')
s3.ObjectSummary(bucket_name='[バケット名]', key=u'[フォルダ名1]/')
s3.ObjectSummary(bucket_name='[バケット名]', key=u'[フォルダ名1]/[ファイル名2]')
...
###バケットのサイズを取得する
s3 = boto3.resource('s3')
bucket = s3.Bucket('[バケット名]')
bucket_size = 0
for object in bucket.objects.all():
bucket_size += object.size
print('Bucket Size: {} bytes'.format(bucket_size))
実行結果
Bucket Size: [サイズ] bytes
###ファイルをダウンロードする
import boto3
s3 = boto3.resource('s3')
s3.Object('[バケット名]', '[ファイル名(S3)]').download_file('[ファイル名(ローカル)]')
###ファイルをアップロードする
import boto3
s3 = boto3.resource('s3')
s3.Object('[バケット名]', '[ファイル名(S3)]').upload_file('[ファイル名(ローカル)]')
###署名付きURLを生成する
import boto3
s3 = boto3.client('s3')
presigned_url = s3.generate_presigned_url(
ClientMethod = 'get_object',
Params = {'Bucket' : '[バケット名]', 'Key' : '[ファイル名]'},
ExpiresIn = [有効期間(秒)],
HttpMethod = 'GET')
print(presigned_url)
得られたURLからファイルをダウンロードすることができる。