Amazon Elastic Compute Cloud
Windows インスタンス用ユーザーガイド

インスタンスメタデータとユーザーデータ

インスタンスメタデータは、インスタンスに関するデータで、実行中のインスタンスを設定または管理するために使用します。インスタンスメタデータはいくつかのカテゴリに分けられます。詳細については、「インスタンスメタデータのカテゴリ」を参照してください。

重要

インスタンスメタデータおよびユーザーデータにはそのインスタンス自体内からのみアクセスできるものの、データは暗号化手法によって保護されていません。インスタンスにアクセスできるユーザーなら誰でもそのメタデータを参照できます。したがって、重要なデータ (長期間使用する暗号化キーなど) については、適切な安全策によって保護する必要があります。パスワードなどの機密データは、ユーザーデータとして保存しないでください。

インスタンスメタデータを使用して、インスタンスの起動時に指定したユーザーデータにアクセスすることもできます。たとえば、インスタンスを設定するためにパラメータを指定したり、単純なスクリプトをアタッチしたりできます。また、このデータを使用すると、より一般的な AMI を構築することもでき、この AMI は、起動時に提供される設定ファイルにより、変更が可能になります。たとえば、さまざまな小規模ビジネスを対象としたウェブサーバーを実行する場合に、すべてのサーバーで同じ AMI を使用し、起動時にユーザーデータで指定した Amazon S3 バケットからコンテンツを取得できます。新しい顧客をいつでも簡単に追加できます。その顧客のバケットを作成し、顧客のコンテンツを追加して、AMI を起動すればよいのです。複数のインスタンスを同時に起動する場合、ユーザーデータはその予約においてすべてのインスタンスで使用可能です。

EC2 インスタンスには、インスタンスの起動時に生成されるインスタンスアイデンティティドキュメントなどの動的データも含まれます。詳細については、「動的データのカテゴリ」を参照してください。

インスタンスメタデータの取得

インスタンスメタデータは実行中のインスタンスから取得できるため、Amazon EC2 コンソールまたは AWS CLI を使用する必要はありません。これは、インスタンスから実行するスクリプトを記述しているときに便利です。たとえば、インスタンスメタデータからインスタンスのローカル IP アドレスにアクセスして、外部アプリケーションへの接続を管理できます。

実行中のインスタンス内からインスタンスメタデータのすべてのカテゴリを表示するには、次の URI を使用します。

http://169.254.169.254/latest/meta-data/

IP アドレス 169.254.169.254 は、リンクローカルアドレスで、インスタンスからのみ有効です。詳細については、Wikipedia の リンクローカルアドレスを参照してください。

インスタンスメタデータおよびユーザーデータの取得に使用する HTTP リクエストに対しては課金されません。

PowerShell コマンドレットを使用して URI を取得できます。たとえば、バージョン 3.0 以降の PowerShell を実行している場合、次の cmdlet を使用します。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/

PowerShell の使用を避けたい場合は、GNU Wget や cURL などのサードパーティツールをインストールしてください。

重要

Windows インスタンスにサードパーティツールをインストールする場合は、HTTP の呼び出し方法および出力形式がここに記載されているものとは異なることがあるので、必ず付属のドキュメントをよく読んでください。

すべてのインスタンスメタデータがテキスト (コンテンツタイプ text/plain) として返されます。特定のメタデータリソースに対するリクエストは、適切な値または 404 - Not Found HTTP エラーコード (リソースを使用できない場合) を返します。

一般的なメタデータリソースに対するリクエスト (/ で終わる URI) は、使用可能なリソースのリストまたは 404 - Not Found HTTP エラーコード (使用可能なリソースがない場合) を返します。リスト項目は個別の行に表示され、各行の末尾には改行記号 (ASCII 10) が付いています。

インスタンスメタデータの取得の例

