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

AWS Lambda部署后Multipart请求报错:Required参数未指定

问题分析

本地测试Multipart文件上传正常,但部署到AWS Lambda+API Gateway后报错Required argument [CompletedFileUpload attachment] not specified,核心原因是API Gateway代理Lambda时不会自动解析Multipart表单数据,而是将原始请求体以base64编码形式传递给Lambda,导致后端框架无法正确识别表单中的attachment字段。

解决方案

1. 配置API Gateway传递原始Multipart数据

在API Gateway的POST方法集成设置中调整Content Handling:

  • 进入API Gateway控制台,找到对应/attachments/{id}资源的POST方法
  • 切换到「集成请求」标签,找到「Content Handling」选项
  • 设置为CONVERT_TO_BINARY,确保API Gateway将原始二进制的Multipart请求体(base64编码后)传递给Lambda,而非自动解析为JSON格式

2. 确保后端框架支持Lambda环境下的Multipart解析

如果使用Micronaut框架,需添加配置以处理Lambda的base64请求体:
在application.yml中添加:

micronaut:
  server:
    multipart:
      enabled: true
  aws:
    lambda:
      proxy:
        enabled: true

该配置会让Micronaut自动处理Lambda代理模式下的base64编码请求体,正确解析Multipart表单数据。

3. 验证请求头传递

确认API Gateway未篡改Content-Type请求头:

  • 在API Gateway的「集成请求」中,检查「HTTP请求头」映射,确保Content-Type头被原样传递(添加Content-Type映射,值为method.request.header.Content-Type)
  • 客户端发送请求时必须携带完整的Content-Type: multipart/form-data; boundary=<your-boundary>头,缺少boundary会导致解析失败
额外排查点
  • 检查Lambda执行角色是否有足够权限读取请求体(默认权限一般足够,自定义策略需额外确认)
  • 在Lambda中打印完整event内容,确认body字段为base64编码的Multipart数据,且headers.Content-Type格式正确

内容的提问来源于stack exchange,提问作者Kartik Kodag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:01:12