这个错误通常是由于使用AWS Cognito时未正确配置自定义电子邮件发送 Lambda 函数引起的。在Lambda函数定义中,必须使用以下格式来定义输入(event)和回复(callback):
exports.handler = (event, context, callback) => {
// your code here
callback(null, {some: 'response'});
}
同时,在Lambda函数部署之前,也需要确保已经保存了Lambda函数代码。如果您的Lambda函数已配置并保存,但是仍然不起作用,请检查Lambda函数是否具有必需的AWS IAM权限。
如果Lambda函数本身没有问题,您还可以尝试使用AWS Cognito自行创建电子邮件发送器。以下是创建自定义电子邮件发送器的示例代码:
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-west-2'
});
exports.handler = (event, context, callback) => {
var params = {
Destination: {
ToAddresses: ['destination_email@example.com']
},
Message: {
Body: {
Html: {
Data: 'This is the body of the email.'
}
},
Subject: {
Data: 'Test Email'
}
},
Source: 'source_email@example.com'
};
ses.sendEmail(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
context.done(null, 'Finished Sending Email');
});
};
在这个例子中,假设您要使用AWS SES发送电子邮件。如果您的AWS帐户还没有启用SES服务,请在AWS控制台中启用它。此外,您必须更新Lambda函数的IAM角色,以便它具有发送电子邮件的权限。