如何将 lambda 函数(在 api 网关后面)连接到 vpc 中的私有 rds

how to connect a lambda function (behind an api gateway) to a private rds in a vpc

我有以下 AWS VPC 配置:

Cloudfrontload balancer 前面。 load balancer 链接到 public subnets,我的 RDS 数据库 位于 private subnets.

我想要完成的是:

据我了解,第一步是为 lambda 函数创建一个 IAM 角色,使其只能由上述 IP 地址访问。

现在,从连接到 API 网关的 lambda 访问私有 RDS 的最佳方法是什么?尤其是在不使用 Nat Gateway 的情况下,因为与之相关的疯狂成本。

有人能帮我弄清楚怎么做吗,我指的是对如何做的高层次理解?

正如 Norman 在他们的评论中所说,您可以在 API 网关中控制对 API 的访问,并将其限制为某些 IP 地址,使用 API Gateway Resource Policies。这将同时控制对 API.

背后的 Lambda 的访问

然后您可以编辑 Lambdas Configuration -> VPC 设置并将其添加到有权访问您的 RDS 数据库的子网中(并将其放在与数据库相同的子网中,或其他具有访问权限的子网中)到 RDS 子网)。要将您的 Lambda 连接到 VPC,Lambda 执行角色将需要以下权限

ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface

例如,它们包含在托管策略中 AWSLambdaVPCAccessExecutionRoleHere 您可以阅读有关为 VPC 访问配置 Lambda 的更多信息。