微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 AWS lambda 函数中添加 SES 作为目标

如何解决在 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 举报,一经查实,本站将立刻删除。