boto + python2.7環境でS3へのSigV4アクセス

S3へのSigV2アクセスが終わっちゃいますね。
https://dev.classmethod.jp/cloud/aws/s3-sigv2-abolition/
boto(not boto3)を使っている環境でSigV4になるように修正しました。

1. botoのバージョンを最新にする

pipで最新版をインストールしましょう。

1
pip install boto

2. /etc/boto.cfgを書く

1
[s3] use-sigv4 = True

基本はこれでOK。ただ、一部メソッドは明示的に書き換える必要があるようで、具体的にはS3Connectionを使ってると以下のようなエラーが出ます。

1
2
boto.s3.connection.HostRequiredError: BotoClientError: When using SigV4,
you must specify a 'host' parameter.

なので明示的にhostを書いてあげます。リージョンは合わせたほうがよいかも?(よくわかってない

1
S3Connection(host='s3-ap-northeast-1.amazonaws.com')

とりあえずできたっぽいのでよし。