翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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_METADATA
が true
に設定されている場合、それ以降に作成されたのコンテナに対してメタデータファイルが作成されます。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" }