通过 AWS Fargate 任务停用通知改善运营监控能力

通过 AWS Fargate 任务停用通知改善运营监控能力

💡 原文中文,约5100字,阅读约需13分钟。
📝

内容提要

AWS Fargate是无服务器计算引擎,用于容器化工作负载,可以消除底层基础设施的保护和补丁工作。AWS最近更新了AWS Fargate任务停用流程,增加了通知功能和任务停用等待期,以便用户可以控制停用时间。建议按照最佳实践部署工作负载,使用fargateTaskRetirementWaitPeriod设置任务停用等待期的时间长度,同时使用EventBridge和Lambda捕获任务停用通知。

🔎

延伸解读

任务停用等待期的配置与权衡

用户可通过 Amazon ECS AccountSetting 中的 fargateTaskRetirementWaitPeriod 设置任务停用等待期,可选值为 0、7 或 14 天。等待期越长,手动操作的时间窗口越大,但可能延迟应用安全更新。AWS 建议尽可能缩短等待期,以尽快使用新的平台版本修订。在极少数关键安全更新时,AWS 可能覆盖该设置并立即停用任务。

利用 EventBridge 实现停用通知自动化

任务停用通知会发送到 AWS Health Dashboard,并可通过 Amazon EventBridge 规则捕获。规则使用事件详细类型代码 AWS_ECS_TASK_PATCHING_RETIREMENT 匹配通知,然后触发 AWS Lambda 函数处理事件,例如转发到 Slack 等 ChatOps 工具。这有助于团队及时了解停用情况并自动响应,提升运营监控效率。

部署最佳实践以降低停用影响

为减少任务停用对工作负载的影响,应按照 Amazon ECS 最佳实践部署。例如,将无状态应用部署为 ECS 服务时,使用多个任务副本并将 minimumHealthyPercent 设置为 100%。这样,当 Fargate 停用任务时,ECS 会先启动新任务并等待其运行,再停止旧任务,确保服务不中断。

❓

Q&A

AWS Fargate 任务停用是什么?为什么 AWS 会停用某些平台版本修订?

AWS Fargate 任务停用是 AWS 停止在特定平台版本修订上运行所有任务的过程。AWS 可能会因安全漏洞或性能改进等原因停用某个平台版本修订。

如何设置 Fargate 任务停用等待期?可以设置哪些值?

可以使用 Amazon ECS AccountSetting 中的 fargateTaskRetirementWaitPeriod 来设置任务停用等待期。可配置为 0、7 或 14 天。0 表示立即停用,7 或 14 表示在通知后等待相应天数再停用。

任务停用通知会通过哪些渠道发送?如何捕获这些通知?

任务停用通知通过电子邮件发送给 AWS 账户的主要电子邮件联系人,并发送到 AWS Health Dashboard。可以使用 Amazon EventBridge 捕获 AWS Health Dashboard 的通知,并触发 AWS Lambda 函数进行自动化操作。

为了减少任务停用的影响,部署工作负载时应遵循哪些最佳实践?

应按照 Amazon ECS 最佳实践部署工作负载。例如,将无状态应用程序部署为 Amazon ECS 服务时,应部署多个任务副本并将 minimumHealthyPercent 设置为 100%,这样在停用旧任务前会先启动新任务并等待其运行。

如何查看和修改现有的 fargateTaskRetirementWaitPeriod 值?

可以使用 aws ecs list-account-settings 命令查看现有值,使用 aws ecs put-account-setting-default 命令修改。例如:aws ecs put-account-setting-default --name fargateTaskRetirementWaitPeriod --value 14。

能否提供一个使用 EventBridge 和 Lambda 捕获任务停用通知并转发到 Slack 的解决方案概述?

可以。使用 EventBridge 规则捕获事件类型为 AWS Health Event、事件详情类型代码为 AWS_ECS_TASK_PATCHING_RETIREMENT 的通知,触发 Lambda 函数解析受影响资源并转发到 Slack 传入 Webhook。示例代码存储在 GitHub 存储库中,可通过 AWS SAM 部署。

🏷️

标签

➡️

继续阅读