長生村本郷Engineers'Blog

千葉県長生村本郷育ちのエンジニアが書いているブログ

AWS ApplicationLoadBalancerリスナールールで特定 IP 以外をメンテナンスページ表示

f:id:kenzo0107:20190929233947p:plain

概要

AWS で運用している Web サービスでメンテナンスが必要となり、ALB でメンテ切り替えをした際の対応をまとめました。

手順

ALB Listener 一覧からルール変更をします。*1

f:id:kenzo0107:20190929232804p:plain

その後、

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

f:id:kenzo0107:20190929231656p:plain

以上で 社内 IP は、通常通りアクセス可、それ以外はメンテナンスページを表示させることができました。

まとめてルールを追加して保存が出来ず、1つずつルール追加で保存になります。

レスポンスできる Content-Type って何があるの?

Content-Type に application/json 等も返せるので、 API サーバのメンテ時にはこちらを利用して文言を渡しました。

f:id:kenzo0107:20190929232354p:plain

ちょっとした注意

最大文字数が 1024 文字でした♪ f:id:kenzo0107:20190929232942p:plain

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

*1:今回 2 ポートのみ解放しており、80 は 443 に転送してるので、443 のみ対応しました。