当前位置: 首页 > 知识库问答 >
问题:

S3 putObject中的SignatureDoesNotMatch错误

孔冥夜
2023-03-14

我正在使用AWS Javascript SDK将文件放入我的S3。下面的代码旨在将用户头像上载到S3。我现在要硬编码accessKeyId和secretAccessKey,并从web表单获取文件和密钥上传。

 document.getElementById("upload-button").onclick = function() {
     const key = document.getElementById("key-text").value;
     var file = document.getElementById("file-chooser").files[0];

     const S3 = new AWS.S3({
      signatureVersion: "v4",
      apiVersion: '2006-03-01',
      accessKeyId: 'ACCESS_KEY_ID',
      secretAccessKey: 'SECRET_ACCESS_KEY',
      region: 'us-west-2'
    })

      S3.putObject({
        Key: key,
        Bucket: 'my-bucket-name',
        Body: file,
      }, (err, data) => {
        if (err) {
          alert("Error: " + err);
        } else {
          alert("Upload successful: " + data);
        }
      })
  }
 document.getElementById("upload-button").onclick = function() {
     const key = document.getElementById("key-text").value;
     var file = document.getElementById("file-chooser").files[0];

     const S3 = new AWS.S3({`
      signatureVersion: "v4",
      apiVersion: '2006-03-01',
      accessKeyId: 'ACCESS_KEY_ID',
      secretAccessKey: 'SECRET_ACCESS_KEY',
      region: 'us-west-2'
    })

      S3.putObject({
        Key: key,
        Bucket: 'ilarp-data-prod-1',
        Body: file,
      }, (err, data) => {
        if (err) {
          alert("Error: " + err);
        } else {
          alert("Upload successful: " + data);
        }
      })
  }

上面的代码给了我一个SignatureDoesNotMatch的错误返回,我对此感到困惑,因为我以为我是让API执行签名,而它的早期版本(不幸的是,我无法复制)没有给我这个错误。

共有1个答案

瞿兴朝
2023-03-14

原来这是飞行员的失误。我不匹配ACCESS_KEY_ID和secret_access_key。即使这件事我检查了十几次,我还是弄错了。真对不起.如果你来到这里对此感到疑惑,要知道每个程序员每隔一段时间都会犯一个愚蠢的错误。

 类似资料:
  • 当所有使用的参数看起来都是正确的时,是什么造成了这个错误?我如何解决它?

  • 我正在制作一个面部跟踪视频()。它将返回作业id。我已经设置了所有部分。这里我的问题是,我无法使用从SQS获取消息。甚至也不工作。它给出了以下错误。 https://sqs.us-east-1.amazonaws.com上的列表队列;AWS HTTP错误:客户端错误:导致响应: 此请求的规范字符串应为“POST/…”。。。。。。。 代码如下所示。AWS PHP SDK版本3.64。11 提前感谢!

  • 我得到一个AWS错误代码:SignatureDoesNotMatch,状态代码:403时,试图通过亚马逊SES发送邮件。 我已经确认我正在使用通过https://console.aws.amazon.com/iam/home?#users创建的正确凭据,错误仍然存在。 我假设我在iam/home上创建的凭据实际上是全局的,但我不知道我进一步做错了什么。整个错误是: AWS错误代码:Signatur

  • 我在使用aws ses时遇到SignatureDesNotMatch错误。我使用GMT日期和HMAC SHA256的安全密钥创建签名密钥,然后将其转换为Base64。 签名=base64(HMAC SHA256(日期,安全密钥)); 网址:https://email.us-west-2.amazonaws.com?Action=SendEmail 输入标题为x-amz-date: Thu,30 J

  • 我正在尝试通过超文本标记语言表单将图像上传到AWS S3存储桶。 但是,提交表单会导致错误“SignatureDoesNotMatch”和消息“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。” 我检查了一些关于同一主题的现有问题,但他们的答案并没有解决问题。 我到底做错了什么?

  • 我正试图生成一个预先签名的URL,其中包含文档中可用的确切代码: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/examples-s3-presign.html 但我有一个错误: 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。 知道文档代码为什么不起作用吗?这似乎与AWS签名V4有关。我不知道