Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用S3处理Heroku、配置变量和django的问题_Django_Heroku_Amazon S3 - Fatal编程技术网

使用S3处理Heroku、配置变量和django的问题

使用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中运行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_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开发中心的这篇文章中有更多信息: