Возникли проблемы при загрузке изображения в AWS s3 bucket с node js - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь загрузить изображение на s3, используя nodejs и aws sdk. Он продолжает выдавать странную ошибку: "Недоступный хост:` images.dynamodb.us-east-1.amazon aws .com ". Эта служба может быть недоступна в регионе" us-east-1 "

Это мой лямбда-код:

exports.handler = function(event,context,callback){
     var s3 = new AWS.S3();
     const image = event.body.imageBinary;

     var buf = new Buffer.from(image.replace(/^data:image\/\w+;base64,/, ""),'base64');
     const type = image.split(';')[0].split('/')[1];
     var params = {
          Bucket: process.env.BUCKET,
          Key: `${AccountId}.${type}`, 
          Body: buf,
          ContentEncoding: 'base64',
          ContentType: `image/${type}`
      };

      s3.upload(params, function(err, resp){
          if (err) { 
             console.log(err);

          } else {
             console.log('succesfully uploaded the image!: ' + JSON.stringify(resp));

          }
      });
}

Я даже пытался установить конфигурацию объекта AWS (с ключом, секретным ключом и регионом), но получил тот же ответ

my aws sdk версия: "aws -sdk": "^ 2.610.0" Любая помощь будет хорошей

Спасибо !!!

1 Ответ

0 голосов
/ 31 января 2020

лямбда-поддержка node.js v12. Что позволяет писать async/await код

const AWS = require('aws-sdk');
const s3 = new AWS.S3({
  region: 'us-east-1',
  apiVersion: '2006-03-01',
});

exports.handler = async(event,context) => {
 const image = event.body.imageBinary;

 const buf = new Buffer.from(image.replace(/^data:image\/\w+;base64,/, ""),'base64');
 const type = image.split(';')[0].split('/')[1];

 var params = {
      Bucket: process.env.BUCKET,
      Key: `${AccountId}.${type}`, 
      Body: buf,
  };

  const options = {
    ACL: 'private',
    CacheControl: 'max-age=86400',
    ContentType: `image/${type}`,
    ContentEncoding: 'base64',
  };

  await s3.upload(params, options).promise();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...