【问题标题】:Backblaze S3 Compatible API - Pre-signed URLs - Node AWS SDK not workingBackblaze S3 兼容 API - 预签名 URL - 节点 AWS 开发工具包不起作用
【发布时间】:2020-08-22 12:46:39
【问题描述】:

我正在尝试让新的 Backblaze 兼容 S3 API 与预签名 URL 一起使用

我用来生成 URL (original source) 的代码:

const aws = require('aws-sdk');

const s3 = new aws.S3({
  accessKeyId: 'XXX',
  secretAccessKey: 'XXX',
  endpoint: 's3.us-west-002.backblazeb2.com',
});

const myBucket = 'bucket-name'
const myKey = 'file-name.pdf'
const signedUrlExpireSeconds = 60 * 5 // I know this is not supported yet.

const url = s3.getSignedUrl('getObject', {
    Bucket: myBucket,
    Key: myKey,
    Expires: signedUrlExpireSeconds
})

console.log(url)

Url 生成正确:

https://BUCKETNAME.s3.us-west-002.backblazeb2.com/BUCKETKEY?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX

但是当转到浏览器中生成的 URL 时,我得到以下错误:

<Error>
   <Code>InvalidRequest</Code>
   <Message>Invalid request parameter received: AWSAccessKeyId</Message>
</Error>

我做错了什么?

【问题讨论】:

    标签: amazon-web-services amazon-s3 backblaze


    【解决方案1】:

    刚刚发现如何解决这个问题。默认签名版本似乎是带有 AWS 开发工具包的 v2。只需确保将签名版本添加到 S3 初始化。在上面的例子里面:

    const url = s3.getSignedUrl('getObject', {
        Bucket: myBucket,
        Key: myKey,
        Expires: signedUrlExpireSeconds
        signatureVersion: 'v4'
    })
    

    更多信息: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 2014-06-01
      • 2014-02-26
      • 2016-09-23
      • 2018-12-01
      • 2021-03-19
      相关资源
      最近更新 更多