

# Amazon ECS タスクメタデータエンドポイントバージョン 3
<a name="task-metadata-endpoint-v3"></a>

**重要**  
タスクメタデータのバージョン 3 エンドポイントは、現在アクティブにメンテナンスされていません。タスクメタデータバージョン 4 エンドポイントを更新して、最新のメタデータエンドポイント情報を取得することをお勧めします。詳細については、「[Amazon ECS タスクメタデータエンドポイントバージョン 4](task-metadata-endpoint-v4.md)」を参照してください。  
AWS Fargate でホストされている Amazon ECS タスクを使用している場合は、「[Fargate 上のタスク用の Amazon ECS タスクのメタデータエンドポイントバージョン 3](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v3-fargate.html)」を参照してください。

Amazon ECS コンテナエージェントの 1.21.0 バージョン以降では、エージェントはタスクの各コンテナに、環境変数 `ECS_CONTAINER_METADATA_URI` を挿入します。タスクメタデータバージョン 3 エンドポイントに対してクエリを実行すると、さまざまなタスクメタデータおよび [Docker 統計](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats) をタスクで利用できます。`bridge` ネットワークモードを使用するタスクの場合、`/stats` エンドポイントにクエリを実行する際にネットワークメトリクスを使用できます。

タスクメタデータエンドポイントバージョン 3 の機能は、プラットフォームバージョン v1.3.0 以降で Fargate を使用するタスクと、EC2 を使用し、Amazon ECS コンテナエージェントのバージョン 1.21.0 以降を実行する Amazon EC2 Linux インフラストラクチャで起動されるタスク、または、Amazon ECS コンテナエージェントのバージョン `1.54.0` 以降を実行する Amazon EC2 Windows インフラストラクチャで起動され、`awsvpc` ネットワークモードを使用するタスクは、デフォルトで有効になります。詳細については、「[Amazon ECS Linux コンテナインスタンスの管理](manage-linux.md)」を参照してください。

エージェントを最新バージョンに更新することで、古いコンテナインスタンスにこの機能のサポートを追加できます。詳細については、「[Amazon ECS コンテナエージェントをアップデートする](ecs-agent-update.md)」を参照してください。

**重要**  
Fargate およびプラットフォームバージョン v1.3.0 以前を使用するタスクでは、タスクメタデータバージョン 2 エンドポイントはサポートされています。詳細については、「[Amazon ECS タスクメタデータエンドポイントバージョン 2](task-metadata-endpoint-v2.md)」を参照してください。

## タスクメタデータエンドポイントバージョン 3 パス
<a name="task-metadata-endpoint-v3-paths"></a>

次のタスクメタデータエンドポイントをコンテナで使用できます。

`${ECS_CONTAINER_METADATA_URI}`  
このパスはコンテナのメタデータ JSON を返します。

`${ECS_CONTAINER_METADATA_URI}/task`  
このパスはタスクのメタデータ JSON を返します。これには、タスクに関連付けられたすべてのコンテナのコンテナ ID および名前のリストが含まれています。このエンドポイントのレスポンスの詳細については、「[Amazon ECS タスクメタデータ v3 JSON レスポンス](task-metadata-endpoint-v3-response.md)」を参照してください。

`${ECS_CONTAINER_METADATA_URI}/taskWithTags`  
このパスは、`ListTagsForResource` API を使用して取得できるタスクとコンテナインスタンスタグに加えて、`/task` エンドポイントに含まれるタスクのメタデータを返します。

`${ECS_CONTAINER_METADATA_URI}/stats`  
このパスは特定の Docker コンテナの Docker 統計 JSON を返します。返される各統計の詳細については、Docker API ドキュメントの「[ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)」を参照してください。

