勉強前イメージ
EC2の情報が入ったやつ?
調査
インスタンスメタデータ とは
EC2のインスタンス内からのみアクセスが可能なインスタンスに関するデータです。
アクセスできるユーザであれば誰でも確認することが出来ます。
アクセスしてみる
EC2インスタンスにログインして以下コマンドでURLにアクセスしてみます。
これを打つと、どんなデータが取得できるかのメタデータ一覧が取得できます。
curl http://169.254.169.254/latest/meta-data/
$ curl http://169.254.169.254/latest/meta-data
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
system
実際にメタデータを取得したのが以下です。
ローカルIPアドレスやインスタンスIDを取得することが出来ます。
$ curl http://169.254.169.254/latest/meta-data/local-ipv4
172.31.XXX.XXX
$ curl http://169.254.169.254/latest/meta-data/instance-id
i-01234XXXXXXXXXXXX
アクセスしてみる (ec2-metadataコマンド編)
ec2-metadata というコマンドからでもアクセスすることが出来ます。
$ 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
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.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.
上記同様ローカルIPアドレスを取ってみます。
$ ec2-metadata -o
local-ipv4: 172.31.XXX.XXX
以下はインスタンスID
$ ec2-metadata -i
instance-id: i-01234XXXXXXXXXXXX
ちなみに、ec2-metadataコマンドはamazon linuxではデフォルトでインストールされていますが
CentOS等で使用する場合は別途パッケージが必要とのことです。
勉強後イメージ
そんなデータ見れるって知らなかった・・・!
自分の情報を元にAPIとか叩くとかするときに使えるかもしれない