Botoを使用してPythonからAWSを操作する(S3編)
はじめに
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()
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からファイルをダウンロードすることができる。
Author And Source
この問題について(Botoを使用してPythonからAWSを操作する(S3編)), 我々は、より多くの情報をここで見つけました https://qiita.com/oliverSI_/items/f1feb27881eace14c716著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .