Amazon LightsailとAmazon CloudFrontを使ってSSL対応【#np2020】 | mutter
実際運用してみると、CloudFrontに掛かる費用は12ヶ月間の無料枠内に収まっていてしばらくは無料、無料枠がなくなったあとの料金を試算してみても月$1いくかどうかぐらいなので、Route53に掛かる料金を考えてもかなりお得です。これで全ドメインの全サブドメインをSSL化出来ているので。
サブドメイン無しのドメインにCloudFrontを設定してみると
ここまで管理しているサイトをいくつか対応させてきましたが、いずれも「www.exsample.com」のようにサブドメインを持つドメインでした。同じ要領でサブドメインを持たない場合もSSLに対応させようところ、怒られてしまいました。設定したのはニコニコ動画に関する話題を更新しているブログ「1ni.co」。いつも通りに、CloudFrontの設定をして、Route53でCloudFrontをドメインのCNAMEに設定しようとすると……
[RRSet of type CNAME with DNS name 1ni.co. is not permitted at apex in zone 1ni.co.]
解決方法: Aレコード+エイリアスで解決出来ます
Amazon S3のルートドメインでのWebホスティング機能を試してみた – プログラマでありたい
S3 Web Hostingでドメインの設定をする場合は、CNameを利用することにより実現しています。そしてRFC 1034の規定でトップレベルドメイン(ホスト名無しのドメイン)は、Aレコード(IPアドレス指定)である必要があります。というところで、ルートドメインでのS3のWebホストが出来ませんでした。この辺りの事情は、以前調べて書いています。ちなみにELBでも同様なのですが、Amazon独自のエイリアス機能により回避されていました。
記事は6年以上前のもので話題はS3の設定に関するものですが、これがSSLでも有効です。記事内の手順2に従ってSSLを設定したCloudFrontをエイリアスに設定すればOKです。すぐに反映されて、SSLが有効になります。
設定する前になんとなーく「サブドメインなしのドメインにCNAMEって付けられなかったんじゃなかったっけ……」とは思っていたんですが、やってみて実際に出来なかったときは焦りました。でもなんとか回避策が用意されていて良かったです。一安心。