如何将 lambda 函数(在 api 网关后面)连接到 vpc 中的私有 rds
how to connect a lambda function (behind an api gateway) to a private rds in a vpc
我有以下 AWS VPC 配置:
- 2 public 个子网
- 2 个私有子网
Cloudfront 在 load balancer
前面。 load balancer
链接到 public subnets
,我的 RDS 数据库 位于 private subnets
.
我想要完成的是:
- 创建一个 API 网关(public可以访问) 但仅限于可以访问它的特定 IP 地址。
API Gateway
连接到 lambda function
,当 called/triggered 时,函数必须更新我的(私有)RDS Postgres 实例的一些 table 数据。
据我了解,第一步是为 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
例如,它们包含在托管策略中 AWSLambdaVPCAccessExecutionRole
。 Here 您可以阅读有关为 VPC 访问配置 Lambda 的更多信息。
我有以下 AWS VPC 配置:
- 2 public 个子网
- 2 个私有子网
Cloudfront 在 load balancer
前面。 load balancer
链接到 public subnets
,我的 RDS 数据库 位于 private subnets
.
我想要完成的是:
- 创建一个 API 网关(public可以访问) 但仅限于可以访问它的特定 IP 地址。
API Gateway
连接到lambda function
,当 called/triggered 时,函数必须更新我的(私有)RDS Postgres 实例的一些 table 数据。
据我了解,第一步是为 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
例如,它们包含在托管策略中 AWSLambdaVPCAccessExecutionRole
。 Here 您可以阅读有关为 VPC 访问配置 Lambda 的更多信息。