ハンズオン(簡易版): EC2基礎 (インスタンス)

4.2. EC2インスタンスメタデータの取得

手順の目的 [why]

EC2インスタンスからメタデータを取得します。

設定値の指定

設定値の指定

(特になし)

設定値の確認

(特になし)

処理の実行

IMDSv2で利用するトークンを取得して、ヘッダー形式で変数に格納します。

変数の設定:

EC2_METADATA_SECOND='900'

コマンド:

EC2_METADATA_TOKEN=$( \
  curl -s \
    -X PUT "http://169.254.169.254/latest/api/token" \
    -H "X-aws-ec2-metadata-token-ttl-seconds: ${EC2_METADATA_SECOND}" \
) \
  && echo ${EC2_METADATA_TOKEN}

結果(例):

AQAAAJpDbguWKZjFZdh6vShmtdpW4qDe2jrPtodG9VxCC0yhNz-ezQ==

変数の設定:

EC2_METADATA_HEADER="X-aws-ec2-metadata-token: ${EC2_METADATA_TOKEN}" \
  && echo ${EC2_METADATA_HEADER}

結果(例):

X-aws-ec2-metadata-token: AQAAAJpDbguWKZjFZdh6vShmtdpW4qDe2jrPtodG9VxCC0yhNz-ezQ==

EC2インスタンスのメタ情報一覧(トップ)を取得します。

変数の設定:

curl -H "${EC2_METADATA_HEADER}" \
  http://169.254.169.254/latest/meta-data/

結果:

ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
reservation-id
security-groups

EC2インスタンスのインスタンスタイプを取得します。

変数の設定:

EC2_INSTANCE_TYPE=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/instance-type \
) \
  && echo ${EC2_INSTANCE_TYPE}

結果:

t2.micro

EC2インスタンスのインスタンスIDを取得します。

変数の設定:

EC2_INSTANCE_ID=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/instance-id \
) \
  && echo ${EC2_INSTANCE_ID}

結果:

i-xxxxxxxxxxxxxxxxx

EC2インスタンスを起動したAMIを取得します。

変数の設定:

EC2_IMAGE_ID=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/ami-id \
) \
  && echo ${EC2_IMAGE_ID}

結果:

ami-09ebacdc178ae23b7

EC2インスタンスのグローバルIPアドレスを取得します。

変数の設定:

EC2_IP_PUBLIC=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/public-ipv4 \
) \
  && echo ${EC2_IP_PUBLIC}

結果:

xxx.xxx.xxx.xxx

EC2インスタンスの属しているAZを取得します。

変数の設定:

EC2_AZ_NAME=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/placement/availability-zone \
) \
  && echo ${EC2_AZ_NAME}

結果(例):

ap-northeast-1a

EC2インスタンスの属しているリージョンを取得します。

変数の設定:

EC2_REGION_NAME=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/placement/availability-zone \
  | sed -e 's/[a-z]*$//' \
) \
  && echo ${EC2_REGION_NAME}

結果(例):

ap-northeast-1

完了確認

「EC2インスタンスのメタ情報を取得できている。」ことを確認します。

注釈

主処理で取得できていればOKです

手順の完了