Closed13
AWS/WAFでメンテナンスページを表示する
参考
やりたいこと
- 許可したいIP:サイト閲覧可能
- それ以外のIP:メンテナンスページに誘導
- オンオフが簡単にできる
イメージ図
ステータス 503を返す
ステータスコードは503を返します。
こちらのツイートを参考にさせていただきました。
メンテナンスページを宣伝したくはないですね
手順
- IPSetのIPをallow、デフォルトアクションがblockであることを確認する
- web aclのCustom response bodiesから返却したいレスポンスを作成
-
Default web ACL action for requests that don't match any rules
の項目で↑で作成したレスポンス、ステータスコードを指定 - 動作確認
terraform
公式ドキュメント
問題なく503を返せますね
カスタムレスポンスを作成する
webaclのCustom response bodies
よりレスポンスを作成
Content Type,Response bodyを設定
デフォルトアクションで指定する
Default web ACL action for requests that don't match any rules
から先程作成したカスタムレスポンスを選びます。
エラーコードもここで設定する
動作確認
許可された端末は
$ curl -I https://<endpoint>
HTTP/2 200
問題なく通信できます。
許可されてない端末は
$ curl https://<endpoint>
<h1>at maintenance</h1>
$ curl -I https://<endpoint>
HTTP/2 503
指定したレスポンスボディ、ステータスコードが返却されました
メンテナンスページ解除
カスタムレスポンスのenable
からチェックを外せばよいです。
簡単
Terraform化
カスタムレスポンス
resource "aws_wafv2_web_acl" "web_acl" {
// 略
custom_response_body {
key = "maintenance"
content = "<h1>maintenance</h1>"
content_type = "TEXT_HTML"
}
これでカスタムレスポンスまでは作成出来るのだが、適用させるところまではわからず...
頻繁に対応することでもなし、余裕のあるときにawscliで適用出来る方法を探そう...
カスタムレスポンス適用だけは手動で
このスクラップは2023/07/27にクローズされました