将Lambda和RDS放在API网关后面的默认VPC中?

时间:2016-09-29 14:24:35

标签: amazon-web-services aws-lambda

我正在尝试使用以下架构:

Route53< - > API网关< - > Lambda< - > RDS和DynamoDB。

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

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

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

我知道这是一个理论问题 - 文件让我感到困惑,没有明确提到不能做的事情!

1 个答案:

答案 0 :(得分:2)

  

从大多数文档来看,我理解的是Lambda是由   默认情况下在默认VPC中启动,可以从那里访问互联网   没有资源在" VPC"。

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

  

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

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

  

即使一切都在默认子网中,我也应该放入我的lambda   通过亚马逊进入互联网访问的私有子网   VPC NAT网关?

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

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

请注意"默认VPC"是您第一次创建AWS账户时为您设置的VPC的术语。您可以在VPC服务控制台中的帐户中看到此VPC。除了使用默认设置为您创建之外,您应该将其视为帐户中的另一个VPC。当您没有指定VPC时,Lambda不会使用默认VPC,而且您的VPC网络之外的其他服务(如DynamoDB)不会使用它。