Загрузить изображение в Cloudinary через Lambda, используя node.js - PullRequest
1 голос
/ 06 марта 2019

Я работаю над безсерверным веб-приложением (node.js) и столкнулся с проблемой, которая блокирует меня уже 2 дня.

Сценарий: - Пользователь заходит на сайт, загружает изображение прямо в наше ведро S3. - Событие запускается и добавляется в очередь AWS SQS, готовую к загрузке Lambda. - лямбда забирает ключ изображения - Затем Lambda подключается к Cloudinary (через SDK). - Затем лямбда пытается загрузить с помощью команды SDK cloudinary.v2.uploader.upload ('s3: // имя_хранилища / имя-файла', (ошибка, результат) => {console.log (ошибка, результат)}) ;

Проблема: В Cloudinary ничего не загружается, в Cloudwatch не обнаружено ошибок, console.log пуст от обратного вызова.

Ведро S3 занесено в белый список, я создал файл в моем S3 .wellknown / cloudinary / cloud_name

index.js

import imageTransform from "./imageTransform";

exports.imageFromQueue = async event => {
  event.Records.forEach(async record => {
    const body = JSON.parse(record.body).Records[0];
    const { eventName, s3 } = body;
    if (eventName === "ObjectCreated:Post") {
      const { key } = s3.object;
      console.log("here", key); --> This gets printed out
      const data = await ImageTransform(key);
    }
  });
};

}

imageTransform.js

const cloudinary = require("cloudinary").v2;

cloudinary.config({
  cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_API_SECRET
});

const ImageTransform = async imagePath => {
  try {
    const data = await cloudinary.uploader.upload(
      `s3://${process.env.IMAGE_BUCKET}/${imagePath}`
    );

    console.log(data);
  } catch (error) {
    console.log("cloudinary - major error", error);
    return { majorError: error };
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...