amazon-web-services - AWS 使用更新的映像部署 ECS
问题描述
似乎必须为每个服务更新提供一个新的完整任务定义。即使大多数时候新部署只包含对底层 docker 映像之一的更新
虽然这是可以理解的核心架构选择。这很麻烦。由于任务定义的完整 JSON 规范非常复杂,是否有一个命令行选项可以使这更容易?
目前,开发人员需要提供复杂的脚本和部署编排来在他们的 CI/CD 流程中完成这个相对常规的任务
我看到了Here和Here的尝试。这些解决方案似乎不适用于所有情况(例如,对于 Fargate 启动)
我知道,如果更新的图像使用重复使用相同的标签,这个问题会变得更容易,但是在重视可再现性和可听性的开发文化中,这根本不是一个合理的选择
除了利用 AWS API 和 JSON 操作库之外,没有其他选择吗?
编辑看来这个项目做得相当不错https://github.com/fabfuel/ecs-deploy
解决方案
我找到了一些方法
正如我在评论中提到的,请使用Github 链接中的ecs-deploy脚本
--generate-cli-skeleton
通过awscli上的选项创建任务定义。填写除execution-rule-arn、task-role-arn、image之外的所有详细信息
这些无法填写,因为它们会在每次提交或您要部署到的每个环境中发生变化
将此骨架提交到git,因此它是 CI 工作区的一部分
然后使用 JSON 遍历/解析库或实用程序(例如https://jqplay.org/)在 CI 上的构建时替换 roleArn 和图像名称