はじめに
実際にALBをオリジンとするCloudFrontを作成してWordpressを配信する環境を構築しました。オリジン設定やRoute53のレコードで結構ハマってしまいました。
システム構成
使用するAWSサービス
- CloudFront: ALBをオリジンとし、コンテンツのキャッシュと最適化
- ALB: EC2の負荷分散
- EC2 (WordPress Webサーバー): マルチAZ構成で配置
- RDS: マルチAZで配置
- Route 53: DNS管理、CloudFrontとの統合
構成図
前提
- WordPress環境の構築は完了していること
- 独自ドメインをRoute53に登録済みであること
- ACMでCloudFront、ALBのそれぞれでSSL証明書を発行していること
- Route53のホストゾーンが作成済みで、ALBのAレコードが設定されているこ
手順
ALB の設定確認
- ALB が HTTPS (443) をリスニング しているか(セキュリティグループのインバウンドも確認)
- 証明書 (ACM) が適用 されているか
- ターゲットグループが EC2 (WordPress) と関連付けられているか
- ヘルスチェックが成功しているか
Route53のDNS設定
独自ドメインで設定したホストゾーンにて以下のレコードを作成
- Aレコード(エイリアス)を作成
- レコード名 → 独自ドメイン
- エイリアスターゲット → ALBのドメイン名を選択
CloudFront ディストリビューション作成
- ビヘイビア
- ビューワープロトコルポリシー→Redirect HTTP to HTTPS
- 許可された HTTP メソッド→GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
- キャッシュポリシー→CatchingDisabled
- オリジンリクエストポリシー→AllViewerExceptHostHeader
確認
curlの結果
X-Cache: Miss from cloudfront(キャッシュではなくオリジンの応答)
Via: 1.1 xxxxxxxxxxxxxxxxxx.cloudfront.net (CloudFront)
最後に
オリジンドメインの設定やRoute53のレコード、またホストゾーン作成時に自動で生成されるネームサーバーがドメイン登録されているネームサーバーと一致していなかったりなどが注意点として挙げられると思います。それを踏まえて次回は作成の際の注意点をまとめます。