【问题标题】:Putting both Lambda and RDS in default VPC behind an API Gateway?将 Lambda 和 RDS 都放在 API 网关后面的默认 VPC 中?
【发布时间】:2017-02-07 22:31:53
【问题描述】:

我正在尝试建立一个架构:

Route53 API 网关 Lambda RDS 和 DynamoDB。

我对这里的一些网络方面感到困惑!

从大多数文档中,我了解到 Lambda 默认在默认 VPC 中启动,可以从那里访问互联网,但“VPC”内没有资源。在大多数讨论中,第二个 VPC(带引号)指的是非默认 VPC。但不清楚的是,如果我将 Lambda 和 RDS 都放在默认 VPC 中,lambda 放在带有 --vpc-config 信息的公共子网中,RDS 放在私有子网中,我的 Lambda 会有互联网连接吗?

即使一切都在默认子网中,我是否应该将我的 lambda 函数放入通过 Amazon VPC NAT 网关访问 Internet 的私有子网中?

我知道这是一个理论问题 - 文档没有明确提及不能做什么,这让我感到困惑!

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    从大多数文档中,我了解到 Lambda 是由 默认在默认 VPC 中启动,可以从那里访问互联网,但 “VPC”内没有资源。

    这是不正确的。默认情况下,Lambda 根本不在 VPC 中启动。或者,如果它位于 VPC 中,则它位于您无法看到的 VPC 中,因为它在您的 AWS 账户中不存在。

    如果我将 Lambda 和 RDS 都放在默认 VPC 中,lambda 放在 带有 --vpc-config 信息的公共子网和私有子网中的 RDS,将 我的 Lambda 有互联网连接吗?

    不,您的 Lambda 函数将无法访问 Internet,即使在公共子网中也是如此。这是因为它从未被分配公共 IP 地址。将 Lambda 函数放入 VPC 后,您必须拥有一个 NAT 网关,以便 Lambda 函数访问 VPC 之外的任何内容。

    即使一切都在默认子网中,我应该把我的 lambda 通过 Amazon 访问具有 Internet 访问权限的私有子网 VPC NAT 网关?

    是的,这是为 Lambda 函数提供访问 VPC 和 VPC 外部资源的正确方法。


    另请注意,DynamoDB(和 AWS API)不在您的 VPC 中运行。因此,如果您在需要访问 DynamoDB 或通过 AWS API 访问的任何其他内容的 VPC 中放置一个 Lambda 函数,则必须向 VPC 添加一个 NAT 网关。


    请注意,“默认 VPC”是指在您首次创建 AWS 账户时为您设置的 VPC。您可以在 VPC 服务控制台的账户中看到此 VPC。除了使用默认设置为您创建之外,您应该将其视为您账户中的另一个 VPC。当您未指定 VPC 时,Lambda 不会使用 Default VPC,并且您的 VPC 网络之外存在的其他服务(例如 DynamoDB)也不会使用默认 VPC。

    【讨论】:

    • 感谢您的回复!这对我来说是一个很好的共鸣板!但随之带来了更多的问题。使用 NAT,路由如何工作? 1. 通常,NAT 只会将传出流量路由到 Internet,而不允许传入流量。从 API Gateway 传入的 REST 调用会发生什么。 2. API 网关会将不同的 REST 方法路由到同一个互联网网关到同一个 NAT,然后路由到不同的 lambda 函数,每个函数都可以访问不同的 vpc 或非 vpc 资源。 lambda 子网中的安全组、路由表等配置过多?有什么例子吗?
    • 我相信你想多了。 NAT 网关仅用于来自您的 VPC 中的私有子网的出站流量。 API 网关与 Lambda 通信的工作方式不会因 NAT 网关的缺失或存在而改变。另请注意,API Gateway 存在于您的 VPC 之外,并直接通过 AWS API 调用您的 Lambda 函数。
    猜你喜欢
    • 2021-03-14
    • 2020-03-22
    • 1970-01-01
    • 2020-09-08
    • 2019-09-18
    • 2022-12-05
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多