次の例では、使用できるインスタンスメタデータのバージョンを取得しています。これらのバージョンは、Amazon EC2 API バージョンと必ずしも関連しているとは限りません。以前のバージョンに存在する構造および情報に依存するスクリプトがある場合は、以前のバージョンを使用することができます。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 2016-06-30 2016-09-02 latest

次の例では、上位レベルのメタデータ項目を取得しています。詳細については、「インスタンスメタデータのカテゴリ」を参照してください。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/

次の例では、前の例からメタデータ項目の一部の値を取得しています。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com

次の例では、インスタンスのサブネット ID を取得しています。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7

Throttling

クエリはインスタンスメタデータサービスでインスタンスごとにスロットリングし、インスタンスからインスタンスメタデータサービスへの同時接続数を制限します。

AWS セキュリティ認証情報を取得するためにインスタンスメタデータサービスを使用している場合、毎回のトランザクションで、または高頻度のスレッドやプロセスから同時に認証情報をクエリしないようにします。スロットリングの原因となる可能性があります。代わりに、認証情報をキャッシュに格納して有効期限が近づくまで待つことをお勧めします。

インスタンスメタデータサービスにアクセスする際にスロットリングした場合、エクスポネンシャルパックオフ戦略でクエリを再試行します。

インスタンスユーザーデータの使用

インスタンスユーザーデータを使用する場合は、次の点に注意してください。

  • ユーザーデータは、base64 でエンコードされている必要があります。Amazon EC2 コンソールは、base64 エンコードを実行したり、base64 エンコード入力を受け入れたりできます。

  • ユーザーデータは raw 形式の 16 KB に制限されます (以前は base64 エンコード)。base64 エンコード後の 文字列の長さサイズ n は、ceil(n/3)*4 です。

  • ユーザーデータを取得するときにユーザーデータを base64 デコードする必要があります。インスタンスのメタデータあるいはコンソールを使用してデータを取得する場合、このデータは自動的にデコードされます。

  • ユーザーデータは不透明なデータとして取り扱われ、指定したデータがそのまま返されます。このデータを解釈できるかどうかは、インスタンスによって異なります。

  • インスタンスを停止してユーザーデータを変更した場合、インスタンスを起動しても、更新されたユーザーデータは自動的には実行されません。 ただし、インスタンスを起動するか、インスタンスを再起動または起動するたびに、更新されたユーザーデータスクリプトが 1 回実行されるように設定することができます。

起動時にインスタンスユーザーデータを指定する

インスタンスの起動時のユーザーデータを指定できます。ユーザーデータが起動時に 1 回実行されるように指定するか、またはインスタンスを再起動または起動するたびに実行されるように指定することができます。詳細については、「Windows インスタンスでの起動時のコマンドの実行」を参照してください。

インスタンスユーザーデータを変更する

ルートボリュームが EBS ボリュームの場合は、停止状態のインスタンスのユーザーデータを変更することができます。詳細については、「インスタンスユーザーデータの表示と更新」を参照してください。

インスタンスユーザーデータを取得する

実行中のインスタンス内からユーザーデータを取得するには、次の URI を使用します。

http://169.254.169.254/latest/user-data

ユーザーデータのリクエストは、データをそのままの状態で返します (コンテンツタイプ application/octet-stream)。

この例は、カンマで区切られたテキストとして指定されたユーザーデータを返します。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

この例では、スクリプトとして指定されたユーザーデータを返します。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

お使いのコンピュータからインスタンスのユーザーデータを取得するには、「ユーザーデータと Tools for Windows PowerShell」を参照してください。

動的データの取得

実行中のインスタンス内から動的データを取得するには、次の URI を使用します。

http://169.254.169.254/latest/dynamic/

この例では、高レベルのインスタンスアイデンティティカテゴリを取得する方法を表示しています。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/dynamic/instance-identity/ document rsa2048 pkcs7 signature

動的データの詳細およびその取得方法の例については、「インスタンスアイデンティティドキュメント」を参照してください。

