はじめに
Fargate+WordPress構築 WordPressが表示されるまで ①の続きです。
最終的な構築図
流れ
- ALBを設置
- Route53を作成
- Dockerfileを作成
- ECRを作成
- クラスターを作成
- タスク定義を作成
- サービスの作成
↓ここから - ACM証明書を作成
- ELBに証明書を設置
- 証明書を設置したCloudFrontを作成
- Route53でCloudFrontへのルーティング設定
↑ここまで - S3を作成し、Wordpressのプラグインで連携
- CloudFrontで画像等のキャッシュ設定
- キャッシュの確認
ACM証明書を作成
証明書は、2つ作成します。
・CloudFront用ACM証明書 (バージニアリージョン、ドメイン名:xxxx.work)
・ELB用ACM証明書 (ELBと同じリージョンで取得する、ドメイン名:xxxx.work)
CloudFront用ACM証明書を作成
バージニアリージョンでACMを作成します。
ACMコンソールから証明書のプロビジョニングの今すぐ始めるをクリックする。
パブリック証明書のリクエストで、証明書のリクエストする。
ドメイン名:xxxx.workと*.xxxx.workを入力して、次へをクリックする
・検証方法の選択:DNS の検証
・タグの追加はしません
確定とリクエストをクリックする

検証完了になるのを待ちます。
ELB用ACM証明書
ELB用のACM証明書を作成します。
先程のCloudFront用の証明書と作成方法は、以下の1点を除き同じですので省略します。
・リージョンは、ELBが作成されたリージョン
・ドメイン名:xxxx.workと*.xxxx.work
同様に検証完了になるのを待ちます。
ELBに証明書を設置
ELBのコンソール画面のリスナータブのリスナーの追加をクリックする。
以下の設定でリスナーの追加する。
・プロトコル:ポートHTTPS:443
・デフォルトアクション:転送先:[elbのターゲットグループ]
・セキュリティーポリシー:ELBSecurityPolicy-2016-08
・デフォルトの SSL 証明書:`ACMから(推奨):[先程作成したACM証明書]
CloudFrontからELBへの通信は、HTTPではなくHTTPSにしたいので、HTTPでのリクエストをHTTPSにリダイレクトします。
リスナーHTTPの編集
・デフォルトアクションを削除します。
・アクション追加:
・`リダイレクト先`
・`HTTPS:443`
・`デフォルトホスト、パス、クエリを使用`
・`301-完全に移動されました。`
下記図のようにして、更新をクリックすると、HTTPのリクエストをHTTPS化してリダイレクトします。

URL:http://xxxx.work/wp-admin/install.phpにアクセスすると、
URL:https://xxxx.work/wp-admin/install.phpにリダイレクトして、webページが表示されます!
証明書を設置したCloudFrontを作成
CloudFrontのコンソールの画面からCreate Distributionをクリックします。
オリジン
・オリジンドメイン:[作成したALBを選択]
・プロトコル:HTTPSのみ
・最小オリジン SSL プロトコル情報:TLSv1.2
・オリジンパス:なし
デフォルトのキャッシュビヘイビア
・ビューワープロトコルポリシー:Redirect HTTP to HTTPS
・許可されたHTTPメソッド:GET,HEAD
キャッシュキーとオリジンリクエスト
・Cache policy and origin request policy (recommended):
キャッシュポリシー:CachingDisabled
オリジンリクエストポリシー:AllViewer
CachingDisabledにする必要な理由は、こちらが分かりやすいです。
CloudFront + WordPress 構成の必須設定
設定
・代替ドメイン名 (CNAME) - オプション:xxxx.work
・カスタム SSL 証明書 - オプション:[先程作成したacm証明書]
ディストリビューションを作成をクリックします。
今の設定ですと、CloudFrontでキャッシュにされないため、CloudFrontのキャッシュによる高速配信ができていない状態です。
キャッシュする仕組みは、次回作成します。
Route53でCloudFrontへのルーティング設定
前回、xxxx.workのAレコードは、albにルーティングするように設定していました。
xxxx.workのAレコードをcloudfrontにルーティングするよう修正します。
・レコード名:なし
・レコードタイプ:A
・ルーティングポリシー:シンプルルーティング
・値/トラフィックのルーティング先:CloudFront ディストリビューションへのエイリアス
バージニア
[先程作成したCloudFront]
シンプルなレコードを定義をクリックします。
URL:https://xxxx.work/wp-admin/install.phpにアクセスすると、webページが表示されます!
次回
ただし、今のままですと画像を保存しても、コンテナが停止するとなくなってしまいます。
WordPressのプラグインであるWP Offload Media Liteを使用し、S3に画像を保存することで、コンテナが停止しても画像がひょうじされるようになります。また、CloudFrontで画像をキャッシュする仕組みを次回つくります。
参考
・CloudFront + WordPress 構成の必須設定
・ALBにCloudfrontからしかアクセスさせない制限方法
・AWSのCloudFrontを設定し、サーバからの応答時間を短くしたい



