すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:メタデータを使用してECSインスタンス内のインスタンス属性などの情報にアクセスする

最終更新日:Apr 18, 2024

ECS (Elastic Compute Service) インスタンスのメタデータは、メタデータサービスを使用してインスタンスから取得される情報 (インスタンス属性など) です。 インスタンス属性には、インスタンスID、仮想プライベートクラウド (VPC) 情報、およびネットワークインターフェイスコントローラ (NIC) 情報が含まれます。 メタデータサービスを使用すると、ECSコンソールにログインしたり、API操作を呼び出したりすることなく、ECSインスタンス内の情報にアクセスできます。 メタデータサービスを使用すると、実行中状態のECSインスタンス、またはECSインスタンスでホストされているアプリケーションをより便利で安全な方法で設定または管理することもできます。 たとえば、ECSインスタンスで実行されるアプリケーションは、インスタンスメタデータにアクセスして、インスタンスにアタッチされているRAM (Resource access Management) ロールのSTS (Security Token Service) トークンを取得できます。 その後、アプリケーションはトークンを使用して、Object Storage Service (OSS) リソース、Key Management Service (KMS) リソース、その他のECSリソースなどのリソースにアクセスできます。

制限

  • VPCに存在するECSインスタンスのみがインスタンスメタデータをサポートします。

  • ECSインスタンスのメタデータにアクセスするには、インスタンスからメタデータサーバーにアクセスし、インスタンスが [実行中] 状態であることを確認する必要があります。

  • 単一のECSインスタンスからメタデータサーバーに頻繁にアクセスする場合、アクセスリクエストが抑制される可能性があります。 1つのECSインスタンスのメタデータに頻繁にアクセスする場合は、上記の問題を防ぐために、取得したインスタンスメタデータをキャッシュすることをお勧めします。 たとえば、一時的なRAMセキュリティ資格情報を取得した後、資格情報をキャッシュし、資格情報の有効期限が近づいたときに資格情報を再取得することをお勧めします。

インスタンスメタデータへのアクセス

    重要

    ECSインスタンスまたはインスタンスのメタデータに機密データが含まれている場合は、アクセス制御やデータ暗号化など、適切な方法を使用してデータを保護することを推奨します。

インスタンスメタデータのアクセスモード

通常モードまたはセキュリティ強化モードでインスタンスメタデータにアクセスできます。

通常モードとセキュリティ強化モードの違い

項目

通常モード

セキュリティ強化モード

相互作用パターン

リクエスト-レスポンス。

セッション指向。

認証方法

認証には同じVPC内の送信元IPアドレスを使用します。

同じVPC内の送信元IPアドレスと、認証にメタデータサーバーのアクセス資格情報を使用します。

メタデータサーバーのアクセス資格情報には、次の特徴があります。

  • メタデータサーバーのアクセス資格情報は短命で、最大6時間有効です。 有効期間が終了すると、資格情報は期限切れになり、再取得する必要があります。

  • メタデータサーバーのアクセス資格情報はECSインスタンスに関連付けられています。 ECSインスタンスのメタデータサーバーアクセス資格情報をコピーして別のECSインスタンスにアクセスすると、アクセスは拒否されます。

  • メタデータサーバーのアクセス資格情報は、プロキシアクセスをサポートしていません。 リクエストにX-Forwarded-Forヘッダーが含まれている場合、メタデータサーバーはアクセス資格情報を発行しません。

アクセス方式

コマンドを使用して、アクセス資格情報なしでエンドポイントにアクセスします。

インスタンスメタデータのセキュリティを強化するには、認証用のメタデータサーバーアクセス資格情報を取得してから、エンドポイントにアクセスします。

cloud-initバージョンの要件

なし。

cloud-init 23.2.2がECSインスタンスにインストールされていることを確認します。

説明
  • 特定の最新のパブリックイメージはcloud-init 23.2.2をサポートしています。 RunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成する場合、ImageIdをそのようなパブリックイメージのIDに設定できます。 cloud-init 23.2.2をサポートするパブリックイメージから作成されたインスタンスは、セキュリティ強化モードでインスタンスメタデータにアクセスできます。 cloud-init 23.2.2をサポートするパブリックイメージの詳細については、「リリースノート」をご参照ください。

  • 既存のECSインスタンスのcloud-initバージョンが23.2.2でない場合、cloud-initバージョンを23.2.2にアップグレードしてセキュリティ強化モードをサポートできます。 ECSインスタンスのcloud-initバージョンを確認およびアップグレードする方法については、「cloud-initのインストール」をご参照ください。

