我正在尝试调用从VPC Lambda函数发送SES邮件的No VPC Lambda函数。但是,SES仍然无法与Internet连接。
在这里,我不想附加NAT。因此,我尝试调用NO VPC Lambda函数。
exports.handler = (event, context, callback) => {
const fruits = ["Banana", "Orange", "Apple", "Mango"];
var params = {
FunctionName: 'sendMail',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: JSON.stringify({ "fruits" : fruits })
};
lambda.invoke(params, function(err, data) {
if (err) {
context.fail(err);
} else {
context.succeed(data.Payload);
}
})
}
const charset = 'UTF-8';
exports.handler = async (event, context, callback) => {
const message = JSON.stringify(event, null, 2);
const params = {
Source: source,
Destination: {
ToAddresses: [recipient.email]
},
Message: {
Subject: {
Data: "Example",
Charset: charset
},
Body: {
Text: {
Data: message,
Charset: charset
},
Html: {
Data: message,
Charset: charset
}
}
}
};
try {
await ses.sendEmail(params).promise();
callback(null, "Email sent successfully");
}
catch (ex) {
console.log('Unhandled Exception', ex);
}
};
错误
任务在20.02秒后超时
答案 0 :(得分:0)
在这里,我不想附加NAT。所以我尝试不调用VPC Lambda 功能。
那是不可能的。当前,VPC内部的Lambda函数可以访问VPC外部的任何内容的唯一方法是通过NAT。
还请注意,您关于第一个功能“需要能够访问第二个功能”的说法是错误的。 Lambda函数从不直接相互访问。第一个功能需要访问AWS Lambda API,它将用于触发第二个功能的调用。
答案 1 :(得分:-1)
您可以使用
检查发生了什么const sendEmail = ses.sendEmail(params).promise();
sendEmail
.then(data => {
console.log("email submitted to SES", data);
})
.catch(error => {
console.log(error);
});
如果仍然遇到问题,可以检查以下内容:-
尝试增加lambda的超时时间。
您是否提出了禁用SES沙箱的请求。
如果未禁用,请尝试使用经过验证的电子邮件ID。