Я пытаюсь написать лямбда-функцию, которая принимает файл изображения через веб-форму и записывает его как новый коммит в репозиторий с использованием кода коммита. По какой-то причине моя лямбда-функция, похоже, завершает работу перед вызовом createCommit, хотя я использую await аналогично моим предыдущим вызовам в функции.
Я попытался переписать функцию, которая оборачивает createCommit, чтобы использовать только обещания, но, похоже, это тоже не работает. Мне интересно, есть ли какая-то причудливость лямбды, о которой я не знаю, или я использую async / await неправильно (я только недавно узнал, как их использовать)
это мой основной обработчик лямбда-событий:
exports.handler = async (event) => {
const [file, lastCommitId] = await Promise.all([getFile(event), getLastCommitId()]);
return await createCommit(file, lastCommitId)
.then(result => returnResponse(result, 200))
.catch(err => returnResponse(err, 500));
};
это моя функция-обертка для createCommit
async function createCommit(file, parentCommitId) {
const fileContent = await file.content.toString('base64');
const params = {
"authorName": "admin",
branchName,
"commitMessage": "add image",
"email": "n/a",
"parentCommitId": parentCommitId,
"putFiles": [
{
fileContent,
"fileMode": "NORMAL",
"filePath": `src/images/${file.filename}`
}
],
repositoryName
};
console.log("creating commit against last commit id " + parentCommitId);
const result = await codecommit.createCommit(params).promise();
console.log(JSON.stringify(result));
return result;
}
Я ожидаю, что лямбда-функция будет ожидать завершения вызова createCommit, но она просто выводит файл console.log, начинающийся с "создания коммита против последнего коммита ...", и завершается.