Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

Amazon ECS イベント

Amazon ECS から CloudWatch イベント に送信されるイベントには、コンテナインスタンスイベントとタスクイベントの 2 種類があります。コンテナインスタンスイベントが送信されるのは、タスクに標準起動タイプを使用している場合のみです。Fargate 起動タイプを使用しているタスクの場合、タスクの状態イベントのみ受信します。Amazon ECS は、コンテナインスタンスとタスクの状態を追跡します。これらのリソースのいずれかが変更されると、イベントがトリガーされます。イベントは、コンテナインスタンス状態変更イベントまたはタスク状態変更イベントのいずれかに分類されます。各イベントとその考えられる原因については、以下のセクションで詳しく説明します。

注記

将来、Amazon ECS には他の種類のイベント、ソース、詳細が追加される場合があります。プログラムを使用してイベントの JSON データを逆シリアル化する場合は、不明なプロパティが追加されたときに問題が発生しないようにアプリケーションで対応する準備を整えます。

同じアクティビティに対して複数のイベントがトリガーされる場合もあります。たとえば、コンテナインスタンスでタスクが開始されると、この新しいタスクに対してタスク状態変更イベントがトリガーされます。さらに、コンテナインスタンスの使用可能なリソース (CPU、メモリ、使用可能なポートなど) の変更を説明するためにコンテナインスタンス状態変更イベントもトリガーされます。同様に、コンテナインスタンスが終了すると、コンテナインスタンス、コンテナエージェント接続ステータス、およびコンテナインスタンスで実行されている各タスクに対してイベントがトリガーされます。

イベントには 2 つの version フィールドが含まれています。1 つはイベントの本文にあり、もう 1 つはイベントの detail オブジェクトにあります。

  • イベントの本文のバージョンは、すべてのイベントで 0 に設定されています。CloudWatch イベント パラメーターの詳細については、「イベントとイベントパターン」 (Amazon CloudWatch Events ユーザーガイド) を参照してください。

  • イベントの detail オブジェクトのバージョンは、関連付けられているリソースのバージョンについて説明します。リソースの状態が変わるたびに、このバージョンはインクリメントされます。イベントは繰り返し送信される場合があるため、このフィールドにより、重複したイベント (detail オブジェクトでは同じバージョンになります) を識別できます。Amazon ECS コンテナインスタンスおよびタスク状態を CloudWatch イベントでレプリケートする場合は、Amazon ECS API から報告されるリソースのバージョンとリソースの CloudWatch イベントで報告されるバージョン (detail オブジェクト内) を比較して、イベントストリームのバージョンが最新であることを確認できます。

コンテナインスタンス状態変更イベント

以下の場合は、コンテナインスタンス状態変更イベントがトリガーされます。

ユーザーが StartTaskRunTask、または StopTask API オペレーションを (直接または AWS マネジメントコンソール や SDL 経由で) 呼び出す

コンテナインスタンスでタスクを配置または停止すると、コンテナインスタンスの使用可能なリソース (CPU、メモリ、使用可能なポートなど) が変更されます。

Amazon ECS サービススケジューラがタスクを開始または停止する

コンテナインスタンスでタスクを配置または停止すると、コンテナインスタンスの使用可能なリソース (CPU、メモリ、使用可能なポートなど) が変更されます。

Amazon ECS コンテナエージェントが、タスクのステータスが正常な RUNNING から STOPPED に変わったときに SubmitTaskStateChange API オペレーションを呼び出す

Amazon ECS コンテナエージェントは、コンテナインスタンスでタスクの状態をモニタリングし、状態に変更があるとレポートします。タスクの状態が RUNNING であるべきものが STOPPED に変わると、エージェントは停止したタスクに割り当てられているリソース (CPU、メモリ、使用可能なポートなど) を解放します。

ユーザーが DeregisterContainerInstance API オペレーションを使用してコンテナインスタンスを (直接または AWS マネジメントコンソール や SDK 経由で) 登録解除する

