WordPress 実行環境で ALB 前に CloudFront を設定する (2/3)

はじめに

こんにちは、missi です。「AWS 環境に WordPress をなるべくお金をかけずに構築していく」のシリーズとして記事を書いています。このシリーズでは、「AWS 上に WordPress を構築するために必要なリソースを最小限に抑え、コストを抑える方法について」お届けしています。今回は「WordPress 実行環境で ALB 前に CloudFront を設定する」をテーマに CloudFront の設定に関して、ACM 証明書の作成からディストリビューションの作成とビヘイビアの設定などをご紹介したいと思います。

CloudFront 設定の流れ

前回「WordPress 実行環境で ALB 前に CloudFront を設置する (1/3)」CloudFront の概要と設定の流れを整理しました。

CloudFront 設定後のイメージ

CloudFront 設置後

今回の設定概要

  • CloudFront
    • ドメイン: example1.jp
    • ACM: example1.jp
      • リージョン: 米国東部 (バージニア北部)
  • オリジン (ALB)
    • ドメイン: alb.example1.jp
    • ACM: *.example1.jp
      • リージョン: アジアパシフィック (東京)

CloudFront 設定の流れ

  1. AWS Certificate Manager (ACM) 証明書を作成する。
  2. WordPress 用のキャッシュポリシーを作成する。
  3. WordPress 用のオリジンリクエストポリシーを作成する。
  4. ディストリビューションを作成する
  5. ディストリビューションのビヘイビアを設定する。
  6. Route 53 で、ALB 用のレコードを追加する。
  7. (バーチャルホスト環境の場合)バーチャルホストの設定を編集する。
  8. Route 53 で、既存レコードのエイリアスを CloudFront に変更する。
  9. (任意)SecurityGroup のインバウンドを CloundFront に制限する。

今回は 1. の証明書作成から、 5. ビヘイビアの設定までの手順をまとめていこうと思います。

CloudFront を設定する

AWS Certificate Manager (ACM) 証明書の作成

まず CloudFront 用の AWS Certificate Manager (ACM) を作成します。CloudFront で利用する ACM は、米国東部 (バージニア北部) us-east-1 リージョンで作成する必要があります。

  1. AWS Certificate Manager (ACM) コンソールを表示します。
  2. ナビゲーションバーでリージョン [米国東部 (バージニア北部)] を選択します。
  3. ナビゲーションペイン [証明書をリクエスト] を選択します。
  4. 証明書のタイプで [パブリック証明書] を選択し、[次へ] を選択します。
ACM 証明書をリクエスト
  1. 「パブリック証明書をリクエスト」の画面で以下を設定します。
  • ドメイン名:example1.jp (適宜変更)
    Route 53 で登録した、証明書を関連付けたいドメイン名を入力します。
    サブドメインを登録したい場合は、[この証明書に別の名前を追加] を選択してサブドメイン *.example1.jp を追加します。
  • 検証方法:DNS 検証
  • キーアルゴリズム:RSA 2048
  1. 入力内容を確認し [リクエスト] を選択します。
  2. リクエスト実行後「証明書の一覧」ページで、作成した証明書 ID を選択します。
  3. 「証明書の詳細」の「ドメイン」のセクションで [Route 53 でレコードを作成] を選択します。
ACM ドメイン
  1. 「Amazon Route 53 で DNS レコードを作成」画面で内容を確認し [レコードを作成] を選択します。
  2. 「証明書の一覧」画面で確認してステータスが発行済みに変われば、パブリック証明書の作成は終了です。

WordPress 用キャッシュポリシーの作成

ディストリビューションを作成する前に WordPress 用のキャッシュポリシーを作成します。

  1. CloudFront コンソールを表示します。
  2. ナビゲーションペイン [ポリシー] を選択し [キャッシュポリシーを作成] を選択します。
  3. 「キャッシュポリシーを作成」ページで、以下を設定します。
CloudFront キャッシュポリシー
  • 詳細 (適宜変更)
    • 名前: example1_jp_wordpress
    • 説明: example1.jp policy for WordPress
  • TTL 設定 (適宜変更)
    • 最小 TTL: 1
    • 最大 TTL: 31536000 (365 日)
    • デフォルト TTL: 86400 (1 日)
  1. 「キャッシュキー設定」セクションで以下を設定します。
  • ヘッダー: 次のヘッダーを含める
    • CloudFront-Forwarded-Proto
    • Host
  • クエリ文字列: すべて
  • cookie: 指定された cookie を含める
    • wordpress_logged_in*
    • wp-settings*
  1. 入力内容を確認して [作成] を選択してキャッシュポリシーを作成します。

WordPress 用リクエストポリシーの作成

次に WordPress 用のオリジンリクエストポリシーを作成します。

  1. CloudFront コンソールを表示します。
  2. ナビゲーションペイン [ポリシー] を選択し [オリジンリクエスト] のタブを選択し [オリジンリクエストポリシーを作成] を選択します。
  3. 「オリジンリクエストを作成」ページで、以下を設定します。