インスタンスメタデータへのアクセス

(推奨) セキュリティ強化モードでのインスタンスメタデータへのアクセス

  • Linuxインスタンス

    # メタデータサーバーのアクセス資格情報を取得し、資格情報の有効期間を指定します。 アクセス要求にX-Forwarded-Forヘッダーを含めないでください。
    TOKEN='curl -X PUT "http:// 100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<メタデータサーバーのアクセス資格情報の有効期間>"'
    # インスタンスメタデータにアクセスします。
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http:// 100.100.100.200/latest/meta-data/<metadata> 
  • Windowsインスタンス

    # メタデータサーバーのアクセス資格情報を取得し、資格情報の有効期間を指定します。 アクセス要求にX-Forwarded-Forヘッダーを含めないでください。
    $token=Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<メタデータサーバーのアクセス資格情報の有効期間>"} -メソッドPUT -Uri http:// 100.100.100.200/latest/api/token
    # インスタンスメタデータにアクセスします。
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -メソッドGET -Uri http:// 100.100.100.200/latest/meta-data/<metadata> 
    • <メタデータサーバーのアクセス資格情報の有効期間>: データセキュリティを強化するために、メタデータサーバーのアクセス資格情報の有効期間を指定します。 有効な値: 1 ~ 21600 単位は秒です。

      • 上記のコマンドを繰り返し実行して、メタデータサーバーのアクセス資格情報の有効期間内にインスタンスのメタデータ項目にアクセスできます。 有効期間が終了したら、メタデータサーバーのアクセス資格情報を再取得します。 メタデータサーバーのアクセス資格情報を再取得しない場合、インスタンスのメタデータにアクセスできません。

      • メタデータサーバーのアクセス資格情報はECSインスタンスに関連付けられています。 ECSインスタンスのメタデータサーバーアクセス資格情報をコピーして別のECSインスタンスにアクセスすると、アクセスは拒否されます。

    • <metadata>: このパラメーターを、クエリするメタデータ項目に置き換えます。 インスタンスメタデータ項目の詳細については、このトピックの「インスタンスメタデータ項目」をご参照ください。

通常モードでのインスタンスメタデータへのアクセス

  • Linuxインスタンス

    curl http:// 100.100.100.200/latest/meta-data/<metadata>
  • Windowsインスタンス (PowerShell)

    Invoke-RestMethod http:// 100.100.100.200/latest/meta-data/<metadata>

<metadata>: このパラメーターを、クエリするメタデータ項目に置き換えます。 インスタンスメタデータ項目の詳細については、このトピックの「インスタンスメタデータ項目」をご参照ください。

次の例では、ECSインスタンスのVPC IDにアクセスします。

セキュリティ強化モード

次の例では、<メタデータサーバーのアクセス資格情報の有効期間> を180秒に設定します。

  • Linuxインスタンス

    TOKEN='curl -X PUT "http:// 100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:180"'
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http:// 100.100.100.200/latest/meta-data/vpc-id 
  • Windowsインスタンス

    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "180"} -メソッドPUT -Uri http:// 100.100.100.200/latest/api/token
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -メソッドGET -Uri http:// 100.100.100.200/latest/meta-data/vpc-id 

通常モード

  • Linuxインスタンス

    curl http:// 100.100.100.200/latest/meta-data/vpc-id
  • Windowsインスタンス

    Invoke-RestMethod http:// 100.100.100.200/latest/meta-data/vpc-id

インスタンスメタデータアクセスモードの設定

デフォルトでは、通常モードとセキュリティ強化モードでインスタンスメタデータにアクセスできます。 セキュリティを強化するために、セキュリティ強化モードのみをサポートするようにECSインスタンスを設定できます。

新しいインスタンス

RunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成するときは、HttpTokensパラメーターを設定してインスタンスメタデータアクセスモードを指定します。 パラメータの有効値:

  • optional: セキュリティ強化モードを強制的に使用しません。 インスタンスメタデータには、通常モードとセキュリティ強化モードの両方でアクセスできます。

  • required: セキュリティ強化モードを強制的に使用します。 このパラメーターを必須に設定すると、通常モードでインスタンスメタデータにアクセスできなくなります。

既存インスタンス

