Application Load Balancerのルールを使用する
以下の手順で、ALBを使用してメンテナンスページを表示する設定を行います。
1. メンテナンスページの準備
まず、メンテナンスページ(例:maintenance.html
)を準備します。このファイルにはメンテナンス中のメッセージを記載します。
2. S3にメンテナンスページをホスト
a. S3バケットの作成
- AWSマネジメントコンソールにログインし、S3サービスに移動します。
- 「バケットを作成」ボタンをクリックします。
- バケット名を入力し、リージョンを選択します(例:
my-maintenance-bucket
)。 - その他の設定はデフォルトのままで良いので、「作成」ボタンをクリックします。
b. メンテナンスページのアップロード
- 作成したバケットを開きます。
- 「アップロード」ボタンをクリックし、
maintenance.html
ファイルを選択してアップロードします。
c. 静的ウェブサイトホスティングの有効化
- S3バケットの「プロパティ」タブを開きます。
- 「静的ウェブサイトホスティング」を選択し、「ウェブサイトホスティングを有効にする」をチェックします。
- 「インデックスドキュメント」に
maintenance.html
と入力します。 - 設定を保存します。
d. バケットポリシーの設定
メンテナンスページをパブリックにアクセスできるようにするため、バケットポリシーを設定します。
- S3バケットの「アクセス許可」タブを開きます。
- 「バケットポリシー」をクリックします。
- 以下のポリシーを入力して保存します(バケット名を適切に置き換えてください)。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-maintenance-bucket/*"
}
]
}
3. ALBのルールを設定
a. ALBリスナーの確認
- AWSマネジメントコンソールにログインし、EC2サービスに移動します。
- 左側のメニューから「ロードバランサー」を選択します。
- メンテナンスを適用したいALBを選択します。
b. リスナールールの追加
- 「リスナー」タブを開きます。
- HTTP(ポート80)またはHTTPS(ポート443)リスナーを選択し、「ルールの編集」をクリックします。
- 「ルールの追加」をクリックし、以下のステップに従います。
c. メンテナンスモードルールの設定
- 「+ 条件を追加」をクリックし、「ヘッダー」または「パス」を選択します。例えば、特定のヘッダーがある場合にメンテナンスページを表示するように設定できます(例:
X-Maintenance-Mode
ヘッダーがtrue
の場合)。 - 「アクションを追加」をクリックし、「固定レスポンス」または「リダイレクト」を選択します。
- 「固定レスポンス」を選択する場合:
- ステータスコード:
503
- コンテンツタイプ:
text/html
- レスポンスボディ: メンテナンスメッセージのHTML内容
- ステータスコード:
- 「リダイレクト」を選択する場合:
- HTTPステータスコード:
302
- リダイレクトURL:
http://my-maintenance-bucket.s3-website-region.amazonaws.com/maintenance.html
- HTTPステータスコード:
- 設定を保存します。
4. メンテナンスモードの切り替え
メンテナンスモードが必要なときに、ALBのリスナールールを手動で切り替えます。例えば、メンテナンスモードのヘッダーを設定するか、パスを変更することでメンテナンスページを表示できます。
メンテナンスモードの有効化手順
- AWSマネジメントコンソールでALBのリスナー設定に移動します。
- 必要な条件(例:特定のヘッダーやパス)を設定し、メンテナンスモードルールを適用します。
これで、メンテナンスページが正しく表示されるはずです。メンテナンスが終了したら、ルールを元に戻して通常の動作に切り替えます。