LoginSignup
10
9

More than 5 years have passed since last update.

Botoを使用してPythonからAWSを操作する(S3編)

Last updated at Posted at 2018-10-02

はじめに

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からファイルをダウンロードすることができる。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9