大きなJSONをPOSTするAPIが403になる原因がAWS WAFだった

開発環境では成功するリクエストが本番だと403になるので何が原因かひとしきり考えた後。
本番にはWAFがついてることを思い出してWAFがブロックしているんじゃないかと思ったところビンゴ。

リクエストをダッシュボードで確認すると「AWSManagedRulesCommonRuleSet」というマネージドルールグループの「SizeRestrictions_BODY」に引っかかっていることがわかりました。
(ACLを作るときにRequest sampling optionsをEnableにしているとルールに評価されたリクエストをダッシュボードで確認できます)

ちなみに「AWSManagedRulesCommonRuleSet」は「AWS managed rule groups」の「Core rule set」に該当します。

「AWSManagedRulesCommonRuleSet」を選択。
「Edit」。
「Count」のトグルボタンをオンにすると、そのルールを無効にできます。

これでリクエストを通すことができました。

WAFのついてる環境でのみ403がでるならなんらかのルールでブロックされてることが疑えそうです。