AWS のほとんどのサービスの冗長化はほとんどDNSに依存しています。それ故に、かなり早い段階から Amazon Route53 というDNSサービスをリリースしています。その中でも特に積極的にRoute53を使う理由は、このAlias機能にあります。
Aliasとは
ほとんどの人にとっては、
apex Zone = トップレベルドメイン = 俗称 www 無しのドメイン
を使うための機能でしょう。地味にこの機能を有している他のクラウドは存在しません、今のところは。。。
やりたいことは、AWSコマンドで設定する
aws cli でRoute53 Hosted-zoneに、AレコードのAliasを変更してみます。ただのAレコード追加変更は誰かがすでに書いてくれてますが、Aliasの場合は誰も書いてないので書きます。
設定ファイルの準備
{ "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "", "AliasTarget": { "DNSName": " ", "HostedZoneId": "<はて?なんの事>", "EvaluateTargetHealth": false }, "Type": "A" } } ] }
気になるのは HostedZoneId
です。この設定を投げるのに、HostedZoneはすでに指定してるじゃないか?と思いますが、ここでのHostedZoneは、AliasTargetで指定しているDNSNameが存在するHostedZoneという意味です。つまり、CloudFrontやELB,S3の場合はAWS自身が管理しているHostedZoneということになります。
コマンド
aws route53 change-resource-record-sets --hosted-zone-id--change-batch file://<上記で作ったファイル>
コマンド側は特に気にすること無しです。
Alias先のHostedZoneIdの調べ方
一覧表がどっかにあるはず。だけど見当たらず。とりあえずマネジメントコンソールから設定したら下記に出てくるので、これを使うしかない?ELB とかの場合、リージョンごとに違うと思うので、その点は注意、下記はオレゴンのELBです。
まとめ
Aliasレコードを設定するときに、そのAliasレコードが属するHostedZoneを指定する必要があります。マネジメントコンソールはそこら辺の設定をユーザーがいちいち指定しなくていいいようにスポイルしているので、aws cliとかで自動化するときハマる。AWSの仕組みを正確に的確に理解する上では、aws cli や AWS CloudFormation に日頃から触れておくことが極めて重要であると思った。
ちなみに私の好きなAWSサービス第2位はRoute53です。ちなみに1位はS3ですが、私の好きなものの傾向としては「シンプルな方法で確実にできる」です。
元記事はこちらです。
「Route53のAliasレコードを正しく理解する」