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

Amazon ECS コンテナメタデータファイル

Amazon ECS コンテナエージェントのバージョン 1.15.0 バージョンからは、さまざまなコンテナメタデータが ECS タスクコンテナ内で利用できます。この機能を有効にすると、タスク、コンテナ、およびコンテナ内部のコンテナインスタンスに関する情報をクエリできます。コンテナインスタンスからの情報は、各コンテナのメタデータファイルを読み取ることでも取得できます。メタデータファイルはホストインスタンスで作成され、Docker ボリュームとしてコンテナにマウントされます。

コンテナメタデータファイルの場所は、コンテナ内の ECS_CONTAINER_METADATA_FILE 環境変数に設定されます。コンテナ内から、以下のコマンドを使用してファイルの内容を読み取ることができます。

  • Linux インスタンスの場合:

    cat $ECS_CONTAINER_METADATA_FILE
  • Windows インスタンス (PowerShell) の場合:

    Get-Content -path $env:ECS_CONTAINER_METADATA_FILE

コンテナメタデータファイルは、コンテナがクリーンアップされるときにホストインスタンスでクリーンアップされます。ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION コンテナエージェント変数により、クリーンアップを実行するタイミングを調整できます。詳細については、「自動化タスクとイメージのクリーンアップ」を参照してください。

コンテナメタデータの有効化

この機能は、デフォルトでは無効になっています。コンテナメタデータは、ECS_ENABLE_CONTAINER_METADATA コンテナエージェント変数を true に設定して、コンテナインスタンスレベルで有効にできます。/etc/ecs/ecs.config 設定ファイルでこの変数を設定し、エージェントを再起動できます。実行時 (エージェントコンテナが起動するとき) に、Docker 環境変数として設定することもできます。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

注記

この機能をサポートする Amazon ECS コンテナエージェントの最小バージョンは 1.15.0 です。

エージェントの起動時に ECS_ENABLE_CONTAINER_METADATAtrue に設定されている場合、ECS によって起動されるそれ以降のコンテナに対してメタデータファイルが作成されます。

注記

Amazon ECS コンテナエージェントは、ECS_ENABLE_CONTAINER_METADATA コンテナエージェント変数が true に設定される前に作成されたコンテナに対してメタデータファイルを作成することはできません。すべてのコンテナがメタデータファイルを受け取るようにするには、コンテナインスタンスの起動時に、このエージェント変数を設定します。

コンテナメタデータファイルの場所

デフォルトでは、コンテナメタデータファイルは、次のホストパスとコンテナパスに書き込まれます。

  • Linux インスタンスの場合:

    • ホストパス: /var/lib/ecs/data/metadata/task_id/container_name/ecs-container-metadata.json

      注記

      Linux ホストパスでは、エージェントの起動時にデフォルトのデータディレクトリマウントパス (/var/lib/ecs/data) が使用されます。Amazon ECS に最適化された AMI を使用しない場合 (または ecs-init パッケージを使用してコンテナエージェントを開始および維持しない場合) は、ECS_HOST_DATA_DIR エージェント設定変数を、コンテナエージェントの状態ファイルがあるホストパスに設定します。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

    • コンテナパス: /opt/ecs/metadata/random_ID/ecs-container-metadata.json

  • Windows インスタンスの場合:

    • ホストポート: C:\ProgramData\Amazon\ECS\data\metadata\task_id\container_name\ecs-container-metadata.json

    • コンテナパス: C:\ProgramData\Amazon\ECS\metadata\random_ID\ecs-container-metadata.json

ただし、簡単にアクセスできるようにするため、コンテナメタデータファイルの場所は、コンテナ内の ECS_CONTAINER_METADATA_FILE 環境変数に設定されます。コンテナ内から、以下のコマンドを使用してファイルの内容を読み取ることができます。

  • Linux インスタンスの場合:

    cat $ECS_CONTAINER_METADATA_FILE
  • Windows インスタンス (PowerShell) の場合:

    Get-Content -path $env:ECS_CONTAINER_METADATA_FILE

コンテナメタデータファイル形式

次の情報は、コンテナのメタデータ JSON ファイルに保存されます。

Cluster

コンテナのタスクが実行されているクラスターの名前。

ContainerInstanceARN

ホストコンテナインスタンスの完全な Amazon リソースネーム (ARN)。

TaskARN

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

ContainerID

コンテナの Docker コンテナ ID (Amazon ECS コンテナの ID ではありません)。

ContainerName

コンテナ用の Amazon ECS タスク定義からのコンテナ名。

DockerContainerName

Docker デーモンがコンテナに使用するコンテナ名 (たとえば、docker ps コマンドの出力に表示される名前)。

ImageID

コンテナの起動に使用される Docker イメージの SHA ダイジェスト。

ImageName

コンテナの起動に使用される Docker イメージのイメージ名とタグ。

PortMappings

コンテナに関連付けられているすべてのポートマッピング。

ContainerPort

公開されるコンテナのポート。

HostPort

公開されるホストコンテナインスタンスのポート。

BindIp

Docker によってコンテナに割り当てられたバインド IP アドレス。この IP アドレスは、bridge ネットワークモードでのみ適用され、コンテナインスタンスからのみアクセス可能です。

Protocol

ポートマッピングに使用されるネットワークプロトコル。

Networks

コンテナのネットワークモードと IP アドレス。

NetworkMode

コンテナが属するタスクのネットワークモード。

IPv4Addresses

コンテナに関連付けられた IP アドレス。

MetadataFileStatus

メタデータファイルのステータス。ステータスが READY である場合、メタデータファイルは最新で完了済みです。ファイルがまだ準備できていない場合 (たとえば、タスクが開始された時点)、切り捨てられたバージョンのファイル形式を使用できます。コンテナが開始されたが、メタデータがまだ書き込まれていないという競合状態が発生する可能性を回避するため、メタデータファイルを解析し、メタデータに基づいてこのパラメータが READY に設定されるのを待つことができます。これは通常、コンテナの開始から 1 秒未満で使用できます。

例 Amazon ECS コンテナメタデータファイル (READY)

次の例では、READY ステータスのコンテナメタデータファイルを示します。

{ "Cluster": "default", "ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/1f73d099-b914-411c-a9ff-81633b7741dd", "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/2b88376d-aba3-4950-9ddf-bcb0f388a40c", "ContainerID": "98e44444008169587b826b4cd76c6732e5899747e753af1e19a35db64f9e9c32", "ContainerName": "metadata", "DockerContainerName": "/ecs-metadata-7-metadata-f0edfbd6d09fdef20800", "ImageID": "sha256:c24f66af34b4d76558f7743109e2476b6325fcf6cc167c6e1e07cd121a22b341", "ImageName": "httpd:2.4", "PortMappings": [ { "ContainerPort": 80, "HostPort": 80, "BindIp": "", "Protocol": "tcp" } ], "Networks": [ { "NetworkMode": "bridge", "IPv4Addresses": [ "172.17.0.2" ] } ], "MetadataFileStatus": "READY" }

例 不完全な Amazon ECS コンテナメタデータファイル (まだ READY でない)

次の例では、まだ READY ステータスに達していないコンテナメタデータファイルを示します。ファイルの情報は、タスクの定義から既知であるいくつかのパラメータに限定されます。コンテナメタデータファイルは、コンテナの開始後 1 秒以内に準備できます。

{ "Cluster": "default", "ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/1f73d099-b914-411c-a9ff-81633b7741dd", "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/d90675f8-1a98-444b-805b-3d9cabb6fcd4", "ContainerName": "metadata" }