概要
普段からALBを使ってバランシングしているサービスにて、そのままALBのリスナー設定を追加して雑に、ただしお手軽に割とちゃんとしたメンテナンス画面を出す方法をまとめる。
前提
ALBを使って証明書の設定と、HTTPS 443がEC2やlambdaなどのリソースにロードバランシングされているものとする。
注意
本方法はメンテナンス画面を出す際に一瞬接続が途切れる場合があります。おそらく500系のエラーでサーバーに到達しない旨のレスポンスがリスナーのポート切り替えタイミングで返ります。
許容できないサービスの場合は本方法はおすすめできません。
準備
-
ALBの一覧でALB名をクリックする
-
「リスナーとルール」のタブを開く
-
「リスナーの追加」をクリックする
-
下記のように設定してリスナーを追加する。
項目 内容 備考 プロトコル HTTPS ポート 444 現在使っている443以外なら何でもいい OpenID または Amazon Cognito を使用する チェックしない アクションのルーティング 固定レスポンスを返す レスポンスコード 503 コンテンツタイプ text/html レスポンス本文 下記に記載されている内容をコピーして貼り付け セキュリティカテゴリ すべてのセキュリティポリシー ポリシー名 ELBSecurityPolicy-TLS13-1-2-2021-06 (推奨) 証明書の取得先 ACMから 自分のサービスの場合通常のHTTPSのアクセス時の証明書をACMで管理しているため
この辺は皆さんの環境に合わせていただきたい証明書 サービスアクセス時に使っている証明書を選択 -
レスポンス本文のHTML
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>メンテナンス中</title> <style> body { font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 20px; display: flex; justify-content: center; align-items: center; height: 100vh; } .maintenance { text-align: center; background-color: #fff; padding: 50px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); } h1 { color: #333; } p { color: #666; } </style> </head> <body> <div class="maintenance"> <h1>メンテナンス中</h1> <p>現在、システムメンテナンスを行っています。<br>ご不便をおかけして申し訳ありませんが、しばらくお待ちください。</p> </div> </body> </html>
-