読者です 読者をやめる 読者になる 読者になる

続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

Route53のAliasレコードを正しく理解する

AWS Route53 Alias

AWSのほとんどのサービスの冗長化はほとんどDNSに依存しています。それ故に、かなり早い段階からRoute53というDNSサービスをリリースしています。その中でも特に積極的にRoute53を使う理由は、このAlias機能にあります。

Aliasとは

ほとんどの人にとっては、

apex Zone = トップレベルドメイン = 俗称 www 無しのドメイン

を使うための機能でしょう。地味にこの機能を有している他のクラウドは存在しません、今のところは。。。

やりたいことは、AWSコマンドで設定する

aws cliでRoute53 Hosted-zoneに、AレコードのAliasを変更してみます。ただのAレコード追加変更は誰かがすでに書いてくれてますが、Aliasの場合は誰も書いてないので書きます。

設定ファイルの準備

{
    "Changes": [
        {
            "Action": "UPSERT",
            "ResourceRecordSet": {
                "Name": "<FQDN最後ドット付き>",
                "AliasTarget": {
                  "DNSName": "<CloudFrontやELBのエンドポイントなど>",
                  "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 <your hz id> \
--change-batch file://<上記で作ったファイル>

コマンド側は特に気にすること無しです。

Alias先のHostedZoneIdの調べ方

一覧表がどっかにあるはず。だけど見当たらず。とりあえずマネジメントコンソールから設定したら下記に出てくるので、これを使うしかない?ELBとかの場合、リージョンごとに違うと思うので、その点は注意、下記はオレゴンのELBです。

f:id:iga-ninja:20150214154410p:plain

まとめ

Aliasレコードを設定するときに、そのAliasレコードが属するHostedZoneを指定する必要があります。マネジメントコンソールはそこら辺の設定をユーザーがいちいち指定しなくていいいようにスポイルしているので、aws cliとかで自動化するときハマる。AWSの仕組みを正確に的確に理解する上では、aws cli や CloudFormation に日頃から触れておくことが極めて重要であると思った。

ちなみに私の好きなAWSサービス第2位はRoute53です。ちなみに1位はS3ですが、私の好きなものの傾向としては「シンプルな方法で確実にできる」です。