AWS ALBでメンテナンスモードの設定

Application Load Balancerのルールを使用する

以下の手順で、ALBを使用してメンテナンスページを表示する設定を行います。

1. メンテナンスページの準備

まず、メンテナンスページ(例:maintenance.html)を準備します。このファイルにはメンテナンス中のメッセージを記載します。

2. S3にメンテナンスページをホスト

a. S3バケットの作成

  1. AWSマネジメントコンソールにログインし、S3サービスに移動します。
  2. 「バケットを作成」ボタンをクリックします。
  3. バケット名を入力し、リージョンを選択します(例:my-maintenance-bucket)。
  4. その他の設定はデフォルトのままで良いので、「作成」ボタンをクリックします。

b. メンテナンスページのアップロード

  1. 作成したバケットを開きます。
  2. 「アップロード」ボタンをクリックし、maintenance.htmlファイルを選択してアップロードします。

c. 静的ウェブサイトホスティングの有効化

  1. S3バケットの「プロパティ」タブを開きます。
  2. 「静的ウェブサイトホスティング」を選択し、「ウェブサイトホスティングを有効にする」をチェックします。
  3. 「インデックスドキュメント」に maintenance.html と入力します。
  4. 設定を保存します。

d. バケットポリシーの設定

メンテナンスページをパブリックにアクセスできるようにするため、バケットポリシーを設定します。

  1. S3バケットの「アクセス許可」タブを開きます。
  2. 「バケットポリシー」をクリックします。
  3. 以下のポリシーを入力して保存します(バケット名を適切に置き換えてください)。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-maintenance-bucket/*"
        }
    ]
}

3. ALBのルールを設定

a. ALBリスナーの確認

  1. AWSマネジメントコンソールにログインし、EC2サービスに移動します。
  2. 左側のメニューから「ロードバランサー」を選択します。
  3. メンテナンスを適用したいALBを選択します。

b. リスナールールの追加

  1. 「リスナー」タブを開きます。
  2. HTTP(ポート80)またはHTTPS(ポート443)リスナーを選択し、「ルールの編集」をクリックします。
  3. 「ルールの追加」をクリックし、以下のステップに従います。

c. メンテナンスモードルールの設定

  1. 「+ 条件を追加」をクリックし、「ヘッダー」または「パス」を選択します。例えば、特定のヘッダーがある場合にメンテナンスページを表示するように設定できます(例:X-Maintenance-Mode ヘッダーが true の場合)。
  2. 「アクションを追加」をクリックし、「固定レスポンス」または「リダイレクト」を選択します。
  • 「固定レスポンス」を選択する場合:
    • ステータスコード: 503
    • コンテンツタイプ: text/html
    • レスポンスボディ: メンテナンスメッセージのHTML内容
  • 「リダイレクト」を選択する場合:
    • HTTPステータスコード: 302
    • リダイレクトURL: http://my-maintenance-bucket.s3-website-region.amazonaws.com/maintenance.html
  1. 設定を保存します。

4. メンテナンスモードの切り替え

メンテナンスモードが必要なときに、ALBのリスナールールを手動で切り替えます。例えば、メンテナンスモードのヘッダーを設定するか、パスを変更することでメンテナンスページを表示できます。

メンテナンスモードの有効化手順

  1. AWSマネジメントコンソールでALBのリスナー設定に移動します。
  2. 必要な条件(例:特定のヘッダーやパス)を設定し、メンテナンスモードルールを適用します。

これで、メンテナンスページが正しく表示されるはずです。メンテナンスが終了したら、ルールを元に戻して通常の動作に切り替えます。

タイトルとURLをコピーしました