Amazon CloudFrontは、安全でプログラミング可能なコンテンツデリバリネットワークです。フィールドレベル暗号化、DDoS攻撃からのネットワークとアプリケーション層の保護などのセキュリティ機能も備わっています。

独自SSL証明書の申請

CloudFront ディストリビューションの設定には、独自SSL証明書の適用が必要です。この作業には、数分から長くて数時間かかる可能性がありますので、ディストリビューションの作成を始める前に、独自SSL証明書を申請することをおすすめします。

AWSのアカウントを持っていない場合は、このページから作成可能です。AWSアカウントにログイン後、メニューバーの検索ボックスで「certificate manager」と検索し、「サービス」Certificate Managerをクリックしてください。

 CloudFrontアカウントの「サービス」にある「AWS Certificate Manager」をクリックする
CloudFrontアカウントの「サービス」にある「AWS Certificate Manager」をクリックする

Certificate Manager「証明書のリクエスト」ボタンをクリックします。

 AWS Certificate Managerで「証明書のリクエスト」ボタンをクリックする 
AWS Certificate Managerで「証明書のリクエスト」ボタンをクリックする

次のページで、「パブリック証明書のリクエスト」を選択して、「証明書のリクエスト」をクリックします。

 「パブリック証明書のリクエスト」を選択して、「証明書のリクエスト」をクリックする
「パブリック証明書のリクエスト」を選択して、「証明書のリクエスト」をクリックする

ドメイン名の追加

「証明書のリクエスト」画面で、ドメイン名(Kinstaでのサイトのプライマリドメイン)をドメイン名リスト(ルートドメインを追加する場合は、必ず非wwwとwwwの両方のドメインを追加するか、*.example.comのようなワイルドカードのドメインを追加してください)に追加し、「次へ」をクリックします。

 AWS Certificate ManagerのSSL証明書リクエストにドメインを追加する
AWS Certificate ManagerのSSL証明書リクエストにドメインを追加する

ドメイン認証

次の画面で、SSL証明書のDNS認証またはメール認証のいずれかを選びます。必要に応じて選択してください。

ドメイン登録に、WHOIS検索から連絡先を隠すプライバシー保護機能がない場合、または、プロキシのメールアドレスに送信されたメールが、あなたの本当のメールアドレスに転送される場合には、メール認証が可能です。

WHOIS検索で表示されるメールアドレスでメールを受信できない場合は、DNS認証のみ有効です。

メール認証

「メール認証」を選び、「次へ」をクリックして認証を行います。

 AWS SSL証明書のメール認証を開始する
AWS SSL証明書のメール認証を開始する

追加したドメインごとに最大8通のメールが届きます。各ドメインにつき少なくとも1通のメールを確認して、認証を完了させてください。

DNS認証

この場合はDNS認証」を選び、「次へ」をクリックします。

 AWS SSL証明書のDNS認証を開始する
AWS SSL証明書のDNS認証を開始する

「タグを追加」ページで、必要に応じて任意のタグを追加してから「確認」をクリックして次に進みます。

 SSL証明書のリクエストを確認する
SSL証明書のリクエストを確認する

「確認」ページにある「確定とリクエスト」ボタンをクリックして認証を進めます。

 SSL証明書のリクエストを確定する
SSL証明書のリクエストを確定する

次のページで、ドメイン名の横に表示される矢印アイコンをクリックすると、検証用のCNAMEレコードの情報が表示されます。これを元に、ドメインのCNAMEレコードを作成しましょう。

 ドメイン認証用CNAMEレコードの情報
ドメイン認証用CNAMEレコードの情報

CNAMEレコードを追加するには、ドメインのDNSを管理していサービスの管理画面にログインします。今回は、KinstaのDNSでCNAMEレコードを追加する方法をご紹介します。別のDNSプロバイダー(ドメインのネームサーバーを指定した場所によっては、レジストラまたは別のDNSホストである可能性があります)を使用している場合は、手順が少し異なるかもしれません。

  1. MyKinstaの左側サイドバーにあるDNSをクリックします。
  2. DNSレコードを追加したいドメインの「管理」リンクをクリックします。
  3. DNSレコードの追加」をクリックします。
  4. CNAMEタブをクリックし、「ホスト名」(CloudFrontの名前フィールドのドメインより前にあるすべて)と「指定先」(CloudFrontの値)を追加します。DNSレコードを追加する」をクリックしてCNAMEレコードを保存します。

備考: DNSレコードのTTL設定によっては、DNSレコードの反映に数分から数時間かかる場合があります。

AWS SSL認証用のCNAMEレコードを追加する
AWS SSL認証用のCNAMEレコードを追加する

CloudFrontの認証ページにもどり、「続行」をクリックします。

 DNS認証の続行
DNS認証の続行

CNAMEレコードが反映され、認証されると、SSL証明書のステータスは「検証保留中」から「発行済み」に切り替わります。

 Amazon Certificate Managerで発行されたSSL証明書
