我想通过使用最新的 Docker 映像启动我的 ECS 服务来自动部署应用程序。据我了解,部署新镜像版本的方法如下:
- 创建新的任务修订版(更新 Docker 存储库上的映像后)。
- 更新服务并指定新版本。
这似乎可行,但我想通过 CLI 来完成这一切,这样我就可以编写脚本了。 #2 似乎很容易通过 AWS CLI 完成update-service
,但我没有看到一种方法可以在不重新指定整个任务 JSON 的情况下执行#1register-task-definition
(我的 JSON 将在环境变量中包含凭据,因此我希望将其放在尽可能少的位置)。
我应该这样自动部署 ECS 服务更新吗?如果是这样,是否有一种“好的”方法可以让任务定义启动新的修订版(即不重复所有内容)?
是的,这是正确的做法。
不,使用当前的 API,您无法在不复制现有任务定义的情况下注册其新版本。
如果您没有使用 CLI 生成原始任务定义(或者不想重用生成它的原始命令),您可以通过 CLI 尝试如下操作:
OLD_TASK_DEF=$(aws ecs describe-task-definition --task-definition <task_family_name>)
NEW_CONTAINER_DEFS=$(echo $OLD_TASK_DEF | jq '.taskDefinition.containerDefinitions' | jq '.[0].image="<new_image_name>"')
aws ecs register-task-definition --family <task_family_name> --container-definitions "'$(echo $NEW_CONTAINER_DEFS)'"
不像最后一个命令那样 100% 安全--container-defintions
论证(其中包括"environment"
条目)仍然可以通过诸如ps
。 AWS SDK 之一可以让您更加安心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)