さすがに手動で30個のエイリアスレコードをペアで
「確認お願いします!」
「はいOKです」
更新
x 30
というのはなんともエンジニアらしくないので、awscliを使って一気に追加してみました。
■AWS CLI を使用して Route 53 でエイリアスリソースレコードセットを作成する方法を教えてください。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/alias-resource-record-set-route53-cli/
{ "Comment": "Creating Alias resource record sets in Route 53", "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { "Name": "elb.example.com", "Type": "A", "AliasTarget":{ "HostedZoneId": "Z1H1FL5HABSF5", "DNSName": "ALB-xxxxxxxx.us-west-2.elb.amazonaws.com", "EvaluateTargetHealth": false }} }] }
$ aws route53 change-resource-record-sets --hosted-zone-id ZXXXXXXXXXX --change-batch file://sample.json
jsonファイルを作って実行時に指定する感じですな
■準備
- ~/aws/credentials
[adachin-aws] aws_access_key_id = Axxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxx
- 53.json
{ "Comment" : "", "Changes" : [ {"Action":"CREATE","ResourceRecordSet":{"Name":"dev0.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev1.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev2.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev3.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev4.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev5.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev6.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev0-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev1-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev2-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev3-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev4-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev5-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev6-hoge.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev0-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev1-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev2-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev3-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev4-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev5-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev6-fuga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev0-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev1-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev2-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev3-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev4-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev5-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev6-moga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev0-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev1-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev2-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev3-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev4-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev5-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}}, {"Action":"CREATE","ResourceRecordSet":{"Name":"dev6-toga.adachin.jp","Type":"A","AliasTarget":{"HostedZoneId":"xxxxxxxxxxxx","DNSName":"dualstack.rproxy-xxxxxxxx.ap-northeast-1.elb.amazonaws.com","EvaluateTargetHealth":false}}} ] }
Nameだけ変更してもらって、HostedZoneIdはエイリアスホストゾーンIDを指定します。
- Syntaxチェック
$ jq . 53.json エラーでなければOK
■実行
$ aws route53 change-resource-record-sets --hosted-zone-id xxxxxxxx --change-batch file://53.json --profile adachin-aws { "ChangeInfo": { "Id": "/change/xxxxxxxxxxxx", "Status": "PENDING", "SubmittedAt": "2019-05-07xxxxxxxxxxxxxxxx", "Comment": "" } }
–hosted-zone-idはRoute53で対象ドメインのホストゾーンIDを指定しましょう。
■まとめ
実行したときの感動!!!
Terraformより楽でいいですな。
最近Terraform触ってない…(白目)