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 の開始方法」を参照し、さらに、次の表から選択するオプションを決定します。
オプション | 値 |
---|---|
タイプ |
標準 |
名前 |
TaskStoppedAlert |
プロトコル | Email(メール) |
エンドポイント |
現在アクセスできる E メールアドレス |
ステップ 2: イベントルールを登録する
次に、コンテナが停止されたタスクについてのみ、タスク停止時のイベントをキャプチャするイベントルールを登録します。
Amazon SNS トピックを作成してサブスクライブする方法については、Amazon EventBridge デベロッパーガイドの「Amazon EventBridge でルールを作成する」を参照し、次の表を使用して、選択するオプションを決定します。
オプション | 値 |
---|---|
[Rule type] (ルールタイプ) |
イベントパターンを持つルール |
[イベントソース] | AWS イベントまたは EventBridge パートナーイベント |
イベントパターン |
カスタムパターン (JSON エディター) |
イベントパターン |
|
対象タイプ |
AWS サービス |
Target | SNS トピック |
トピック |
TaskStoppedAlert (ステップ 1 で作成したトピック) |
ステップ 3: ルールをテストする
開始直後に終了するタスクを実行して、ルールが機能していることを確認します。イベントルールが正しく設定されていれば、数分以内にイベントテキストが記載されたメールメッセージが届きます。ルールの要件を満たす既存のタスク定義がある場合は、それを使用してタスクを実行します。そうでない場合は、次の手順に従って Fargate タスク定義を登録し、その定義を使用してタスクを実行します。
コンソール (https://console.aws.amazon.com/ecs/v2
) を開きます。 -
ナビゲーションペインで、タスクの定義 を選択します。
-
[Create new task definition] (新しいタスク定義の作成)、[Create new task definition with JSON] (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" ] } -
[Create] (作成) を選択します。
コンソールからタスクを実行するには
コンソール (https://console.aws.amazon.com/ecs/v2
) を開きます。 -
[クラスター] ページで、前提条件の下で作成したクラスターを選択します。
-
Tasksタブで、Run new taskを選択します。
-
Application type(アプリケーションの種類)で、Task(タスク)を選択します。
-
[タスク定義] で、[fargate-task-definition] を選択します。
-
[Desired tasks] (必要なタスク) で、起動するタスクの数を入力します。
-
[Create] (作成) を選択します。