Route 53・CloudFront
AWSのDNSサービスであるRoute 53と、CDNサービスであるCloudFrontを理解し、IDサービスのドメイン管理・コンテンツ配信・HTTPS化を学びます。
所要時間
約40分
学べること
- DNSの基礎と名前解決の仕組み
- Route 53のホストゾーンとレコードタイプ
- ルーティングポリシーの使い分け
- ヘルスチェックとDNSフェイルオーバー
- CloudFrontによるCDN配信の仕組み
- ACMによるSSL/TLS証明書の管理
- IDサービスにおけるDNS・CDN設計
前提知識
- ネットワーキング基礎の知識
- AWS基礎の知識
- ロードバランシングの基本概念
目次
- DNS基礎の復習
- Route 53概要
- ルーティングポリシー
- ヘルスチェックとDNSフェイルオーバー
- Route 53 + ALB の構成パターン
- CloudFront概要
- CloudFrontディストリビューション
- CloudFront + S3 / ALB のオリジン構成
- ACM(AWS Certificate Manager)
- IDサービスでの活用
DNS基礎の復習
名前解決の流れ
ブラウザがドメイン名をIPアドレスに変換するまでの過程を確認します。
ユーザーが https://auth.example.com にアクセス
┌──────────┐ 1. auth.example.com は? ┌──────────────────┐
│ │ ─────────────────────────────→ │ リゾルバ │
│ ブラウザ │ │ (キャッシュDNS) │
│ │ ←───────────────────────────── │ │
└──────────┘ 8. 203.0.113.10 です └───────┬──────────┘
│
2. ルートDNSに問い合わせ │
┌──────────────────────────────────────┘
│
▼
┌──────────────┐
│ ルートDNS │ 3. .com のDNSは ns1.tld.com です
│ サーバー │─────────────────────────────┐
└──────────────┘ │
▼
┌──────────────┐
5. example.com のDNSは │ TLD DNS │
ns-xxx.awsdns.com です ←────────── │ (.com担当) │
│ └──────────────┘
▼
┌──────────────────┐
│ 権威DNS │ 7. auth.example.com は
│ (Route 53) │ 203.0.113.10 です
│ ns-xxx.awsdns.com│
└──────────────────┘
DNSの主要概念
| 用語 | 説明 |
|---|---|
| ドメイン名 | 人が読める名前(例: auth.example.com) |
| ゾーン | ドメインの管理単位 |
| レコード | ドメイン名とIPアドレス等の対応関係 |
| TTL | キャッシュの有効期間(秒) |
| 権威DNSサーバー | そのゾーンの正式な回答を持つサーバー |
Route 53概要
Route 53は、AWSが提供するスケーラブルな権威DNSサービスです。名前の由来はDNSが使用するポート番号53です。
ホストゾーン
ホストゾーンは、ドメインのDNSレコードを管理するコンテナです。
┌─────────────────── ──────────────────────────────────────────┐
│ Route 53 ホストゾーン │
├───────────────────────────┬─────────────────────────────────┤
│ パブリックホストゾーン │ プライベートホストゾーン │
│ │ │
│ インターネットからの │ VPC内部からのDNS │
│ DNS問い合わせに応答 │ 問い合わせに応答 │
│ │ │
│ 例: │ 例: │
│ auth.example.com │ db.internal.example.com │
│ → ALBのIPアドレス │ → RDSのプライベートIP │
│ │ │
│ api.example.com │ cache.internal.example.com │
│ → CloudFrontドメイン │ → ElastiCacheエンドポイント │
│ │ │
│ ┌───────┐ │ ┌─────┐ │
│ │インター│ 問い合わせ │ │ VPC │ 問い合わせ │
│ │ネット │───→ │ │内部 │───→ │
│ └───────┘ │ └─────┘ │
└───────────────────────────┴─────────────────────────────────┘
レコードタイプ
| レコードタイプ | 用途 | 例 |
|---|---|---|
| A | ドメイン → IPv4アドレス | auth.example.com → 203.0.113.10 |
| AAAA | ドメイン → IPv6アドレス | auth.example.com → 2001:db8::1 |
| CNAME | ドメイン → 別のドメイン名 | www.example.com → example.com |
| ALIAS | ドメイン → AWSリソース | example.com → d111.cloudfront.net |
| MX | メールサーバー指定 | example.com → mail.example.com |
| TXT | テキスト情報 | ドメイン所有権の検証等 |
| NS | ネームサーバー指定 | ゾーンの委任先 |
| SOA | ゾーンの管理情報 | シリアル番号、TTL等 |
ALIASレコードとCNAMEの違い
CNAMEレコード:
・Zone Apexには使用不可(example.com に CNAME は設定できない)
・DNS問い合わせが2回必要(CNAME解決 → A解決)
・Route 53の課金対象
ALIASレコード(Route 53独自):
・Zone Apexにも使用可能(example.com → ALB が設定可能)
・Route 53が内部でIPアドレスを直接返す
・AWSリソース宛は無料
・対象: ALB、CloudFront、S3、API Gateway 等
ルーティングポリシー
Route 53は、DNSクエリに対する応答方法を制御する複数のルーティングポリシーを提供します。
ポリシー比較表
| ポリシー | 用途 | ユースケース |
|---|---|---|
| シンプル | 単一リソースへのルーティング | 開発環境、単一サーバー |
| 加重(Weighted) | トラフィックの割合制御 | カナリアデプロイ、A/Bテスト |
| レイテンシー | 最低レイテンシーのリージョンへ | マルチリージョン構成 |
| フェイルオーバー | プライマリ/セカンダリ切り替え | DR構成、高可用性 |
| 地理的位置 | クライアントの所在地ベース | リージョン別コンテンツ |
| 地理的近接性 | 最も近いリソースへ | トラフィックの地理的分散 |
| 複数値回答 | 複数IPをランダムに返す | 簡易的な負荷分散 |
ルーティングポリシーの動作
シンプルルーティング:
auth.example.com → 1つのALB
加重ルーティング(カナリアデプロイ):
auth.example.com ──┬── 90% → ALB(現行バージョン)
└── 10% → ALB(新バージョン)
レイテンシーベースルーティング:
auth.example.com ──┬── 東京のユーザー → ap-northeast-1 の ALB
├── 米国のユーザー → us-east-1 の ALB
└── 欧州のユーザー → eu-west-1 の ALB
フェイルオーバールーティング:
auth.example.com ──┬── Primary → ap-northeast-1 の ALB(正常時)
└── Secondary → us-west-2 の ALB(障害時)
ヘルスチェックとDNSフェイルオーバー
ヘルスチェックの種類
┌─────────────────────────────────────────────────────────────┐
│ Route 53 ヘルスチェック │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. エンドポイントヘルスチェック │
│ ┌──────────┐ HTTP/HTTPS/TCP ┌──────────┐ │
│ │ Route 53 │ ──────────────────→ │ エンド │ │
│ │ ヘルス │ ステータス確認 │ ポイント │ │
│ │ チェッカー│ ←────────────────── │ (ALB等) │ │
│ └──────────┘ 200 OK/失敗 └──────────┘ │
│ │
│ 2. 計算済みヘルスチェック │
│ 複数のヘルスチェック結果を組み合わせて判定 │
│ 例: 3つ中2つ以上が正常 → 正常と判定 │
│ │
│ 3. CloudWatch アラーム連携 │
│ CloudWatch アラームの状態をヘルスチェックとして使用 │
│ │
└─────────────────────────────────────────────────────────────┘
フェイルオーバー構成例
Route 53
フェイルオーバー
│
┌──────────────┴──────────────┐
│ │
┌────┴────┐ ┌─────┴────┐
│ Primary │ │Secondary │
│ (東京) │ │ (大阪) │
└────┬────┘ └─────┬────┘
│ │
┌────┴────┐ ┌─────┴────┐
│ ALB │ ヘルスチェック │ ALB │
│ │←────失敗時──────→│ │
└────┬────┘ 自動切替 └─────┬────┘
│ │
┌────┴────┐ ┌─────┴────┐
│ ECS │ │ ECS │
│ Cluster│ │ Cluster │
└─────────┘ └──────────┘
正常時: auth.example.com → 東京リージョンのALB
障害時: auth.example.com → 大阪リージョンのALB(自動切替)
Route 53 + ALB の構成パターン
基本構成
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───── ─────┐
│ ユーザー │ ──→ │ Route 53 │ ──→ │ ALB │ ──→ │ ECS │
│ │ │ (DNS) │ │ (HTTPS) │ │ (idp) │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
設定例:
ホストゾーン: example.com
ALIASレコード: auth.example.com → ALBのDNS名