1

私は非常に奇妙な問題を抱えています。

S3 を使用して Heroku で django プロジェクトを実行し、静的アセットを保存しています。

次のように設定して、Heroku 環境変数を使用したかったのです。

heroku config:add AWS_S3_TOKEN=my_s3_token
heroku config:add AWS_S3_SECRET=my_s3_secret

そして、それらを python の os モジュールで使用します。

import os

token = os.getenv('AWS_S3_TOKEN')
secret = os.getenv('AWS_S3_SECRET')

しかし、herokuは私に次のエラーを投げ続けます:

NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials

そのため、これらのパラメーターを settings.py ファイルに書き込むことになり、正常に動作します

なぜこうなった?

私が走れば

heroku config

設定した変数をすべて見ることができます。

heroku run python manage.py shell

その後

import os
print os.getenv('AWS_S3_TOKEN')

たとえば、変数の値を出力します。

これについての手がかりはありますか?

前もって感謝します

4

2 に答える 2

1

Python や Django には詳しくありませんが、興味があります。

空白の文字列で認証を試みると、同じエラーが発生しますか?

もしそうなら、それはあなたがこの認証ダンスをしている時だと思います. いつやってますか?コンパイル時ですか、それとも実行時ですか? (コンパイル時に、これを見てください)

于 2013-06-27T12:21:54.870 に答える
0

通常、アプリの環境変数は、Heroku がスラッグをコンパイルしてアプリケーションをセットアップしている間は利用できません。アプリの実行中にのみ利用できます。Django アプリの場合、Heroku はcollectstaticスラッグ コンパイルの一部として実行されるため、このエラーが表示される可能性があります。

Heroku Labs 機能を有効にすることで、コンパイル中に環境変数を使用できるようにすることができます。

heroku labs:enable user-env-compile

詳細については、Heroku デベロッパー センターの記事 ( https://devcenter.heroku.com/articles/labs-user-env-compile)を参照してください。

于 2013-06-27T12:29:04.620 に答える