ModifyInstanceMetadataOptions操作を呼び出して既存のECSインスタンスのメタデータを変更する場合は、HttpTokensパラメーターを設定してインスタンスメタデータアクセスモードを指定します。 パラメータの有効値:

  • optional: セキュリティ強化モードを強制的に使用しません。 インスタンスメタデータには、通常モードとセキュリティ強化モードの両方でアクセスできます。

  • required: セキュリティ強化モードを強制的に使用します。 このパラメーターを必須に設定すると、通常モードでインスタンスメタデータにアクセスできなくなります。

インスタンスメタデータのアクセスモードをセキュリティ強化に制限する権限ポリシーの設定

権限ポリシーを使用して、Alibaba CloudアカウントのすべてのRAMユーザーがRunInstancesまたはCreateInstance操作を呼び出してECSインスタンスを作成する場合、またはModifyInstanceMetadataOptions操作を呼び出してECSインスタンスのメタデータを変更する場合にのみ、セキュリティ強化モードでインスタンスメタデータにアクセスするように制限できます。 次のサンプルコードは、ポリシーの内容を示しています。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        ecs:RunInstances
        "ecs:CreateInstance",
        "ecs:ModifyInstanceMetadataOptions"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ecs:SecurityHardeningMode": [
            "false"
          ]
        }
      }
    }
  ]
}

権限ポリシーの作成方法については、「カスタムポリシーの作成」トピックの [JSON] タブでカスタムポリシーを作成するセクションをご参照ください。

重要

セキュリティ強化モードのみをサポートするECSインスタンスのメタデータにアクセスする前に、cloud-init 23.2.2がインスタンスにインストールされていることを確認してください。 ECSインスタンスのcloud-initバージョンが23.2.2でない場合、インスタンスを起動できない可能性があります。 ECSインスタンスのcloud-initバージョンを確認およびアップグレードする方法については、「cloud-initのインストール」をご参照ください。

インスタンスメタデータ項目

メタデータアイテム

説明

dns-conf/nameservers

インスタンスのドメインネームシステム (DNS) 設定。

100.100.XX.XX

hostname

インスタンスのホスト名。

iZbp13znx0m0me8cquu ****

インスタンス /インスタンスタイプ

インスタンスタイプです。

ecs.g6e.large

インスタンス /インスタンス名

インスタンスの名前です。

iZbp1bfqfsvqzxhmnd5 ****

image-id

インスタンスの作成に使用されるイメージのID。

aliyun_3_x64_20G_alibase_20210425.vhd

image/market-place/product-code

Alibaba Cloud Marketplaceイメージの製品コード。

cmjj01 ****

image/market-place/charge-type

Alibaba Cloud Marketplaceイメージの課金方法。

PrePaid

instance-id

インスタンスの ID です。

i-bp13znx0m0me8cquu ****

mac

インスタンスのメディアアクセス制御 (MAC) アドレス。 インスタンスに複数のNICがある場合、eth0 NICのMACアドレスのみが表示されます。

00:16:3e:0f:XX:XX

network-type

インスタンスのネットワークタイプです。 VPCにデプロイされたインスタンスのみがこのメタデータ項目をサポートします。

vpc

network/interfaces/macs/[mac]/network-interface-id

NICの識別子。 [mac] をインスタンスのMACアドレスに置き換えます。

eni-bp1b2c0jvnj0g17b ****

ネットワーク /インターフェイス /macs/[mac]/netmask

NICのサブネットマスク。

255.255.XX.XX

ネットワーク /インターフェイス /macs/[mac]/vswitch-cidr-block

NICが接続されているvSwitchのIPv4 CIDRブロック。

192.168.XX.XX/24

ネットワーク /インターフェイス /macs/[mac]/vpc-cidr-block

NICが属するVPCのIPv4 CIDRブロック。

192.168.XX.XX/16

ネットワーク /インターフェース /macs/[mac]/private-ipv4s

NICに割り当てられているプライベートIPv4アドレス。

["192.168.XX.XX"]

network/interfaces/macs/[mac]/vswitch-id

NICのセキュリティグループに関連付けられているvSwitchのID。

vsw-bp1ygryo03m39xhsy ****

ネットワーク /インターフェイス /macs/[mac]/vpc-id

NICのセキュリティグループが属するVPCのID。

vpc-bp1e0g399hkd7c8q3 ****

network/interfaces/macs/[mac]/primary-ip-address

NICのプライマリプライベートIPアドレス。

192.168.XX.XX

ネットワーク /インターフェイス /macs/[mac]/gateway

NICのIPv4ゲートウェイアドレス。

192.168.XX.XX

インスタンス /max-netbw-egress

インスタンスの最大アウトバウンド内部帯域幅。 単位:Kbit/秒

1228800

