我正在尝试使用以下架构:
Route53< - > API网关< - > Lambda< - > RDS和DynamoDB。
我对这里的一些网络方面感到困惑!
从大多数文档中,我理解的是默认情况下Lambda默认启动,可以从那里访问互联网,但“VPC”中没有资源。第二个VPC(引号中)是指大多数讨论中的非默认VPC。但不清楚的是,如果我将Lambda和RDS都置于默认VPC,lambda在公共子网中使用--vpc-config info和RDS在私有子网中,我的Lambda会有互联网连接吗?
即使一切都在默认子网中,我是否应该将我的lambda函数放入通过Amazon VPC NAT网关访问Internet的私有子网中?
我知道这是一个理论问题 - 文件让我感到困惑,没有明确提到不能做的事情!
答案 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)不会使用它。