在API Gateway前使用CloudFront是否合理?

作者:API传播员 · 2025-10-30 · 阅读时间:5分钟

本文将探讨在 Amazon API Gateway 前使用 CloudFront 的合理性,分析其终端节点类型及其与 CloudFront 分发集成的优劣势,并提供具体的配置指导。通过本文,您将了解如何根据实际需求选择适合的架构方案。


API Gateway终端节点类型

在 AWS 中使用 REST API 时,您可以选择以下三种终端节点类型:

边缘优化API终端节点

边缘优化终端节点适用于地理分布广泛的客户端。API 请求会被路由至最近的 CloudFront 边缘站点,以降低连接延迟。这是 API Gateway REST API 的默认终端节点类型,但其托管的 CloudFront 分发仅用于降低延迟,不提供缓存功能。

区域API终端节点

区域终端节点适合同一区域的客户端使用。例如,当 EC2 实例上的客户端调用同区域 API,或 API 设计用于服务少量高需求客户端时,区域终端节点可以减少连接开销。

私有API终端节点

私有终端节点仅能通过您在 VPC 中创建的接口 VPC 终端节点(ENI)从 Amazon 虚拟私有云 (VPC) 内部访问。这种类型适用于对安全性要求较高的场景。


边缘优化API Gateway与集成CloudFront分发的API Gateway对比

边缘优化API Gateway

边缘优化 API Gateway 的主要优势在于其简化的管理流程。您无需自行设置、更新或管理 CloudFront 分发,所有功能都封装在 REST API 背后。然而,这种方式也存在一些局限性,例如无法自定义缓存行为或实现更复杂的流量管理。

使用CloudFront与API Gateway结合的优势

将 CloudFront 与 API Gateway 结合使用可以带来以下显著优势:

  • 缓存功能:CloudFront 提供强大的缓存能力,而 API Gateway 的内置缓存仅适用于旧版 REST API,且存在按小时计费、错误响应缓存等限制。
  • 增强的安全性:AWS Shield Advanced 不支持直接保护 API Gateway,但支持保护 CloudFront,从而间接保护 API Gateway。
  • 灵活的流量管理:可以配置自定义缓存行为,将部分路径指向其他服务(如 S3 静态文件、ALB+EC2),实现统一域名管理。
  • 地域屏蔽:CloudFront 支持基于地理位置的访问控制,能够阻止特定地区的请求。
  • 访问日志:CloudFront 提供详细的访问日志功能,便于分析流量。
  • 成本优化:CloudFront 的互联网数据传输成本低于 API Gateway,且 API Gateway 与 CloudFront 间的数据传输免费。
  • 边缘计算能力:通过 Lambda@Edge,可以在边缘节点执行 HTTP 头修改、URL 重写/重定向、缓存键标准化等操作。

在API Gateway前部署CloudFront是否合理?

是否在 API Gateway 前部署 CloudFront 取决于您的具体使用场景和需求。如果您需要利用 CloudFront 的缓存功能、增强的安全性或灵活的流量管理能力,那么这种架构是合理的选择。


在API Gateway前创建CloudFront分发

以下是配置 CloudFront 分发的具体步骤:

  1. 登录 CloudFront 控制台
  2. 创建新分发:若已有现成分发,也可新建缓存行为设置。
  3. 填写源域名:将 API Gateway 的链接作为源域名,协议选择“仅 HTTPS”。
  4. 设置查看器协议策略:选择“将 HTTP 重定向到 HTTPS”,允许的 HTTP 方法选择“GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE”。
  5. 配置缓存键和源请求
    • 标头:选择“无”或指定需要转发至 API Gateway 的标头,注意避免选择 Host 标头。
  6. 设置响应标头策略:选择“简单 CORS”。
  7. 完成配置:其余设置保持默认或按需调整,点击“创建分发”。
  8. 更新 DNS:几分钟后分发即可使用,例如可将 CloudFront 域名添加至 Route 53 DNS。

结论

通过本文的分析,我们可以看出,在 API Gateway 前使用 CloudFront 分发具有显著的优势,尤其是在需要缓存、增强安全性或灵活流量管理的场景下。然而,具体选择边缘优化 API Gateway 还是集成 CloudFront 分发,需要根据实际需求进行综合考量。

无论您选择哪种架构,合理的配置和优化都是确保系统性能和成本效益的关键。

原文链接: https://www.stormit.cloud/blog/cloudfront-in-front-of-api-gateway/