【发布时间】:2017-10-14 20:59:14
【问题描述】:
亚马逊简单电子邮件服务 (Amazon SES)
我有以下代码。如果我从 aws ec2 实例或我的工作站使用它,它会完美运行。但是,一旦我将它添加到我正在 AWS VPC 内部处理的 lambda 函数中,我的 ses.sendEmail() 的回调就永远不会被调用。我从未在 CloudWatch Logs 中看到函数的“sendEmail 函数错误”或“sendEmail 函数成功”console.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);
}
});
}
【问题讨论】:
标签: node.js aws-lambda amazon-iam