Route53でCloudFrontのドメインをエイリアスなAレコードに設定可能になったので変えてみた

最近、CloudFrontの Amazon CloudFrontが独自SSL証明書とルートドメインホスティングをサポート というのがあって、独自ドメインのSSL証明書サポートのほうはさておいて、ルートドメインホスティング対応とは、詰まるところ、Route53を使っていれば、CloudFrontの割り当てられたドメインが返してくるAレコードのIP群と同じIPが返ってくるALIASなAレコードを作れるようになったよ、ということのようです。

とりあえず、cerevo.comのルートドメインはいままでさくらVPSでnginxが動いていて、http://cerevo.comという形でアクセスされた場合は、wwwを前につけたものにrewrite(301でredirect)というのだけを延々と行う形で対処していましたが、これでCloudFrontだけで完結できるようになってスッキリしました。

んで、さらにというところで、無駄に貧乏性な私として見落とせないのが、「Route53はCloudFrontディストリビューションにマッピングされたエイリアスレコードへのクエリに対して課金いたしません。 」という一文。クエリに対する課金なんてたかが知れてるけど、設定すると安くなるんだしやろうということで、CloudFrontで独自ドメインを設定してるドメインをまとめてエイリアスに移行しました。一応、課金されない以外にもメリットはあるような気がして、CNAMEだと独自ドメイン→d123.cloudfront.net→IPという形で変換されのにくらべて、いきなりAレコードになる分、きっと、サーバ的には極めて微妙に速くなったりしないんですかねとか思ったけど、いや、たぶんしないですね、なんでもないです。

CloudFrontは、実際、仕事でかなり使っています。大抵の場合、製品発表後か、テレビ放送後のアクセス集中対策としてというのと、海外からのアクセスも増えてきているのでそこの高速化のためというところで、製品ページやコーポレートページなどの静的ページは基本CloudFront経由での提供としています。その場合、独自ドメインを割り当てて、その上で、CloudFrontのd123.cloudfront.netに対してCNAMEをはって運用しているケースが大半なので、このRoute53の設定を書き換えていきます。

設定はManagement Consoleでポチポチするだけの簡単なもので、現状では、Route53でCNAMEでd123.cloudfront.netが設定されているので、レコードタイプをAレコードに変えた上で、AliasのラジオボタンのYesを選びます。その上で、Alias Targetにフォーカスを当てると、選択肢がプルダウン的に表示されるので、その中から該当のCloudFrontのドメインを選択します。

../../../_images/route53_cloudfront_cname_thumb.jpg

CNAMEで設定している場合の画面(旧来の設定)

../../../_images/route53_cloudfront_alias_list_thumb.jpg

選択肢はこういう感じで表示される(ただし、同一アカウントのものだけなので、違う場合は自分でCloudFrontのドメインを入力します。)

../../../_images/route53_cloudfront_a_thumb.jpg

エイリアスなAレコードを設定した場合の画面(新規の設定)

ちなみに、このときにハマりまして、レコードのタイプをCNAMEのままにして、Alias Targetに選択肢はでないけど、まあ適当に該当のドメイン入れればいいのかなと思って設定したら、設定は可能なんですが、DNSを引くとレコードがなくなったことになってIPが返ってこないという悲しいことが起こります。当然なんですが、確実にAレコードのエイリアスとして設定しましょう。

また、Route53のゾーンを持ってるアカウントとCloudFrontのDistributionを設定しているアカウントが違う場合は、上記の操作でAlias Targetに選択肢は出てきませんが、Alternate Domainとして指定されていれば問題なく設定できるようなので、適当にドメインをCloudFrontの設定画面とかからコピーしてきて、d123.cloudfront.netのドメイン名をそのままAlias Targetに入力することで問題なく設定できるようです。

というわけで、微妙な費用削減のためにエイリアスに変えてみました、の巻。