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

Adding SES as the destination in an AWS lambda function

通过 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": "*"
        }
    ]
}

功能测试如下:


回应 空

函数日志 开始 RequestId:765f6d27-9810-4d6c-a01b-a883eb429cd8 版本:$LATEST 2021-03-03T15:39:05.849Z 765f6d27-9810-4d6c-a01b-a883eb429cd8 INFO 收到事件:{ key1: 'value1', key2: 'value2', key3: 'value3' } 结束 RequestId:765f6d27-9810-4d6c-a01b-a883eb429cd8 报告 RequestId:765f6d27-9810-4d6c-a01b-a883eb429cd8 持续时间:928.32 毫秒计费持续时间:929 毫秒内存大小:128 MB 使用的最大内存:87 MB 初始化持续时间:449.71 毫秒

请求ID 765f6d27-9810-4d6c-a01b-a883eb429cd8


不幸的是,当我点击添加目的地时,我找不到要选择的 SES 服务。 电子邮件地址已在 SES 中验证。 我还缺少什么? 谢谢

SES 不是受支持的目的地。 Lambda 目标用于将 Lambda 函数的输出发送到另一个服务,而无需在函数中编写代码以直接连接到该服务。

您不需要 Lambda 将任何内容发送到 SES 目的地,因为您已经在代码中通过 ses.sendEmail() 直接发送了请求。