Необходимо убедиться, что обещание, возвращаемое функцией sendEmail()
, разрешено (или отклонено). В настоящее время вы получаете ссылку на sendPromise
, но затем вы немедленно выполняете return criarResposta( 200, 'OK' );
, не ожидая разрешения обещания. Попробуйте изменить следующие строки:
sendPromise.then(function(data) {
console.log(data.MessageId);
}).catch(function(err) {
console.error(err, err.stack);
});
return criarResposta( 200, 'OK' );
с
try {
const data = await sendPromise;
console.log(data.MessageId);
return criarResposta( 200, 'OK' );
} catch (err) {
console.error(err, err.stack);
return criarResposta( 500, 'Internal Server Error' );
}
Дополнительную информацию об обещаниях и асинхронности / ожидании в Node.js можно найти в этом посте в блоге в блоге AWS.
Примечание: вы никогда не должны хранить свои учетные данные AWS (accessKeyId и secretAccessKey) как часть вашего исходного кода. В случае с Lambda функция Lambda получает свое разрешение от связанной с ней Lambda Execution Role , которая должна быть адаптирована для конкретных потребностей Lambda, таких как ses:SendEmail
и AWSLambdaBasicExecutionRole
в этом примере.