AWS ApplicationLoadBalancerリスナールールで特定 IP 以外をメンテナンスページ表示
概要
AWS で運用している Web サービスでメンテナンスが必要となり、ALB でメンテ切り替えをした際の対応をまとめました。
手順
ALB Listener 一覧からルール変更をします。
※ 今回 2 ポートのみ解放しており、80 は 443 に転送してるので、443 のみ対応しました。

その後、
- 送信元 IP = 社内 IP (ex.
11.22.33.44/32) → default の TargetGroup へ転送 で「保存」 - 社内 IP 以外の送信元 IP 全て (
0.0.0.0/0) →503text/htmlメンテ文言をレスポンス で 「保存」

以上で 社内 IP は、通常通りアクセス可、それ以外はメンテナンスページを表示させることができました。
まとめてルールを追加して保存が出来ず、1 つずつルール追加で保存になります。
レスポンスできる Content-Type って何があるの?
Content-Type に application/json 等も返せるので、 API サーバのメンテ時にはこちらを利用して文言を渡しました。

ちょっとした注意
最大文字数が 1024 文字でした ♪

CSS を レスポンス本文 に追加すると文字数 1024 を超えてしまいそうなので、S3 にアップロードし公開し、そちらを参照するようにしたりしました。

