傳送 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 入門,並使用下表來決定要選取的選項。

選項 Value

Type

標準
名稱

TaskStoppedAlert

通訊協定 電子郵件
端點

您目前能存取的電子郵件地址

步驟 2:註冊事件規則

接下來,您會登錄事件規則,只擷取具有停止容器之任務的任務停止事件。

如需有關如何建立和訂閱 Amazon SNS 主題的資訊,請參閱《Amazon EventBridge 使用者指南》中的在 Amazon EventBridge 中建立規則,並使用下表來決定要選取的選項。

選項 Value

規則類型

具有事件模式的規則

事件來源 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 definitio (建立新任務定義)、Create new task definition with JSON (使用 JSON 建立新的任務定義)。

  4. 在 JSON 編輯工具方塊中,編輯您的 JSON 檔案,將下列內容複製至編輯器。

    { "containerDefinitions":[ { "command":[ "sh", "-c", "sleep 5" ], "essential":true, "image":"public.ecr.aws/amazonlinux/amazonlinux:latest", "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. Tasks (任務) 標籤中,選擇 Run new task (執行新任務)。

  4. 針對 Application type (應用程式類型),選擇 Task (任務)。

  5. 任務定義中,選擇 fargate-task-definition

  6. 針對 Desired tasks (所需任務),輸入要啟動的任務數目。

  7. 選擇建立