Elastic Container Instance (ECI) のメタデータは、インスタンスとそのコンテナに関する詳細 (名前、ID、IP アドレス、ネットワーク インターフェイス情報など) を提供します。このデータを使用して、コンテナを管理および運用できます。このトピックでは、実行中のコンテナ内からこのメタデータを取得する方法について説明します。
方法1:MetaServer経由でのメタデータへのアクセス
-
コンテナに接続します。詳細については、「ワークベンチを使用したECIインスタンスへの接続」をご参照ください。
-
メタデータにアクセスします。
説明コンテナ環境に curl がインストールされていない場合は、先にインストールしてください。
curl http://100.100.100.200/latest/meta-data/<metadata><metadata>を、クエリしたい特定のメタデータ項目に置き換えます。たとえば、インスタンス ID を取得するには、次のコマンドを実行します。curl http://100.100.100.200/latest/meta-data/instance-id次の表に、ECI インスタンスで取得できる基本的なメタデータ項目を示します。
パラメーター
説明
/dns-conf/nameservers
インスタンスの DNS 設定。
/eipv4
インスタンスの Elastic IP アドレス (IPv4)。
/hostname
インスタンスのホスト名。これは ContainerGroupName に対応します。
/instance-id
インスタンス ID。
/mac
インスタンスの MAC アドレス。
/network/interfaces/
ネットワーク インターフェイスの MAC アドレスのリスト。
/network/interfaces/macs/[mac]/network-interface-id
ネットワーク インターフェイス ID。[mac] をインスタンスの MAC アドレスに置き換えます。
/network/interfaces/macs/[mac]/netmask
ネットワーク インターフェイスのサブネットマスク。
/network/interfaces/macs/[mac]/vswitch-cidr-block
ネットワーク インターフェイスが属する vSwitch の IPv4 CIDR ブロック。
/network/interfaces/macs/[mac]/vpc-cidr-block
ネットワーク インターフェイスが属する VPC の IPv4 CIDR ブロック。
/network/interfaces/macs/[mac]/private-ipv4s
ネットワーク インターフェイスに割り当てられたプライベート IPv4 アドレスのリスト。
/network/interfaces/macs/[mac]/vpc-ipv6-cidr-blocks
ネットワーク インターフェイスが属する VPC の IPv6 CIDR ブロック。この項目は、IPv6 が有効になっている VPC 内のインスタンスでのみ使用可能です。
/network/interfaces/macs/[mac]/vswitch-id
ネットワーク インターフェイスが属する vSwitch の ID。
/network/interfaces/macs/[mac]/vpc-id
ネットワーク インターフェイスが属する VPC の ID。
/network/interfaces/macs/[mac]/primary-ip-address
ネットワーク インターフェイスのプライマリプライベート IP アドレス。
/network/interfaces/macs/[mac]/gateway
ネットワーク インターフェイスの IPv4 ゲートウェイアドレス。
/instance/max-netbw-egress
インスタンスタイプの最大アウトバウンド内部帯域幅。単位:Kbit/s。
/instance/max-netbw-ingress
インスタンスタイプの最大インバウンド内部帯域幅。単位:Kbit/s。
/network/interfaces/macs/[mac]/ipv6s
ネットワーク インターフェイスに割り当てられた IPv6 アドレスのリスト。この項目は、IPv6 が有効になっている VPC 内のインスタンスでのみ使用可能です。
/network/interfaces/macs/[mac]/ipv6-gateway
ネットワーク インターフェイスが属する VPC の IPv6 ゲートウェイアドレス。
/network/interfaces/macs/[mac]/vswitch-ipv6-cidr-block
ネットワーク インターフェイスが属する vSwitch の IPv6 CIDR ブロック。この項目は、IPv6 が有効になっている VPC 内のインスタンスでのみ使用可能です。
/private-ipv4
インスタンスのプライベート IPv4 アドレス。
/ntp-conf/ntp-servers
NTP サーバーのアドレス。
/owner-account-id
インスタンスを所有する Alibaba Cloud アカウントの ID。
/region-id
インスタンスのリージョン。
/serial-number
インスタンスのシリアル番号。
/vpc-id
インスタンスが配置されている VPC の ID。
/vpc-cidr-block
インスタンスが配置されている VPC の CIDR ブロック。
/vswitch-cidr-block
インスタンスが配置されている vSwitch の CIDR ブロック。
/vswitch-id
インスタンスが配置されている vSwitch の ID。
/zone-id
インスタンスのゾーン。
/ram/security-credentials/[role-name]
インスタンスの RAM ロールの STS 一時的な認証情報。これらは RAM ロールがアタッチされている場合にのみ利用できます。[role-name] を RAM ロール名に置き換えます。[role-name] を省略すると、アタッチされている RAM ロールの名前が返されます。
方法2:コンテナ環境変数の設定
ECI インスタンス内のコンテナに環境変数を設定することで、インスタンス情報を取得することもできます。この方法では、インスタンス ID、インスタンス名、リージョン、ゾーン、コンテナ名などのメタデータにアクセスできます。
|
キー |
値 |
説明 |
|
eci_id |
__ECI_ID__ |
インスタンスの ID。 |
|
eci_name |
__ECI_NAME__ |
インスタンスの名前。 |
|
region_id |
__REGION_ID__ |
インスタンスが配置されているリージョン。 |
|
zone_id |
__ZONE_ID__ |
インスタンスが配置されているゾーン。 |
|
container_name |
__CONTAINER_NAME__ |
コンテナの名前。 |
設定例:
OpenAPI
CreateContainerGroup API を呼び出して ECI インスタンスを作成する際、Container.N.EnvironmentVar.N.Key と Container.N.EnvironmentVar.N.Value パラメーターを使用して環境変数を設定できます。次の例は、パラメーターの設定方法を示しています。
ContainerGroupName=test-env
Container.1.Image=registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
Container.1.Name=container-1
# カスタム環境変数の設定
Container.1.EnvironmentVar.1.Key=eci_id
Container.1.EnvironmentVar.2.Key=eci_name
Container.1.EnvironmentVar.3.Key=region_id
Container.1.EnvironmentVar.4.Key=zone_id
Container.1.EnvironmentVar.5.Key=container_name
Container.1.EnvironmentVar.1.Value=__ECI_ID__
Container.1.EnvironmentVar.2.Value=__ECI_NAME__
Container.1.EnvironmentVar.3.Value=__REGION_ID__
Container.1.EnvironmentVar.4.Value=__ZONE_ID__
Container.1.EnvironmentVar.5.Value=__CONTAINER_NAME__
コンソール
Elastic Container Instance コンソールで ECI インスタンスを作成するときは、コンテナー設定 セクションでコンテナを選択し、その詳細設定を展開してから 環境変数 スイッチを有効にして環境変数を追加します。 たとえば、次の環境変数を追加できます。
eci_id:__ECI_ID__(インスタンス ID)eci_name:__ECI_NAME__(インスタンス名)region_id:__REGION_ID__(リージョン ID)zone_id:__ZONE_ID__(ゾーン ID)container_name:__CONTAINER_NAME__(コンテナ名)
ECI インスタンスを作成した後、コンテナに接続して設定を確認します。詳細については、「ワークベンチを使用したECIインスタンスへの接続」をご参照ください。
次の例は、コンテナ内での env コマンドの出力結果を示しています。
Elastic Container Service!
# env
HOSTNAME=test-env
ECI CONTAINER TYPE=normal
zone_id=cn-shanghai-f
HOME=/root
eci_name=test-env
container_name=container-1
TERM=xterm
NGINX_VERSION=1.14.2-1~stretch
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NJS_VERSION=1.14.2.0.2.6-1~stretch
PWD=/
eci_id=eci-uf63a8afxxx5bx
region_id=cn-shanghai
#