ブログ投稿第3号は、ちょっとした設定変更を。
AWS Lightsailでブログを作ってみたで書いた通り、Lightsailでドメインを登録しつつDNSレコードの設定をした…のは良いんですが、この場合DNSレコード辺りの設定はLightsailにて管理されることになります。
ただ、LightsailでDNSを管理すると…「ブログ以外のサブドメインを追加したい」とか「ACM経由で証明書を発行したい」とかちょっと複雑なことをしようとすると難しい。気がしまして。。。
(出来ないことはない気もしますが、過剰に複雑になりそうというか。ごちゃごちゃしそうというか。)
ということで、Route53にドメイン管理を移管してみることにしました。
(まあなんか不都合あったら戻すってことで。。。)
Route53からLightsailに移管するのは色々ブログとか情報があったものの、逆は意外と無かったので
Gemini君に相談しながら実施したのでちょっと正確性には欠けるかもしれません。。。
DNSの仕組み
作業をしようとしてちょっと理解が怪しいことに気づいたのでちゃんと整理。

解説
1.ユーザーのPC(スタブリゾルバ): ブラウザに example.com のようなドメイン名を入力する。PCはまず自身のキャッシュを確認し、無ければ「キャッシュDNSサーバー」に問い合わせを送信する。
キャッシュDNSサーバー(フルサービスリゾルバ): ユーザーからの問い合わせを受け取り、ドメイン名に対応するIPアドレスを探す「反復問い合わせ」を開始する。
2&3.ルートDNSサーバー: キャッシュDNSサーバーは、まずルートDNSサーバーに問い合わせる。ルートサーバーはすべてのドメインの頂点に位置し、トップレベルドメイン( .com など)を管理するTLDサーバーの情報を返す。
4&5.TLD DNSサーバー(.com): キャッシュDNSサーバーは、次にTLDサーバーに問い合わせる。TLDサーバーは、その下の example.com の権威DNSサーバーの情報を返す。
6&7.権威DNSサーバー(example.com): キャッシュDNSサーバーは、最後に権威DNSサーバーに問い合わせる。権威サーバーはexample.comの正確なIPアドレス(例: 192.0.2.1)を持っており、それを返す。
8.DNS回答: キャッシュDNSサーバーは取得したIPアドレスをユーザーのPCに返し、同時に自身のキャッシュに保存する。ユーザーのPCはこのIPアドレスを使って対象のWebサーバーに接続する。
今回やりたいこと
イメージはこんな感じ。

ドメインを登録したレジストラはRoute53であり、外部から問い合わせが来た際に返答される
権威DNSサーバーの情報はRoute53上で「登録済みドメイン」に紐付けられる形で指定されている。
この権威DNSサーバーの情報がLightsail管轄のネームサーバーを指すため、
Route53のホストゾーンを参照したいなら、「登録済みドメイン」に紐付くネームサーバーを
Route53のホストゾーンに記載されたNSレコードに対応するものに変更する必要があることに留意する。
(ホストゾーン=DNSレコードだけ作ればOK、って話じゃないよってことで。)
メリット・デメリット
| 項目 | メリット (Route53にすると良いこと) | デメリット (懸念点・注意点) |
|---|---|---|
| 機能・拡張性 | ACMなどの(Lightsailでは連携出来ない?)他AWSサービスとの連携が出来るようになる (サブ)ドメインを使った他のサービスを提供する時に(Lightsailで構築していないサービスのドメインを)Lightsailで管理するややこしさが無くなる | Lightsailで完結していた管理が、AWSマネコン(Route53)に分散する |
| コスト | なし | 追加コストが発生する (Lightsailは基本無料。Route53はホストゾーン1つにつき0.5ドル/月+クエリ量による従量課金。) |
まあ凄くメリットがある、ってことも無さそう。
ブログにしかドメイン使わないよ、って人はそのままLightsailでドメイン管理する方針で良いかと。
だけどRedherringの場合は0.5+αドル/月のコストをかける価値はあるはず。たぶん。きっと。maybe…
作業手順
1.Route53でホストゾーンを作成する
ダッシュボードから「ホストゾーンの作成」をクリック

「ドメイン名」に(Lightsailで管理していて移行したい)ドメイン名を入力し、
「タイプ」がパブリックホストゾーンになっていることを確認の上、「ホストゾーンの作成」をクリック

2.作成したホストゾーンのNSレコードが作成されていることを確認する
(値の記録は特段不要。自動でコピペできるので。)

3.Lightsailの「ドメインとDNS」にあるDNSゾーンに記載されているDNSレコード(A/AAAAレコード)を
Route53に複製しておく


4.記録しておいたNSレコード情報をもとに、Route53の「登録済みドメイン」から当該ドメインに紐付く
ネームサーバー情報を更新する
右上「アクション」から「ネームサーバーの編集」をクリックする

「ネームサーバーの編集」画面上部にある「Copy name servers from a hosted zone」タブを開いて
ホストゾーンIDを選択してから「Copy name servers」をクリックすると、ネームサーバー欄に
自動的に反映してくれるのでそれをそのまま保存する

5.更新が反映されるまで待機。最大24時間くらいかかるらしいので気長に。
ちなみにRedherringの場合は1分もかからないうちに終わってましたw
更新が終わるとDomain Update Successfulってメールが届くのでそれを反映完了の目安にすると良き。
6.LightsailでDNSゾーンの削除を実施する
(同一ドメインがアカウント内に存在する旨のエラーが出てるので正常にRoute53を
設定できてると推測。。。)


※ ドメイン情報についてはLightsailとRoute53で同一の物を指すようで、
Lightsailダッシュボードから削除できるように見えなかった
(詳細な操作はRoute53でやるように誘導される)ので、特に何もしないことにする
7.正常性確認
キャッシュクリアをしたうえで、シークレットウィンドウなどを使ってドメイン(ブログ)に
アクセスし、問題なさそうだったので切り替え作業完了とする
ついでにDNSSECを有効化…したいな
やれやれ、これで切り替え終わりかぁ…ってRoute53を眺めてたら、
登録済みドメイン欄にDNSSECの項目があることに気づく。

DNSSECってなんだっけ、って話ですが。
支援士の資格を取ったときに、DNSの応答に電子署名を付けて改ざん・偽造防止をするような仕組み、
とかなんとか聞いたような。
セキュリティ的にやっておいた方が良さげなので導入しよう!と思ったものの、
この投稿に追記すると長くなってしまいそうなので、それは次回に。
ということで今回はここまで。

