AWS-WAF

CloudFront環境でメンテナンスページを表示するには?

はじめに

こんにちは、ディーネットの山田です。

CloudFrontとWAFを組み合わせることでメンテナンスページを表示する機会がありましたので、ブログの内容としてお届けします。

要件としては、特定のIPアドレス以外からのアクセスはすべてメンテナンスページに遷移させることが目的となります。

AWS WAFを使ってメンテナンスページを表示する構成

1. 環境の構成図

AWS環境の構成としては、Amazon CloudFrontにAWS WAFを連携する形で、WAFを利用できるように作成しました。

AWS WAF単体で可能なことは、HTMLを返却することになります。

要件に応じてスタイルシートや画像、スクリプトを使う場合があると思いますが、その場合はAmazon S3を併用してください。

2. 構成要素

  • Amazon CloudFront
    • Amazon EC2をオリジンとするコンテンツ配信機能を提供します。
  • AWS WAF
    • WAFのカスタムレスポンス機能を利用して、メンテナンスページを表示します。

実際に設定していきます

前提としては、以下を仮定しております。

  • AWS WAFを使った環境は、既に構築済み。
  • 他のWAFルールとは、競合しない。

1. WAFのカスタムレスポンス機能にレスポンス内容を登録する

WAFのカスタムレスポンス機能に以下の画像のように作成しました。

利用したHTMLソースは、ChatGPTに作成してもらいました。

今回登録したHTMLソースは、以下です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>メンテナンス中</title>
</head>
<body style="text-align: center; height: 100vh; display: flex; justify-content: center; align-items: center;">
    <div>
        <h1>ただいま、本ページはメンテナンスを実施しています。</h1>
        <p>メンテナンス期間は、2024年4月25日~2024年4月26日です。</p>
    </div>
</body>
</html>

2. WAFに登録されたことを確認する

3. 続いてIPアドレスの定義を作成する

要件である特定のIPアドレスを定義する箇所になります。

4. 特定のIPアドレスは許可するルールを作成する

WAFのルールを用いて特定のIPアドレスは許可するルールを作成する

5. デフォルトのWAFルールをBLOCKに変更してメンテナンスページが表示されるように設定する

特定のIPアドレス以外からのアクセスを要件通りメンテナンスページ表示とするためにルール設定を行う

「Default action」を「Block」に変更します。

「Custom response」を「Enable」にチェックして、必要なパラメータを埋めていきます。

メンテナンスページは、SEOの観点からよく「503」応答が利用されますので、「503」応答を設定しました。

動作確認

実際にアクセスしたところ、特定のIPアドレス以外からは以下のようなメンテナンスページが表示されました。

注意点

  • 既存のAWS WAFのルールと併用している場合は、メンテナンス期間中にメンテナンスページを表示したログが残ります。
    • そのため、AWS WAFのログを解析されている場合はご注意ください。
  • 今回のルールは、比較的簡単なものを設定しております。
    • 実際には画像やスタイルシートを併用されることが多いと思いますので、そういったパスについてメンテナンスページの対象とならないように予めルールで除外してください。
  • AWS WAFのカスタムレスポンス機能で登録可能なサイズは、4KBまでとなります。
    • ある程度のHTMLソースであれば、登録可能ですがスタイルシートや画像は基本的に登録が難しいと理解しておいた方がよいです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA