如何解决在 AWS lambda 函数中添加 SES 作为目标
通过 API 网关正确创建 REST API 触发器并将其与 lambda 函数链接后,我尝试将 SES 添加为目标。 该功能的目的是通过 SES 服务将在静态网站上的 HTML 联系表单上收到的消息自动转发到电子邮件地址。 根据标题,我创建了一个 lambda 函数,我将在下面展示(只是为了隐私隐藏了域和电子邮件地址)。
var AWS = require('aws-sdk');
var ses = new AWS.SES();
var RECEIVER = 'XXX@gmail.com';
var SENDER = 'XXX@gmail.com';
var response = {
"isBase64Encoded": false,"headers": { 'Content-Type': 'application/json','Access-Control-Allow-Origin': 'XXX.com'},"statusCode": 200,"body": "{\"result\": \"Success.\"}"
};
exports.handler = function (event,context) {
console.log('Received event:',event);
sendEmail(event,function (err,data) {
context.done(err,null);
});
};
function sendEmail (event,done) {
var params = {
Destination: {
ToAddresses: [
RECEIVER
]
},Message: {
Body: {
Text: {
Data: 'name: ' + event.name + '\nphone: ' + event.phone + '\nemail: ' + event.email + '\ndesc: ' + event.desc,Charset: 'UTF-8'
}
},Subject: {
Data: 'Website Referral Form: ' + event.name,Charset: 'UTF-8'
}
},Source: SENDER
};
ses.sendEmail(params,done);
}
已将 SES 的相关权限授予 lambda 函数。
{
"Version": "2012-10-17","Statement": [
{
"Sid": "VisualEditor0","Effect": "Allow","Action": "ses:SendEmail","Resource": "*"
}
]
}
功能测试如下:
响应 空
功能日志 开始请求 ID:765f6d27-9810-4d6c-a01b-a883eb429cd8 版本:$LATEST 2021-03-03T15:39:05.849Z 765f6d27-9810-4d6c-a01b-a883eb429cd8 INFO 收到事件:{ key1: 'value1',key2: 'value2',key3: 'value3' } 结束请求 ID:765f6d27-9810-4d6c-a01b-a883eb429cd8 报告 RequestId:765f6d27-9810-4d6c-a01b-a883eb429cd8 持续时间:928.32 ms 计费持续时间:929 ms 内存大小:128 MB 已用最大内存:87 MB 初始化持续时间:449.71 ms
请求 ID 765f6d27-9810-4d6c-a01b-a883eb429cd8
不幸的是,当我点击添加目的地时,我找不到要选择的 SES 服务。 电子邮件地址已在 SES 中验证。 我还缺少什么? 谢谢
解决方法
SES 不是受支持的目的地。 Lambda 目标用于将 Lambda 函数的输出发送到另一个服务,而无需在函数中编写直接连接到该服务的代码。
您不需要 Lambda 将任何内容发送到 SES 目标,因为您已经通过 ses.sendEmail()
在代码中直接发送了请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。