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

如何通过命令行使用已生成的presigned-url上传文件到Amazon S3

使用预签名URL向S3上传文件的命令行解决方案

你尝试的aws s3 cp <local_file> <presigned_url>命令本身不支持预签名URL上传逻辑。aws s3系列子命令依赖本地配置的AWS凭证自动生成请求签名,无法直接使用外部预先生成好的预签名URL作为目标路径。

通用解决方案(使用curl)

绝大多数场景下S3上传用的预签名URL都是PUT方法生成的,直接执行以下命令即可:

curl --request PUT --upload-file <替换为本地文件路径> "<替换为你的预签名URL>"

注意事项

  • 预签名URL必须用英文双引号包裹,避免URL中的&等特殊字符被shell截断导致请求异常
  • 若生成预签名URL时指定了Content-Type参数,上传时必须传入完全一致的请求头,否则会返回403错误,示例:
    curl --request PUT --upload-file ./test.jpg -H "Content-Type: image/jpeg" "<预签名URL>"
    
  • 预签名URL的HTTP方法必须和生成时指定的方法一致,如果你拿到的是POST方法的表单上传预签名,需要将生成签名时返回的所有表单字段一并传入请求,示例:
    curl -X POST -F "key=test/test.jpg" -F "AWSAccessKeyId=AKIAXXXX" -F "policy=XXX" -F "signature=XXX" -F "file=@./test.jpg" "<S3桶的POST端点URL>"
    

常见错误排查

  • 403 Forbidden:优先检查预签名URL是否已过期,其次核对请求方法、Content-Type等参数是否和生成签名时的配置完全匹配
  • 400 Bad Request:检查预签名URL是否完整,是否存在被shell截断、字符转义错误的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:07