确保 ECS 仅在新任务准备就绪时终止旧任务

Ensure ECS only kills old tasks when new ones are ready

我们有基于 Docker 的 ECS 服务,一旦进程启动,它需要同步应用程序状态,然后才能准备好开始服务请求。这可能需要一些时间(进程开始后的几秒)。

使用 ECS 服务时,更改任务定义版本会触发任务的滚动替换(好),但速度太快。一旦任务达到 RUNNING 状态,下一个任务就会被终止。但是 RUNNING 只是意味着进程已经启动,并不意味着它已经满足了它自己的所有内部要求以准备工作......在这种情况下,还没有准备好服务请求

整个更新过程发生得如此之快,以至于在某些情况下,所有旧任务都会在任何新任务完成加载其状态之前被终止,我们最终会遇到中断。

确保 ECS 服务不会终止 old/hot 任务的最佳或正确方法是什么,直到新任务实际热且完全在线,而不仅仅是容器进程 运行 ?

您可以通过设置以下参数来控制部署进行的速度: