Aws lambda 专有网络中的AWS Lambda,具有RDS和互联网连接

Aws lambda 专有网络中的AWS Lambda,具有RDS和互联网连接,aws-lambda,amazon-rds,amazon-vpc,Aws Lambda,Amazon Rds,Amazon Vpc,我在一个新创建的VPC中设置了一个Aurora数据库,没有公共可访问性。由于我希望在VPC中运行Lambda功能,该功能既可以访问RDS实例,也可以访问Internet,因此我将RDS实例的路由表更改为允许来自NAT网关的流量,我将NAT网关放置在同一VPC的公共子网中 对于Lambda函数本身,我创建了一个单独的私有子网,也只允许来自路由表中NAT网关的流量。我在Lambda设置中将此子网和VPC分配给Lambda功能。此配置下的internet连接工作正常,但我无法访问数据库。这就是为什么我

我在一个新创建的VPC中设置了一个Aurora数据库,没有公共可访问性。由于我希望在VPC中运行Lambda功能,该功能既可以访问RDS实例,也可以访问Internet,因此我将RDS实例的路由表更改为允许来自NAT网关的流量,我将NAT网关放置在同一VPC的公共子网中

对于Lambda函数本身,我创建了一个单独的私有子网,也只允许来自路由表中NAT网关的流量。我在Lambda设置中将此子网和VPC分配给Lambda功能。此配置下的internet连接工作正常,但我无法访问数据库。这就是为什么我遵循这篇文章,将Lambda子网的IP CIDR添加到称为RDS启动向导的RDS实例的安全组中


尽管如此,Lambda功能仍能够与公共互联网交互,但无法连接到RDS实例。我的想法快用完了,这里怎么了?

配置应该是:

具有NAT网关和Internet网关的公共子网 具有Amazon RDS实例的专用子网 与Lambda函数关联的相同或不同的专用子网 使用路由表配置的专用子网,目的地为0.0.0.0/0,连接到NAT网关

然后考虑安全组:

Lambda函数Lambda SG的安全组,允许所有出站访问 RDS实例RDS-SG的安全组,应允许从相应数据库端口上的Lambda SG进行入站访问 也就是说,RDS-SG允许通过名称从Lambda SG传入流量。安全组中不需要使用CIDR

Lambda功能将通过弹性网络接口ENI连接到专用子网,并能够直接与RDS实例通信,以及通过NAT网关与Internet通信


请注意,您不是在引导来自NAT网关的流量。相反,您正在将绑定到Internet的流量定向到NAT网关。RDS实例的路由表也不存在,因为路由表与子网相关联,而不是RDS。

我看不出这是如何解决我的问题的。为什么要将lambda函数同时放在私有子网和公共子网中,而不按照上面我的链接中所述创建单独的私有子网?在您的示例中,如何限制数据库访问私有子网访问?有两个独立的子网:公共子网和私有子网。公众负责通过互联网网关访问互联网,而私人负责通过NAT网关访问VPC。我将Lambda置于两者之上,因为它需要访问互联网和RDS实例,这也是您的问题。公共子网将请求路由到其他AWS服务/互联网,私有子网将请求路由到专有网络,如RDS、ElasticSearch等,以便您快速回复。请检查-当您按照说明(包括Lambda函数应仅与专用子网关联)操作时,您将如何配置VPC?@ThalesMinussi公用子网中的Lambda函数无法与Internet通信。它没有收到公共IP地址。谢谢John,我已经假设我对安全组有误解。连接现在工作得很好——尽管如此,will还是会进一步提高我的知识以赶上你:John,如果你在教程中一步一步地写下这篇文章,我相信这会让数百人少头疼几个小时。。。已关闭一个生产实例,尝试对其进行排序。谢谢你的帮助❤️