You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过集成S3的AWS API Gateway检索含+字符文件名的文件遇问题

AWS API Gateway集成S3时+字符被转义为%20的问题分析与解决

问题原因

API Gateway默认的路径编码逻辑存在特殊处理:+在URL查询参数中原本代表空格,但在路径部分+属于普通字符,API Gateway错误地将路径中的+(包括解码后的%2B)统一转义为%20,导致发送到S3的路径与签名计算时的路径不匹配,进而触发SigV4验证失败,同时返回错误的文件。

解决方案

方案1:Lambda代理集成中转(推荐)

  • 创建轻量Lambda函数,通过AWS SDK直接调用S3的对象操作API(如GetObject),手动处理请求路径中的+字符,完全绕过API Gateway的自动编码逻辑。
  • 将API Gateway的集成类型设置为Lambda代理,让Lambda全权处理请求路径、参数和签名,确保传递给S3的路径完全符合预期。

方案2:自定义集成请求映射模板

  • 在API Gateway的集成请求配置中,启用映射模板,针对对应请求类型(如application/json)手动构造S3路径,使用API Gateway的内置工具正确编码字符:
    示例映射模板(适配GET请求的路径参数):
    {
      "path": "/$util.urlEncode($input.params('your-path-param'))"
    }
    
    这里的$util.urlEncode会将+正确编码为%2B,而非%20,需根据实际路径参数名称调整模板变量。

方案3:调整Content Handling设置(有限适用)

  • 在集成请求的"Content Handling"选项中选择"Passthrough",但该设置仅对请求体生效,对路径参数的编码控制能力有限,仅部分场景可缓解问题,需结合其他配置使用。

内容的提问来源于stack exchange,提问作者Martin Macak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:22:11