【发布时间】:2015-12-13 00:49:33
【问题描述】:
我在 AWS Lambda 上创建了一个非常基本的简单函数,用于接受表单提交。
该功能的一部分是将电子邮件发送给特定的人,非常简单。我正在尝试使用 AWS SES 来做到这一点。我已经设置了 SES 服务等,并验证了我希望发送到的帐户并能够发送测试电子邮件。所有作品!
现在,当我尝试在 AWS Lambda 中执行相同操作并使用 aws sdk 时,它不会发送电子邮件。我没有收到错误或任何东西。
以下是我用于 AWS Lambda 函数的代码。
有没有人有使用 lambda 和通过 ses 通过 lambda 函数发送电子邮件的经验?或者甚至只是使用 node.js aws sdk 很可能会有所帮助。
var aws = require('aws-sdk');
var ses = new aws.SES({
accessKeyId: 'myAccessKey',
secretAccesskey: 'mySecretKey',
region: 'eu-west-1'
});
exports.handler = function(event, context) {
console.log("Incoming: ", event);
var output = querystring.parse(event);
var eParams = {
Destination: {
ToAddresses: ["toAddress@email.com"]
},
Message: {
Body: {
Text: {
Data: output.Key1
}
},
Subject: {
Data: "Ses Test Email"
}
},
Source: "mysource@source.com"
};
console.log('===SENDING EMAIL===');
var email = ses.sendEmail(eParams, function(err, data){
if(err) console.log(err);
else {
console.log("===EMAIL SENT===");
console.log(data);
}
});
console.log("EMAIL CODE END");
console.log('EMAIL: ', email);
context.succeed(event);
};
【问题讨论】:
-
不需要访问密钥。推荐的方法是使用 IAM 角色来管理访问。
-
您可以从客户端执行此操作吗?
-
没试过但不明白为什么?
-
是的,我第二个@swogger,总是应该尽可能使用角色,这会降低密钥被暴露的风险,因为控制台上的纯文本 javascript 比打包的 lambda 代码风险更大。
标签: node.js amazon-web-services aws-sdk aws-lambda