给定 S3 中的
.env
对象以及一些环境变量:
POSTGRES_HOSTNAME=staging.cxxxxx.us-east-1.rds.amazonaws.com
POSTGRES_PASSWORD=xxxxxx
DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOSTNAME}:5432/postgres?schema=newjitsu
ECS 任务定义配置为使用该对象来指定容器的环境变量。
当我部署任务时,我在容器日志中收到以下错误:
Error: P1001: Can't reach database server at ${POSTGRES_HOSTNAME}:5432
让我相信 ECS/Fargate 不支持变量插值。
AWS ECS 文档指出:
有关环境变量文件语法的更多信息,请参阅在文件中声明默认环境变量
带有 Docker Compose 变量文档的链接,该文档描述了变量插值。
确实如此,AWS 文档没有明确声明支持插值,但也没有明确声明不支持插值。
有人可以确认ECS/Fargate是否支持环境变量插值吗?
谢谢!
不,它本身不支持变量插值。 您仍然需要在应用程序使用 .env 文件之前对其进行预处理。 您可以打赌,如果这是他们支持的功能,他们会宣传/记录它。
您可以设置任务定义环境变量(或机密)以从 SSM Parameter Store 或 Secrets Manager 中提取。 然后这些将在您的容器中可用,但如果您需要在 .env 文件中使用它们,则必须将它们放在那里。