第五部分:从托管服务 Amazon API Gateway 集成 Amazon VPC 内部私有服务

本文详细介绍了如何使用AmazonAPIGateway通过VPCLink私有集成VPC中的负载均衡资源,包括RESTAPI和HTTPAPI的区别,如RESTAPI基于PrivateLink只能与NLB集成,而HTTPAPI基于Hyperplane可直接与ALB集成。此外,文章讨论了安全配置,如安全组规则和AmazonWAF的集成,以及在选择集成方法时应考虑的因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

专题摘要

亚马逊云科技托管服务访问用户 Amazon VPC 内部私有资源,通常发生在计算或接口类的托管服务访问用户 VPC 内部资源的情形下。本文主要讲述,在微服务 API 的架构下,如何利用 Amazon API Gateway 管理 API,并私有集成 VPC 中的负载均衡等资源,将访问请求分发给后端的服务。

本文是“在亚马逊云科技上围绕 Amazon VPC 打造内外兼修的合适架构”系列主题的第五部分,本系列专题由如下几部分组成:

场景介绍

在亚马逊云科技,Amazon API Gateway 可以和后端的多种服务等进行集成,例如 Amazon Lambda,Amazon S3,Amazon Kinesis,以及 VPC 内部的资源 NLB(Network Load Balancer)/ALB(Application Load Balancer)等,通过这种集成,可以将应用程序公开给客户或其他系统进行调用。Amazon API Gateway 不仅仅可以对 API 进行管理和流量控制,还能够实现多阶段部署。

公有的 API Gateway 支持 REST API, HTTP API 和 WebSocket API 三种类型。WebSocket API 支持客户端和服务器端的双向通信。而 REST API 和 HTTP API 后端可以和 VPC 中面向互联网的公有的负载均衡进行 HTTP 协议集成,但是这种集成方式,需要将负载均衡直接面对互联网,因而面临网络安全的风险。而通过 VPC Link 私有集成的方式,API Gateway 可以将流量私有地传输给后端的 VPC 中私有的负载均衡,提升网络安全性。

在 API Gateway 中可以创建两种类型的 VPC Link,VPC link for REST APIs 和  VPC link for HTTP APIs。VPC Link 将 API Gateway 路由连接到 VPC 内的 HTTP/HTTPS 私有资源,方便 API Gateway 和这些 VPC 中资源的私有集成。

VPC  Link 借助 Amazon Hyperplane 网络虚拟化平台,支持 API Gateway 这一托管服务运行所在的亚马逊云科技管理的 VPC 和客户 VPC 之间的连接和路由,该平台也是实现 Amazon PrivateLink 的基础。 VPC Link for HTTP APIs 直接基于 Amazon Hyperplane 实现,而 VPC link for REST APIs 则是基于 PrivateLink 实现,间接依托于 Amazon Hyperplane 服务。

实现机制不同,也决定了这两个服务和 VPC 中的 NLB,ALB 甚至是 Amazon Cloud Map 进行私有集成的灵活性不同。

VPC links for REST API

VPC links for REST APIs 基于 PrivateLink 实现,因而只能和后端 VPC 中的 NLB 进行集成,不能和 ALB 直接集成。因此,在某些情况下,需要通过 NLB 把访问流量传给 ALB 或者 EC2 目标组,如下图所示:

由于基于 Amazon PrivateLink 实现,目标端(ALB 或 Target Group)接收到的是  NLB 的专用 IP 地址,而不是服务访问者的 IP 地址。由于 NLB 不可以配置安全组,因而在配置后面集成的 ALB 或者 Target Group 的安全组的时候,需要配置 NLB 的 IP 地址或 VPC 的 CIDR 块,而不是实际服务访问者的 IP 范围。示例 ALB 的安全组“alb-sg”的设置如下:

Security Group “alb-sg” Inbound Rule
ProtocolPort rangeSourceDescription
HTTP80VPC CIDR / NLB IP允许来自 NLB 在指定端口的入站流量。可以直接配置 NLB 所在 VPC 的 CIDR,或者直接配置 NLB 在每个子网中的 CIDR 或者 NLB 的 IP。
HTTP8080VPC CIDR / NLB IP指定端口的健康检查入站流量。可以直接配置 NLB 所在 VPC 的 CIDR,或者直接配置 NLB 在每个子网中的 CIDR 或者 NLB 的 IP。
Security Group “alb-sg” Outbound Rule
ProtocolPort rangeDestinationDescription
HTTP80target-a-sg允许在指定端口访问目标组 target-a 的出站流量。
HTTP8080target-a-sg允许在指定端口访问目标组 target-a 的健康检查出站流量。

安全组 target-a-sg 的示例规则配置如下表所示:

Security Group “target-a-sg” Inbound Rule
ProtocolPort rangeSourceDescription
HTTP80alb-sg允许来自 ALB 在指定端口的入站流量。
HTTP8080alb-sg允许来自 ALB 在指定端口的健康检查入站流量。