ネットワーク /インターフェース /macs/[mac]/ipv4-prefixes

NICに割り当てられているプライベートIPv4プレフィックスリスト。

192.168.XX.XX/28

ネットワーク /インターフェース /macs/[mac]/ipv6-prefixes

NICに割り当てられているプライベートIPv6プレフィックスリスト。

2001:db8:1234:1a00:XXXX::/80

disks/[disk-id]/id

ディスクの ID です。

d-bp131n0q38u3a4zi ****

disks/[disk-id]/name

ディスクのパラメーター名

testDiskName

private-ipv4

プライマリNICのプライベートIPv4アドレス。

192.168.XX.XX

public-ipv4

プライマリNICのパブリックIPv4アドレス。

120.55.XX.XX

eipv4

このメタデータアイテムは、次の情報を取得するために使用されます。

  • システムに割り当てられたインスタンスのパブリックIPv4アドレス

  • プライマリNICに関連付けられているエラスティックIPv4アドレス

120.55.XX.XX

ntp-conf/ntp-servers

ネットワークタイムプロトコル (NTP) サーバーのアドレス。

ntp1.aliyun.com

owner-account-id

インスタンスが属するAlibaba CloudアカウントのID。

1609 ****

region-id

インスタンスのリージョン ID です。

cn-hangzhou

zone-id

インスタンスのゾーン ID です。

cn-hangzhou-i

public-keys/[keypair-id]/openssh-key

インスタンスの公開キー。 このメタデータアイテムは、インスタンスの作成中に公開キーがインスタンスにバインドされている場合にのみ使用できます。

ssh-rsa **** 3NzaC1yc2EAAAADAQABAAABAQDLNbE7pS **** @ ****.com

serial-number

インスタンスのシリアル番号。

4acd2b47-b328-4762-852f-998 ****

source-address

YUMまたはAPTイメージリポジトリのアドレス。 Linuxインスタンスのパッケージ管理ソフトウェアは、イメージリポジトリから更新を取得できます。

http://mirrors.cloud.aliyuncs.com

kms-server

WindowsインスタンスがWindowsをアクティブ化するために使用するKey Management Service (KMS) サーバー。

kms.cloud.aliyuncs.com

wsus-server/wu-server

Windowsインスタンスの更新サーバー。

http://update.cloud.aliyuncs.com

wsus-server/wu-status-server

Windowsインスタンスの更新ステータスを監視するサーバー。

http://update.cloud.aliyuncs.com

vpc-id

インスタンスが属する VPC の ID。

vpc-bp1e0g399hkd7c8q ****

vpc-cidr-block

インスタンスが属するVPCのCIDRブロック。

192.168.XX.XX/16

vswitch-cidr-block

インスタンスが接続されているvSwitchのCIDRブロック。

192.168.XX.XX/24

vswitch-id

インスタンスが接続されているvSwitchのID。

vsw-bp1ygryo03m39xhsy ****

/ram/security-credentials/[role-name]

インスタンスのRAMロール。 RAMロールがインスタンスにアタッチされている場合、role-nameの値は、RAMロールの名前と、RAMロールに関連付けられているSTSトークンで構成されます。 RAMロールがインスタンスにアタッチされていない場合、このメタデータ項目の値は返されません。

AliyunECSImageExportDefaultRole

instance/spot/termination-time

プリエンプティブルインスタンスのオペレーティングシステムで設定されている停止時間とリリース時間。 時刻はyyyy-MM-ddThh:mm:ssZ形式です。 時刻は UTC で表示されます。

2020-04-07T17:03:00Z

instance/virtualization-solution

ECS仮想化ソリューション。 Virt 1.0とVirt 2.0がサポートされています。

ECSヴァルト

instance/virtualization-solution-version

ECS仮想化ソリューションのバージョン。

2.0

FAQ

セキュリティ強化モードでECSインスタンスのメタデータにアクセスするコマンドを実行できない場合はどうすればよいですか。

使用するコマンドが正しいかどうかを確認してください。 コマンドで次のエラーが終了する可能性があります。

  • メタデータサーバーのアクセス資格情報の有効期間が1秒から21,600秒の範囲内ではありません。

    curl -X PUT "http:// 100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"
  • 要求は、X − Forwarded − Forヘッダを含む。

    curl -X PUT "http:// 100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba ****.com"
  • 指定されたメタデータサーバーのアクセス資格情報は無効です。

    curl -H "X-aliyun-ecs-metadata-token: aaa" -v http:// 100.100.100.200/latest/meta-data/