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

无法通过带文件的form-data调用AWS Lambda Function URL(AWS_IAM认证)

Lambda Function URL 处理带文件的form-data时的403问题分析

Lambda Function URL支持form-data格式,你遇到的403错误并非功能不支持,而是AWS Signature签名计算的问题:

当请求包含form-data文件时,Postman默认的AWS Signature认证不会将文件的二进制内容纳入签名计算范围,但AWS IAM认证要求签名必须覆盖请求的全部内容(包括multipart/form-data的每个组成部分)。这种签名范围的不匹配,导致服务端验证时签名不一致,最终返回403错误。

解决方法

1. 改用AWS SDK构造签名请求

使用AWS官方SDK或第三方签名库(如Python的requests-aws4auth)手动构造请求,确保文件内容被纳入签名计算:

import requests
from requests_aws4auth import AWS4Auth

# 替换为你的IAM凭证和区域
ACCESS_KEY = "你的AccessKey"
SECRET_KEY = "你的SecretKey"
REGION = "你的AWS区域"

auth = AWS4Auth(ACCESS_KEY, SECRET_KEY, REGION, 'lambda')
url = "你的Lambda Function URL"

# 构造form-data参数
files = {'file': open('待上传文件路径', 'rb')}
form_data = {'额外字段': '字段值'}

# 发送签名后的请求
response = requests.post(url, auth=auth, files=files, data=form_data)
print(response.text)

2. 调整Postman配置(尝试修复签名问题)

如果坚持使用Postman,可以尝试以下操作:

  • 确认AWS Signature的Signing Method设置为AWS4-HMAC-SHA256
  • 检查请求头的Content-Type是否被Postman自动设置为multipart/form-data; boundary=xxx(不要手动修改)
  • 更新Postman到最新版本,部分旧版本对multipart请求的签名支持存在缺陷

3. 临时切换认证方式(仅限测试/公开场景)

若不需要严格的IAM认证,可将Function URL的认证类型改为NONE,跳过签名验证直接测试form-data上传功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:25:33