【出典】クラスメソッド:【Route53】EC2 から自身に付与されたパブリックIP を Route53 に設定したい
https://dev.classmethod.jp/articles/route53-record-ip-change-by-aws-cli/
IMDSv1はこれで良いが、IMDSv2が有効だと以下ではパブリックIPv4アドレスが取得不可です
IP_ADDRESS=`curl -s http://169.254.169.254/latest/meta-data/public-ipv4`
IMDSv2でパブリックIPv4アドレスを取得する方法は以下が参考になります
【出典】Amazon公式:インスタンスメタデータの取得
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
Amazon公式情報を参考に修正したシェルスクリプトがこちら
#!/bin/bash
DOMAIN_NAME="example.me"
SUB_NAME="test01"
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
IP_ADDRESS=`curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/public-ipv4`
HOSTED_ZONE_ID="ZONE-IDを入力"
BATCH_JSON='{
"Changes": [
{ "Action": "UPSERT",
"ResourceRecordSet": {
"Name": "'${SUB_NAME}'.'${DOMAIN_NAME}'",
"Type": "A",
"TTL" : 300,
"ResourceRecords": [
{ "Value": "'${IP_ADDRESS}'" }
]
}
}
]
}'
aws route53 change-resource-record-sets --hosted-zone-id ${HOSTED_ZONE_ID} --change-batch "${BATCH_JSON}"
IMDSv2についてよくわかっていなかったが、今回の件でIMDSv1との違いが少し理解できました。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント