generated at
S3 + CloudFront でホスティングしているWebサイトをWAFを使ってメンテナンス画面表示にする
参考記事
こちらの方法で最初試したが、メンテナンスページも同じCloudFrontで管理しているとメンテナンスページ自体がブロックされてしまったので駄目だった。
こちらの方法で最終的にうまくいった。ブロック時にカスタムレスポンスでメンテナンスHTMLを返却して表示する。


手順
AWS WAF画面で、ip setを作成する
AWS WAF画面で、ACLを作成する
Ruleの設定で、 Add my own rules and rule groups を選択して rule を作成する
ruleで、前述の ip sets を参照し、それらのアクセスを Allow とする
それ以外のデフォルトリクエストに対して、Action を Block とする
メンテナンスhtmlも表示したい場合は、custom response body を作成しておき、デフォルトリクエストのカスタムレスポンスとして 503, custom response body を設定する
Amazon CloudFrontの設定で、上記のACLを関連付ける
その瞬間、メンテナンスモードになる