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

Amazon ECS タスクメタデータエンドポイント

Amazon ECS コンテナエージェントのバージョン 1.17.0 から、さまざまなメタデータおよび Docker 統計を、Amazon ECS コンテナエージェントによって指定される HTTP エンドポイントで awsvpc ネットワークモードを使用するタスクで利用できます。

注記

プラットフォームバージョンが v1.1.0 以降を使用する場合、タスクメタデータエンドポイントは、 Fargate タスクでサポートされます。詳細については、「AWS Fargate プラットフォームのバージョン」を参照してください。

awsvpc ネットワークモードで起動されたタスクに属するすべてのコンテナには、事前定義されたリンクローカルアドレス範囲内のローカル IPv4 アドレスが割り当てられます。コンテナがメタデータエンドポイントをクエリする場合、Amazon ECS コンテナエージェントによって、一意の IP アドレスに基づきコンテナが属するタスクが判別され、そのタスクのメタデータと統計が返されます。

メタデータおよび統計 API エンドポイントをクエリする Go アプリケーションのサンプルに関する情報については、https://github.com/aws/amazon-ecs-agent/blob/2bf4348a0ff89e23be4e82a6c5ff28edf777092c/misc/taskmetadata-validator/taskmetadata-validator.go を参照してください。

タスクメタデータの有効化

この機能は、awsvpc ネットワークモードを使用するタスクではデフォルトで有効になっており、Amazon ECS コンテナエージェントのバージョン 1.17.0 以降で実行されている Amazon EC2 インフラストラクチャで起動されます。詳細については、「Amazon ECS コンテナエージェントバージョン」を参照してください。

エージェントを最新バージョンに更新することで、古いコンテナインスタンスにこの機能のサポートを追加できます。詳細については、「Amazon ECS コンテナエージェントの更新」を参照してください。

タスクメタデータエンドポイントのパス

次の API エンドポイントをコンテナで使用できます。

169.254.170.2/v2/metadata

このエンドポイントはタスクのメタデータ JSON を返します。これには、タスクに関連付けられたすべてのコンテナのコンテナ ID および名前のリストが含まれています。このエンドポイントのレスポンスの詳細については、「タスクメタデータ JSON レスポンス」を参照してください。

169.254.170.2/v2/metadata/<container-id>

このエンドポイントは指定された Docker コンテナ ID のメタデータ JSON を返します。

169.254.170.2/v2/stats

このエンドポイントはタスクに関連付けられたすべてのコンテナの Docker 統計 JSON を返します。返される各統計の詳細については、Docker API ドキュメントの「ContainerStats」を参照してください。

169.254.170.2/v2/stats/<container-id>

このエンドポイントは指定された Docker コンテナ ID の Docker 統計 JSON を返します。返される各統計の詳細については、Docker API ドキュメントの「ContainerStats」を参照してください。

タスクメタデータ JSON レスポンス

次の情報が、タスクメタデータエンドポイント (169.254.170.2/v2/metadata) JSON レスポンスから返されます。

Cluster

タスクが属している Amazon ECS クラスター。

TaskARN

コンテナが属しているタスクの完全な Amazon リソースネーム (ARN)。

Family

タスクの Amazon ECS タスク定義のファミリー。

Revision

タスクの Amazon ECS タスク定義のリビジョン。

DesiredStatus

Amazon ECS からのタスクの目的のステータス。

KnownStatus

Amazon ECS からのタスクの既知のステータス。

Containers

タスクに関連付けられている各コンテナのコンテナメタデータのリスト。

DockerId

コンテナの Docker ID。

Name

タスク定義で指定されたコンテナの名前。

DockerName

Docker に提供されたコンテナの名前。Amazon ECS コンテナエージェントはコンテナに一意の名前を生成し、同じタスク定義の複数のコピーが単一のインスタンスで実行されている場合に競合を回避します。

Image

コンテナのイメージ。

ImageID

イメージの SHA-256 ダイジェスト。

Ports

コンテナに対して公開されている任意のポート。公開ポートがない場合はこのパラメータは省略されます。

Labels

コンテナに適用された任意のラベル。ラベルが適用されていない場合はこのパラメータは省略されます。

DesiredStatus

