AWS ECS:ENV 变量超出任务定义 JSON

Posted

技术标签:

【中文标题】AWS ECS:ENV 变量超出任务定义 JSON【英文标题】:AWS ECS: ENV vars out of Task Definition JSON 【发布时间】:2017-11-18 04:37:23 【问题描述】:

我正在安装一个 gitlab ci 脚本来在 Amazon ECS 上部署我的多容器应用程序,在升级服务部分,我必须使用 json 来定义我所有的容器定义(图像、名称、内存、 ...)。

我需要使用环境变量(数据库密码,电子邮件,...),但我不想放入这个 json 文件(它将存储在 gitlab 存储库中),那么存储这些变量的最佳解决方案是什么不在存储库中?

AWS 建议存储在 S3 卷 (https://aws.amazon.com/es/blogs/security/how-to-manage-secrets-for-amazon-ec2-container-service-based-applications-by-using-amazon-s3-and-docker/) 但我不知道是否有更好的选择。

谢谢!

【问题讨论】:

【参考方案1】:

您将 cloudformation 模板存储在 git 中是对的,因为它会发生变化,您需要跟踪这些变化。但是秘密当然在源代码控制中没有位置!在这种情况下,我的首选选项是将带有代码的 cloudformation 模板保存在源代码控制之下,并将机密存储在安全位置,例如 S3 或私有数据库。

在这种情况下,您可以让 CI 系统从 GitLab 存储库中提取代码以构建应用程序并运行测试,然后从所选位置提取配置以便为部署做好准备。

如果您将机密存储在 S3 中的文件中,例如,您使用脚本读取这些值并将它们替换为任务定义的 json(或 yaml)文件中的正确字段。这样,您就可以将代码与配置完全分开,并且可以独立管理它们。

【讨论】:

以上是关于AWS ECS:ENV 变量超出任务定义 JSON的主要内容,如果未能解决你的问题,请参考以下文章

AWS ecs 任务定义变量

用于 ECS 任务/容器的 Terraform AWS CloudWatch 日志组

nodejs中如何访问ecs任务定义环境变量?

一个集群上的 AWS ECS 多任务定义

AWS ECS 在一个任务定义中启动多个容器

如何在 AWS ECS 任务定义中配置日志