

# Fargate のタスク用の Amazon ECS タスクメタデータエンドポイントバージョン 4
<a name="task-metadata-endpoint-v4-fargate"></a>

**重要**  
Amazon EC2 インスタンスでホストされている Amazon ECS タスクを使用している場合は、「[Amazon ECS タスクのメタデータエンドポイント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint.html)」を参照してください。

Fargateのプラットフォームバージョン`1.4.0`以降、`ECS_CONTAINER_METADATA_URI_V4` という名前の環境変数がタスク内の各コンテナに挿入されます。タスクメタデータエンドポイントバージョン 4 に対してクエリを実行すると、さまざまなタスクメタデータおよび [Docker 統計](https://docs.docker.com/engine/api/v1.30/#operation/ContainerStats)をタスクで利用できます。

タスクメタデータエンドポイントバージョン 4 は、バージョン 3 と同じように動作しますが、コンテナとタスクに関する追加のネットワークメタデータを提供します。`/stats` エンドポイントにクエリを実行するときにも追加のネットワークメトリクスを使用できます。

タスクメタデータエンドポイントは、プラットフォームバージョン `1.4.0` 以降を使用する AWS Fargate 上で実行される、すべての Amazon ECS タスクに対してデフォルトでオンになっています。

**注記**  
新しいタスクメタデータエンドポイントバージョンを今後作成する必要がないように、追加のメタデータをバージョン 4 の出力に追加できます。既存のメタデータが削除されたり、メタデータのフィールド名が変更されたりすることはありません。

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

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

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

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

`${ECS_CONTAINER_METADATA_URI_V4}/stats`  
このパスは Docker コンテナの Docker 統計を返します。返される各統計の詳細については、Docker API ドキュメントの「[ContainerStats](https://docs.docker.com/engine/api/v1.30/#operation/ContainerStats)」を参照してください。  
AWS FargateでのAmazon ECS タスクは、コンテナの統計を返す前にコンテナを約 1 秒間実行する必要があります。

`${ECS_CONTAINER_METADATA_URI_V4}/task/stats`  
このパスはタスクに関連付けられたすべてのコンテナの Docker 統計を返します。返される各統計の詳細については、Docker API ドキュメントの「[ContainerStats](https://docs.docker.com/engine/api/v1.30/#operation/ContainerStats)」を参照してください。  
AWS FargateでのAmazon ECS タスクは、コンテナの統計を返す前にコンテナを約 1 秒間実行する必要があります。

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

次のメタデータは、タスクメタデータエンドポイント (`${ECS_CONTAINER_METADATA_URI_V4}/task`) JSON レスポンスで返されます。

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

`ServiceName`  
タスクが属しているサービスの名前。ServiceName は、Fargate タスクがサービスに関連付けられている場合に表示されます。

`VPCID`  
Amazon EC2 コンテナインスタンスの VPC ID。このフィールドは、Amazon EC2 インスタンスでのみ表示されます。  
この `VPCID` メタデータは、Amazon ECS コンテナエージェントのバージョン `1.63.1`、もしくはそれ以降を使用している場合にのみ含まれます。

`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 タスクでのみ使用できます。

`LaunchType`  
タスクが使用している起動タイプ。クラスター容量プロバイダーを使用する場合、タスクが Fargate インフラストラクチャと EC2 インフラストラクチャのいずれを使用しているかを示します。  
この`LaunchType`メタデータは、Amazon ECS Linux コンテナエージェントのバージョン`1.45.0` 以降 (Linux) または 1.0.0 以降 (Windows) を使用している場合にのみ含まれます。

`EphemeralStorageMetrics`  
このタスクのエフェメラルストレージの予約サイズと現在の使用量。  
Fargate はディスク上のスペースを予約します。スペースは Fargate によってのみ使用されます。これには課金されることはありません。これらのメトリクスには表示されません。ただし、この追加ストレージは、`df` などの他のツールでも確認できます。  
`Utilized`  
このタスクの現在のエフェメラルストレージ使用量 (MiB 単位)。  
`Reserved`  
このタスクの予約済みエフェメラルストレージ (MiB 単位)。エフェメラルストレージのサイズは、実行中のタスクでは変更できません。タスク定義で `ephermalStorage` オブジェクトを指定して、エフェメラルストレージの量を変更できます。`ephermalStorage` は MiB ではなく GiB 単位で指定されます。`ephermalStorage` および `EphemeralStorageMetrics` は、Fargate Linux プラットフォームのバージョン 1.4.0 以降でのみ使用できます。

`Containers`  
タスクに関連付けられている各コンテナのコンテナメタデータのリスト。    
`DockerId`  
コンテナの Docker ID。  
Fargate を使用する場合、IDは32桁の16進数に10桁の数字が続きます。  
`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 コンテナエージェントによってプロビジョニングされる内部タスクリソースで使用されます。  
`LogDriver`  
コンテナに使用されるログドライバー。  
この`LogDriver`メタデータは、Amazon ECS Linux コンテナエージェントのバージョン`1.45.0`、もしくはそれ以降を使用している場合にのみ含まれます。  
`LogOptions`  
コンテナに定義されたログドライバオプション。  
この`LogOptions`メタデータは、Amazon ECS Linux コンテナエージェントのバージョン`1.45.0`、もしくはそれ以降を使用している場合にのみ含まれます。  
`ContainerARN`  
コンテナの Amazon リソースネーム (ARN)。  
この`ContainerARN`メタデータは、Amazon ECS Linux コンテナエージェントのバージョン`1.45.0`、もしくはそれ以降を使用している場合にのみ含まれます。  
`Networks`  
ネットワークモードや IP アドレスなど、コンテナのネットワーク情報。ネットワーク情報が定義されていない場合はこのパラメータは省略されます。  
`Snapshotter`  
このコンテナイメージをダウンロードするために containerd によって使用された snapshotter。有効な値はデフォルトの `overlayfs` です。`soci` は SOCI インデックスによる遅延読み込み時に使用されます。このパラメータは、Linux プラットフォームバージョン `1.4.0` で実行されるタスクにのみ使用できます。  
`RestartCount`  
コンテナが再起動された回数。  
`RestartCount` メタデータが含まれるのは、コンテナの再起動ポリシーが有効になっている場合のみです。詳細については、「[コンテナ再起動ポリシーを使用して Amazon ECS タスク内の個々のコンテナを再起動する](container-restart-policy.md)」を参照してください。

`ClockDrift`  
基準時刻とシステム時刻の違いに関する情報。この機能では、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` に移行したときに発生します。

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

以下の例は、AWS Fargateで実行されるAmazon ECS タスクのタスクメタデータエンドポイントからの出力例を示しています。

コンテナから、タスクメタデータのエンドポイントに続けて curl を使用すると、`curl ${ECS_CONTAINER_METADATA_URI_V4}/task` などのエンドポイントをクエリできます。

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

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

```
{
    "DockerId": "cd189a933e5849daa93386466019ab50-2495160603",
    "Name": "curl",
    "DockerName": "curl",
    "Image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/curltest:latest",
    "ImageID": "sha256:25f3695bedfb454a50f12d127839a68ad3caf91e451c1da073db34c542c4d2cb",
    "Labels": {
        "com.amazonaws.ecs.cluster": "arn:aws:ecs:us-west-2:111122223333:cluster/default",
        "com.amazonaws.ecs.container-name": "curl",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:111122223333:task/default/cd189a933e5849daa93386466019ab50",
        "com.amazonaws.ecs.task-definition-family": "curltest",
        "com.amazonaws.ecs.task-definition-version": "2"
    },
    "DesiredStatus": "RUNNING",
    "KnownStatus": "RUNNING",
    "Limits": {
        "CPU": 10,
        "Memory": 128
    },
    "CreatedAt": "2020-10-08T20:09:11.44527186Z",
    "StartedAt": "2020-10-08T20:09:11.44527186Z",
    "Type": "NORMAL",
    "Networks": [
        {
            "NetworkMode": "awsvpc",
            "IPv4Addresses": [
                "192.0.2.3"
            ],
            "AttachmentIndex": 0,
            "MACAddress": "0a:de:f6:10:51:e5",
            "IPv4SubnetCIDRBlock": "192.0.2.0/24",
            "DomainNameServers": [
                "192.0.2.2"
            ],
            "DomainNameSearchList": [
                "us-west-2.compute.internal"
            ],
            "PrivateDNSName": "ip-10-0-0-222.us-west-2.compute.internal",
            "SubnetGatewayIpv4Address": "192.0.2.0/24"
        }
    ],
    "ContainerARN": "arn:aws:ecs:us-west-2:111122223333:container/05966557-f16c-49cb-9352-24b3a0dcd0e1",
    "LogOptions": {
        "awslogs-create-group": "true",
        "awslogs-group": "/ecs/containerlogs",
        "awslogs-region": "us-west-2",
        "awslogs-stream": "ecs/curl/cd189a933e5849daa93386466019ab50"
    },
    "LogDriver": "awslogs",
    "Snapshotter": "overlayfs"
}
```

## Fargate でのタスクの Amazon ECS タスクメタデータ v4 の例
<a name="task-metadata-endpoint-v4-fargate-example-task-metadata-response"></a>

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

```
{
  "Cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/MyEmptyCluster",
  "TaskARN": "arn:aws:ecs:us-east-1:123456789012:task/MyEmptyCluster/bfa2636268144d039771334145e490c5",
  "Family": "sample-fargate",
  "Revision": "5",
  "DesiredStatus": "RUNNING",
  "KnownStatus": "RUNNING",
  "Limits": {
    "CPU": 0.25,
    "Memory": 512 
  },
  "PullStartedAt": "2023-07-21T15:45:33.532811081Z",
  "PullStoppedAt": "2023-07-21T15:45:38.541068435Z",
  "AvailabilityZone": "us-east-1d",
  "Containers": [
    {
      "DockerId": "bfa2636268144d039771334145e490c5-1117626119",
      "Name": "curl-image",
      "DockerName": "curl-image",
      "Image": "curlimages/curl",
      "ImageID": "sha256:daf3f46a2639c1613b25e85c9ee4193af8a1d538f92483d67f9a3d7f21721827",
      "Labels": {
        "com.amazonaws.ecs.cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/MyEmptyCluster",
        "com.amazonaws.ecs.container-name": "curl-image",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-1:123456789012:task/MyEmptyCluster/bfa2636268144d039771334145e490c5",
        "com.amazonaws.ecs.task-definition-family": "sample-fargate",
        "com.amazonaws.ecs.task-definition-version": "5"
      },
      "DesiredStatus": "RUNNING",
      "KnownStatus": "RUNNING",
      "Limits": { "CPU": 128 },
      "CreatedAt": "2023-07-21T15:45:44.91368314Z",
      "StartedAt": "2023-07-21T15:45:44.91368314Z",
      "Type": "NORMAL",
      "Networks": [
        {
          "NetworkMode": "awsvpc",
          "IPv4Addresses": ["172.31.42.189"],
          "AttachmentIndex": 0,
          "MACAddress": "0e:98:9f:33:76:d3",
          "IPv4SubnetCIDRBlock": "172.31.32.0/20",
          "DomainNameServers": ["172.31.0.2"],
          "DomainNameSearchList": ["ec2.internal"],
          "PrivateDNSName": "ip-172-31-42-189.ec2.internal",
          "SubnetGatewayIpv4Address": "172.31.32.1/20"
        }
      ],
      "ContainerARN": "arn:aws:ecs:us-east-1:123456789012:container/MyEmptyCluster/bfa2636268144d039771334145e490c5/da6cccf7-1178-400c-afdf-7536173ee209",
      "Snapshotter": "overlayfs"
    },
    {
      "DockerId": "bfa2636268144d039771334145e490c5-3681984407",
      "Name": "fargate-app",
      "DockerName": "fargate-app",
      "Image": "public.ecr.aws/docker/library/httpd:latest",
      "ImageID": "sha256:8059bdd0058510c03ae4c808de8c4fd2c1f3c1b6d9ea75487f1e5caa5ececa02",
      "Labels": {
        "com.amazonaws.ecs.cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/MyEmptyCluster",
        "com.amazonaws.ecs.container-name": "fargate-app",
        "com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-east-1:123456789012:task/MyEmptyCluster/bfa2636268144d039771334145e490c5",
        "com.amazonaws.ecs.task-definition-family": "sample-fargate",
        "com.amazonaws.ecs.task-definition-version": "5"
      },
      "DesiredStatus": "RUNNING",
      "KnownStatus": "RUNNING",
      "Limits": { "CPU": 2 },
      "CreatedAt": "2023-07-21T15:45:44.954460255Z",
      "StartedAt": "2023-07-21T15:45:44.954460255Z",
      "Type": "NORMAL",
      "Networks": [
        {
          "NetworkMode": "awsvpc",
          "IPv4Addresses": ["172.31.42.189"],
          "AttachmentIndex": 0,
          "MACAddress": "0e:98:9f:33:76:d3",
          "IPv4SubnetCIDRBlock": "172.31.32.0/20",
          "DomainNameServers": ["172.31.0.2"],
          "DomainNameSearchList": ["ec2.internal"],
          "PrivateDNSName": "ip-172-31-42-189.ec2.internal",
          "SubnetGatewayIpv4Address": "172.31.32.1/20"
        }
      ],
      "ContainerARN": "arn:aws:ecs:us-east-1:123456789012:container/MyEmptyCluster/bfa2636268144d039771334145e490c5/f65b461d-aa09-4acb-a579-9785c0530cbc",
      "Snapshotter": "overlayfs"
    }
  ],
  "LaunchType": "FARGATE",
  "ClockDrift": {
    "ClockErrorBound": 0.446931,
    "ReferenceTimestamp": "2023-07-21T16:09:17Z",
    "ClockSynchronizationStatus": "SYNCHRONIZED"
  },
  "EphemeralStorageMetrics": { 
    "Utilized": 261, 
    "Reserved": 20496 
  }
}
```

## タスク統計情報のレスポンス例
<a name="task-metadata-endpoint-v4-fargate-example-task-stats-response"></a>

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

```
{
  "3d1f891cded94dc795608466cce8ddcf-464223573": {
    "read": "2020-10-08T21:24:44.938937019Z",
    "preread": "2020-10-08T21:24:34.938633969Z",
    "pids_stats": {},
    "blkio_stats": {
      "io_service_bytes_recursive": [
        {
          "major": 202,
          "minor": 26368,
          "op": "Read",
          "value": 638976
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Write",
          "value": 0
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Sync",
          "value": 638976
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Async",
          "value": 0
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Total",
          "value": 638976
        }
      ],
      "io_serviced_recursive": [
        {
          "major": 202,
          "minor": 26368,
          "op": "Read",
          "value": 12
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Write",
          "value": 0
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Sync",
          "value": 12
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Async",
          "value": 0
        },
        {
          "major": 202,
          "minor": 26368,
          "op": "Total",
          "value": 12
        }
      ],
      "io_queue_recursive": [],
      "io_service_time_recursive": [],
      "io_wait_time_recursive": [],
      "io_merged_recursive": [],
      "io_time_recursive": [],
      "sectors_recursive": []
    },
    "num_procs": 0,
    "storage_stats": {},
    "cpu_stats": {
      "cpu_usage": {
        "total_usage": 1137691504,
        "percpu_usage": [
          696479228,
          441212276,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "usage_in_kernelmode": 80000000,
        "usage_in_usermode": 810000000
      },
      "system_cpu_usage": 9393210000000,
      "online_cpus": 2,
      "throttling_data": {
        "periods": 0,
        "throttled_periods": 0,
        "throttled_time": 0
      }
    },
    "precpu_stats": {
      "cpu_usage": {
        "total_usage": 1136624601,
        "percpu_usage": [
          695639662,
          440984939,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "usage_in_kernelmode": 80000000,
        "usage_in_usermode": 810000000
      },
      "system_cpu_usage": 9373330000000,
      "online_cpus": 2,
      "throttling_data": {
        "periods": 0,
        "throttled_periods": 0,
        "throttled_time": 0
      }
    },
    "memory_stats": {
      "usage": 6504448,
      "max_usage": 8458240,
      "stats": {
        "active_anon": 1675264,
        "active_file": 557056,
        "cache": 651264,
        "dirty": 0,
        "hierarchical_memory_limit": 536870912,
        "hierarchical_memsw_limit": 9223372036854772000,
        "inactive_anon": 0,
        "inactive_file": 3088384,
        "mapped_file": 430080,
        "pgfault": 11034,
        "pgmajfault": 5,
        "pgpgin": 8436,
        "pgpgout": 7137,
        "rss": 4669440,
        "rss_huge": 0,
        "total_active_anon": 1675264,
        "total_active_file": 557056,
        "total_cache": 651264,
        "total_dirty": 0,
        "total_inactive_anon": 0,
        "total_inactive_file": 3088384,
        "total_mapped_file": 430080,
        "total_pgfault": 11034,
        "total_pgmajfault": 5,
        "total_pgpgin": 8436,
        "total_pgpgout": 7137,
        "total_rss": 4669440,
        "total_rss_huge": 0,
        "total_unevictable": 0,
        "total_writeback": 0,
        "unevictable": 0,
        "writeback": 0
      },
      "limit": 9223372036854772000
    },
    "name": "curltest",
    "id": "3d1f891cded94dc795608466cce8ddcf-464223573",
    "networks": {
      "eth1": {
        "rx_bytes": 2398415937,
        "rx_packets": 1898631,
        "rx_errors": 0,
        "rx_dropped": 0,
        "tx_bytes": 1259037719,
        "tx_packets": 428002,
        "tx_errors": 0,
        "tx_dropped": 0
      }
    },
    "network_rate_stats": {
      "rx_bytes_per_sec": 43.298687872232854,
      "tx_bytes_per_sec": 215.39347269466413
    }
  }
}
```