はじめに
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の編集
・デフォルトアクションを削除します。
下記図のようにして、更新
をクリックすると、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を設定し、サーバからの応答時間を短くしたい