Amazon Certificate Managerで発行されたSSL証明書

CloudFront ディストリビューション用のSSL証明書の準備が整いました。これで設定を開始することができます。

CloudFront ホストゾーンの設定とデプロイ

次は、CloudFront ホストゾーンの設定とデプロイを行います。AWSアカウントにて、メニューバーの検索ボックスで「CloudFront」と検索し、「サービス」CloudFrontをクリックします。

 AWSの「サービス」から「CloudFront」を選択する
AWSの「サービス」から「CloudFront」を選択する

その後、Create a CloudFront distribution(CloudFront ディストリビューションを作成する)をクリックします。

 CloudFront ディストリビューションを作成する
CloudFront ディストリビューションを作成する

ホストゾーンの詳細は、ディストリビューションの作成ページで設定することができます。KinstaのCloudflare統合との互換性を最大化するために、以下の構成を推奨します。

オリジン

オリジンの設定は以下がおすすめです。

  • オリジンドメイン: サイトのcloudドメイン(例: myawewsomesite.kinsta.cloud)。CloudFrontはオリジンとしてIPアドレスを受け付けないため、フィールドにサイトのkinsta.cloudドメインを使用します。
    オリジンドメインを入力すると、以下の3つのフィールドが表示されます。
    • プロトコル: HTTPSのみ
    • HTTPSポート: 443
    • 最小限のオリジン SSL プロトコル: TLSv1
  • オリジンのパス: 空欄にしてください
  • 名前(任意): オリジンに名前をつけられますが、必須ではありません
  • Origin Shield を有効にする: No(いいえ)
 CloudFront ディストリビューション オリジンの推奨設定
CloudFront ディストリビューション オリジンの推奨設定

デフォルトのキャッシュ動作の設定

キャッシュの動作設定を行う際に、CloudFrontの2つのポリシー(キャッシュポリシーとリクエストポリシー)を作成する必要があります。以下、概要をご紹介します。

「デフォルトのキャッシュ動作の設定」の推奨設定値です。

  • パスパターン: デフォルト
  • オブジェクトを自動的に圧縮する: Yes(はい)
  • ビューワープロトコルポリシー: Redirect HTTP to HTTPS
  • 許可される HTTP メソッド: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
  • ビューワーのアクセス制限: No(いいえ)
  • キャッシュキーとオリジンリクエスト: キャッシュポリシーとオリジンリクエストポリシー
    • キャッシュポリシー: 作成したキャッシュポリシーを選択します(以下の作成手順を参照してください)
    • オリジンリクエストポリシー: 作成したオリジンリクエストポリシーを選択します(以下の作成手順を参照してください)
 CloudFront ディストリビューション キャッシュ動作の推奨設定
CloudFront ディストリビューション キャッシュ動作の推奨設定

CloudFront キャッシュポリシー作成方法

「キャッシュポリシー」セクションにある「ポリシーの作成」をクリックすると、ブラウザの新規タブにキャッシュポリシー作成ページが表示されます。

 CloudFrontにキャッシュポリシーを作成する
CloudFrontにキャッシュポリシーを作成する

「詳細」セクションで、キャッシュポリシーの名前(例: KinstaCachePolicy)を指定します。

TTL設定は、以下を推奨します。

  • 最小TTL: 0
  • 最大TTL: 31536000
  • デフォルトTTL: 86400

キャッシュキー設定は、以下を推奨します。

  • ヘッダー: None(なし)
  • クエリ文字列: All(すべて)
  • Cookies: All(すべて)

「圧縮サポート」セクションでGzipBrotliにチェックを入れて有効にし、「作成」をクリックしてください。

 CloudFront キャッシュポリシー推奨設定
CloudFront キャッシュポリシー推奨設定

このブラウザタブを閉じ、CloudFront ディストリビューションを作成しているタブに戻ります。

キャッシュポリシーのドロップダウン横にある更新ボタンをクリックし、ドロップダウンから作成したキャッシュポリシーを選択します。

 作成したキャッシュポリシーを選択する
作成したキャッシュポリシーを選択する

CloudFront オリジンリクエストポリシー作成方法

「オリジンリクエストポリシー」セクションで、「ポリシーの作成」をクリックすると、ブラウザの新規タブにオリジンリクエストポリシー作成ページが表示されます。

 CloudFrontにオリジンリクエストポリシーを作成する
CloudFrontにオリジンリクエストポリシーを作成する

「詳細」セクションで、キャッシュポリシーの名前(例: KinstaOriginPolicy)を指定します。

「オリジンリクエスト設定」セクションは、それぞれ以下に設定してください。

  • ヘッダー: All viewer headers(すべてのビューワーヘッダー)
  • クエリ文字列: All(すべて)
  • Cookies: All(すべて)

