Edited at

Route53レコードの変更手順メモ

Route53のレコードの変更手順メモ


確認

対象のzoneが存在するか確認する

CNAMEのエンドポイントを書き換えるつもりで記述


command

aws route53 list-hosted-zones \

--query "HostedZones[].{zoneId: Id, hostedZoneName: Name}"

変更対象のレコードが存在するか確認する


変数

ZONE_ID=""  # 上記で確認したIDを使用する



変数

RECORD_NAME="" # 対象のレコード名(FQDN)



コマンド

aws route53 list-resource-record-sets \

--hosted-zone-id ${ZONE_ID} \
--query "ResourceRecordSets[?contains(Name,\`${RECORD_NAME}\`)]"

OLD_RECORD=$(aws route53 list-resource-record-sets \
--hosted-zone-id ${ZONE_ID} \
--query "ResourceRecordSets[?contains(Name,\`${RECORD_NAME}\`)].ResourceRecords[].Value" \
--output text)

TYPE=$(aws route53 list-resource-record-sets \
--hosted-zone-id ${ZONE_ID} \
--query "ResourceRecordSets[?contains(Name,\`${RECORD_NAME}\`)].Type" \
--output text)

TTL=$(aws route53 list-resource-record-sets \
--hosted-zone-id ${ZONE_ID} \
--query "ResourceRecordSets[?contains(Name,\`${RECORD_NAME}\`)].TTL" \
--output text)



変更


変数

NEW_RECORD="" # 変更後のレコードの値



JSONの作成

JSON=$(cat << _FIN_

{
"Comment": "",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "
${RECORD_NAME}",
"Type": "
${TYPE}",
"TTL":
${TTL},
"ResourceRecords": [
{
"Value": "
${NEW_RECORD}"
}
]
}
}
]
}
_FIN_)


command

STATUS_ID=$(aws route53 change-resource-record-sets\

--hosted-zone-id ${ZONE_ID} \
--change-batch file://<(echo ${JSON}) \
--query "ChangeInfo.Id" \
--output text) && echo ${STATUS_ID}


確認


command


while true ; do
STATUS=$(aws route53 get-change --id ${STATUS_ID} \
--query "ChangeInfo.Status" \
--output text);
echo ${STATUS}
sleep 10
[ ${STATUS} = "INSYNC" ] && break;
: ;done



command


UPDATED_RECORD=$(aws route53 list-resource-record-sets \
--hosted-zone-id ${ZONE_ID} \
--query "ResourceRecordSets[?contains(Name,\`${RECORD_NAME}\`)].ResourceRecords[].Value" \
--output text)

cat << _FIN_
変更レコード名:
${RECORD_NAME}
変更前レコード値:
${OLD_RECORD}
変更後レコード値:
${UPDATED_RECORD}
_FIN_