Ste*_* Z. 0 amazon-web-services amazon-vpc aws-lambda
我有一个位于 VPC 中的 lambda 函数,具有以下输入/输出绑定规则。

在函数内部,目标是触发电子邮件,因此如下所示:
const aws = require('aws-sdk');
const ses = new aws.SES({ region: 'us-west-2' });
ses.sendEmail(params, function (err, data) {
if (err) {
console.log(err);
}
});
Run Code Online (Sandbox Code Playgroud)
然而; 当我触发该函数时,没有打印错误,并且任务超时。
原本该函数位于VPC之外,并且可以成功发送电子邮件。
我已经仔细检查了该函数的权限,其中包括 AWSLambdaVPCAccessExecutionRole。
有人知道这里发生了什么事吗?
小智 5
这样做的问题是 lambda 函数的代码没有到达 SES 端点的路径。
解决此问题的最简单方法是让该函数访问 Internet。尽管您授予安全组连接到 Internet 的权限,但无法访问 SES 端点,因为它没有可从中发送请求的公共 IP。
解决这个问题最简单的方法是:
0.0.0.0/0NAT 网关。有关NAT 网关的更多信息
请记住,这样做的优点是允许您的函数访问任何互联网资源,但也有通过公共互联网路由流量的缺点。
该解决方案虽然更干净、更现代,但涉及许多步骤,我建议您坚持使用第一个解决方案。
VPC 终端节点本质上是一种访问 AWS 服务(或来自 AWS Marketplace 的服务)而不让流量离开 VPC 的方法。
这是通过将 VPC 中的私有 IP 分配给该服务的“私有链接”来实现的。
如果您想采用此路径,请从此页面开始阅读接口 VPC 终端节点。
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |