Python(Django)でAWS boto3を使う際のエラー```Unable to locate credentials```対応法
- アーティスト: O.S.T.
- 出版社/メーカー: Universal
- 発売日: 2017/04/07
- メディア: CD
- この商品を含むブログを見る
どんなにときにエラーが出るか
今までエラーが出なかったんです。それでついいつもどおり使っているとエラーが出てしまったので調べたところ・・・対応策がわかりました。まずは通例を提示します。
よくある例
import boto3 s3 = boto3.client('s3') s3.upload_file(....続く
AWS Lambdaの場合はこれで動きました。 多分AWS内部で動くコードだから(クレデンシャル情報省いて大丈夫だったのか?!)
動かない場合
herokuのサーバーに上げると、直接AWSじゃないからか、Unable to locate credentials
エラーがでて、動きませんでした。
解決策
次のようにクレデンシャルキー情報を引数に入れると無事エラーなく動きました^^ ちなみにこれはDjangoのコード(くわしくはmodels.py)で動作確認済みです。
import boto3 s3 = boto3.client('s3', aws_access_key_id=***key***, #Djangoならsettingsから引っ張ってきたり、環境変数登録で隠せます aws_secret_access_key=***key***, #Djangoならsettingsから引っ張ってきたり、環境変数登録で隠せます region_name='****region***' #東京リージョンならap-northeast-1 ) s3.upload_file(....続く