S3 + CloudFront でホスティングしているWebサイトをWAFを使ってメンテナンス画面表示にする
参考記事
こちらの方法で最初試したが、メンテナンスページも同じCloudFrontで管理しているとメンテナンスページ自体がブロックされてしまったので駄目だった。
こちらの方法で最終的にうまくいった。ブロック時にカスタムレスポンスでメンテナンスHTMLを返却して表示する。
手順
Ruleの設定で、 Add my own rules and rule groups
を選択して rule を作成する
ruleで、前述の ip sets を参照し、それらのアクセスを Allow とする
それ以外のデフォルトリクエストに対して、Action を Block
とする
メンテナンスhtmlも表示したい場合は、custom response body を作成しておき、デフォルトリクエストのカスタムレスポンスとして 503, custom response body を設定する
その瞬間、メンテナンスモードになる