Closed13

AWS/WAFでメンテナンスページを表示する

not75743not75743

やりたいこと

  • 許可したいIP:サイト閲覧可能
  • それ以外のIP:メンテナンスページに誘導
  • オンオフが簡単にできる
not75743not75743

手順

  • IPSetのIPをallow、デフォルトアクションがblockであることを確認する
  • web aclのCustom response bodiesから返却したいレスポンスを作成
  • Default web ACL action for requests that don't match any rulesの項目で↑で作成したレスポンス、ステータスコードを指定
  • 動作確認
not75743not75743

カスタムレスポンスを作成する

webaclのCustom response bodiesよりレスポンスを作成

Content Type,Response bodyを設定

not75743not75743

デフォルトアクションで指定する

Default web ACL action for requests that don't match any rulesから先程作成したカスタムレスポンスを選びます。
エラーコードもここで設定する

not75743not75743

動作確認

許可された端末は

$ curl -I https://<endpoint>
HTTP/2 200 

問題なく通信できます。

許可されてない端末は

$ curl https://<endpoint>
<h1>at maintenance</h1>

$ curl -I https://<endpoint>
HTTP/2 503 

指定したレスポンスボディ、ステータスコードが返却されました

not75743not75743

メンテナンスページ解除

カスタムレスポンスのenableからチェックを外せばよいです。
簡単

not75743not75743

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にクローズされました