インスタンスメタデータのカテゴリ

次の表は、インスタンスメタデータのカテゴリをまとめたものです。

重要

赤のテキストでフォーマットされたカテゴリ名は、インスタンスに固有のデータ用のプレースホルダーです。たとえば、mac はネットワークインターフェイスの MAC アドレスを表します。プレースホルダーを実際の値に置き換える必要があります。

データ 説明 導入されたバージョン
ami-id インスタンスの起動に使用される AMI ID。 1.0
ami-launch-index 同時に複数のインスタンスを起動した場合、この値はインスタンスが起動された順序を示します。最初に起動されたインスタンスの値は 0 です。 1.0
ami-manifest-path Amazon S3 での AMI のマニフェストファイルのパス。Amazon EBS-Backed AMI を使用してインスタンスを起動した場合、返される結果は unknown です。 1.0
ancestor-ami-ids この AMI を作成するために再バンドルされたあらゆるインスタンスの AMI ID。この値は、AMI マニフェストファイルが ancestor-amis キーを含む場合にのみ存在します。 2007-10-10
block-device-mapping/ami root/boot ファイルシステムを含む仮想デバイス。 2007-12-15
block-device-mapping/ebsN Amazon EBS ボリュームに関連付けられた仮想デバイス (存在する場合)。Amazon EBS ボリュームは、起動の時点またはインスタンスが最後に開始された時点で存在している場合にのみ、メタデータで使用できます。N は、Amazon EBS ボリュームのインデックス(ebs1ebs2 など)を示します。 2007-12-15
block-device-mapping/ephemeralN non-NVMe インスタンスストアボリュームに関連付けられた仮想デバイス (存在する場合)。N は、各エフェメラルボリュームのインデックスを示します。 2007-12-15
block-device-mapping/root ルートデバイスに関連付けられた仮想デバイスまたはパーティション、あるいは仮想デバイス上のパーティション。ルート (/ または C:) ファイルシステムは、所定のインスタンスに関連付けられています。 2007-12-15
block-device-mapping/swap swap に関連付けられた仮想デバイス。存在しない場合もあります。 2007-12-15
elastic-gpus/associations/elastic-gpu-id インスタンスにアタッチされている Elastic GPU がある場合、その ID と接続情報を含めた Elastic GPU に関する情報の JSON 文字列が含まれます。 2016-11-30
events/maintenance/history インスタンスの完了またはキャンセルされたメンテナンスイベントがある場合は、イベントに関する情報を含む JSON 文字列を含みます。詳細については、「完了またはキャンセルされたイベントのイベント履歴を表示するには」を参照してください。 2018-08-17
events/maintenance/scheduled インスタンスがアクティブなメンテナンスイベントがある場合は、イベントに関する情報を含む JSON 文字列を含みます。詳細については、「予定されたイベントの表示」を参照してください。 2018-08-17
hostname インスタンスのプライベート IPv4 DNS ホスト名。複数のネットワークインターフェイスが存在する場合、これは eth0 デバイス (デバイス番号が 0 のデバイス) を示します。 1.0
iam/info インスタンスに関連付けられた IAM ロールがある場合、インスタンスの LastUpdated の日付、InstanceProfileArn、InstanceProfileId など、インスタンスプロファイルが更新された最終時刻に関する情報が格納されます。そうでない場合は、なしになります。 2012-01-12
iam/security-credentials/role-name インスタンスに関連付けられた IAM ロールがある場合、role-name はロールの名前になり、role-name に、そのロールに関連付けられた一時的なセキュリティ認証情報が格納されます (詳細については、「インスタンスメタデータからセキュリティ認証情報を取得する」を参照してください)。そうでない場合は、なしになります。 2012-01-12
identity-credentials/ec2/info [内部使用のために留保] Amazon EC2 インフラストラクチャの残りのインスタンスを識別するために AWS が使用する認証情報に関する情報。 2018-05-23
identity-credentials/ec2/security-credentials/ec2-instance [内部使用のために留保] Amazon EC2 インフラストラクチャの残りのインスタンスを識別するために AWS が使用する認証情報に関する情報。 2018-05-23
instance-action バンドルの準備のために再起動する必要があることをインスタンスに伝えます。有効な値: none | shutdown | bundle-pending. 2008-09-01
instance-id このインスタンスの ID。 1.0
instance-type インスタンスの種類。詳細については、「インスタンスタイプ」を参照してください。 2007-08-29
kernel-id このインスタンスで起動したカーネルの ID (ある場合)。 2008-02-01
local-hostname インスタンスのプライベート IPv4 DNS ホスト名。複数のネットワークインターフェイスが存在する場合、これは eth0 デバイス (デバイス番号が 0 のデバイス) を示します。 2007-01-19
local-ipv4 インスタンスのプライベート IPv4 アドレス。複数のネットワークインターフェイスが存在する場合、これは eth0 デバイス (デバイス番号が 0 のデバイス) を示します。 1.0
mac インスタンスのメディアアクセスコントロール (MAC) アドレス。複数のネットワークインターフェイスが存在する場合、これは eth0 デバイス (デバイス番号が 0 のデバイス) を示します。 2011-01-01
metrics/vhostmd 廃止. 2011-05-01
network/interfaces/macs/mac/device-number そのインターフェイスに関連付けられた固有のデバイス番号。デバイス番号はデバイス名に対応します。たとえば、2 という device-number は eth2 デバイスを指します。このカテゴリは、Amazon EC2 API で使用される DeviceIndex フィールドと device-index フィールド、および AWS CLI の EC2 コマンドに対応します。 2011-01-01
network/interfaces/macs/mac/interface-id ネットワークインターフェイスの ID。 2011-01-01
network/interfaces/macs/mac/ipv4-associations/public-ip 各パブリック IP アドレスに関連付けられ、そのインターフェイスに割り当てられたプライベート IPv4 アドレス。 2011-01-01
network/interfaces/macs/mac/ipv6s インターフェイスに関連付けられた IPv6 アドレス。VPC 内に起動されたインスタンスに対してのみ返されます。 2016-06-30
network/interfaces/macs/mac/local-hostname インターフェイスのローカルホスト名。 2011-01-01
network/interfaces/macs/mac/local-ipv4s インターフェイスに関連付けられたプライベート IPv4 アドレス。 2011-01-01
network/interfaces/macs/mac/mac インスタンスの MAC アドレス。 2011-01-01
network/interfaces/macs/mac/owner-id ネットワークインターフェイスの所有者の ID。複数インターフェイスの環境では、インターフェイスは Elastic Load Balancing などのサードパーティによってアタッチできます。インターフェイス上のトラフィックは、常にインターフェイス所有者に対して課金されます。 2011-01-01
network/interfaces/macs/mac/public-hostname インターフェイスのパブリック DNS (IPv4)。このカテゴリは、enableDnsHostnames 属性が true に設定されている場合にのみ返されます。詳細については、「Using DNS with Your VPC」を参照してください。 2011-01-01
network/interfaces/macs/mac/public-ipv4s インターフェイスに関連付けられたパブリック IP アドレスまたは Elastic IP アドレス。インスタンスには複数の IPv4 アドレスが存在する場合があります。 2011-01-01
network/interfaces/macs/mac/security-groups ネットワークインターフェイスが属するセキュリティグループ。 2011-01-01
network/interfaces/macs/mac/security-group-ids ネットワークインターフェイスが属するセキュリティグループの ID。 2011-01-01
network/interfaces/macs/mac/subnet-id インターフェイスが存在するサブネットの ID。 2011-01-01
network/interfaces/macs/mac/subnet-ipv4-cidr-block インターフェイスが存在するサブネットの IPv4 CIDR ブロック。 2011-01-01
network/interfaces/macs/mac/subnet-ipv6-cidr-blocks インターフェイスが存在するサブネットの IPv6 CIDR ブロック。 2016-06-30
network/interfaces/macs/mac/vpc-id インターフェイスが存在する VPC の ID。 2011-01-01
network/interfaces/macs/mac/vpc-ipv4-cidr-block VPC のプライマリ IPv4 CIDR ブロック。 2011-01-01
network/interfaces/macs/mac/vpc-ipv4-cidr-blocks VPC の IPv4 CIDR ブロック。 2016-06-30
network/interfaces/macs/mac/vpc-ipv6-cidr-blocks インターフェイスが存在する VPC の IPv6 CIDR ブロック。 2016-06-30
placement/availability-zone インスタンスが起動した利用可能ゾーン。 2008-02-01
product-codes インスタンスに関連付けられた Marketplace 製品コード (ある場合)。 2007-03-01
public-hostname インスタンスのパブリック DNS。このカテゴリは、enableDnsHostnames 属性が true に設定されている場合にのみ返されます。詳細については、「Amazon VPC ユーザーガイド」の「VPC での DNS の使用」を参照してください。 2007-01-19
public-ipv4 パブリック IPv4 アドレス。インスタンスに Elastic IP アドレスが関連付けられている場合、返される値は Elastic IP アドレスです。 2007-01-19
public-keys/0/openssh-key パブリックキー。インスタンスの起動時に指定された場合のみ返されます。 1.0
ramdisk-id 起動時に指定された RAM ディスクの ID (該当する場合)。 2007-10-10
reservation-id 予約の ID。 1.0
security-groups