`${ECS_CONTAINER_METADATA_URI}/task/stats`  
このパスはタスクに関連付けられたすべてのコンテナの Docker 統計 JSON を返します。返される各統計の詳細については、Docker API ドキュメントの「[ContainerStats](https://docs.docker.com/reference/api/engine/version/v1.30/#tag/Container/operation/ContainerStats)」を参照してください。

# Amazon ECS タスクメタデータ v3 JSON レスポンス
<a name="task-metadata-endpoint-v3-response"></a>

次の情報が、タスクメタデータエンドポイント (`${ECS_CONTAINER_METADATA_URI}/task`) JSON レスポンスから返されます。

`Cluster`  
タスクが属する Amazon ECS クラスターの Amazon リソースネーム (ARN)または短縮名。

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

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

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

`DesiredStatus`  
Amazon ECSからのタスクの望ましいステータス。

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

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

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

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

`AvailabilityZone`  
タスクがあるアベイラビリティーゾーン。  
アベイラビリティーゾーンのメタデータは、プラットフォームバージョン 1.4 以降 (Linux) または 1.0.0 以降 (Windows) を使用する Fargate タスクでのみ使用できます。

`Containers`  
タスクに関連付けられている各コンテナのコンテナメタデータのリスト。    
`DockerId`  
コンテナの Docker ID。  
`Name`  
タスク定義で指定されたコンテナの名前。  
`DockerName`  
Docker に提供されたコンテナの名前。Amazon ECSコンテナエージェントはコンテナに一意の名前を生成し、同じタスク定義の複数のコピーが単一のインスタンスで実行される場合に名前の競合を回避します。  
`Image`  
コンテナのイメージ。  
`ImageID`  
イメージマニフェストの SHA-256 ダイジェスト。これは、`repository-url/image@sha256:digest` 形式を使用してイメージをプルするために使用できるダイジェストです。  
`Ports`  
コンテナに対して公開されている任意のポート。公開ポートがない場合はこのパラメータは省略されます。  
`Labels`  
コンテナに適用された任意のラベル。ラベルが適用されていない場合はこのパラメータは省略されます。  
`DesiredStatus`  
Amazon ECSからのコンテナの望ましいステータス。  
`KnownStatus`  
Amazon ECS からのコンテナの既知のステータス。  
`ExitCode`  
コンテナの終了コード。このパラメータは、コンテナが終了していない場合は省略されます。  
`Limits`  
CPU (CPU 単位で表される) やメモリなど、コンテナレベルで指定されたリソースの制限。リソースの制限が定義されていない場合はこのパラメータは省略されます。  
`CreatedAt`  
コンテナ作成時のタイムスタンプ。このパラメータは、コンテナがまだ作成されていない場合は省略されます。  
`StartedAt`  
コンテナ起動時のタイムスタンプ。このパラメータは、コンテナがまだ起動していない場合は省略されます。  
`FinishedAt`  
コンテナ停止時のタイムスタンプ。このパラメータは、コンテナがまだ停止していない場合は省略されます。  
`Type`  
コンテナのタイプ。タスク定義で指定されているコンテナのタイプは `NORMAL` です。他のコンテナタイプは無視してかまいません。これらはAmazon ECS コンテナエージェントによってプロビジョニングされる内部タスクリソースで使用されます。  
`Networks`  
ネットワークモードや IP アドレスなど、コンテナのネットワーク情報。ネットワーク情報が定義されていない場合はこのパラメータは省略されます。

`ClockDrift`  
基準時刻とシステム時刻の違いに関する情報。これは、Linux オペレーティングシステムに適用されます。この機能では、Amazon Time Sync Service を使用してクロックの精度を測定し、コンテナのクロックエラー範囲を特定します。詳細については、「*Linux インスタンス用 Amazon EC2 ユーザーガイド*」の「[Linux インスタンスの時刻の設定](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)」を参照してください。    
`ReferenceTime`  
クロック精度の基礎。Amazon ECS は、`2021-09-07T16:57:44Z` などの NTP を通じて協定世界時 (UTC) の世界標準を使用しています。  
`ClockErrorBound`  
UTC へのオフセットとして定義されるクロックエラーの対策。この誤差は、基準時刻とシステム時刻の差 (ミリ秒単位) です。  
`ClockSynchronizationStatus`  
最新のシステム時刻と基準時刻間の同期試行における成功状況を示します。  
有効な値は `SYNCHRONIZED` および ` NOT_SYNCHRONIZED` です。

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

# Amazon ECS タスクメタデータ v3 の例
<a name="task-metadata-endpoint-v3-examples"></a>

以下の例は、タスクメタデータエンドポイントからの出力を示しています。

## コンテナメタデータレスポンスの例
<a name="task-metadata-endpoint-v3-example-container-metadata-response"></a>

`${ECS_CONTAINER_METADATA_URI}` エンドポイントにクエリを実行すると、コンテナ自体に関するメタデータのみが返されます。以下に出力例を示します。

```
{
    "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-east-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"
            ]
        }
    ]
}
```

## タスクメタデータレスポンスの例
<a name="task-metadata-endpoint-v3-example-task-metadata-response"></a>

`${ECS_CONTAINER_METADATA_URI}/task` エンドポイントにクエリを実行すると、コンテナが属しているタスクに関するメタデータが返されます。以下に出力例を示します。

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

```
{
  "Cluster": "default",
  "TaskARN": "arn:aws:ecs:us-east-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-east-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-east-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",
  "AvailabilityZone": "us-east-2b"
}
```