我使用的是带有Python框架的AWS ECS,在我的任务定义中,我可以选择添加服务(集群)可用的环境变量。
下面是我添加env变量的地方:
当我尝试打印服务中的所有env变量时,我无法访问这些变量,我不知道为什么。这里我使用environ打印了所有的env:
for a in os.environ:
print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")
结果:
DB_PORT或APP_KEY在我的服务或Python代码中不可用。
1条答案
按热度按时间qxgroojn1#
我也遇到过类似的问题,在我看来,整个环境只传递给了PID 1(init进程,在容器中应该是CMD/ENTRYPOINT命令)。Cron不是那个进程,所以不能假设它看到了相同的环境。
我所做的可能不是最好的解决方案,这是相当黑客,但它的工作。
进程的环境在
/proc/<pid>/environ
中可用,因此在本例中为/proc/1/environ
,我从那里获取它并将其存储在一个文件中以供将来用途:然后在脚本中使用
source /src/.profile
(在您的示例中是cron作业)。如果您需要AWS凭据,您可能还需要访问
ECS_CONTAINER_METADATA_URI_V4
环境变量,该变量也在其中。