Simple Email Service (Amazon SES(
我有以下代码。 如果我从 aws ec2 实例或我的工作站使用它,它可以完美运行。 但是,一旦我将其添加到我在 AWS VPC 内部处理的 lambda 函数中,对我的 ses.sendEmail(( 的回调就永远不会被调用。 我在 CloudWatch 日志中从未看到该函数的"sendEmail 函数错误"或"发送电子邮件函数成功"控制台.log((,并且我的 lambda 函数在超时期限结束时超时。 我不知道我还能做什么。
我已经查找了我可能需要添加的任何 IAM 角色或策略,找不到任何提及它们或要添加的角色或策略。
已尝试将策略"AmazonSESFullAccess"添加到函数的 IAM 角色。仍然超时。
let aws = require('aws-sdk')
, ses = new aws.SES({ apiVersion: '2010-12-01', region: 'us-west-2' })
;
sendEmail({
To : [ 'anEmail@someone.com' , 'anotherEmail@somewhereElse.com'],
From: 'ourSupportEmail@whereIWork.com',
Subject: 'Sending An Email Out',
Body: `<html> A Buch of HTML Here</html>`
}, function(err, result){
if(err){
console.error('SendEmail Error', err);
} else {
console.log('SendEmail Result', result);
}
});
function sendEmail(emailObj, cb){
emailObj.To.push('myEmail@whereIWork.com');
let mailData = {
Source: emailObj.From,
Destination: { ToAddresses: emailObj.To },
Message: {
Subject: {
Data: emailObj.Subject
},
Body: {
Html: {
Data: emailObj.Body
}
}
}
}
console.log('sending Email', JSON.stringify(mailData)); //see in Cloudwatch Logs! YEAH!!!
ses.sendEmail(mailData, function(err, data){
if(err){
console.log('sendEmail Function Error', JSON.stringify(err)); // never see in cloudwatch logs, WHAT??
cb(err);
} else {
console.log('sendEmail Function Success', JSON.stringify(data)); // never see in cloudwatch logs, WHAT??
cb(null, data);
}
});
}
您的 lambda 是在 VPC 中设置的,在这种情况下,无法访问互联网,因此也无法访问 AWS API。
如果您让 lambda 运行足够长的时间 - 调用回调时会出现connection timeout
错误。
请关注我的详细回答 这里.