我正在尝试使用以下架构:
Route53 < - > API网关< - > Lambda < - > RDS和DynamoDB .
我对这里的一些网络方面很困惑!
从大多数文档来看,我所理解的是Lambda默认在默认VPC中启动,可以从那里访问互联网,但“VPC”内没有资源 . 第二个VPC(引号中)是指大多数讨论中的非默认VPC . 但不清楚的是,如果我将Lambda和RDS都置于默认VPC,lambda在公共子网中使用--vpc-config info和RDS在私有子网中,我的Lambda会有互联网连接吗?
即使一切都在默认子网中,我是否应该将我的lambda函数放入可通过Amazon VPC NAT网关访问Internet的私有子网?
我知道这是一个理论问题 - 文件让我感到困惑,没有明确提到不能做的事情!
1 回答
那是不对的 . 默认情况下,Lambda根本不在VPC中启动 . 或者,如果它位于VPC中,则它是您无法看到的,因为它在您的AWS账户中不存在 .
不,即使在公有子网中,您的Lambda功能也无法访问Internet . 这是因为永远不会为其分配公共IP地址 . 将Lambda函数放入VPC后,您必须拥有NAT网关,以便Lambda函数访问VPC之外的任何内容 .
是的,这是提供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)不会使用它 .