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

使用AWS S3预签名URL上传文件时遇SignatureDoesNotMatch错误求助

问题

我使用以下命令生成AWS S3预签名URL,打算分享给同事用于上传文件:

aws s3 presign s3://linvest21-eq/lv-21-eq-report/HTML-Report.html --expires-in 86400 --region us-east-1

分享前用curl命令测试上传本地test.html文件:

curl --request PUT --upload-file "/path-to-this-file/test.html" "presigned-url" 

但收到SignatureDoesNotMatch错误:

The request signature we calculated does not match the signature you provided. Check your key and signing method.AKIAVXJAWS4-HMAC-SHA256
20240312T141043Z
20240312/us-east-1/s3/aws4_request
d3625340e61bcc35bb3e1
de27876a72e9daaa33317cf7a2574161c7d50716dc5decac580688f1457f7ddd41 5***** 36PUT
/lv-21-eq-report/HTML-Report.html
X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVXJFPSS5RY4HCSVN%2F20240312%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240312T141043Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host
host:linvest21-eq.s3.us-east-1.amazonaws.com
host
UNSIGNED-PAYLOAD****G0PNNP5M0W90YS3RY6vYYQ9s7LUMzlXVE7EpKHB7LrvkeVZKPdNuY/4R82t5LteFj0HUcE5S+lsqulu2hL843q2QWqw=

解决方法

以下是可能的错误点及对应解决办法:

  • 预签名URL不完整或被修改
    生成的预签名URL必须完整复制到curl命令中,不能修改任何参数(如X-Amz-Date、X-Amz-Credential),也不能出现换行、空格截断。复制时直接全选生成的URL,确保无遗漏字符。

  • 请求头与预签名配置不匹配
    生成预签名时指定了X-Amz-SignedHeaders=host,意味着curl请求只能包含host头,不能添加任何自定义HTTP头(比如Content-Type)。若curl命令加了多余头,会导致签名校验失败,需去掉这些额外头。

  • 本地时间与UTC不同步
    AWS签名校验要求客户端时间与UTC时间偏差不超过5分钟。检查本地机器时间是否准确,同步到正确UTC时间后,重新生成预签名URL再测试。

  • 凭证权限或区域不匹配
    生成预签名URL用的AWS凭证必须拥有s3:PutObject权限到目标路径s3://linvest21-eq/lv-21-eq-report/HTML-Report.html。同时确认bucket确实位于us-east-1区域,生成URL时的--region参数要和bucket所在区域完全一致。

  • curl命令路径或格式错误
    确保/path-to-this-file/test.html是本地文件的正确路径,文件存在且有读取权限。替换"presigned-url"为实际生成的完整URL,若URL含特殊字符,建议用单引号包裹避免shell解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:49:59