【问题标题】:How to connect AWS Lambda and RDS in VPC如何在 VPC 中连接 AWS Lambda 和 RDS
【发布时间】:2019-06-30 15:55:20
【问题描述】:

如何创建此场景:

- A private subnet-1
- Lambda in subnet-1
- RDS in subnet-1(same subnet with Lambda)
- Both inside the same VPC. 

以上可行吗?它是一个好的架构吗?

我已经尝试实现它,唯一的问题是,它超时了。但是,当 Lambda 不在子网 1 之外时,它工作正常。

我的理解是,由于 RDS 和 Lambda 都在同一个子网中,它们应该可以轻松通信。

【问题讨论】:

  • AWS Lambda 对等到 VPC 在大多数情况下是不可取的,因为创建网络接口是冷启动的一部分。在函数冷启动中最多可以导致 10 秒。
  • 只要它们在同一个 VPC 中,在同一个子网中并不真正相关。请在您的问题中提供分配给 RDS 实例的安全组规则。
  • 相同的 vpc 子网有一个默认的本地路由,允许它们到达整个 VPC,检查您的 RDS 和 lambda 安全组,还检查您是否没有将 RDS dns 名称解析为公共 ip如果 lambda 试图访问 dns 的公共 ip 并获得连接超时,而不是私有的,这是有意义的。
  • 增加超时设置是否有效?当前值是多少?

标签: amazon-web-services aws-lambda amazon-rds amazon-vpc aws-security-group


【解决方案1】:

将 Amazon RDS 和 AWS Lambda 函数连接到同一个私有子网是完全可以的。

注意事项:

  • 如果 Lambda 函数还需要访问 Internet(例如调用 Amazon S3),则 VPC 还需要公共子网中的 NAT 网关。
  • Lambda 函数应通过 DNS 名称 引用 RDS 实例。这应该解析为 VPC 本地的私有 IP 地址。
  • 应为 Lambda 函数分配一个安全组(例如 Lambda-SG)
  • 与 RDS 实例 (RDS-SG) 关联的安全组应允许来自 Lambda-SG 的适当端口(例如,3306 用于 MySQL)上的入站访问。

也就是说,RDS-SG 应该允许来自Lambda-SG 的入站连接。

【讨论】:

  • 如果他们不在同一个子网怎么办?是否适用相同的 SG 规则?
  • 同一VPC内的所有资源都可以相互通信。
猜你喜欢
  • 2018-07-10
  • 2019-07-27
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 2019-09-18
  • 2018-11-16
相关资源
最近更新 更多