Amazon web services 如何让2个Lambda函数相互通信。。当其中一个没有';你不能上网吗?

Amazon web services 如何让2个Lambda函数相互通信。。当其中一个没有';你不能上网吗?,amazon-web-services,aws-lambda,amazon-vpc,Amazon Web Services,Aws Lambda,Amazon Vpc,这是我的东西: 我有两个功能A和B: A位于AWS提供的默认Lambda VPC中,具有开放的internet访问 入站和出站 B位于具有RDS DB的特定VPC中,具有入站访问权限,但没有 互联网接入(无NAT网关) 过程如下: A向B发送数据(通过API网关),B将数据插入RDS数据库 B应该发送确认(通过另一个API网关)来确认它是否正常,但A一直收到502错误(我猜是超时) 起初我认为这是一个愚蠢的Lambda代理输出格式错误,但现在我意识到它比这更严重。 我正在寻找一些简单/便

这是我的东西: 我有两个功能A和B:

  • A位于AWS提供的默认Lambda VPC中,具有开放的internet访问 入站和出站
  • B位于具有RDS DB的特定VPC中,具有入站访问权限,但没有 互联网接入(无NAT网关)
过程如下:

  • A向B发送数据(通过API网关),B将数据插入RDS数据库
  • B应该发送确认(通过另一个API网关)来确认它是否正常,但A一直收到502错误(我猜是超时)
起初我认为这是一个愚蠢的Lambda代理输出格式错误,但现在我意识到它比这更严重。
我正在寻找一些简单/便宜的出路(我是一个有预算的学生,这是一个PoC)。这个问题有什么简单的解决办法吗?

遗憾的是,他们中没有一个人可以上网

在默认VPC中“放置”功能A不会为其提供internet访问或公共IP:。从

将函数连接到公共子网不会为其提供internet访问或公共IP地址

如果函数A不在VPC中,它可以调用B。在这种情况下,它将可以访问internet,并且能够直接调用函数B或调用API网关端点。但它不能在公共子网中。如果您仍然想将其放置在VPC中,那么它应该位于私有子网(而不是公共子网)中,并且您应该使用API网关的私有端点。这样的lambda将无法使用NAT网关调用公共API


函数B将能够在您使用的条件下调用API网关。

对不起,我可能不清楚。我的意思是功能A不在我的VPC中,它可以访问互联网,这是肯定的(我已经使用了几个星期了)。现在,即使功能A不在VPC中,私有端点解决方案也能工作吗?@Fares Hi。要使用API网关专用端点,函数A必须位于VPC中。只能从专有网络访问专用端点。但是功能B已经在某个专有网络的私有子网中。因此,如果将私有端点放置在同一VPC或子网中,它应该能够访问私有端点。因此,私有端点必须与我的函数B位于同一VPC/子网中,对吗?是的。关于私有端点的更详细信息是。您是否可以更改为Lambda-A通过
invoke()
API调用调用Lambda-B,而不是通过API网关调用?然后它可以将信息作为返回值传回。返回值不需要访问Internet吗?响应将通过
Invoke()
API调用响应中的
payload
字段返回。Lambda-A需要Internet访问,但不需要Lambda-B。但是,Lambda-A需要等到Lambda-B完成,因此在Lambda-B运行时,您需要支付两个Lambda函数的费用。