简体   繁体   English

使用Node.js处理程序发送和发送电子邮件时出现AWS Lambda NetworkingError

[英]AWS Lambda NetworkingError when sending and email with a Node.js handler

I am trying to send an email from a Lambda Node.js application: 我正在尝试从Lambda Node.js应用程序发送电子邮件:

mail-service.js mail-service.js

const ses = new aws.SES({
   region: 'eu-west-1'
});

exports.send = (to, subject, text) => {
    const deferred = Q.defer();
    const eParams = {
        Destination: {
            ToAddresses: [to]
        },
        Message: {
            Body: {
                Text: {
                    Data: text
                }
            },
            Subject: {
                Data: subject
            }
        },
        Source: to
    };
    console.log("Sending mail %s", JSON.stringify(eParams));
    const email = ses.sendEmail(eParams, function(err, data){
        if(err){
            deferred.reject(err);   
        } 
        else {
            deferred.resolve(data);
        }
    });
    return deferred.promise;
}

When this service is called it throws at NetworkingError: 调用此服务时,它将引发NetworkingError:

index.js: index.js:

    mailService.send(process.env.EMAIL_TO, subject, text)
    .then( (response) => {
        console.log("SES response: %s", response);
    })
    .fail( (err) => {
        console.log("SES err: %s", err);  
    });

Error: SNS err: NetworkingError: connect ECONNREFUSED 127.0.0.1:8000 错误: SNS err: NetworkingError: connect ECONNREFUSED 127.0.0.1:8000 错误: SNS err: NetworkingError: connect ECONNREFUSED 127.0.0.1:8000

How can I fix it? 我该如何解决?

Notice I have configured a IAM policy associated to the lambda's role to allow sending emails: 注意,我已经配置了与lambda角色关联的IAM策略,以允许发送电子邮件:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "xxxxxxxxxx",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

The problem was there was a dev profile that configured AWS sdk to work with a local DynamoDB: 问题在于存在一个配置文件,该配置文件将AWS sdk配置为与本地DynamoDB一起使用:

AWS.config.update({
  region: "eu-west-2",
  endpoint: "http://localhost:8000"
});

I removed the endpoint key and now it works. 我删除了端点密钥,现在可以使用了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM