ec2-metadata

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

インスタンスメタデータは実行中のインスタンスから取得できるため、Amazon EC2 コンソールまたは AWS CLI を使用する必要はありません。これは、インスタンスから実行するスクリプトを記述しているときに便利です。たとえば、インスタンスメタデータからインスタンスのローカル IP アドレスにアクセスして、外部アプリケーションへの接続を管理できます。 インスタンスメタデータはいくつかのカテゴリに分けられます。各インスタンスメタデータカテゴリの説明については、 インスタンスメタデータのカテゴリ を参照してください。 実行中のインスタンス内からインスタンスメタデータのすべてのカテゴリを表示するには、次の URI を使用します。 http://169.254.169.254/latest/meta-data/ IP アドレス 169.254.169.254 は、リンクローカルアドレスで、インスタンスからのみ有効です。詳細については、Wikipedia の リンクローカルアドレス を参照してください。 インスタンスメタデータおよびユーザーデータの取得に使用する HTTP リクエストに対しては課金されません。 コマンドフォーマットは、IMDSv1とIMDSv2のどちらを使うかによって異なります。デフォルトでは、両方のインスタンスメタデータサービスを使用できます。IMDSv2の使用を義務付けるには、 インスタンスメタデータサービスの設定 を参照してください。 次の例のように、cURL などのツールを使用できます。 また、 Instance Metadata Query ツールをダウンロードすることもできます。これにより、インスタンスメタデータサービスバージョン 1 を使用して URI 全体またはカテゴリ名を入力する必要なく、インスタンスメタデータに対してクエリを実行できます。 すべてのインスタンスメタデータがテキスト (HTTP コンテンツタイプ text/plain) として返されます。 特定のメタデータリソースに対するリクエストは、適切な値または 404 – Not Found HTTP

$ ec2-metadata 
ami-id: ami-xxxxxxxxxxxx
ami-launch-index: 0
ami-manifest-path: (unknown)
ancestor-ami-ids: not available
block-device-mapping: 
	 ami: xvda
	 root: /dev/xvda
instance-id: i-xxxxxxxxxxxxx
instance-type: t3.medium
local-hostname: ip-xxxxxxx.ap-northeast-1.compute.internal
local-ipv4: xxxxxxxx
kernel-id: not available
placement: ap-northeast-1a
product-codes: not available
public-hostname: not available
public-ipv4: xxxxxxx
public-keys: 
not available
ramdisk-id: not available
reservation-id: r-xxxxxxxxx
security-groups: role_xxxxx
user-data: not available
$ ec2-metadata --help
ec2-metadata v0.1.2
Use to retrieve EC2 instance metadata from within a running EC2 instance. 
e.g. to retrieve instance id: ec2-metadata -i
		 to retrieve ami id: ec2-metadata -a
		 to get help: ec2-metadata --help
For more information on Amazon EC2 instance meta-data, refer to the documentation at
http://docs.amazonwebservices.com/AWSEC2/2008-05-05/DeveloperGuide/AESDG-chapter-instancedata.html

Usage: ec2-metadata <option>
Options:
--all                     Show all metadata information for this host (also default).
-a/--ami-id               The AMI ID used to launch this instance
-l/--ami-launch-index     The index of this instance in the reservation (per AMI).
-m/--ami-manifest-path    The manifest path of the AMI with which the instance was launched.
-n/--ancestor-ami-ids     The AMI IDs of any instances that were rebundled to create this AMI.
-b/--block-device-mapping Defines native device names to use when exposing virtual devices.
-i/--instance-id          The ID of this instance
-t/--instance-type        The type of instance to launch. For more information, see Instance Types.
-h/--local-hostname       The local hostname of the instance.
-o/--local-ipv4           Public IP address if launched with direct addressing; private IP address if launched with public addressing.
-k/--kernel-id            The ID of the kernel launched with this instance, if applicable.
-z/--availability-zone    The availability zone in which the instance launched. Same as placement
-c/--product-codes        Product codes associated with this instance.
-p/--public-hostname      The public hostname of the instance.
-v/--public-ipv4          NATted public IP Address
-u/--public-keys          Public keys. Only available if supplied at instance launch time
-r/--ramdisk-id           The ID of the RAM disk launched with this instance, if applicable.
-e/--reservation-id       ID of the reservation.
-s/--security-groups      Names of the security groups the instance is launched in. Only available if supplied at instance launch time
-d/--user-data            User-supplied data.Only available if supplied at instance launch time.

便利・・・だけど、ec2-metadataに関する記事が引っかからないのは・・・deprecated???