Изображение дисплея Angular 6, полученное из AWS S3 - PullRequest
0 голосов
/ 02 января 2019

Я новичок в Angular 6 и застрял в проблеме, чтобы получить файл image / doc / excel из корзины aws S3.

Вот мой код:

var S3 = new AWS.S3();
    const params = {
      Bucket: 'asdasd',
      region: 'asadas1',
      accessKeyId: 'SADIYIUYSADSA8768GHSAD',
      secretAccessKey: 'sdas+sadJSADH7',

    }

    S3.listObjects(params, function (err, data) {
      if (err) {
        console.log('There was an error getting your files: ' + err);
        return;
      }

      console.log('Successfully get files.', data);

      const fileDatas = data.Contents;

      fileDatas.forEach(function (file) {

      });
    });

Я получилошибка:

MultipleValidationErrors: There were 3 validation errors:
* UnexpectedParameter: Unexpected key 'region' found in params
* UnexpectedParameter: Unexpected key 'accessKeyId' found in params
* UnexpectedParameter: Unexpected key 'secretAccessKey' found in params

Я хочу получить изображения из s3 и отобразить их на моей HTML-странице.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Попробуйте пакет multer-s3 в npm.Я использую его, и он отлично работает.

СОВЕТ: НИКОГДА НЕ ДАВАЙТЕ ВАШ КЛАВИШУ AWS И СЕКРЕТНО ID, КАК ЭТО ... Я повторяю.НЕ !!!!! .. Удалить это сообщение или сделать ваш ключ доступа неактивным.

0 голосов
/ 02 января 2019

Проблема в том, что вы использовали недопустимые параметры для вызовов API - SDK не знает, что делать с region, accessKeyId и secretAccessKey:

const params = {
  Bucket: 'asdasd',
  region: 'asadas1',                      // Here,
  accessKeyId: 'SADIYIUYSADSA8768GHSAD',  // here
  secretAccessKey: 'sdas+sadJSADH7',      // and here

}

См. Справочную документацию listObjects API .

Очевидно, ваш SDK настроен неправильно, см. Документацию о том, как это сделать.

Примечание. Если вы используете JS-платформу на стороне клиента, такую ​​как Angular, это ужасная идея - жестко кодировать учетные данные безопасности! Ваши пользователи смогут увидеть их и использовать для доступа к другим ресурсам. Документация, которую я привел выше, показывает вам лучшие варианты.


Если вы хотите игнорировать Best Practices, , что вам совершенно не следует , вот как вы могли бы это сделать:

Установите информацию AWS в начале вашего сценария, как описано здесь :

AWS.config.update({
    region: 'us-east-1',
    accessKeyId: "Don't do this",
    secretAccessKey: "It's a terrible idea!"
});

Просто повторюсь, ужасная идея - жестко кодировать учетные данные в коде на стороне клиента!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...