使用AWS API网关的场景?这是否也仅适用于传入或传出服务? NAT 网关是通过 Internet 网关调用外部服务的首选方式吗?可以用AWS API Gateway代替吗?后者会提供更多安全性吗?
调用外部服务的两种方式- 选项 1- a) 通过路由表将私有子网组件配置到 NAT 网关。 b) 请求将从私有子网 -> NAT 网关 -> Internet 网关 -> 外部服务路由?
选项2- a) 配置私有子网以通过路由表调用公有子网中的 AWS API Gateway b) 请求将通过私有子网 -> AWS API 网关 -> 外部服务路由?
请告诉我哪个选项更好?
你把事情搞混了。
如果实例/服务位于私有子网中,并且您需要该实例具有对 Internet 的出站访问权限,那么您需要一些 NATing/PATing 服务。对于 AWS,您可以将 NAT 网关附加到您的 VPC,也可以在同一 VPC 的公有子网中启动 NAT 实例并相应地配置路由表。 API网关与此无关。
API Gateway 可帮助您构建无服务器、安全且高度可用的 REST API,您可以向其发送 HTTP/HTTPS 请求。您可以配置一些API网关资源/方法来指向外部服务吗?当然可以。但 API Gateway 无法在您的路由表中定位。为什么?很简单,因为路由表在 ISO OSI 模型的第 3 层(通过 IP 地址进行路由)运行,而 API 网关在 ISO OSI 模型的第 7 层(应用程序层)运行。
所以您可以做以下事情。
或者您甚至可以启动一个私有 API 网关,该网关仅在您的 VPC 内部运行,但同样,它与授予互联网访问权限无关。
关于安全性,我们在这里讨论的不是某人试图访问您的资源(入站访问),而是您/您的资源试图访问某些外部服务。您可以而且应该通过防火墙(例如 NACL、安全组,甚至操作系统级防火墙)来控制这一点。 API 网关的安全性以相反的方式工作,它可以保护您免受恶意传入请求/DDOS 攻击以及未经授权使用您的资源。
简而言之,如果您知道您想要从私有子网内部访问已经存在的外部服务,那么 API 网关对您来说完全没有用处。
API Gateway 不是为出站流量或第 3 层路由而设计的;为了增强第 7 层安全性和控制,请在后端和 AWS 网关之间使用反向 API 网关(例如 Lunar.dev)来有效管理和保护出站 API 请求。