⚙️

CloudFormationでALBリスナールールを操作してメンテ画面を表示する

2023/02/12に公開

こんにちは深緑です。

年度末が近いですね。
リリースを控えて慌ただしくされてる方も多いのではないでしょうか。
私もそんな一人です。

リリース時に表示するメンテ画面が必要なので、
静的HTMLでメンテ画面を用意してApacheの設定を切り替えることで実現するつもりだったのですが、
文字化けとかが発生して意外と面倒。
これはALBの方で何とかしたほうが楽のでは・・・?と思い方針転換しました。

コードと解説

https://github.com/satoshi256kbyte/aws-code/blob/master/cloudformation/maintenance.yaml

ALBとリスナーは既に存在するものとし、メンテ画面を表示するルールを追加するだけのCloudFormationテンプレートです。

このようにリスナーが既に存在する状態だとします。
リスナー一覧

ルール一覧

ルールが下段のデフォルトだけの時に、
上記CloudFormationテンプレートを適用するとスタックができて画面上段の行が増えます。
増えた後以降はメンテ画面が表示されるようになります。
CloudFormationからスタックを削除すればメンテ画面は解除できます。

ルールが複数存在する場合は、メンテ画面が最優先になるようにPriorityを調整すれば良いと思います。
なお、ステータスコードが503なのはその方がSEO的に良い・・・と聞いているからです。
「Service Temporarily Unavailable」ってメンテ画面のことも含むんですかね。
はっきりとしたエビデンスを探しています。

参考

ルールを追加する書き方は共栄情報様のブログを参考にさせていだきました。
ALBのリスナールールでメンテナンス画面を表示させる構築ハンズオン
静的HTMLはサーワークス様の記事を参考にさせていただきました。
ALBの固定レスポンスには最大1024文字のHTML・CSSを含められる
ありがとうございます。

Discussion