带有RDS和Internet连接的VPC中的AWS Lambda

问题描述 投票:0回答:1

我在新创建的VPC中设置了Aurora数据库(已配置),并且没有公共可访问性。由于我想在VPC中运行Lambda函数,同时能够访问RDS实例以及Internet,我更改了RDS实例的路由表,以允许来自我放置在公有子网中的NAT网关的流量在同一个VPC中。

对于Lambda函数本身,我创建了一个单独的私有子网,也只允许来自路由表中NAT网关的流量。我将此子网和VPC分配给Lambda设置中的Lambda函数。互联网连接适用于此配置,但我无法访问数据库。这就是我遵循这篇文章(https://serverfault.com/questions/941886/connect-an-aws-lambda-function-triggered-by-api-gateway-to-aurora-serverless-mys)并将Lambda子网的IP CIDR添加到RDS实例的安全组(称为rds-launch-wizard)的原因。

但是,Lambda函数能够与公共Internet进行交互,但无法连接到RDS实例(超时)。我的想法已经不多了,这里有什么问题?

aws-lambda amazon-rds amazon-vpc
1个回答
1
投票

配置应该是:

  • 具有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实例(直接)和Internet(通过NAT网关)进行通信。

请注意,您没有指示“来自NAT网关的流量”。相反,您将Internet连接的流量定向到NAT网关。也没有“RDS实例的路由表”之类的东西,因为路由表与子网相关联,而不是与RDS相关联。

© www.soinside.com 2019 - 2024. All rights reserved.