我们使用弹性beantalk在EC2之外运行我们的主应用程序,该VPC中也有一个RDS实例。这些实例具有公共IP,因此它可以使用标准的Internet网关访问Internet。那里没问题。
现在,我创建了一个lambda函数,并将其与与EC2实例所在的3个可用区相对应的3个子网相关联。一切仍然很好。我的lambda可以很好地连接到那些资源。
我的问题是我需要我的lambda才能访问互联网。通常,我会将其所在的子网路由到0.0.0.0/0并通过NAT网关将其路由出去。但是,由于VPC子网中的EC2和RDS实例使我的lambda与具有公共IP的IP地址相关联,从而使NAT网关中断了它们的Internet连接。我应该如何在不破坏其他Ec2实例的IGW的情况下为我的Lambda提供互联网访问权限?
我当时正在考虑在3个可用区中创建3个新子网,并将其与我的lambda函数相关联,在每个可用区子网中创建NAT网关,并为每个子网创建相应的路由。如果这样做,我的lambda仍然可以访问其他子网中的EC2 \ RDS实例吗?我有一个lambda sg和一个ec2 sg,并且该lambda sg被允许访问ec2 sg。希望这有道理!
答案 0 :(得分:0)
由于无法将公共IP地址附加到Lambda功能,因此您必须在专用子网中启动它们,并将Internet流量转发到NAT网关/实例,以使您的功能访问Internet。
您似乎仅在VPC中创建了公共子网。正如您已经建议的那样,您需要创建承载lambda函数的专用子网。
私有子网RT
0.0.0.0/0-> NAT GW
公共子网RT
0.0.0.0/0-> IGW