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

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

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

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

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

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