【问题标题】:python boto cannot get environ variable of docker containerpython boto无法获取docker容器的环境变量
【发布时间】:2020-08-13 10:46:30
【问题描述】:

我使用 docker 镜像 jrei/systemd-ubuntu:18.04 安装golang并设置github.com/remind101/assume-role 并在 uwsgi 上运行 Djangonginx

他的 Python 版本是 3.7boto 版本是 2.49.0

另外,Django 要求安装在 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 ~/.aws/credentials

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

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

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

哪一部分有问题?码头集装箱? uwsgi?还是venv?有什么想法吗?

【问题讨论】:

  • 你在哪里运行 docker?是在 ECS 上吗?
  • 在 Docker 中,您通常不会使用 systemd 或虚拟环境。 (将包安装到“系统”Python 中更简单,Docker 环境使您与其他 Python 安装隔离。)您能否提供minimal reproducible example 至少包含您的 Dockerfile 以及您如何运行映像的描述以及你是如何注入凭据的?
  • 我在 docker 容器和 vm 上都试过了,都是同样的问题。问题出在 uwsgi 上。

标签: python django amazon-web-services docker


【解决方案1】:

8/15 编辑

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

VAR1=VALUE1
VAR2=VALUE2

和uwsgi文件:

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

那么uwsgi的python就可以通过os.environ获取env变量了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 2019-01-09
    • 2016-12-28
    • 2018-12-03
    • 2021-06-25
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    相关资源
    最近更新 更多