使用S3处理Heroku、配置变量和django的问题
我有一个很奇怪的问题 我在Heroku中运行django项目,使用S3存储静态资产 我想通过如下设置来使用Heroku环境变量:使用S3处理Heroku、配置变量和django的问题,django,heroku,amazon-s3,Django,Heroku,Amazon S3,我有一个很奇怪的问题 我在Heroku中运行django项目,使用S3存储静态资产 我想通过如下设置来使用Heroku环境变量: heroku config:add AWS_S3_TOKEN=my_s3_token heroku config:add AWS_S3_SECRET=my_s3_secret 并将它们与python的操作系统模块一起使用: import os token = os.getenv('AWS_S3_TOKEN') secret = os.getenv('AWS_S3_
heroku config:add AWS_S3_TOKEN=my_s3_token
heroku config:add AWS_S3_SECRET=my_s3_secret
并将它们与python的操作系统模块一起使用:
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')
例如,它打印变量的值
有线索吗
提前谢谢你我不熟悉python或Django,但我很好奇 如果您尝试使用空白字符串进行身份验证,是否会出现相同的错误
如果是这样的话,那么我怀疑是关于你什么时候跳认证舞。你什么时候做?是在编译时,还是在运行时?(如果是在编译时,请看)我不熟悉python或Django,但我很好奇 如果您尝试使用空白字符串进行身份验证,是否会出现相同的错误
如果是这样的话,那么我怀疑是关于你什么时候跳认证舞。你什么时候做?是在编译时,还是在运行时?(如果在编译时,请查看)当Heroku编译slug并设置应用程序时,应用程序的环境变量通常不可用,它们仅在应用程序运行时可用。对于Django应用程序,Heroku将运行
collectstatic
,作为slug编译的一部分,这可能就是您看到此错误的原因
您可以通过启用Heroku Labs功能,使环境变量在编译期间可用:
heroku labs:enable user-env-compile
Heroku开发中心的这篇文章中有更多信息:当Heroku编译slug并设置应用程序时,应用程序的环境变量通常不可用,它们仅在应用程序运行时可用。对于Django应用程序,Heroku将运行
collectstatic
,作为slug编译的一部分,这可能就是您看到此错误的原因
您可以通过启用Heroku Labs功能,使环境变量在编译期间可用:
heroku labs:enable user-env-compile
Heroku开发中心的这篇文章中有更多信息: