python boto无法获取docker容器的环境变量

2024-05-23 15:58:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用docker图像 jrei/systemd-ubuntu:18.04 安装golang并设置github.com/remind101/assume-role 然后用{}在{}上运行{}

Python版本是3.7boto版本是2.49.0

此外,Django requirements安装在venv中

在~/.aws/config中设置aws配置文件并在~/.aws/credentials中设置凭据之后

服务器工作正常,但是boto包无法获取环境变量

Django页面显示错误消息:

NoAuthHandlerFound at /
No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials

Request Method: GET
Request URL:    http://localhost/
Django Version: 3.0.5
Exception Type: NoAuthHandlerFound
Exception Value:    
No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials
Exception Location: /opt/web/camelot-portal-env/lib/python3.7/site-packages/boto/auth.py in get_auth_handler, line 1021
Python Executable:  /opt/web/camelot-portal-env/bin/uwsgi
Python Version: 3.7.8
Python Path:    
['.',
 '',
 '/usr/lib/python37.zip',
 '/usr/lib/python3.7',
 '/usr/lib/python3.7/lib-dynload',
 '/opt/web/camelot-portal-env/lib/python3.7/site-packages']

我检查了$AWS_ACCESS_KEY_ID$AWS_SECRET_ACCESS_KEY

两者都不是空的,我尝试将$AWS_CREDENTIAL_FILE配置为~/.aws/config and{}两次

两次我重新启动uwsgi服务时,boto仍然没有获得任何密钥或密钥ID

最后,如果我在本地环境中安装需求并使用python manage.py runserver

boto包可以正常获取环境变量,并且一切正常

问题出在哪一部分?码头工人集装箱?uwsgi?还是文夫?有什么想法吗


Tags: djangoenvawsweblibusrexceptionuwsgi
1条回答
网友
1楼 · 发布于 2024-05-23 15:58:38

8/15已编辑

我发现问题出在uWSGI上,它没有获取linux env变量。除非我在文件中像这样设置env: 环境文件

VAR1=VALUE1
VAR2=VALUE2

和uwsgi文件:

for-readline = /path/to/envfile
  env = %(_)
endfor =

然后uwsgi的python可以通过os.environ获得env变量

但是,我仍然无法通过aws令牌验证,我认为这是另一个问题

相关问题 更多 >