タスク停止イベントに関する Amazon Simple Notification Service アラートの送信 - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

タスク停止イベントに関する 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 の開始方法」を参照し、さらに、次の表から選択するオプションを決定します。

オプション

タイプ

規格
名前

TaskStoppedAlert

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

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

ステップ 2: イベントルールを登録する

次に、コンテナが停止されたタスクについてのみ、タスク停止時のイベントをキャプチャするイベントルールを登録します。

Amazon SNS トピック を作成してサブスクライブする方法については、「Amazon ユーザーガイド」の「Amazon でルールを作成する EventBridge」および次の表を使用して、選択するオプションを決定します。 EventBridge

オプション

[Rule type] (ルールタイプ)

イベントパターンを持つルール

[イベントソース] AWS イベントまたは EventBridge パートナーイベント
イベントパターン

カスタムパターン (JSON エディター)

イベントパターン
{ "source":[ "aws.ecs" ], "detail-type":[ "ECS Task State Change" ], "detail":{ "lastStatus":[ "STOPPED" ], "stoppedReason":[ "Essential container in task exited" ] } }
対象タイプ

AWS サービス

Target SNS トピック
トピック

TaskStoppedAlert (ステップ 1 で作成したトピック)

ステップ 3: ルールをテストする

開始直後に終了するタスクを実行して、ルールが機能していることを確認します。イベントルールが正しく設定されていれば、数分以内にイベントテキストが記載されたメールメッセージが届きます。ルールの要件を満たす既存のタスク定義がある場合は、それを使用してタスクを実行します。そうでない場合は、次の手順に従って Fargate タスク定義を登録し、その定義を使用してタスクを実行します。

  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. ナビゲーションペインで、タスクの定義 を選択します。

  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. Tasksタブで、Run new taskを選択します。

  4. Application type(アプリケーションの種類)で、Task(タスク)を選択します。

  5. タスク定義 で、 を選択しますfargate-task-definition

  6. [Desired tasks] (必要なタスク) で、起動するタスクの数を入力します。

  7. [作成] を選択します。