如何使用带有node.js的s3 api将文件上传到Wasabi存储桶?

钻石

我在Amazon s3存储桶中实现了上传文件,如下所示,它运行良好:


  const S3 = require('aws-sdk/clients/s3');
  const AWS = require('aws-sdk');

  const accessKeyId = 'AKIAYVXDX*******';
  const secretAccessKey = 'gxZpdSDnOfpM*****************';

  const s3 = new S3({
    region: 'us-east-1',
    accessKeyId,
    secretAccessKey
  });

  s3.putObject({
      Body: 'Hello World',
      Bucket: "dev-amazon",
      Key: 'hello.txt'
    }
    , (err, data) => {
      if (err) {
         console.log(err);
      }
    });

而且我需要在Wasabi存储桶中实现上传文件。

我尝试如下:


  const S3 = require('aws-sdk/clients/s3');
  const AWS = require('aws-sdk');
  const wasabiEndpoint = new AWS.Endpoint('s3.wasabisys.com');

  const accessKeyId = 'PEIL4DYOY*******';
  const secretAccessKey = 'D4jIz3tjJw*****************';

  const s3 = new S3({
    endpoint: wasabiEndpoint,
    region: 'us-east-2',
    accessKeyId,
    secretAccessKey
  });

  s3.putObject({
      Body: 'Hello World',
      Bucket: "dev-wasabi",
      Key: 'hello.txt'
    }
    , (err, data) => {
      if (err) {
         console.log(err);
      }
    });

并且`console.log(err)的结果是:

err {“ message”:“我们计算出的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。”,“代码”:“ SignatureDoesNotMatch”,“ region”:null,“ time”:“ 2019- 10-30T09:39:19.072Z“,” requestId“:null,” statusCode“:403,” retryable“:false,” retryDelay“:64.72166771381391}

devtools中的控制台错误:

PUT https://dev-wasabi.s3.us-east-2.wasabisys.com/5efa9b286821fab7df3ece8dc3d6687ed32 403(禁止)

我的代码有什么问题?

钻石

我自己找到了这个问题的原因。

wasabiEndpoint错了。它应该是

  const wasabiEndpoint = new AWS.Endpoint('s3.us-east-2.wasabisys.com ');

根据docs,服务网址应根据地区而有所不同。

Wasabi美国东部1(弗吉尼亚北部):s3.wasabisys.com或s3.us-east-1.wasabisys.com

Wasabi美国东部2(弗吉尼亚北部):s3.us-east-2.wasabisys.com

Wasabi美国西部1(俄勒冈):s3.us-west-1.wasabisys.com

Wasabi欧盟中部1号(阿姆斯特丹):s3.eu-central-1.wasabisys.com

如果能对某人有所帮助,我将不胜感激。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档