Как загрузить файл в ведро Wasabi с помощью s3 api с помощью node.js? - PullRequest
0 голосов
/ 30 октября 2019

Я реализовал загрузку файла в корзину 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 ":" Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой ключ и метод подписи. "," Code ":" 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 (запрещено)

Что не так в моих кодах?

1 Ответ

0 голосов
/ 30 октября 2019

Я сам нашел причину этой проблемы.

wasabiEndpoint был неправ. Это должно быть

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

Согласно документам , URL-адреса служб должны различаться в зависимости от региона.

Васаби, США Восток 1 (Северная Вирджиния):s3.wasabisys.com или s3.us-east-1.wasabisys.com

Васаби США Восток 2 (Северная Вирджиния): s3.us-east-2.wasabisys.com

Васаби, США Запад 1 (Орегон): s3.us-west-1.wasabisys.com

Васаби, ЕС Центральная 1 (Амстердам): s3.eu-central-1.wasabisys.com

Буду очень признателен, если это кому-нибудь поможет. :)

...