「作成」をクリックして、リクエストポリシーを確定します。

 CloudFront オリジンリクエストポリシーの設定
CloudFront オリジンリクエストポリシーの設定

このブラウザタブを閉じ、CloudFront ディストリビューションを作成しているタブに戻ります。

オリジンリクエストポリシーのドロップダウン横にある更新ボタンをクリックし、ドロップダウンから作成したオリジンリクエストポリシーを選択します。

 作成したオリジンリクエストポリシーを選択する
作成したオリジンリクエストポリシーを選択する

関数の関連付け

関数の関連付けは設定しない方がいいでしょう。これは、リクエストのライフサイクル内の異なるトリガー(ビューワーリクエスト、ビューワーレスポンス、オリジンリクエストなど)にAWS Lambdaのサーバーレス関数を割り当てることができるというものです。

Kinsta CDNと並行して関数の関連付けを使用することは可能ですが、Lambda関数がKinsta CDNと競合する恐れがあります。独自のLambda関数をサイトで使用したい場合、万が一問題が発生した際のトラブルシューティングのために、開発者と一緒に作業することをおすすめします。

設定

「設定」の構成は以下がおすすめです。

  • 価格クラス: サイトで使用するCloudFrontリージョンを選択してください
  • AWS WAF ウェブ ACL: ファイアウォールのルールでACLを作成する必要がある場合、Kinsta CDNとの競合を避けるために、AWSのプロの力を借りながら作業することをおすすめします
  • 代替ドメイン名: 「項目の追加」をクリックし、ドメイン(Kinstaでのサイトのプライマリドメイン)を指定してください
  • SSL 証明書: この記事の冒頭で作成したSSL証明書を選択してください
    SSL証明書を選択した後に、以下の追加オプションが表示されます
    • レガシークライアントサポート: チェックなし、または無効
    • セキュリティーポリシー: TLSv1.2_2021
  • サポートされる HTTP バージョン: HTTP/2
  • 標準ログ記録: オフ
  • IPv6: オン
ディストリビューションの設定を保存し、CloudFront ホストゾーンを作成する
ディストリビューションの設定を保存し、CloudFront ホストゾーンを作成する

「ディストリビューションを作成」をクリックすると、CloudFront ホストゾーンの作成が完了します。

CloudFront よくある問題のトラブルシューティング

502エラー

CloudFront ディストリビューションの作成後、サイトに502エラーが表示された場合は、オリジン設定のオリジンドメインを再確認してください。このドメインは、メインのドメインではなく、あなたのサイトのkinsta.cloudドメインでなくてはいけません。

変更内容がサイトに反映されない

CloudFrontに合わせてサイトを設定すると、キャッシュの追加レイヤーが作成され、これはキャッシュのクリアが必要になるときにその都度合わせて削除しなくてはいけません。プラグインをインストール、または再インストールした後、サイトの変更がうまく表示されない、もしくはプラグインがうまく動作しない場合は、以下を含むすべての階層でキャッシュをクリアしてください。

  1. プラグイン(該当する場合のみ)
  2. テーマ(該当する場合のみ)
  3. Kinstaのサイトまたはサーバーキャッシュ(MyKinstaまたはKinsta MUプラグイン)
  4. CloudFrontのキャッシュ(オブジェクトを無効化します。無効化するオブジェクトパスに /* を使用すると、すべてのキャッシュがクリアされます)
  5. ブラウザのキャッシュ

誤検出でブロックされたIPアドレス

CloudFrontでDDoS攻撃の軽減や、ボットコントロールを有効にした結果、あなたやサイト訪問者がサイトへのアクセスを不正にブロックされる場合には、誤検出が疑われます。この問題が発生した際には、AWSサポートとKinstaサポートの両方と連携し、ブロックが発生している場所を特定する必要があります。

HTTPからHTTPSへのリダイレクトループ

HTTPからHTTPSへのリダイレクトループが発生した場合、ドメインのCloudFront オリジン設定で、プロトコルHTTPSのみ」に設定されていることを確認してください。

IPジオロケーションリダイレクトが正しく動作しない

CloudFrontで、デフォルトで有効になっているページキャッシュは、Kinstaで設定したIPジオロケーションのリダイレクトに干渉する場合があります。これが発生した際は、CloudFrontでのキャッシュを無効にするか、キャッシュポリシーで特定の場所にないファイルのみをキャッシュするように設定する必要があります。

WordPress管理画面にログインできない

POST対応がないとログインができず、ウェブサイト内の他の機能にも影響が出る恐れがあります。「デフォルトのキャッシュ動作の設定」「許可されるHTTPメソッド」が、GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEに設定されていることを確認してください。

詳細設定と互換性

署名付きURLと署名付きCookieによるビューワーのアクセス制限

独自のオリジンでファイルへのアクセスを制限するなどのオプションは、Cloudflareが常に静的なリクエストをキャッシュすることが原因で機能しない場合があります。