【发布时间】:2019-07-27 22:04:21
【问题描述】:
我在新创建的 VPC 中设置了一个 Aurora 数据库(已配置),并且没有公共可访问性。由于我想在 VPC 中运行一个能够同时访问 RDS 实例和 Internet 的 Lambda 函数,我将 RDS 实例的路由表更改为允许来自我放置在公共子网中的 NAT 网关的流量在同一个 VPC 中。
对于 Lambda 函数本身,我创建了一个单独的私有子网,也只允许来自路由表中 NAT 网关的流量。我在 Lambda 设置中将此子网和 VPC 分配给 Lambda 函数。 Internet 连接在此配置下工作正常,但我无法访问数据库。这就是我关注这篇文章 (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 函数能够与公共互联网交互,但无法连接到 RDS 实例(超时)。我的想法不多了,这里有什么问题?
【问题讨论】:
-
我看不出这如何解决我的问题。为什么将 lambda 函数放入两个子网(私有和公共)中,而不是像我上面的链接中描述的那样创建单独的私有子网?如何在您的示例中限制数据库访问(私有子网访问)?
-
有两个独立的子网:一个公共子网和一个私有子网。公共负责通过 Internet 网关访问 Internet,私有负责通过 NAT 网关访问 VPC
-
我将 Lambda 放在两者上,因为它需要访问 Internet 和您的 RDS 实例(这也是您的问题)。公共子网将请求路由到其他 AWS 服务/互联网,私有子网将请求路由到 VPC(如 RDS、ElasticSearch 等)
-
感谢 ThalesMinussi 的快速回复。请查看aws.amazon.com/premiumsupport/knowledge-center/… - 当您按照说明(包括 Lambda 函数只能与私有子网关联)时如何配置您的 VPC?
-
@ThalesMinussi 公共子网中的 Lambda 函数无法与 Internet 通信。它没有收到公共 IP 地址。
标签: aws-lambda amazon-rds amazon-vpc