【发布时间】:2020-03-25 11:43:38
【问题描述】:
我正在尝试在aws-lambda 上使用amazon-ses 服务,以便向经过验证的收件人发送电子邮件。
我正在关注this 简单教程,其中显示了一个简单的nodejs 函数:
var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-east-1'});
exports.handler = (event, context, callback) => {
var params = {
Destination: {
ToAddresses: ["recipientEmailAddress"]
},
Message: {
Body: {
Text: { Data: "Test" }
},
Subject: { Data: "Test Email" }
},
Source: "sourceEmailAddress"
};
ses.sendEmail(params, function (err, data) {
callback(null, {err: err, data: data});
if (err) {
console.log(err);
context.fail(err);
} else {
console.log(data);
context.succeed(event);
}
});
};
以下策略是 lambda 角色的一部分:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail"
],
"Resource": "*"
}
]
}
由于某种原因,此 lambda 函数无法发送任何电子邮件,并且它未在函数的 CloudWatch 日志组内提供任何状态信息:
REPORT RequestId: XXX Duration: 534.59 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 117 MB
任何帮助将不胜感激。
编辑:我在 sandbox-mode 工作,source 和 recipient 都是来自代码中提到的地区的经过验证的电子邮件(它是也反映在日志中 - 没有抛出错误)。
我在 SO 中找到了以下问题 - 但没有与我的案例相关的答案:
Sending email via AWS SES within AWS Lambda function
【问题讨论】:
-
将
callback(null, {err: err, data: data});放在最后,在else块之后,看看会丢弃什么。 -
函数好像超时了,你是在VPC中启动的吗?尝试在没有 VPC 的情况下启动它?
-
No Timeout - 函数在 534.59 [ms] 后成功返回(参见上面的日志)。在没有 VPC 的情况下启动。
-
这里有什么解决方案吗?我想不会……
标签: amazon-ses aws-lambda nodejs amazon-web-services aws-lambda amazon-iam amazon-ses