コンテナインスタンスを登録解除すると、コンテナインスタンスのステータスと Amazon ECS コンテナエージェントの接続ステータスが変更されます。

EC2 インスタンスの停止に伴ってタスクが停止された

コンテナインスタンスを停止すると、このコンテナインスタンスで実行されているタスクのステータスは STOPPED に変わります。

Amazon ECS コンテナエージェントがコンテナインスタンスを初回登録する

Amazon ECS コンテナエージェントで初めてコンテナインスタンスを (起動時または手動による初回起動時に) 登録するときに、インスタンスの状態変更イベントが作成されます。

Amazon ECS コンテナエージェントが Amazon ECS と接続または接続解除する

Amazon ECS コンテナエージェントが Amazon ECS バックエンドと接続または接続解除すると、コンテナインスタンスの agentConnected ステータスが変わります。

注記

Amazon ECS コンテナエージェントは、通常オペレーションの一部として定期的に (1 時間あたり数回) 接続解除と再接続を繰り返すため、エージェント接続イベントが発生します。これは、コンテナエージェントやコンテナインスタンスに問題があるという意味ではありません。

ユーザーがインスタンスで Amazon ECS コンテナエージェントをアップグレードする

コンテナインスタンスの詳細には、コンテナエージェントバージョンのオブジェクトが含まれています。エージェントをアップグレードすると、このバージョン情報が変り、イベントがトリガーされます。

例 コンテナインスタンス状態変更イベント

コンテナインスタンス状態変更イベントは以下の形式で送信されます (以下の detail セクションは、Amazon Elastic Container Service API ReferenceDescribeContainerInstances API オペレーションから返される ContainerInstance オブジェクトに似ています)。CloudWatch イベント パラメーターの詳細については、「イベントとイベントパターン」 (Amazon CloudWatch Events ユーザーガイド) を参照してください。

