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

Amplify配置的AWS S3调用put上传public目录报SignatureDoesNotMatch求助

Amplify S3 存储上传SignatureDoesNotMatch错误解决方法

核心错误原因

你当前的Storage.put调用参数顺序错误,Amplify Storage类的put方法第一个入参为S3桶内的目标存储路径,第二个入参才是待上传的文件对象。你将文件对象作为第一个参数传入,导致AWS签名生成逻辑使用了非法路径,最终触发签名不匹配错误。

解决步骤

1. 修正上传代码写法

要指定上传到public目录,直接将public前缀拼在第一个参数的路径中即可,参考代码:

// 可自定义文件名,避免重复覆盖
const fileName = `public/${Date.now()}_${imgsPreview[0].name}`
const uploadedImage = await Storage.put(
  fileName, 
  imgsPreview[0].img,
  {
    contentType: imgsPreview[0].type // 可选,指定正确的文件MIME类型
  }
)

Amplify默认权限配置下,public/前缀的路径对所有用户开放读权限,登录用户默认拥有写权限,无需额外配置路径前缀权限。

2. 验证Amplify存储配置

修改代码后仍报错的话,依次检查以下配置:

  • 确认项目根目录下amplifyconfiguration.json中storage配置的bucket名称、region参数和你实际使用的S3桶信息完全匹配
  • 进入AWS Amplify控制台对应项目的存储管理页,确认你使用的用户身份(未登录/已登录)对应的权限组勾选了「创建和更新」权限,若仅开放了读权限会触发写操作鉴权失败

3. 检查S3桶策略(仅手动修改过桶策略时需要)

如果你曾手动修改过Amplify自动生成的S3桶策略,确认桶策略中没有禁止相应用户角色写入public/前缀路径的规则,Amplify默认生成的桶策略无需手动修改即可支持public目录读写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:07