AWS Lambda 函数无法调用同一 VPC 中的另一个 Lambda 函数

Mal*_* Gk 9 amazon-web-services aws-lambda

我创建了 1 个10.5.0.0/16具有 2 个子网 ( 10.5.1.0/24、10.5.4.0/24) 的 VPC。

我创建了一个安全组:

入境规则:

Type Protocol   Port   range   Source      Description - optional
All  traffic    All    All    0.0.0.0/0    allowing traffic from same security group
All  traffic    All    All    ::/0         allowing traffic from same security group
Run Code Online (Sandbox Code Playgroud)

出境规则:

Type Protocol   Port   range   Source      Description - optional
All  traffic    All    All    0.0.0.0/0    allowing traffic from same security group
All  traffic    All    All    ::/0         allowing traffic from same security group
Run Code Online (Sandbox Code Playgroud)

现在,我创建了 2 个具有适当 IAM 角色(其中包含调用策略)的 Lambda 函数。这 2 个 Lambda 函数位于相同的 VPC、子网和安全组中。

情况1:

  • 当 Lambda 函数未附加 VPC 子网和安全组时,我能够从 Lambda 1 成功调用 Lambda 2

案例2:

  • 当 Lambda 1 位于同一 VPC 中时,我无法从 Lambda 1 调用 Lambda 2

我想我错过了一些东西,但我无法弄清楚。有什么建议么?

Mar*_*cin 12

我想我错过了一些东西,但我无法弄清楚

不幸的是,调用 lambda 的唯一方法是通过公共 lambda 服务端点。由于 VPC 中的 lambda 函数没有互联网访问权限,也没有公共 IP,因此您无法在无法访问互联网的情况下从 VPC 中的另一个 lambda 函数调用一个 lambda 函数。来自文档:

将功能连接到公共子网并不为其提供Internet 访问权限或公共 IP 地址。

遗憾的是,它们位于同一 VPC 甚至同一子网中这一事实是无关紧要的。

要解决此问题,调用函数必须能够访问互联网,因为 lambda 服务没有 VPC 接口端点。这可以通过将其放置在私有子网中并使用具有正确配置的路由表的NAT 网关/实例来提供访问来实现。

  • 我相信这个信息不再正确,AWS现在也为其Lambda服务提供[VPC端点](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html) 。 (8认同)