チュートリアル:タスク停止イベントに Amazon シンプル 通知サービス アラートを送信 - Amazon Elastic Container Service

チュートリアル:タスク停止イベントに Amazon シンプル 通知サービス アラートを送信

このチュートリアルでは、基本的なコンテナのいずれかの終了に伴ってタスクの実行が停止した場合に限り、タスクイベントをキャプチャする Amazon EventBridge イベントルールを設定します。イベントは、特定の stoppedReason プロパティを持つタスクイベントのみが、指定された Amazon SNS トピックに送信します。

前提条件: テストクラスターを設定する

イベントをキャプチャする実行中のクラスターがなければ、従来のコンソールを使用したクラスターの作成 のステップに従ってクラスターを作成します。このチュートリアルの最後に、このクラスターでタスクを実行し、 Amazon SNS トピックと EventBridge ルールが正しく設定されていることをテストします。

ステップ 1: Amazon SNS トピックを作成してサブスクライブする

このチュートリアルでは、新しいイベントルールのイベントターゲットとして使用する Amazon SNS トピックを設定します。

Amazon SNS トピックを作成してサブスクライブする方法については、Amazon Simple Notification Service デベロッパーガイドの「Amazon SNS の開始方法」を参照し、次の表を使用して、選択するオプションを決定します。

オプション

タイプ

スタンダード
名前

TaskStoppedAlert

プロトコル Email(メール)
エンドポイント

現在アクセスできる E メールアドレス

ステップ 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. Amazon ECS コンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. [Task Definitions]、[Create new Task Definition] の順に選択します。

  3. [起動タイプの互換性の選択] で、[FARGATE]、[次のステップ] の順に選択します。

  4. [Configure via 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" ] }
  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 (必要なタスクのステータス)] で、[停止] を選択します。

  10. 停止の通知に関するアラートのメールが届いていることを確認します。