REST API 类型的 API Gateway 可以和亚马逊云科技的应用防火墙 Amazon WAF 天然集成,而 HTTP API 却不可以,这是 REST API 相对于 HTTP API 的一个比较优势。

VPC links for HTTP API

HTTP API 是最新类型的 API Gateway,比 REST API 成本更低,速度更快。HTTP API 类型的 API Gateway 可以和各种私有的 HTTP/HTTPS 服务进行集成,不仅仅包括 NLB,还可以是 ALB 以及 EC2 目标组等。

HTTP API 类型的 VPC Link 是基于 Hyperplane 的 VPC-to-VPC NAT 实现,而不是传统的 Private Link,因而不需要创建 VPC 端点服务(VPC Endpoint Service)。因此,后端集成的选项不仅限于 NLB,甚至可以直接集成 ALB 或者 Amazon Cloud Map 服务,这样的配置具有更大的灵活性和可扩展性。

相比之下,REST API 类型的 VPC Link 只能与单个 NLB 关联,如果需要配置多个后端端点,需要考虑在 NLB 上使用多个侦听器,与不同的目标组相关联。而 HTTP API 类型的 VPC Link,单个 VPC 连接无需额外配置即可与多个后端端点相关联。另外,基于 HTTP API 类型的 VPC Link,更加方便容器化应用程序直接使用 ALB 来做到第 7 层网络负载均衡,并实现身份验证和授权等其他功能。如下图所示:

HTTP API 类型的 API Gateway 类似于两个 VPC 之间的隧道。这个隧道是基于在 API Gateway 所在的 VPC 和客户 VPC 两端生成由 Amazon Hyperplane 管理的弹性网络接口的挂载点构建的。 API Gateway 直接连接这些弹性网络接口,可以直接从自己的 VPC 访问服务提供者 VPC 内的资源,因此可以通过配置该网络弹性接口的安全组来控制其网络的流量。

上图中安全组”httpapi-sg”的规则配置如下表所示:

Security Group “httpapi-sg” Outbound Rule
ProtocolPort rangeDestinationDescription
HTTP80alb-sg允许在指定端口访问 ALB 的出站访问流量

安全组“alb-sg”的规则配置如下表所示:

Security Group “alb-sg” Inbound Rule
ProtocolPort rangeSourceDescription
HTTP80httpapi-sg允许来自 HTTP API Gateway 所配置的 VPC Link 所在的 ENI 在指定端口的入站流量
Security Group “alb-sg” Outbound Rule
ProtocolPort rangeDestinationDescription
HTTP80target-alb-sg允许在指定端口访问目标组 target-alb 的出站流量。
HTTP8080target-alb-sg允许在指定端口访问目标组 target-alb 的健康检查出站流量。

安全组 target-alb-sg 的规则配置如下表所示:

Security Group “target-alb-sg” Inbound Rule
ProtocolPort rangeSourceDescription
HTTP80alb-sg允许来自 ALB 在指定端口的入站流量。
HTTP80alb-sg允许来自 ALB 在指定端口的健康检查入站流量。

结论和总结

本文中,我们对两种不同的 API Gateway 在私有集成 VPC 中的 HTTP 服务时,所建的两种 VPC link 进行了对比和总结,在实际应用场景中,需要考虑多种因素进行选取。

REST API 类型的 API Gateway 和客户 VPC 中的私有资源集成 VPC Link,其后台是通过在 API Gateway 所在的亚马逊云科技管理的 VPC 中建立 VPC 终端节点,通过 Private Link 来访问基于 NLB 的终端节点服务来实现的。这个 API Gateway 所在的 VPC 中的终端节点会在建立 VPC Link 的时候被隐式自动创建。 这种方式和客户 VPC 内部资源访问外部亚马逊云科技托管服务,建立客户 VPC 终端节点技术完全一致,但方向正好相反。

而 HTTP API 类型 API Gateway 的 VPC Link 实际上和前面章节中讲到的托管服务 Amazon Lambda 和 Amazon Glue 访问 VPC 中的资源更加类似,通过在客户 VPC 中生成弹性网络访问接口 ENI,和 VPC 中的资源进行交互集成。

REST API 还可以支持私有部署,在这种情况下,REST API 中的接口只能被其他 VPC 通过建立 VPC 终端节点进行访问,而 HTTP API 目前还不支持私有部署。

另外,相对于 HTTP API,REST API 支持比 HTTP API 更多的功能,诸如 API 密钥、客户端请求限制、请求验证、和 Amazon WAF 原生集成等。而 HTTP API 的设计的功能更少,价格也相对更低。

在对安全要求比较高,原生的 Amazon WAF 应用防火墙成为必选的情况下,可以考虑 REST API。通过基于 Private Link 的 VPC Link 连接 VPC 中的 NLB。如果需要在网络 7 层的负载均衡,可以在 NLB 后面接入 ALB,并将流量进一步转发给 EC2 的 Target Group,但这样的调用链路会导致网络效率变低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值