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

日記っぽい何か

インフラ系っぽいエンジニアのメモっぽい何か ドラクエ10の記事はblogs.yahoo.co.jp/j_k54dqxに移転しました

サブドメイン無しでAkamaiの利用ができなかったのでCloudfrontに切り替えた件

お久しぶりです。
DNSとCDNについて割と基本的なところをミスったので備忘録的に。

今回のサマリとしては

という話です。
環境はDNSサーバーがRoute53、CDNがAkamai→Cloudfront サーバーはIDCFクラウドです

サブドメインを切らずにCDNを利用しようとした

CDNに全コンテンツを乗っけるサービスの、リリース時にAkamaiに切り替える際に事件は起こりました。
テストも終わり、さて後はサービスで使用するドメインのAレコードをCNAMEに変更し、Akamaiのエッジに向けるだけや~ポチ~ と変更ボタンを押したところ…

f:id:j_k54:20141222191506p:plain

俺氏「はい???」

RFC 1034の規定でトップレベルドメインにはCNAMEを設定できなかった

ということで調べたらRFC 1034でそれはダメよ、Aレコードをつけてよ ということらしい。
ググリビティを高めるためのエラーメッセージは以下。

RRSet of type CNAME with DNS name hoge.com. is not permitted at apex in zone hoge.com.

万策尽きたー!というわけにも行かずに調べたところ、AWSのエンドポイントであればRoute53のAliasによりトップレベルドメインからもCNAME的な参照が可能らしいということがわかりました。
参考:
Route53+S3 Web Hostingでホスト名無しのドメイン設定が出来るのか? - プログラマになりたい

Route53+CloudfrontのAliasを利用してリリースした

というわけで急遽Cloudfrontのテストを行い、
カスタムオリジンでオリジンをwebサーバに向け、
サービス用ドメインエイリアスリソースレコードセットを作成して、サービスインしました。

エイリアスリソースレコードセットについて詳しくは公式:
Routing Queries to an Amazon CloudFront Distribution (Public Hosted Zones Only) - Amazon Route 53

ふぅどうにかなってよかった

しかしテスト用のサブドメインでCDNの検証してたから気づかなかったよ……。
結構知らないと嵌りそうな罠ではある気がする。