インスタンスに適用されるセキュリティグループの名前。

起動後、インスタンスのセキュリティグループを変更できます。これらの変更は、この場所と network/interfaces/macs/mac/security-groups に反映されます。

1.0
services/domain

リージョンの AWS リソースのドメイン。

2014-02-25
services/partition

リソースが置かれているパーティションです。標準の AWS リージョンの場合、パーティションは aws です。他のパーティションにリソースがある場合、パーティションは aws-partitionname です。たとえば、中国 (北京) リージョンにあるリソースのパーティションは、aws-cn です。

2015-10-20
spot/instance-action

アクション (休止、停止、または終了) およびアクションのおよその発生時刻 (UTC)。この項目が存在するのは、スポットインスタンス が休止、停止、または終了とマークされた場合のみです。詳細については、「instance-action」を参照してください。

2016-11-15
spot/termination-time

スポットインスタンス のオペレーティングシステムがシャットダウン信号を受信するおよその時刻 (UTC)。この項目は、スポットインスタンスに Amazon EC2 による終了のマークが付けられている場合にのみ存在し、時刻値 (たとえば 2015-01-05T18:02:00Z) が含まれます。ユーザー自身が スポットインスタンス を終了した場合、termination-time 項目に時刻は設定されません。詳細については、「termination-time」を参照してください。

2014-11-05

動的データのカテゴリ

次の表は、動的データのカテゴリをまとめたものです。

データ 説明 導入されたバージョン
fws/instance-monitoring 顧客が CloudWatch で詳細な 1 分間隔のモニタリングを有効にしているかどうかを示す値。有効な値: enabled | disabled 2009-04-04
instance-identity/document インスタンス ID、プライベート IP アドレスなど、インスタンスの属性を含む JSON。「インスタンスアイデンティティドキュメント」を参照してください。 2009-04-04
instance-identity/pkcs7 署名に対してドキュメントの真正性およびコンテンツを確認するために使用されます。「インスタンスアイデンティティドキュメント」を参照してください。 2009-04-04
instance-identity/signature オリジンおよび権限を確認するために使用できるデータ。「インスタンスアイデンティティドキュメント」を参照してください。 2009-04-04