我正在AWS上设置一个简单的NodeJS Lambda函数来发送电子邮件。
以下代码在本地运行时有效。我已经从AWS收到了所有凭据,已验证了发件人和收件人电子邮件,并为我的Lamba授予了对SES的所有权限
const aws = require("aws-sdk");
const config = require('../config')
aws.config.update({
accessKeyId: config.mailUser,
secretAccessKey: config.mailPassword,
region:'us-east-1'
});
const ses = new aws.SES({apiVersion: '2010-12-01'});
const sendEmail = async (mailOptions) => {
const {
from,
to,
subject,
html
} = mailOptions
console.log('foo')
ses.sendEmail({
Source: from,
Destination: {
ToAddresses: [to]
},
Message: {
Subject: {
Data: subject,
Charset: 'UTF-8'
},
Body: {
Html: {
Data: html,
Charset: 'UTF-8'
}
}
}
},
(err, data) => {
console.log('baz')
if (err) {
console.error(err);
} else {
console.log('Email sent:');
console.log(data);
}
});
};
console.log('bar')
module.exports = {
sendEmail
};
似乎ses.sendEmail()
永远不会在功能部署时触发-我在CloudWatch日志中得到了foo
和bar
,但是从未baz
出现。再说一次,如果在本地运行,一切都会顺利运行。
我想念的是什么?
答案 0 :(得分:0)
这是一个很好的解释-显然,您需要包装ses.sendMail
调用以保证它可以与AWS Lambda一起使用。
所有功劳归于https://www.reddit.com/user/jsdfkljdsafdsu980p/和https://www.reddit.com/user/Enoxice/