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

API Gateway V2触发Lambda时Form Data格式异常问题求助

API Gateway V2触发Lambda处理Form Data配置问题

问题描述

你配置的API Gateway V2端点触发Lambda函数时,Form Data到达Lambda后呈现异常格式:

  • Event Body为base64编码,需执行event = base64.b64decode(event['body'])解码
  • 解码后为multipart/form-data的原始分隔符格式,内容如下:

b'----------------------------809582309949071767113581\r\nContent-Disposition: form-data; name="command"\r\n\r\n\r\n----------------------------809582309949071767113581\r\nContent-Disposition: form-data; name="text"\r\n\r\this is the text \r\n----------------------------809582309949071767113581\r\nContent-Disposition: form-data; name="token"\r\n\r\nXXXXXXXXXXXXXXXX\r\n----------------------------809582309949071767113581\r\nContent-Disposition: form-data; name="user_name"\r\n\r\nkim_d\r\n----------------------------809582309949071767113581\r\nContent-Disposition: form-data; name="user_id"\r\n\r\n14239\r\n----------------------------809582309949071767113581\r\nContent-Disposition: form-data; name="response_url"\r\n\r\nhttp:"//example.com\r\n----------------------------809582309949071767113581--\r\n'

原因及解决配置项

你确实遗漏了API Gateway V2的payload格式转换配置,默认情况下API Gateway V2不会自动解析multipart/form-data类型的请求,只会将原始body进行base64编码后传给Lambda。

要让API Gateway自动解析Form Data并以结构化格式传给Lambda,需完成以下配置:

  1. 进入API Gateway V2控制台,找到目标API和对应的路由
  2. 打开该路由的集成请求设置
  3. 在请求有效载荷格式转换区域,启用将请求有效载荷转换为Lambda代理格式
  4. 确保客户端请求的Content-Type为multipart/form-data,此时API Gateway会自动完成base64解码和表单解析,Lambda可直接从event['body']获取结构化的键值对,同时event['isBase64Encoded']会被设为false

如果不想依赖API Gateway的自动解析,也可在Lambda中手动处理multipart内容,示例代码如下:

import base64
from multipart import parse_form_data

def lambda_handler(event, context):
    # 解码base64格式的请求体
    raw_body = base64.b64decode(event['body'])
    # 解析multipart表单数据
    environ = {'CONTENT_TYPE': event['headers']['content-type']}
    form_data = parse_form_data(environ, raw_body)
    # 提取表单字段
    command = form_data.get('command', '')
    text = form_data.get('text', '')
    # 后续业务逻辑处理
    return {
        'statusCode': 200,
        'body': '处理完成'
    }

注意事项

  • 启用格式转换后,无需再手动执行base64解码操作,Lambda直接获取结构化数据
  • 确保API Gateway路由的请求方法(POST/PUT等)与客户端发送的请求方法一致
  • 若客户端请求的Content-Type非multipart/form-data,需对应调整配置或处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:45:42