AWS CLI で Route53のレコードを操作する
ホストの追加や、切り替えをシステムから自動化したい場合などで使える。
参考
change-resource-record-sets — AWS CLI 1.2.0 documentation
POST ChangeResourceRecordSets - Amazon Route 53
ゾーン一覧の取得
$ aws route53 list-hosted-zones { "HostedZones": [ { "ResourceRecordSetCount": 11, "CallerReference": "C1D3F932-D850-1792-AE9E-YYYYYYYYYYYY", "Config": { "Comment": "example.com" }, "Id": "/hostedzone/ABCDXYZ", "Name": "example.com." }, { "ResourceRecordSetCount": 6, "CallerReference": "31E1727B-8557-540E-82FE-XXXXXXXXXXXX", "Config": { "Comment": "example.net" }, "Id": "/hostedzone/ZYXDCBA", "Name": "example.net." } ], "IsTruncated": false, "MaxItems": "100" }
こんな感じ
次に、ゾーンのレコードセット一覧を取得してみる
$ aws route53 list-resource-record-sets --hosted-zone-id ABCDXYZ { "IsTruncated": false, "ResourceRecordSets": [ { "ResourceRecords": [ { "Value": "ns-xxxx.awsdns-62.co.uk." }, ...... ], "Type": "NS", "Name": "example.com.", "TTL": 172800 }, { "ResourceRecords": [ { "Value": "ns-XXXX.awsdns-62.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400" } ], "Type": "SOA", "Name": "example.com.", "TTL": 900 }, { "ResourceRecords": [ { "Value": "192.0.2.33" }, { "Value": "198.51.100.23" }, { "Value": "203.0.113.3" } ], "Type": "A", "Name": "fuga.example.com.", "TTL": 300 }, ....... ], "MaxItems": "100" }
次に、新しいレコードセットを追加する
まず、jsonファイルを用意する。この例はexample.com ゾーンに、fuga.example.net を、CNAMEとしてmefu.example.com に登録する。つまり
mefu 60 IN CNAME fuga.example.net.
のイメージ。
$ cat /home/ec2-user/create-cname.json { "Comment": "create CNAME record", "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "mefu.example.com.", "Type": "CNAME", "TTL": 60, "ResourceRecords": [ { "Value": "fuga.example.net." } ] } } ] } $ aws route53 change-resource-record-sets --hosted-zone-id ABCDXYZ --change-batch file:////home/ec2-user/create-cname.json
最後に、レコードセットを更新してみる。先ほどのCNAME mefu.example.com の内容を fuga.example.net. から、 dabo.example.net. に変更する。つまり
mefu 60 IN CNAME fuga.example.net.
を
mefu 60 IN CNAME dabo.example.net.
にするイメージ。Actionとしては、DELETEとCREATEをバッチで投げることになる。
$ cat /home/ec2-user/update-cname.json { "Comment": "create CNAME record", "Changes": [ { "Action": "DELETE", "ResourceRecordSet": { "Name": "mefu.example.com.", "Type": "CNAME", "TTL": 60, "ResourceRecords": [ { "Value": "fuga.example.net." } ] } }, { "Action": "CREATE", "ResourceRecordSet": { "Name": "mefu.example.com.", "Type": "CNAME", "TTL": 60, "ResourceRecords": [ { "Value": "dabo.example.net." } ] } } ] } $ aws route53 change-resource-record-sets --hosted-zone-id ABCDXYZ --change-batch file:////home/ec2-user/update-cname.json