无法使用预签名 URL 通过 Postman 将文件上传到 S3。错误:签名不匹配

Fai*_*med 3 amazon-s3 amazon-web-services pre-signed-url postman

如何使用签名 URL 将文件上传到 S3?

我尝试了以下方法:

  const AWS = require('aws-sdk');
  const s3 = new AWS.S3({ accessKeyId: "", secretAccessKey: "" });

  const url = s3.getSignedUrl("putObject", {
    Bucket: "SomeBucketHere",
    Key: "SomeNameHere",
    ContentType: "binary/octet-stream",
    Expires: 600
  });
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试按照以下步骤使用 Postman 上传时,出现错误SignatureDoesNotMatch

  1. 使用上述代码中的 URL 的 PUT 方法
  2. 正文:(binary单选按钮),选择文件,选择要上传的文件
  3. 点击发送

我可以确认 IAM 权限不是这里的问题。我可以完全访问存储桶。

出了什么问题以及如何测试我的签名 URL?

Fai*_*med 5

这个问题曾经给我带来了很大的困扰。

我所要做的就是向邮差请求添加一个标头。

标题: Content-Type = binary/octet-stream

一旦我更改了此设置,文件就会成功上传。

希望这可以为某人省去很多麻烦。