针对 Amazon ECS 任务停止事件发送 Amazon Simple Notification Service 警报
配置一个 Amazon EventBridge 事件规则,用于仅捕获任务因某个主要容器终止而停止的任务事件。事件仅将具有特定 stoppedReason
属性的任务事件发送到指定的 Amazon SNS 主题。
先决条件:设置测试集群
如果您没有要从中捕获事件的正在运行的集群,请执行使用 AWS Fargate 上的 Linux 容器开始使用控制台中的步骤来创建一个集群。在本教程结束时,您在此集群上运行一个任务来测试您是否已正确配置 Amazon SNS 主题和 EventBridge 规则。
先决条件:为 Amazon SNS 配置权限
如要允许 EventBridge 发布到 Amazon SNS 主题,请使用 aws sns get-topic-attributes 和 aws sns set-topic-attributes 命令。
有关如何添加权限的信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 权限。
添加以下权限:
{ "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns: Publish", "Resource": "arn:aws:sns:
region
:account-id
:TaskStoppedAlert", }
步骤 1:创建并订阅 Amazon SNS 主题
在本教程中,您配置一个 Amazon SNS 主题来充当新事件规则的事件目标。
有关如何创建和订阅 Amazon SNS 主题的信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 入门,并使用下表确定选择哪些选项。
选项 | 值 |
---|---|
类型 |
Standard |
名称 |
TaskStoppedAlert |
协议 | |
终端节点 |
您当前有权访问的电子邮件地址 |
步骤 2:注册事件规则
接下来,您注册一个事件规则,此规则仅捕获具有已停止容器的任务的任务已停止事件。
有关如何创建和订阅 Amazon SNS 主题的信息,请参阅《Amazon EventBridge 用户指南》中的在 Amazon EventBridge 中创建规则,并使用以下表格确定要选择哪些选项。
选项 | 值 |
---|---|
Rule type |
具有事件模式的规则 |
事件源 | AWS 事件或 EventBridge 合作伙伴事件 |
事件模式 |
自定义模式(JSON 编辑器) |
事件模式 |
|
Target type |
AWS 服务 |
目标 | SNS 主题 |
主题 |
TaskStoppedAlert(您在步骤 1 中创建的主题) |
步骤 3:测试您的规则
通过运行在启动后不久退出的任务来验证规则是否有效。如果您的事件规则配置正确,您将在几分钟内收到包含事件文本的电子邮件。如果您具有可满足规则要求的现有任务定义,请使用该定义运行任务。如果您不具有该定义,以下步骤将引导您注册 Fargate 任务定义并运行它。
-
在导航窗格中,选择 Task definitions(任务定义)。
-
选择 Create new task definition(创建新的任务定义)、Create new task definition with JSON(使用 JSON 创建新的任务定义)。
-
在 JSON 编辑器框中,编辑您的 JSON 文件,将以下内容复制到编辑器中。
{ "containerDefinitions":[ { "command":[ "sh", "-c", "sleep 5" ], "essential":true, "image":"amazonlinux:2", "name":"test-sleep" } ], "cpu":"256", "executionRoleArn":"arn:aws:iam::
012345678910
:role/ecsTaskExecutionRole
", "family":"fargate-task-definition", "memory":"512", "networkMode":"awsvpc", "requiresCompatibilities":[ "FARGATE" ] } -
选择创建。
从控制台运行任务
-
在集群页面上,选择您在先决条件中创建的集群。
-
从任务选项卡上,选择运行新任务。
-
对于应用程序类型,选择任务。
-
对于任务定义,选择 fargate-task-definition。
-
对于 Desired tasks(预期任务),请输入要启动的任务数量。
-
选择创建。