Route53
CLI によるレコードの更新
# zone id の取得
domain=example.com
zone_id=$(basename $(aws route53 list-hosted-zones-by-name --dns-name ${domain} | jq -r ".HostedZones[] | select(.Config.PrivateZone == false) | select(.Name == \"${domain}.\") | .Id"))
{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "192.168.0.1"
},
{
"Value": "192.168.0.2"
}
]
}
}
]
}
aws route53 change-resource-record-sets --hosted-zone-id $zone_id --change-batch file://request.json
DELETE 時にも結構全部必須とされる
% aws route53 change-resource-record-sets --hosted-zone-id $zone_id --change-batch '
{
"Changes": [
{
"Action": "DELETE",
"ResourceRecordSet": {
"Name": "www.example.com.",
"Type": "CNAME",
"TTL": 600,
"ResourceRecords": [
{
"Value": "xxxx-1671238278.ap-northeast-1.elb.amazonaws.com"
}
]
}
}
]
}
'
レスポンス
{
"ChangeInfo": {
"Id": "/change/C09876892V612NX8953V2",
"Status": "PENDING",
"SubmittedAt": "2021-03-02T02:03:41.597000+00:00"
}
}
get-change で伝搬の状態を確認できる
% aws route53 get-change --id /change/C09876892V612NX8953V2
{
"ChangeInfo": {
"Id": "/change/C09876892V612NX8953V2",
"Status": "PENDING",
"SubmittedAt": "2021-03-02T02:03:41.597000+00:00"
}
}
INSYNC になったら完了
% aws route53 get-change --id /change/C09876892V612NX8953V2
{
"ChangeInfo": {
"Id": "/change/C09876892V612NX8953V2",
"Status": "INSYNC",
"SubmittedAt": "2021-03-02T02:03:41.597000+00:00"
}
}
% aws route53 list-resource-record-sets --hosted-zone-id $zone_id --query "ResourceRecordSets[?Name == 'www.example.com.']"
[
{
"Name": "www.example.com.",
"Type": "CNAME",
"TTL": 600,
"ResourceRecords": [
{
"Value": "xxxx-1671238278.ap-northeast-1.elb.amazonaws.com"
}
]
}
]