教程:针对任务停止事件发送 Amazon Simple Notification Service 警报 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

教程:针对任务停止事件发送 Amazon Simple Notification Service 警报

在本教程中,您配置一个 Amazon EventBridge 事件规则,此规则仅捕获其中的任务因某个主要容器终止而停止的任务事件。事件仅将具有特定 stoppedReason 属性的任务事件发送到指定的 Amazon SNS 主题。

先决条件:设置测试集群

如果您没有要从中捕获事件的正在运行的集群,请执行 使用经典控制台创建集群 中的步骤来创建一个集群。在本教程结束时,您在此集群上运行一个任务来测试您是否已正确配置 Amazon SNS 主题和 EventBridge 规则。

步骤 1:创建并订阅 Amazon SNS 主题

在本教程中,您配置一个 Amazon SNS 主题来充当新事件规则的事件目标。

有关如何创建和订阅 Amazon SNS 主题的信息,请参阅《Amazon Simple Notification Service 开发人员指南》Amazon SNS 入门,并使用以下表格确定要选择哪些选项。

选项

类型

标准
名称

TaskStoppedAlert

协议 Email(电子邮件)
端点

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

步骤 2:注册事件规则

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

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

选项

Rule type

具有事件模式的规则

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

自定义模式(JSON 编辑器)

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

Amazon 服务

目标 SNS 主题
主题

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

步骤 3:测试您的规则

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

测试规则

  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 选择 Task DefinitionsCreate new Task Definition

  3. 对于“Select launch type compatibility (选择启动类型兼容性)”,请依次选择 FARGATENext step (下一步)

  4. 选择 Configure via JSON (通过 JSON 配置),将以下任务定义 JSON 复制并粘贴到字段中,然后选择 Save (保存)

    { "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. 依次选择 Create (创建)View task definition (查看任务定义)

  6. 对于 Actions (操作),选择 Run Task (运行任务)

  7. 对于“Launch type (启动类型)”,选择 FARGATE。对于 VPC and security groups (VPC 和安全组),选择要使用的任务的 VPC 和子网,然后选择 Run Task (运行任务)

  8. 对于 Container name,键入 Wordpress;对于 Image,键入 wordpress;对于 Maximum memory (MB),键入 128

  9. 在集群的 Tasks 选项卡上,定期选择刷新图标,直到您不再看到任务正在运行。要验证任务是否已停止,请为 Desired task status (预期任务状态) 选择 Stopped (已停止)

  10. 查看您的电子邮件以确认您已收到已停止通知的电子邮件警报。