1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

普段からALBを使っているサービスでALB使ってちょっと雑だけど簡単にメンテナンス画面を表示する方法

Posted at

概要

普段からALBを使ってバランシングしているサービスにて、そのままALBのリスナー設定を追加して雑に、ただしお手軽に割とちゃんとしたメンテナンス画面を出す方法をまとめる。

前提

ALBを使って証明書の設定と、HTTPS 443がEC2やlambdaなどのリソースにロードバランシングされているものとする。

注意

本方法はメンテナンス画面を出す際に一瞬接続が途切れる場合があります。おそらく500系のエラーでサーバーに到達しない旨のレスポンスがリスナーのポート切り替えタイミングで返ります。
許容できないサービスの場合は本方法はおすすめできません。

準備

  1. ALBの一覧でALB名をクリックする

  2. 「リスナーとルール」のタブを開く

  3. 「リスナーの追加」をクリックする

  4. 下記のように設定してリスナーを追加する。

    項目 内容 備考
    プロトコル 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>
      

メンテナンス画面を出す

  1. 現在HTTPSの443ポートでバランシングしているリスナーのポート設定を一時的に445ポートなどに変更する

  2. 今回追加したリスナーの444ポートの設定を443ポートに変更する

  3. 当該ドメインでアクセスするとメンテナンス画面が表示される。(はず、、!)

    CleanShot 2024-05-07 at 22.07.46@2x.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?