javascript - 如何使用 s3 api 和 node.js 将文件上传到 Wasabi 存储桶?

标签 javascript node.js amazon-s3 wasabi-hot-cloud-storage

我在 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":"The request signature we calculated does not match the signature you provided. Check your key and signing method.","code":"SignatureDoesNotMatch","region":null,"time":"2019-10-30T09:39:19.072Z","requestId":null,"statusCode":403,"retryable":false,"retryDelay":64.72166771381391}

开发工具中的控制台错误:

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

我的代码有什么问题吗?

最佳答案

经过一番研究,我发现 wasabiEndpoint 是错误的。

应该是

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

根据docs ,不同地区的服务 URL 应该不同。

Wasabi US East 1 (N. Virginia): s3.wasabisys.com or s3.us-east-1.wasabisys.com

Wasabi US East 2 (N. Virginia): s3.us-east-2.wasabisys.com

Wasabi US West 1 (Oregon): s3.us-west-1.wasabisys.com

Wasabi EU Central 1 (Amsterdam): s3.eu-central-1.wasabisys.com

如果这可以帮助别人,我会非常高兴。 ;)

关于javascript - 如何使用 s3 api 和 node.js 将文件上传到 Wasabi 存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622647/

相关文章:

javascript - Mobile safari 崩溃日志 - 内存不足

javascript - CSS3 - 制作一个简单的点击下拉菜单

amazon-s3 - 使用 AWS S3 和 Route 53 托管静态网站

javascript - Mongoose - 按填充对象的字段搜索对象

iphone - Amazon S3 getDate() API 调用?

amazon-s3 - Airflow 不会将日志写入 s3

javascript - Owl Carousel 在 IE11 win7 中不起作用(Js 冲突?)

javascript - 拖放后重置所有项目的 Vue.js 列表顺序

node.js - EventEmitter 中出现意外的异步行为

javascript - 在postgre的 Node 中插入函数