Route 53 DNS セットアップ
ドメイン登録、ホストゾーンの設定、AWS Route 53 での DNS レコード設定に関する簡潔なステップバイステップガイド。
Route 53 とは?
Route 53 は AWS の DNS (Domain Name System) サービスです。以下の 3 つの機能を提供します:
-
ドメイン登録 — ドメイン名の購入と管理
-
DNS ルーティング — ドメイン名を IP アドレスに変換
-
ヘルスチェック — リソースの健全性を監視
ステップ 1: ドメインの登録
コンソール
-
Route 53 コンソール → Registered domains → Register domain に進みます
-
目的のドメイン名を検索し、TLD (
.com、.dev、.ioなど) を選択します -
カートに追加 → Continue
-
連絡先情報を入力します (登録者、管理者、技術担当者)
-
Privacy Protection を有効にします (WHOIS から情報を非表示にします — 常に有効にしてください)
-
Auto-renew をオン/オフにします
-
確認 → 利用規約に同意 → Submit
登録後の動作
-
AWS はドメインと同じ名前の ホストゾーン を自動作成します
-
4 つの Name Server (NS) レコードがホストゾーンに割り当てられます
-
ドメイン登録には 最大 3 日 かかります (通常は
.comでは数分です) -
確認メール が届きます — リンクをクリックしないとドメインが中止されます
料金
-
ドメイン料金: TLD により異なります (
.comは約 $13/年、.devは約 $14/年) -
ホストゾーン: $0.50/月
-
DNS クエリ: $0.40 per million queries
-
ドメイン料金は 払い戻し不可 で、登録後は ドメイン名を変更できません
ステップ 2: ホストゾーンについて
ホストゾーン は特定のドメインの DNS レコードのコンテナです。ドメインのすべてのルーティング規則を保持するフォルダと考えてください。
パブリックとプライベートのホストゾーン
| タイプ | 用途 | アクセス可能な場所 |
| パブリック | インターネットからのトラフィックをルーティング | インターネット上のどこからでも |
| プライベート | VPC 内のトラフィックをルーティング | 関連 VPC 内のみ |
自動作成レコード
ホストゾーンが作成されるとき、Route 53 は自動的に以下を追加します:
-
NS レコード — ゾーンに割り当てられた 4 つのネームサーバーをリストします
-
SOA レコード — ゾーンについての管理情報を含みます (authority start)
ヒント: ホストゾーンを削除して再作成する場合、NS レコードは異なります。レジストラで名前サーバーを更新する必要があります。
ステップ 3: 外部レジストラで Route 53 を使用
ドメインを別の場所 (GoDaddy、Namecheap、Google Domains など) で購入した場合:
-
Route 53 で パブリックホストゾーン をドメイン名で作成します
-
ホストゾーンから 4 つの NS レコード をコピーします
-
レジストラの DNS 設定に移動 → 名前サーバーを Route 53 NS レコードに置き換えます
-
伝播を待ちます (最大 48 時間 かかることができます、通常はより速いです)
ステップ 4: DNS レコードタイプ
コアレコードタイプ
| レコード | 動作 | 例の値 |
| A | ドメインを IPv4 アドレスにマップ | 192.0.2.1 |
| AAAA | ドメインを IPv6 アドレスにマップ | 2001:0db8::1 |
| CNAME | ドメインを別のドメイン名にマップ | app.example.com → my-alb.us-east-1.elb.amazonaws.com |
| MX | メールサーバーのルーティング | 10 mail.example.com |
| TXT | テキストデータ (SPF、DKIM、確認) | "v=spf1 include:_spf.google.com ~all" |
| NS | サブドメインを他のネームサーバーに委譲 | ns-123.awsdns-45.com |
| CAA | SSL 証明書を発行できる CA を指定 | 0 issue "amazon.com" |
エイリアスレコード (Route 53 特有)
エイリアスレコードは Route 53 固有の機能です。CNAME のように動作しますが、主な利点があります:
| 機能 | エイリアス | CNAME |
ゾーンの頂点で機能 (example.com) | ✅ はい | ❌ いいえ |
| AWS リソースへのクエリ費用 | 無料 | $0.40/million |
| ターゲット | AWS リソースのみ | 任意のドメイン |
| 応答 | 実際の IP アドレスを返す | 別のドメイン名を返す |
以下を指す場合はエイリアスを使用: ALB、CloudFront、S3 ウェブサイト、API Gateway、ECS、Elastic Beanstalk
以下を指す場合は CNAME を使用: AWS 以外のターゲット (Vercel、Netlify、Heroku など)
重要なルール: ゾーンの頂点 (
example.com) では CNAME を作成できません。代わりにエイリアスレコードを使用してください。
ステップ 5: DNS レコードの作成
コンソール
-
Route 53 → ホストゾーン → ゾーンを選択
-
Create record をクリック
-
ウィザードビューの場合は Quick create に切り替えます
一般的なセットアップ
ドメインを ALB に指す (エイリアス)
Record name: (頂点の場合は空白、またはウェブサイト用に "www" を入力)
Record type: A
Alias: ON
Route traffic to: Alias to Application and Classic Load Balancer
Region: ALB のリージョン
Load balancer: ドロップダウンから選択
サブドメインを EC2 インスタンスに指す (A レコード)
Record name: app
Record type: A
Value: 54.123.45.67
TTL: 300
サブドメインを外部サービスに指す (CNAME)
Record name: blog
Record type: CNAME
Value: my-site.netlify.app
TTL: 300
Google Workspace でメールを設定 (MX)
Record name: (空白)
Record type: MX
Value:
1 ASPMX.L.GOOGLE.COM
5 ALT1.ASPMX.L.GOOGLE.COM
5 ALT2.ASPMX.L.GOOGLE.COM
10 ALT3.ASPMX.L.GOOGLE.COM
10 ALT4.ASPMX.L.GOOGLE.COM
TTL: 3600
SSL 証明書の検証 (CNAME)
ACM (AWS Certificate Manager) を使用する場合:
-
ACM で証明書をリクエスト
-
ACM が CNAME 名と値を提供
-
Route 53 で CNAME レコードを作成 (ACM が自動作成できます)
-
検証を待機 (通常は数分)
ステップ 6: ルーティングポリシー
| ポリシー | 使用例 |
| シンプル | 単一リソース、基本的なルーティング |
| 加重 | リソース間でトラフィックを分割 (例: 70/30 ブルーグリーンデプロイ) |
| フェイルオーバー | ヘルスチェック付きのアクティブ-パッシブセットアップ |
| レイテンシ | 最低レイテンシーリージョンにルーティング |
| 地理的ロケーション | ユーザーの国/大陸に基づくルーティング |
| 地理的近接性 | リソースへの地理的距離に基づくルーティング |
| マルチバリュー回答 | 複数の健全な IP を返す (基本的な負荷分散) |
ステップ 7: ヘルスチェック
ヘルスチェックはエンドポイントを監視し、DNS フェイルオーバーをトリガーできます。
-
Route 53 → ヘルスチェック → ヘルスチェックを作成
-
指定: エンドポイント IP またはドメイン、ポート、パス (例:
/health) -
チェック間隔を設定: 30 秒 (標準) または 10 秒 (高速、費用が増加)
-
失敗しきい値を設定 (デフォルト: 3 連続失敗)
-
ヘルスチェックを DNS レコードにリンク
ヘルスチェックのコストは AWS エンドポイント で $0.50/月、AWS 以外のエンドポイント で $0.75/月 です。
AWS CLI リファレンス
ホストゾーンを作成
aws route53 create-hosted-zone \
--name example.com \
--caller-reference "unique-string-$(date +%s)"
A レコードを作成
aws route53 change-resource-record-sets \
--hosted-zone-id Z0123456789ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{"Value": "54.123.45.67"}]
}
}]
}'
エイリアスレコードを作成 (ALB)
aws route53 change-resource-record-sets \
--hosted-zone-id Z0123456789ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "my-alb-123.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}]
}'
ホストゾーン内のレコードをリストアップ
aws route53 list-resource-record-sets \
--hosted-zone-id Z0123456789ABC
レコードを削除
# CREATE と同じですが Action を "DELETE" に変更
# レコード値は完全に一致する必要があります
一般的なシナリオ
S3 + CloudFront 上の Docusaurus サイト
-
S3 バケットを作成 → 静的ホスティングを有効化
-
CloudFront ディストリビューションを作成 → オリジンを S3 に設定
-
example.comとwww.example.comの ACM 証明書をリクエスト (us-east-1の必須) -
エイリアス A レコード を
example.com→ CloudFront ディストリビューション に作成 -
エイリアス A レコード を
www.example.com→ CloudFront ディストリビューション に作成
www を頂点にリダイレクト (またはその逆)
-
www.example.comという名前の S3 バケットを作成 -
すべてのリクエストを
example.comにリダイレクトするように S3 を設定 -
エイリアス A レコード を
www.example.com→ S3 ウェブサイトエンドポイント に作成
API のサブドメイン
api.example.com → ALB または API Gateway へのエイリアス
TTL (Time to Live)
TTL は DNS リゾルバーがレコードをキャッシュする期間 (秒単位) を指示します。
| TTL | 期間 | 使用例 |
| 60 | 1 分 | 移行または DNS 変更中 |
| 300 | 5 分 | ほとんどのレコードの標準 |
| 3600 | 1 時間 | めったに変更されない安定レコード |
| 86400 | 24 時間 | 非常に安定したレコード (NS、MX) |
ヒント: DNS 変更を行う前に、あらかじめ 1 日前に TTL を 60 秒に下げます。変更が伝播した後、戻します。
注: エイリアスレコードは TTL を持ちません — Route 53 はターゲットリソースのデフォルト TTL を使用します。
トラブルシューティング
DNS が伝播したか確認
# 特定の DNS サーバーから確認
dig example.com @ns-123.awsdns-45.com
# A レコードを確認
dig A example.com
# CNAME を確認
dig CNAME www.example.com
# クイック確認
nslookup example.com
一般的な問題
| 問題 | 修正 |
| ドメインが解決されない | レジストラとホストゾーン間の NS レコードが一致するか確認 |
| SSL 証明書の検証に失敗 | Route 53 に CNAME 検証レコードが存在することを確認 |
| 頂点での CNAME が失敗 | 代わりにエイリアスレコードを使用してください — CNAME はゾーン頂点では使用できません |
| 変更が反映されない | TTL 有効期限を待つか、変更前に TTL を下げます |
| エイリアスターゲットがドロップダウンに表示されない | リソースが同じアカウント内にあることを確認するか、DNS 名を手動で入力 |
費用概要
| リソース | 費用 |
| ドメイン登録 | TLD により $9–$75+/年 |
| ホストゾーン | $0.50/月 (ゾーンごと) |
| 標準 DNS クエリ | $0.40/million |
| AWS リソースへのエイリアスクエリ | 無料 |
| ヘルスチェック (AWS エンドポイント) | $0.50/月 (各) |
| ヘルスチェック (AWS 以外) | $0.75/月 (各) |