チュートリアル: タスク停止時のイベントに関する Amazon Simple Notification Service アラートを送信する
このチュートリアルでは、基本的なコンテナのいずれかの終了に伴ってタスクの実行が停止した場合に限り、タスクイベントをキャプチャする CloudWatch イベント イベントルールを設定します。イベントからは、特定の
stoppedReason
プロパティを持つタスクイベントのみが、指定された Amazon SNS トピックに送信されます。
前提条件: テストクラスターを設定する
イベントをキャプチャする実行中のクラスターがなければ、クラスターの作成 のステップに従ってクラスターを作成します。このチュートリアルの最後に、このクラスターでタスクを実行して Amazon SNS トピックと CloudWatch イベント イベントルールが正しく設定されていることをテストします。
ステップ 1: Amazon SNS トピックを作成してサブスクライブする
このチュートリアルでは、新しいイベントルールのイベントターゲットとして使用する Amazon SNS トピックを設定します。
Amazon SNS トピックを作成するには
-
Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/home
) を開きます。 -
[トピック]、[トピックの作成] の順に選択します。
-
[トピックの作成] 画面で、[名前] に「TaskStoppedAlert」と入力し、[トピックの作成] を選択します。
-
[TaskStoppedAlert] の詳細画面で、[サブスクリプションの作成] を選択します。
-
[サブスクリプションの作成] 画面の [プロトコル] で、[E メール] を選択します。[Endpoint] に、現在利用できるメールアドレスを入力し、[Create subscription] を選択します。
-
メールアカウントを確認し、サブスクリプションの確認メールメッセージが届くのを待ちます。確認メールが届いたら、[Confirm subscription] を選択します。
ステップ 2: イベントルールを登録する
次に、コンテナが停止されたタスクについてのみ、タスク停止時のイベントをキャプチャするイベントルールを登録します。
イベントルールを作成するには
-
https://console.aws.amazon.com/cloudwatch/
にある CloudWatch コンソールを開きます。 -
ナビゲーションペインで、[Events]、[Rules]、[Create rule] の順に選択します。
-
[イベントソース] で [イベントパターン]、[カスタムイベントパターン] の順に選択し、既存のテキストを次のテキストに置き換えます。
{ "source":[ "aws.ecs" ], "detail-type":[ "ECS Task State Change" ], "detail":{ "lastStatus":[ "STOPPED" ], "stoppedReason":[ "Essential container in task exited" ] } }
このコードは、
lastStatus
フィールドとstoppedReason
フィールドが指定された値と一致するイベントに一致する CloudWatch イベント イベントルールを定義します。イベントパターンの詳細については、イベントとイベントパターン (Amazon CloudWatch ユーザーガイド) を参照してください。 -
[Targets] で、[Add target] を選択します。[Target type] で [SNS topic] を選択し、[TaskStoppedAlert] を選択します。
-
[Configure details] を選択します。
-
[Rule definition] で、ルールの名前と説明を入力し、[Create rule] を選択します。
ステップ 3: ルールをテストする
開始直後に終了するタスクを実行して、ルールが機能していることを確認します。イベントルールが正しく設定されていれば、数分以内にイベントテキストが記載されたメールメッセージが届きます。ルールの要件を満たす既存のタスク定義がある場合は、それを使用してタスクを実行します。そうでない場合は、次の手順に従って Fargate タスク定義を登録し、その定義を使用してタスクを実行します。
ルールをテストするには
-
Amazon ECS コンソール (https://console.aws.amazon.com/ecs
) を開きます。 -
[Task Definitions]、[Create new Task Definition] の順に選択します。
-
[起動タイプの互換性の選択] で、[FARGATE]、[次のステップ] の順に選択します。
-
[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" ] } -
[Create (作成)]、[View task definition (タスク定義の表示)] の順に選択します。
-
[Actions (アクション)] で、[Run Task (タスクの実行)] を選択します。
-
[Launch type (起動タイプ)] で、[FARGATE] を選択します。[VPC and security groups (VPC とセキュリティグループ)] で、使用するタスクの VPC とサブネットを選択し、[Run Task (タスクの実行)] を選択します。
-
[Container name] として [Wordpress]、[Image] として [wordpress]、[Maximum memory (MB)] として [128] を入力します。
-
クラスターの [Tasks] のタブで、タスクが実行されなくなるまで、更新アイコンを一定間隔で選択します。タスクが停止したことを確認するには、[Desired task status (必要なタスクのステータス)] で、[停止] を選択します。
-
停止の通知に関するアラートのメールが届いていることを確認します。