【问题标题】:AWS Cloudfront returns 403 when PUT request body is greater than 8kb当 PUT 请求正文大于 8kb 时,AWS Cloudfront 返回 403
【发布时间】:2022-04-06 09:28:35
【问题描述】:

我在 AWS Cloudfront 后面有一个 API,多年来它在我们的前端应用程序中运行良好。最近,在功能发布后,我注意到一些用户报告数据未保存并且应用程序只是挂起。经过长时间的调查,我发现当 PUT 请求的 JSON 正文大于 8kb 时,我们的 Cloudfront 分发将返回 403 Forbidden 错误。任何东西都可以正常工作,任何东西都返回 403。我通过发送 PUT 请求来验证这一点,并减少正文数据大小,直到我得到预期的 201 Created 响应,然后检查发送的正文的大小。 JSON 格式正确。

错误在大约 170 毫秒内返回并包含来自 Cloudfront X-Cache: Error from cloudfront 的标头

我已经寻找大小限制的设置,我已经尝试禁用 WAF 规则,我已经尝试将“压缩对象”同时打开/关闭。启用实时日志会以某种方式影响接受的最大数据吗?看起来很疯狂,但我对这个问题有点困惑。

我很想向大家展示一些来自 Cloudwatch 的日志以提供帮助,但未通过 Cloudfront 的请求不会在 Cloudwatch 中记录,而且我无法设置任何类型的日志以变得更好深入了解它为什么会呕吐。

【问题讨论】:

  • 另外,另一个指针将检查最新版本中的内容。
  • 对不起,这与这个问题无关。也就是多源,我指的是请求体大小
  • 我确实在 WAF 的 AWS 托管规则集中找到了一个 SizeRestrictions_BODY 规则,它“验证请求正文大小最多为 8 KB(8,192 字节)”我已将该规则覆盖为“计数“但问题仍然存在。我会寻找其他可能显示的地方
  • 这似乎是一个 8kB 的限制,但 WAF 甚至没有在其日志中显示任何 DENY 操作。有谁知道 Cloudfront dist 的其他地方可能有 8kb 的正文长度限制?

标签: amazon-web-services amazon-cloudfront


【解决方案1】:

正如最初的预感,这被证明是 WAF ACL 规则问题。

阻塞 ACL 已应用于应用程序负载平衡器,因此在 Web ACL 列表中查找它需要检查负载平衡器所在的区域(例如 us-west-2),或者通过检查负载平衡器的集成服务,您可以在其中查看任何 AWS WAF 规则:

  • AWS > EC2 > 负载均衡器 > {instance} > 集成服务(选项卡)> AWS WAF

特定规则位于名为 AWS-AWSManagedRulesCommonRuleSet 的 AWS 托管规则集中。只需将 SizeRestrictions_BODY 规则改为 Count 而不是“使用规则中定义的操作”

这显然会影响到您的应用程序的请求,因此请按照您的意愿去做。

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 2017-09-27
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多