按照本教程,我创建了一个 NAT 网关,删除了互联网
VPC 子网中的网关,并将其替换为 NAT。现在,作为
预计,没有什么可以说入站,但事情可以说出来。
简答
简短的回答是您不应该“杀死 Internet 网关”;这不是您提供的链接中的一个步骤 :) 将 Internet 网关保留在您当前的子网中。您将需要一个公有子网,而将 0.0.0.0/0 路由到 IGW 的公有子网就是您可以使用的一个示例。
所涉及的工作是将您的 NAT 网关放置在公共子网中,将堡垒主机放置在公共子网中,将 lambda 函数放置在私有子网中,将私有子网中的流量路由到公共子网中的 NAT 网关,以及通过将 lambda 函数放入其自己的 lambda 安全组并将 lambda 安全组“列入”保护数据库的安全组的入站规则中,为您的 lambda 函数提供对您的安全组的访问权限。
背景
下面我有一个扩展的答案,提供有关公共/私有子网的背景、授予对私有子网的 Internet 访问权限以及允许通过安全组进行 lambda 访问。如果您不想阅读背景知识,请跳到最后,我会在此处对您需要的步骤进行要点摘要。
公共子网
公有子网是指源自您的 VPC 外部或发往您的 VPC(互联网)外部目标的流量通过互联网网关 (IGW) 路由的子网。 AWS 为您提供了以这种方式配置的初始默认公有子网;您可以通过查看他们的路由表并在“目标”下找到针对 IGW 的“0.0.0.0/0”来在控制台中识别它们。这意味着公共子网更像是一种“互联网可访问”子网的设计模式,只需将其默认路由配置为指向 IGW。如果您希望创建一个新的公共子网,您可以创建一个新的路由表以及将 Internet 流量指向 IGW 并将该路由表链接到您的新子网。这在控制台中相当容易。
私有子网
私有子网是没有 IGW 且无法直接从 Internet 访问的子网,这意味着您无法连接到私有子网上系统的公共 IP 地址。除了 AWS 预配置的默认子网之外,您手动创建的新子网是这样设置的,除非您另行指定,否则将设置为黑框。
授予对私有子网的 Internet 访问权限
如果您希望私有子网中的内容能够访问外部互联网服务,您可以使用称为 NAT 网关的中介来实现。配置与公有子网中相同的路由表,唯一的区别是发往 0.0.0.0/0(Internet) 的流量,您的目标是位于公有子网内的 NAT 网关。最后一部分很关键。您的 NAT 网关需要位于公共子网中,但您的私有子网将其用作外部流量的目标。
Lambda 的安全组访问权限
允许您的 lambda 函数通过您的安全组/防火墙的一种简单方法是为您的 lambda 函数创建一个安全组,并配置保护您的 RDS 的安全组,以便它允许来自 lambda 安全组的流量。
换句话说,在安全组设置中,您不必只指定 IP 地址作为源,您可以指定其他安全组,这是一种非常简洁的分组项目方式,无需知道其 IP 地址。您的 lambda 函数可以在“Lambda 安全组”中运行,并且您希望他们访问的任何受安全组保护的东西都可以配置为接受来自“Lambda 安全组”的流量。只需确保您确实将您的 lambda 函数与 lambda 安全组相关联,并将其放在私有子网中。
Lambda VPC 步骤简述
- 创建一个新的 NAT 网关并将其放置在公共子网中。这
这一点很重要,NAT 网关进入公共子网(a
子网,其路由表将 0.0.0.0/0 路由到 IGW)
- 创建一个新的子网,你可以称之为 Private-Lambda-Subnet。不像
这
AWS 为您提供的默认预配置子网,这个新子网是
开箱即用。
- 创建一个新的路由表并将其链接到您的 Private-Lambda-Subnet
- 在您的私有子网的新路由表中添加一个条目
将 0.0.0.0/0 路由到 NAT 网关的目标。这就是你的
私有子网将通过转发间接访问互联网
到 NAT 的流量,然后将其转发到 IGW。
- 您的堡垒主机以及您想公开的任何其他内容
可访问的将需要位于公共子网中。这大概是
您已经拥有 RDS 实例的位置,如果它们有,那很好
防火墙/安全组保护。
- 为您的 lambda 函数创建一个新的安全组。你可以
称之为 LambdaSecurityGroup。
- 将您的 RDS 保护安全组的入站规则配置为
允许来自 LambdaSecurityGroup 的流量。这是可能的,因为
您可以使用其他安全组作为防火墙中的源
设置,而不仅仅是 IP 地址。