Route 53で、ドメインの責任を環境ごとに委任する
DNSはURLをIPへ変換するだけの仕組みではない。どのゾーンがその名前に答える権威を持つかをつなぎ、環境の運用境界を作る。
TL;DR
- Hosted Zoneは特定ドメインのDNSレコードを管理する場所で、NSレコードが権威DNSを示す。
- 親ゾーンに子ゾーンのNSレコードを置くと、サブドメインの問い合わせを別ゾーンへ委任できる。
- prdが親ドメイン、stgがサブドメインを管理すると、検証環境のDNS変更を本番アカウントから分離できる。
01DNSの「登録」と「回答責任」を分けて理解する
ドメインを持つことと、その名前のDNSレコードを管理することは別

ドメインを登録すると名前を利用できるが、アプリの接続先を答えるにはHosted ZoneでDNSレコードを管理する必要がある。DNS設計では、どのゾーンが何に答えるかを追う。
Hosted Zoneを作っただけでは、親側から委任されていないサブドメインは外部から期待通りに解決されない。
- 登録: ドメインの利用権を管理
- Hosted Zone: DNSレコードを管理
- NS: そのゾーンの権威DNSを示す
02親ゾーンから子ゾーンへNSで委任する
stg.example.comの回答責任を、stg用Hosted Zoneへ渡す

stgアカウントでstg.example.comのHosted Zoneを作ると、固有のNSレコードが発行される。そのNS値をprdアカウントの親ゾーンへ登録すると、サブドメインの問い合わせが子ゾーンへ委任される。
子Hosted ZoneのNS値をコピーするだけでは不十分。親ゾーン側に同じNSを登録して初めて委任になる。
- 子ゾーン作成時のNS値を取得する
- 親ゾーンに子ドメイン用NSレコードを作る
- TTLと伝播時間を考慮して確認する
03環境のDNS責任をアカウント境界へ合わせる
stgのレコード更新をstgアカウント内で完結できるようにする

親ドメインの権威管理はprdに残しつつ、stgサブドメインのレコードはstgアカウントで変更できる。この分離により、検証環境の日常運用で本番アカウントへのアクセスを減らせる。
委任確認にはdig NSを使い、表示されたネームサーバーが子ゾーンの値と一致することを確かめる。
- prd: 親ドメインの管理
- stg: サブドメイン配下の管理
- dig NS: 委任先の外部確認
結論
- DNSは名前を解決するだけでなく、回答責任を委任する仕組み。
- 親ゾーンのNSレコードでstg子ゾーンへ委任する。
- DNS運用の責任範囲をアカウント境界と揃える。