AWS
route53

Route53のAレコードをawscliで更新する

More than 3 years have passed since last update.


IAMポリシーの設定

更新には route53:ChangeResourceRecordSets アクションが必要。

進捗確認もするなら route53:GetChange アクションが必要。

Route53のリソースレベルパーミッションでは、レコード単位の指定はできないのでホステッドゾーンまで指定。

Using IAM to Control Access to Amazon Route 53 Resources

AWS Services That Work with IAM

{

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "route53:ChangeResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/XXXXXXXXXXXXXX"
},
{
"Effect": "Allow",
"Action": "route53:GetChange",
"Resource": "arn:aws:route53:::change/*"
}
]
}


更新リクエスト用のJSONを用意

形式については aws route53 change-resource-record-sets helpAWS CLIのドキュメント を参照。

UPSERT があって便利。


r53.json

{

"Comment" : "",
"Changes" : [
{
"Action" : "UPSERT",
"ResourceRecordSet" : {
"Name" : "my.example.com",
"Type" : "A",
"TTL" : 300,
"ResourceRecords" : [
{
"Value": "0.0.0.0"
},
{
"Value": "0.0.0.0"
}
]
}
}
]
}


更新リクエストを送る


awscli

$ aws route53 change-resource-record-sets --hosted-zone-id XXXXXXXXXXXXXX --change-batch file://r53.json


リクエストが受け付けられると PENDING ステータスになる。

Idは進捗確認に必要なのでメモっておく。


response

{

"ChangeInfo": {
"Status": "PENDING",
"Comment": "comment",
"SubmittedAt": "2015-08-05T00:00:00.000Z",
"Id": "/change/XXXXXXXXXXXXX"
}
}


進捗確認


awscli

$ aws route53 get-change --id /change/XXXXXXXXXXXXX


まだ PENDING だが、この時点で一部更新されている可能性はある。


response

{

"ChangeInfo": {
"Status": "PENDING",
"Comment": "comment",
"SubmittedAt": "2015-08-05T00:00:00.000Z",
"Id": "/change/XXXXXXXXXXXXX"
}
}

INSYNC ステータスになったら完了。

Route53のDNSサーバは全て更新されている。


response

{

"ChangeInfo": {
"Status": "INSYNC",
"Comment": "comment",
"SubmittedAt": "2015-08-05T00:00:00.000Z",
"Id": "/change/XXXXXXXXXXXXX"
}
}