Amazon web services 具有Internet网关和lambda的NAT网关

Amazon web services 具有Internet网关和lambda的NAT网关,amazon-web-services,aws-lambda,serverless-framework,Amazon Web Services,Aws Lambda,Serverless Framework,我们使用elastic beanstalk在EC2之外运行我们的主应用程序,我们在该VPC中也有一个RDS实例。这些实例具有公共IP,因此它可以使用标准internet网关访问internet。没问题 现在我已经创建了一个lambda函数,将它与EC2实例所在的3个AZ对应的3个子网相关联。一切都还不错。我的lambda可以很好地连接到这些资源 我的问题是我需要我的lambda来上网。通常我会将它所在的子网路由到0.0.0.0/0,然后通过NAT网关将其路由出去。但是,由于VPC子网中的EC2和

我们使用elastic beanstalk在EC2之外运行我们的主应用程序,我们在该VPC中也有一个RDS实例。这些实例具有公共IP,因此它可以使用标准internet网关访问internet。没问题

现在我已经创建了一个lambda函数,将它与EC2实例所在的3个AZ对应的3个子网相关联。一切都还不错。我的lambda可以很好地连接到这些资源

我的问题是我需要我的lambda来上网。通常我会将它所在的子网路由到0.0.0.0/0,然后通过NAT网关将其路由出去。但是,由于VPC子网中的EC2和RDS实例my lambda与公共IP关联,因此将NAT网关置于其internet连接中断。在不破坏其他Ec2实例的IGW的情况下,我应该如何让lambda访问互联网


我在考虑在3个AZ中创建3个新的子网,将其与我的lambda函数相关联,在每个AZ子网中创建一个NAT网关,为每个子网创建相应的路由。如果我这样做了,我的lambda还能访问其他子网内的EC2\RDS实例吗?我有一个lambda sg和一个ec2 sg,允许lambda sg访问ec2 sg。希望这是有意义的

由于无法将公共IP地址附加到Lambda函数,您必须在私有子网中启动它们,并将internet流量转发到NAT网关/实例,以便让您的函数访问internet

看起来您只在VPC中创建了公共子网。正如您已经建议的,您需要创建承载lambda函数的私有子网

  • 每个AZ创建1个公用子网和1个专用子网
  • 在公共子网中启动NAT网关
  • 更新专用子网的路由表,并将所有互联网流量转发至NAT GW
专用子网RT

0.0.0.0/0-->NAT GW

公共子网RT

0.0.0.0/0-->IGW