У меня было довольно много попыток поместить файл в корзину S3, после чего мне пришлось обновить мою модель.
У меня следующий код (обратите внимание, что я тоже пробовал закомментированные строки. Он тоже не работаетс комментариями и без него.)
Наблюдаемая проблема: Все в первом блоке .then()
(successCallBack()
) успешно выполнено, но я не вижу результат s3.putObject()
.
Рассматриваемая область общедоступна, ограничений доступа нет.Раньше она работала с автономной опцией sls, затем из-за того, что она не работала в AWS, мне пришлось внести множество изменений, и мне удалось заставить работать successCallback (), которая успешно работает с базой данных.Тем не менее, загрузка файла по-прежнему не работает.
Некоторые вопросы:
При решении этой проблемы, реальные вопросы, которые я обдумываю / ищу, следующие:
Лямбда должна что-то возвращать?Я видел документы AWS, но в них есть фрагментированные фрагменты кода.
Помещение await
перед s3.putObject(params).promise()
не помогает.Я вижу образцы с и без ожидания перед вещами, которые имеют вызов функции AWS Promise ().Не уверен, какие из них правильные.
Как правильно, если у вас есть цепочка асинхронных функций для выполнения в одной лямбда-функции?
ОБНОВЛЕНИЕ:
var myJSON = {}
const createBook = async (event) => {
let bucketPath = "https://com.xxxx.yyyy.aa-bb-zzzzzz-1.amazonaws.com"
let fileKey = //file key
let path = bucketPath + "/" + fileKey;
myJSON = {
//JSON from headers
}
var s3 = new AWS.S3();
let buffer = Buffer.from(event.body, 'utf8');
var params = {Bucket: 'com.xxxx.yyyy', Key: fileKey, Body: buffer, ContentEncoding: 'utf8'};
let putObjPromise = s3.putObject(params).promise();
putObjPromise
.then(successCallBack())
.then(c => {
console.log('File upload Success!');
return {
statusCode: 200,
headers: { 'Content-Type': 'text/plain' },
body: "Success!!!"
}
})
.catch(err => {
let str = "File upload / Creation error:" + err;
console.log(str);
return {
statusCode: err.statusCode || 500,
headers: { 'Content-Type': 'text/plain' },
body: str
}
});
}
const successCallBack = async () => {
console.log("Inside success callback - " + JSON.stringify(myJSON)) ;
const { myModel } = await connectToDatabase()
console.log("After connectToDatabase")
const book = await myModel.create(myJSON)
console.log(msg);
}