针对 Amazon ECS 任务停止事件发送 Amazon Simple Notification Service 警报 - Amazon Elastic Container Service

针对 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

协议 Email
终端节点

您当前有权访问的电子邮件地址

步骤 2:注册事件规则

接下来,您注册一个事件规则,此规则仅捕获具有已停止容器的任务的任务已停止事件。

有关如何创建和订阅 Amazon SNS 主题的信息,请参阅《Amazon EventBridge 用户指南》中的在 Amazon EventBridge 中创建规则,并使用以下表格确定要选择哪些选项。

选项

Rule type

具有事件模式的规则

事件源 AWS 事件或 EventBridge 合作伙伴事件
事件模式

自定义模式(JSON 编辑器)

事件模式
{ "source":[ "aws.ecs" ], "detail-type":[ "ECS Task State Change" ], "detail":{ "lastStatus":[ "STOPPED" ], "stoppedReason":[ "Essential container in task exited" ] } }
Target type

AWS 服务

目标 SNS 主题
主题

TaskStoppedAlert(您在步骤 1 中创建的主题)

步骤 3:测试您的规则

通过运行在启动后不久退出的任务来验证规则是否有效。如果您的事件规则配置正确,您将在几分钟内收到包含事件文本的电子邮件。如果您具有可满足规则要求的现有任务定义,请使用该定义运行任务。如果您不具有该定义,以下步骤将引导您注册 Fargate 任务定义并运行它。

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择 Task definitions(任务定义)。

  3. 选择 Create new task definition(创建新的任务定义)、Create new task definition with JSON(使用 JSON 创建新的任务定义)。

  4. 在 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" ] }
  5. 选择创建

从控制台运行任务
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 集群页面上,选择您在先决条件中创建的集群。

  3. 任务选项卡上,选择运行新任务

  4. 对于应用程序类型,选择任务

  5. 对于任务定义,选择 fargate-task-definition

  6. 对于 Desired tasks(预期任务),请输入要启动的任务数量。

  7. 选择创建