为 Amazon ECS 上的 AWS Fargate 任务停用做准备
要为任务停用做准备,请执行下面的操作:
-
设置任务停用等待期。
-
捕获任务停用通知以通知团队成员。
-
您无法控制任务停用的确切时间,但是,可以通过使用 force-deployment 选项更新服务来控制任务的替换。
步骤 1:设置任务等待时间
您可以对 Fargate 开始停用任务的时间进行配置。对于需要立即应用更新的工作负载,请选择即时设置(0
)。当您需要更多控制时,例如,当任务只能在特定时间段内停止时,请配置 7 天(7
)或 14 天(14
)选项。
建议您选择较短的等待时间,以便更快获得较新的平台版本修订版。
通过以根用户或管理员用户身份运行 put-account-setting-default
或 put-account-setting
配置等待期。将 fargateTaskRetirementWaitPeriod
选项用于设置为以下值之一的 name
和 value
选项:
-
0
- AWS 发送通知,并立即开始停用受影响的任务。 -
7
- AWS 发送通知,等待 7 个日历日后才开始停用受影响的任务。 -
14
- AWS 发送通知,等待 14 个日历日后才开始停用受影响的任务。
默认值为 7 天。
有关更多信息,请参阅《Amazon Elastic Container Service API 参考》中的 put-account-setting-default 和 put-account-setting。
步骤 2:获取任务停用通知以提醒团队并采取行动
当即将有任务停用时,AWS 会向 AWS Health Dashboard 和 AWS 账户 上的主要电子邮件联系人发送任务停用通知。AWS Health Dashboard 提供了与其他 AWS 服务(包括 Amazon EventBridge)的许多集成。您可以使用 EventBridge 从任务停用通知构建自动化,例如通过将消息转发到 ChatOps 工具来提高即将进行的停用的可见性。AWS HealthAware 是一种资源,它展示了 AWS Health Dashboard 的强大功能以及如何在整个组织中分发通知。您可以将任务停用通知转发到一个聊天应用程序(如 Slack)。
下图显示了解决方案概述。
下面的信息提供了详细信息。
-
Fargate 将任务停用通知发送到 AWS Health Dashboard。
-
AWS Health Dashboard 将邮件发送到 AWS 账户 上的主要电子邮件联系人,并通知 EventBridge。
-
EventBridge 有一条捕获停用通知的规则。
该规则查找具有以下事件详细信息类型的事件:
"AWS Health Event" and the Event Detail Type Code: "AWS_ECS_TASK_PATCHING_RETIREMENT"
-
该规则会触发一个 Lambda 函数,其使用 Slack Incoming Webhook 将信息转发到 Slack。有关更多信息,请参阅 Incoming Webhooks
。
有关代码示例,请参阅 Github 上的 Capturing AWS Fargate Task Retirement Notifications
步骤 3:控制任务的替换
您无法控制任务停用的确切时间,但是可以定义等待时间。如果想按自己的计划控制替换任务,则可以捕获任务停用通知以首先了解任务停用日期。然后,您可以重新部署服务以启动替换任务,并同样替换任何独立任务。对于使用滚动部署的服务,可以在停用开始时间之前使用 update-service
和 force-deployment
选项更新服务。
以下 update-service
示例使用 force-deployment
选项。
aws ecs update-service —-service
service_name
\ --clustercluster_name
\ --force-new-deployment
对于使用蓝/绿部署的服务,您需要在 AWS CodeDeploy 中创建新部署。有关如何创建部署的信息,请参阅《AWS Command Line Interface Reference》中的 create-deployment。