执行cdk deploy部署AWS ECS服务时,命令是否等待部署完成?
AWS ECS服务部署时
cdk deploy的返回时机 当你用cdk deploy部署ECS集群中的服务任务时,它会等待部署完成(新实例启动成功、旧实例排空终止)后才返回,具体逻辑如下:
cdk deploy本质是触发AWS CloudFormation执行变更集,它会一直等待CloudFormation将整个栈的更新标记为完成后才退出,不会提前返回。- 对于ECS服务资源,CloudFormation判断更新完成的标准是服务达到稳定状态:
- 新启动的任务实例全部进入
RUNNING状态并通过健康检查 - 旧任务实例按照你配置的部署策略(比如滚动更新的最大百分比、最小健康百分比)被逐步排空流量,最终终止
- 新启动的任务实例全部进入
- 如果你的ECS服务使用了CodeDeploy部署控制器,CloudFormation会进一步等待CodeDeploy的部署流程完全结束(包括流量切换完成、旧实例确认排空),才会标记服务资源更新完成。
- 要是部署过程中出现异常(比如新实例启动失败、健康检查不通过),CloudFormation会进入回滚或失败状态,
cdk deploy也会等到这个最终状态确定后才返回。
你看到的CloudFormation文档里说“执行变更集后终止”,这里的“执行变更集”不是指提交变更就结束,而是指CloudFormation完成了所有资源的创建/更新/删除,并确认资源达到预期状态的整个过程,对于ECS服务来说就包含了实例启动和排空操作。
内容的提问来源于stack exchange,提问作者user2456909
相关产品推荐
相关产品推荐

