【发布时间】:2021-10-03 15:15:29
【问题描述】:
我有一个由 AWS SNS 主题触发的 lambda 函数。该函数获取从 SNS 事件传入的信息,并使用 Nodemailer 向用户发送电子邮件。
当我在本地运行我的 lambda 函数时,它可以正常工作。但是一旦部署,我的 CloudWatch 日志中就会出现以下错误:
ValidationException: 1 validation error detected: Value '[]' at 'names' failed to satisfy constraint: Member must have length greater than or equal to 1.
at Request.extractError (/var/task/node_modules/aws-sdk/lib/protocol/json.js:52:27)
at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:690:12)
at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18) {
code: 'ValidationException',
time: 2021-10-01T18:02:30.538Z,
requestId: '023d6346-a49a-4dc6-a07f-92bd578a3601',
statusCode: 400,
retryable: false,
retryDelay: 94.04142545650443
}
这是我的 lambda 函数的代码:
const pug = require('pug');
const {newTransporter} = require('./handlers/emailTransporter');
exports.handler = async (event, context) => {
const message = event.Records[0].Sns.Message;
const mailAddressObj = {
'userEmail' : message.mail.commonHeaders.replyTo,
'clientEmail' : message.mail.commonHeaders.to[0],
}
const {userEmail, clientEmail} = mailAddressObj;
const html = pug.compileFile('./views/bounceNotificationEmail.pug');
const mailOptions = {
from: 'sendingEmail@email.com',
to: 'clientEmail,
subject: `Subject Header`,
html: html({
client_email: clientEmail
}),
};
try {
let transporter = await newTransporter();
let info = await transporter.sendMail(mailOptions);
console.log("Message sent: %s", info.messageId);
return info;
}
catch (e) {
console.log(e, 'error')
}
return console.log(mailAddressObj);
};
【问题讨论】:
标签: node.js amazon-web-services aws-lambda nodemailer