Closed5

IMDSv2でAmazon Linux 2023インスタンスのプライベートIPを参照する

Junichi HashimotoJunichi Hashimoto

取得したTOKENを使用し、リクエストする。

参照できるメタデータの確認。local-ipv4でとれそう。

TOKEN=`curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 10"` && curl -H "X-aws-ec2-metadata-token:
$TOKEN" 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-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
Junichi HashimotoJunichi Hashimoto

プライベートIPを取得できた。

TOKEN=`curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 10"` && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-ipv4
172.31.29.56
Junichi HashimotoJunichi Hashimoto

再利用できるようにキャプチャする。

TOKEN=`curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 10"`
PRI_IP=`curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-ipv4`
$ echo $PRI_IP
172.31.29.56
Junichi HashimotoJunichi Hashimoto

補足。

IMDSv2はセッション指向のアクセス方式であるため、先にTOKENの取得が必要。

下記の理由から、IMDSv1ではなくIMDSv2を使用する。

  • セキュリティ上の理由からIMDSv2が推奨されている[1]
  • Amzon Linux 2023では、IMDSv1はデフォルトで無効である[2]
脚注
  1. https://aws.amazon.com/jp/blogs/news/amazon-ec2-instance-metadata-service-imdsv2-by-default/ ↩︎

  2. https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html

    Amazon Linux 2023 ではIMDSv1 はデフォルトで無効になっています。

    ↩︎
このスクラップは3日前にクローズされました