docker AWS ECS环境变量不可用[Python]

3qpi33ja  于 2023-01-29  发布在  Docker
关注(0)|答案(1)|浏览(132)

我使用的是带有Python框架的AWS ECS,在我的任务定义中,我可以选择添加服务(集群)可用的环境变量。
下面是我添加env变量的地方:

当我尝试打印服务中的所有env变量时,我无法访问这些变量,我不知道为什么。这里我使用environ打印了所有的env:

for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

结果:

DB_PORTAPP_KEY在我的服务或Python代码中不可用。

qxgroojn

qxgroojn1#

我也遇到过类似的问题,在我看来,整个环境只传递给了PID 1(init进程,在容器中应该是CMD/ENTRYPOINT命令)。Cron不是那个进程,所以不能假设它看到了相同的环境。
我所做的可能不是最好的解决方案,这是相当黑客,但它的工作。
进程的环境在/proc/<pid>/environ中可用,因此在本例中为/proc/1/environ,我从那里获取它并将其存储在一个文件中以供将来用途:

for I in `cat /proc/1/environ  | strings`; do echo "export $I"; done > /src/.profile

然后在脚本中使用source /src/.profile(在您的示例中是cron作业)。
如果您需要AWS凭据,您可能还需要访问ECS_CONTAINER_METADATA_URI_V4环境变量,该变量也在其中。

相关问题