Amazon ECS からのコンテナの目的のステータス。

KnownStatus

Amazon ECS からのコンテナの既知のステータス。

ExitCode

コンテナの終了コード。このパラメータは、コンテナが終了していない場合は省略されます。

Limits

コンテナレベルで指定されたリソースの制限 (CPU やメモリなど)。リソースの制限が定義されていない場合はこのパラメータは省略されます。

CreatedAt

コンテナ作成時のタイムスタンプ。このパラメータは、コンテナがまだ作成されていない場合は省略されます。

StartedAt

コンテナ起動時のタイムスタンプ。このパラメータは、コンテナがまだ起動していない場合は省略されます。

FinishedAt

コンテナ停止時のタイムスタンプ。このパラメータは、コンテナがまだ停止していない場合は省略されます。

Type

コンテナのタイプ。タスク定義で指定されているコンテナのタイプは NORMAL です。他のコンテナタイプは無視してかまいません。これらは Amazon ECS コンテナエージェントによってプロビジョニングされた内部タスクリソースで使用されます。

Networks

ネットワークモードや IP アドレスなど、コンテナのネットワーク情報。ネットワーク情報が定義されていない場合はこのパラメータは省略されます。

Limits

タスクレベルで指定されたリソースの制限 (CPU やメモリなど)。リソースの制限が定義されていない場合はこのパラメータは省略されます。

PullStartedAt

最初のコンテナイメージのプル開始時のタイムスタンプ。

PullStoppedAt

最後のコンテナイメージのプル終了時のタイムスタンプ。

ExecutionStoppedAt

タスクの DesiredStatusSTOPPED に移行した時のタイムスタンプ。これは、必須コンテナが STOPPED に移行したときに発生します。

タスクメタデータレスポンスの例

1 つのコンテナタスクの JSON レスポンスを次に示します。

{ "Cluster": "default", "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", "Family": "nginx", "Revision": "5", "DesiredStatus": "RUNNING", "KnownStatus": "RUNNING", "Containers": [ { "DockerId": "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c", "Name": "~internal~ecs~pause", "DockerName": "ecs-nginx-5-internalecspause-acc699c0cbf2d6d11700", "Image": "amazon/amazon-ecs-pause:0.1.0", "ImageID": "", "Labels": { "com.amazonaws.ecs.cluster": "default", "com.amazonaws.ecs.container-name": "~internal~ecs~pause", "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", "com.amazonaws.ecs.task-definition-family": "nginx", "com.amazonaws.ecs.task-definition-version": "5" }, "DesiredStatus": "RESOURCES_PROVISIONED", "KnownStatus": "RESOURCES_PROVISIONED", "Limits": { "CPU": 0, "Memory": 0 }, "CreatedAt": "2018-02-01T20:55:08.366329616Z", "StartedAt": "2018-02-01T20:55:09.058354915Z", "Type": "CNI_PAUSE", "Networks": [ { "NetworkMode": "awsvpc", "IPv4Addresses": [ "10.0.2.106" ] } ] }, { "DockerId": "43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946", "Name": "nginx-curl", "DockerName": "ecs-nginx-5-nginx-curl-ccccb9f49db0dfe0d901", "Image": "nrdlngr/nginx-curl", "ImageID": "sha256:2e00ae64383cfc865ba0a2ba37f61b50a120d2d9378559dcd458dc0de47bc165", "Labels": { "com.amazonaws.ecs.cluster": "default", "com.amazonaws.ecs.container-name": "nginx-curl", "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", "com.amazonaws.ecs.task-definition-family": "nginx", "com.amazonaws.ecs.task-definition-version": "5" }, "DesiredStatus": "RUNNING", "KnownStatus": "RUNNING", "Limits": { "CPU": 512, "Memory": 512 }, "CreatedAt": "2018-02-01T20:55:10.554941919Z", "StartedAt": "2018-02-01T20:55:11.064236631Z", "Type": "NORMAL", "Networks": [ { "NetworkMode": "awsvpc", "IPv4Addresses": [ "10.0.2.106" ] } ] } ], "PullStartedAt": "2018-02-01T20:55:09.372495529Z", "PullStoppedAt": "2018-02-01T20:55:10.552018345Z" }