boto3でs3にアクセス

サーバのバックアップをPythonを利用してs3にしたいなと思いboto3をお試し。

 

boto3のインストール

boto3はpipからインストールできるので、Python 2.7.9 若しくは Python 3.4以降であれば

$ pip install boto3

これでインストールされます。

 

boto3でs3にアクセス

IAMを使って、ACCESS_KEY, SECRET_ACCESS_KEYを事前に取得しておきます。
ドキュメントでは、~/.aws/credentials にACCESS_KEY, SECRET_ACCESS_KEYを設定する方が掲載されていますが、コンソールからsessionに設定する方法でもできますのでお試しとしてはこっちのが楽。
流れはこんな感じ

$ python
>>> import boto3
>>> boto3.session.Session('(IAMで作成したACCESS_KEY)', '(IAMで作成したSECRET_ACCESS_KEY')
Session(region_name='ap-northeast-1')
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
... print(bucket.name)
...
(S3パケットの一覧)
:
:

これでIAMの設定が正しそうというのがわかります。
一応ファイルのアップロードまで確認するため、a.jpgというテストファイルをアップロードしてみます。

>>> s3 = boto3.resource('s3')
>>> data = open('a.jpg', 'rb')
>>> s3.Bucket('(s3パケット名)').put_object(Key='a.jpg', Body=data)
s3.Object(bucket_name='(s3パケット名)', key='a.jpg')

完了後に、、S3のコンソールを見てみると、、

無事アップロードできていました^^

これであとは、本体スクリプトを作るだけですね。boto3すごい。