Я работаю над безсерверным веб-приложением (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 };
}
}