AWS LightsailのDNSゾーンじゃなくてRoute 53を使うように切り替えた
なんかいじりたい季節になってきた。
Caution
この記事に書かれていることをすると、Route 53のホストゾーンの料金がかかるようになります。勉強目的でなければお金が無駄なのでマネしないでください。
このブログ (と本家サイト) はAWSのLightsailでホスティングしてます。kiriukun.com
のドメインとIPの紐づけもLightsailのDNSゾーンという機能でやってます。
ところで最近インフラ周りをどうしようか色々考えてて、思い付きで kiriukun.com
のワイルドカード証明書をAWSのACMで作成しました。
ACMでは作成した証明書を検証するためにCNAMEレコードを使います。
kiriukun.com
のDNS設定をしてるのはDNSゾーンなので……
DNSゾーンにCNAMEレコード追加してみました。
無事に検証も行えました。
が、なんか気持ち悪いです。仕事でACMの証明書を検証するときはいつもRoute 53なので、見慣れない感じがします。
実はあまりよくわかってなかったのですが、調べてみるとAWSの以下のドキュメントが見つかりました。
どうやらDNSゾーンと同じ設定をRoute 53でもできるようです。
ここではドメイン名は1つしかありませんが、後学のためにDNSゾーンからRoute 53に移行してみることにしました。
作業内容
ホストゾーン作成
まず、Lightsailインスタンスに振っている固定IPと、LightsailのDNSゾーンに登録してあるAレコードを全てメモします。
そしたらRoute 53の画面でホストゾーンを作成します。ここではドメインは kiriukun.com
です。
「レコードを作成」ボタンを押し、メモしておいたAレコードと同じものを全て登録します。
『レコード名』にはAレコードのサブドメインと同じもの (※ @
は空欄でOK)、『値』にはLightsailインスタンスの固定IPを入力します。
一つずつ全て登録しました。
うちはサブドメインをいくつか登録していたので、Aレコードが5つもあります。デフォルトで登録されていたNSレコードとSOAレコードと合わせて7つのDNSレコードが登録されました。これでホストゾーンのできあがりです。
この時点ではまだ何も切り替わっていません。既存のサーバーに接続できなくなったりもしていないはずです。
ネームサーバー切り替え
さて、この時点で kiriukun.com
の名前解決を行っているDNSサーバーがどこのものであるかを dig
コマンドで確認してみました。
ANSWER SECTIONの ns-139.awsdns-17.com
と ns-721.awsdns-26.net
は既存の kiriukun.com
DNSゾーンのネームサーバーでした。これはLightsailの当該DNSゾーンの画面の下部で確認できます。
このネームサーバーを、今回新たに作成したRoute 53のホストゾーンのものに切り替えていきます。
まず、ホストゾーンにデフォルトで登録されていたNSレコードのルーティング先 (4つ) を全てメモします。これが新しいネームサーバーです。
そしたら、ドメインに紐づけられているネームサーバーの切り替えはドメインの管理サイトで行います。kiriukun.com
はスタードメインで買ったあとどこにも移管していないので、スタードメインの管理サイトに行き、ネームサーバーを変更します。
変更しました。
そしたら5分ほど待って再度 dig
を行ってみます。
ANSWER SECTIONに出てくるネームサーバーがRoute 53のホストゾーンのものに変わっていました。
念のためブラウザからもアクセスしてみて、問題が無いことを確認しました。これでネームサーバーの切り替えは完了です。
DNSゾーン削除
最後にLightsailの画面からDNSゾーンを削除すれば終わりです。
いきなり消すのが怖かったら、問題無いと判断できるまでそのままにしておいてもいいと思います。何か問題があったらネームサーバーをLightsailのDNSゾーンのものに切り替えれば今まで通り動くはずです。
以上。
雑談
このブログが乗ってる環境を構築した当初、Let's Encryptでワイルドカード証明書を作るのが大変だったので (※今どうだかは知らない)、いま全部のサブドメインに対してLet's Encryptで証明書を発行してHTTPS化してるんですよね。
でも今回せっかくACMでワイルドカード証明書作ったから、Lightsailの手前にその証明書を設定したCloudFrontを立ててHTTPS化する方法に切り替えて、Let's Encryptやめようかなとか思ってる。
そのぶんAWSへの依存度が上がっちゃうけど、Let's Encryptだと3か月ごとに証明書の更新があって (cronで自動化はしてるけど) 毎度ドキドキするのも嫌なので。