CloudFront オリジンリクエストポリシーを作成
  • 詳細
    • 名前: example1_jp_wordpress
    • 説明: example1.jp policy for WordPress
  1. 「オリジンリクエストの設定」ページで以下を設定します。
CloudFront オリジンリクエストポリシーの設定
  • ヘッダー: 次のヘッダーを含める
    • CloudFront-Forwarded-Proto
    • Host
  • クエリ文字列: 指定したクエリ文字列を含める
    • *preview*
CloudFront オリジンリクエストポリシー cookie
  • cookie: 指定された cookie を含める
    • comment_*
    • wordpress_*
    • wp-settings-*
  1. 入力内容を確認して [作成] を選択してオリジンリクエストポリシーを作成します。

ディストリビューションの作成

次に CloudFront のディストリビューションを作成します。

  1. CloudFront コンソールを表示します。
  2. ナビゲーションペイン [ディストリビューション] を選択し [ディストリビューションを作成] を選択します。
  3. 「ディストリビューションを作成」ページ「オリジン」セクションで以下を設定します。
CloudFront オリジンドメイン
  • オリジンドメイン: alb.example1.jp (適宜変更)
CloudFront オリジン プロトコル
  • プロトコル: HTTPS のみ (適宜変更)
  • 最小オリジン SSL プロトコル: TLSv1.2 (適宜変更)
CloudFront オリジン 名前
  • オリジンパス: 空欄
  • 名前: alb.example1.jp (適宜変更)
  1. 「デフォルトのキャッシュビヘイビア」セクションで、以下を設定します。
CloudFront ビヘイビア
  • パスパターン: デフォルト (*)
  • オブジェクトを自動的に圧縮: Yes
  • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
  • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
  • ビューワーのアクセスを制御する: No
  1. 「キャッシュキーとオリジンリクエスト」のセクションで以下を設定します。
CloudFront キャッシュキー
  • Chche policy and orin request policy (recommended)
    • キャッシュポリシー: example1_jp_wordpress (適宜変更)
    • オリジンリクエストポリシー: example1_jp_wordpress (適宜変更)
  1. 「設定」セクションで以下を設定します。
CloudFront 設定
  • 料金クラス: すべてのエッジロケーションを使用する
  • 代替ドメイン名 (CNAME): example1.jp (適宜変更)
  • カスタム SSL 証明書: example1.jp (適宜変更) 前項で作成した ACM 証明書
  1. 入力内容を確認して [作成] を選択してディストリビューションを作成します

ビヘイビアの作成

作成したディストリビューションにビヘイビアを作成して、WordPress 用の設定を行います。

  1. CloudFront コンソールを表示します。
  2. ナビゲーションペイン [ディストリビューション] を選択し、作成したディストリビューションを選択します。
  3. 「ビヘイビア」タブを選択して「ビヘイビアを作成」を設定します。
  4. 「ビヘイビアを作成」ページで以下を作成します。
  • パスパターン: /wp-admin/*
    • ビューワー
      • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
      • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • キャッシュキーとオリジンリクエスト
      • キャッシュポリシー: Managed-CachingDisabled
      • オリジンリクエストポリシー: Managed-AllViewer
  • パスパターン: wp-login.php
    • ビューワー
      • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
      • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • キャッシュキーとオリジンリクエスト
      • キャッシュポリシー: Managed-CachingDisabled
      • オリジンリクエストポリシー: Managed-AllViewer
  • パスパターン: *wp-json*
    • ビューワー
      • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
      • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • キャッシュキーとオリジンリクエスト
      • キャッシュポリシー: Managed-CachingDisabled
      • オリジンリクエストポリシー: Managed-AllViewer

パスパターンの指定で /wp-json/* だとうまくいかない場合があったので、*wp-json* にしています

  • パスパターン: *preview*
    • ビューワー
      • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
      • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • キャッシュキーとオリジンリクエスト
      • キャッシュポリシー: Managed-CachingDisabled
      • オリジンリクエストポリシー: Managed-AllViewer
  • パスパターン: /wp-includes/*
    • ビューワー
      • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
      • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • キャッシュキーとオリジンリクエスト
      • キャッシュポリシー: example1_jp_wordpress (適宜変更)
      • オリジンリクエストポリシー: example1_jp_wordpress (適宜変更)
  • パスパターン: /wp-content/*
    • ビューワー
      • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
      • 許可された HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • キャッシュキーとオリジンリクエスト
      • キャッシュポリシー: example1_jp_wordpress (適宜変更)
      • オリジンリクエストポリシー: example1_jp_wordpress (適宜変更)

おわりに

今回の記事は以上となります。このシリーズでは、「AWS 環境に WordPress をなるべくお金をかけずに構築していく」をお届けしていますので、ぜひ過去の記事もご覧ください。


投稿日

カテゴリー:

,

投稿者:

タグ: