概要

 boto3で、ローカルからS3へファイルをアップロードする方法を調べ、正しく行えることを確認した。


背景と目的

 AWSのS3へのアップロードを手でやるのが面倒になったので、今更ながら、ローカルPC上からboto3を使ってアップロードできるようにする。


詳細

0.実施環境
  • Windows10
  • Python 2.7
1.AWS CLIのインストール
  • まず、AWS CLIをインストール。なくてもできなくはないのかもしれないが、後述のCredentialsの設定をしておくと、ソースコード内にいちいちCredentialsを書かなくていいようなので、インストールする。
  • 私の場合Windowsの64ビットなので、こちらからmsiをダウンロードし、インストールした。
2.boto3のインストール

 pipを使ってインストール。特に迷うことはない。

pip install boto3
3.Credentialsの設定

 こちらに従い、

aws configure

 とすると、アクセスキーIDとシークレットアクセスキーが順に聞かれるので、入力。そのあと、リージョンも入力する。

4.S3へのアップロード

 以下のように、boto3を使ってput_objectを実行。

import boto3

s3 = boto3.resource('s3')
# ファイルを読み出し
data = open("アップロードしたいファイルのパス", 'rb')
# アップロード
s3.Bucket('バケット名').put_object(Key='アップロード先のキー', Body=data)

 S3バケットを確認したところ、ちゃんとファイルが入っていた。正しく動作した。とりあえず、これでアップロードをPythonスクリプトで自動化できそう。