{ "version": "0", "id": "8952ba83-7be2-4ab5-9c32-6687532d15a2", "detail-type": "ECS Container Instance State Change", "source": "aws.ecs", "account": "111122223333", "time": "2016-12-06T16:41:06Z", "region": "us-east-1", "resources": [ "arn:aws:ecs:us-east-1:111122223333:container-instance/b54a2a04-046f-4331-9d74-3f6d7f6ca315" ], "detail": { "agentConnected": true, "attributes": [ { "name": "com.amazonaws.ecs.capability.logging-driver.syslog" }, { "name": "com.amazonaws.ecs.capability.task-iam-role-network-host" }, { "name": "com.amazonaws.ecs.capability.logging-driver.awslogs" }, { "name": "com.amazonaws.ecs.capability.logging-driver.json-file" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17" }, { "name": "com.amazonaws.ecs.capability.privileged-container" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19" }, { "name": "com.amazonaws.ecs.capability.ecr-auth" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.20" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.22" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.23" }, { "name": "com.amazonaws.ecs.capability.task-iam-role" } ], "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", "containerInstanceArn": "arn:aws:ecs:us-east-1:111122223333:container-instance/b54a2a04-046f-4331-9d74-3f6d7f6ca315", "ec2InstanceId": "i-f3a8506b", "registeredResources": [ { "name": "CPU", "type": "INTEGER", "integerValue": 2048 }, { "name": "MEMORY", "type": "INTEGER", "integerValue": 3767 }, { "name": "PORTS", "type": "STRINGSET", "stringSetValue": [ "22", "2376", "2375", "51678", "51679" ] }, { "name": "PORTS_UDP", "type": "STRINGSET", "stringSetValue": [] } ], "remainingResources": [ { "name": "CPU", "type": "INTEGER", "integerValue": 1988 }, { "name": "MEMORY", "type": "INTEGER", "integerValue": 767 }, { "name": "PORTS", "type": "STRINGSET", "stringSetValue": [ "22", "2376", "2375", "51678", "51679" ] }, { "name": "PORTS_UDP", "type": "STRINGSET", "stringSetValue": [] } ], "status": "ACTIVE", "version": 14801, "versionInfo": { "agentHash": "aebcbca", "agentVersion": "1.13.0", "dockerVersion": "DockerVersion: 1.11.2" }, "updatedAt": "2016-12-06T16:41:06.991Z" } }

タスク状態変更イベント

以下の場合は、タスク状態変更イベントがトリガーされます。

ユーザーが StartTaskRunTask、または StopTask API オペレーションを (直接または AWS マネジメントコンソール や SDL 経由で) 呼び出す

タスクを開始または停止すると、新しいタスクリソースが作成されるか、既存のタスクリソースの状態が変更されます。

Amazon ECS サービススケジューラがタスクを開始または停止する

タスクを開始または停止すると、新しいタスクリソースが作成されるか、既存のタスクリソースの状態が変更されます。

Amazon ECS コンテナエージェントが SubmitTaskStateChange API オペレーションを呼び出す

Amazon ECS コンテナエージェントは、コンテナインスタンスでタスクの状態をモニタリングし、状態が (たとえば、PENDING から RUNNING へ、RUNNING から STOPPED へ) 変更されるとレポートします。

ユーザーが、DeregisterContainerInstance API オペレーションと force フラグを (直接または AWS マネジメントコンソール や SDK 経由) で使用して、基盤となるコンテナインスタンスの登録解除を強制する

コンテナインスタンスを登録解除すると、コンテナインスタンスのステータスと Amazon ECS コンテナエージェントの接続ステータスが変更されます。コンテナインスタンスでタスクが実行されている場合、登録解除を許可するには force フラグを設定する必要があります。これにより、インスタンスのすべてのタスクが停止します。

基盤となるコンテナインスタンスが停止または終了する

コンテナインスタンスを停止または終了すると、このコンテナインスタンスで実行されているタスクのステータスは STOPPED に変わります。

タスクのコンテナの状態が変わる

Amazon ECS コンテナエージェントは、タスク内のコンテナの状態をモニタリングします。たとえば、タスク内で実行されているコンテナが停止すると、このコンテナの状態変更に伴ってイベントがトリガーされます。

例 タスク状態変更イベント

タスク状態変更イベントは次の形式で送信されます (以下の detail セクションは、Amazon Elastic Container Service API ReferenceDescribeTasks API オペレーションから返される Task オブジェクトに似ています)。CloudWatch イベント パラメーターの詳細については、「イベントとイベントパターン」 (Amazon CloudWatch Events ユーザーガイド) を参照してください。

{ "version": "0", "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab", "detail-type": "ECS Task State Change", "source": "aws.ecs", "account": "111122223333", "time": "2016-12-06T16:41:06Z", "region": "us-east-1", "resources": [ "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" ], "detail": { "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", "containerInstanceArn": "arn:aws:ecs:us-east-1:111122223333:container-instance/b54a2a04-046f-4331-9d74-3f6d7f6ca315", "containers": [ { "containerArn": "arn:aws:ecs:us-east-1:111122223333:container/3305bea1-bd16-4217-803d-3e0482170a17", "exitCode": 0, "lastStatus": "STOPPED", "name": "xray", "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" } ], "createdAt": "2016-12-06T16:41:05.702Z", "desiredStatus": "RUNNING", "group": "task-group", "lastStatus": "RUNNING", "overrides": { "containerOverrides": [ { "name": "xray" } ] }, "startedAt": "2016-12-06T16:41:06.8Z", "startedBy": "ecs-svc/9223370556150183303", "updatedAt": "2016-12-06T16:41:06.975Z", "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef", "taskDefinitionArn": "arn:aws:ecs:us-east-1:111122223333:task-definition/xray:2", "version": 4 } }