Amazon ECS コンテナメタデータファイル - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

Amazon ECS コンテナエージェントのバージョン 1.15.0 以降では、コンテナまたはホストコンテナインスタンス内でさまざまなコンテナメタデータを使用できます。この機能を有効にすると、タスク、コンテナ、およびコンテナ内部のコンテナインスタンスまたはホストコンテナインスタンスに関する情報をクエリできます。メタデータファイルはホストインスタンスで作成され、Docker ボリュームとしてコンテナにマウントされるため、タスクが AWS Fargate でホストされているときは使用できません。

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

コンテナメタデータをオンにする

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

エージェントの起動時に ECS_ENABLE_CONTAINER_METADATAtrue に設定されている場合、それ以降に作成されたのコンテナに対してメタデータファイルが作成されます。Amazon ECS コンテナエージェントは、ECS_ENABLE_CONTAINER_METADATA コンテナエージェント変数が true に設定される前に作成されたコンテナに対してメタデータファイルを作成することはできません。すべてのコンテナがメタデータファイルを受け取るようにするには、コンテナインスタンスの起動時に、このエージェント変数を設定します。以下は、この変数を設定し、コンテナインスタンスをクラスターに登録するユーザーデータスクリプトの例です。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=your_cluster_name ECS_ENABLE_CONTAINER_METADATA=true EOF

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

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

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

    • ホストパス: /var/lib/ecs/data/metadata/cluster_name/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)。

TaskDefinitionFamily

コンテナで使用しているタスク定義ファミリーの名前。

TaskDefinitionRevision

コンテナが使用しているタスク定義リビジョン。

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 アドレス。

重要

タスクで awsvpc ネットワークモードを使用している場合、コンテナの IP アドレスは返されません。この場合は、次のコマンドを使用して /etc/hosts ファイルを読み取ることにより IP アドレスを取得できます。

tail -1 /etc/hosts | awk '{print $1}'
MetadataFileStatus

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

AvailabilityZone

ホストコンテナインスタンスが存在するアベイラビリティーゾーン。

HostPrivateIPv4Address

コンテナが属するタスクのプライベート IP アドレス。

HostPublicIPv4Address

コンテナが属するタスクのパブリック IP アドレス。

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

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

{ "Cluster": "default", "ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/default/1f73d099-b914-411c-a9ff-81633b7741dd", "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/default/2b88376d-aba3-4950-9ddf-bcb0f388a40c", "TaskDefinitionFamily": "console-sample-app-static", "TaskDefinitionRevision": "1", "ContainerID": "aec2557997f4eed9b280c2efd7afccdcedfda4ac399f7480cae870cfc7e163fd", "ContainerName": "simple-app", "CreatedAt": "2023-10-08T20:09:11.44527186Z", "StartedAt": "2023-10-08T20:09:11.44527186Z", "DockerContainerName": "/ecs-console-sample-app-static-1-simple-app-e4e8e495e8baa5de1a00", "ImageID": "sha256:2ae34abc2ed0a22e280d17e13f9c01aaf725688b09b7a1525d1a2750e2c0d1de", "ImageName": "httpd:2.4", "PortMappings": [ { "ContainerPort": 80, "HostPort": 80, "BindIp": "0.0.0.0", "Protocol": "tcp" } ], "Networks": [ { "NetworkMode": "bridge", "IPv4Addresses": ["192.0.2.0"] } ], "MetadataFileStatus": "READY", "AvailabilityZone": "us-east-1b", "HostPrivateIPv4Address": "192.0.2.0", "HostPublicIPv4Address": "203.0.113.0" }
例 不完全な Amazon ECS コンテナメタデータファイル (まだ READY でない)

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

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