针对任务停止的事件发送 Amazon 简单通知服务提醒 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

针对任务停止的事件发送 Amazon 简单通知服务提醒

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

先决条件:设置测试集群

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

先决条件:为 Amazon SNS 配置权限

要允许 EventBridge 向亚马逊 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 主题的信息,请参阅亚马逊 EventBridge 用户指南 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/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. 选择 创建