AWS:使用 CloudFront 处理 API 请求而不是将它们直接路由到 ALB 有什么意义?

AWS: what's the point in using CloudFront for API requests instead of routing them to ALB directly?

我有一个负载平衡器 (ALB) 正在处理我的应用程序的 API 请求 (alb.domain.com)。我还有一个 S3 存储桶,我的静态站点通过 CloudFront (domain.com) 在其中提供服务。我已经配置了一个分发,以便 /api 转到 ALB,其余的转到 S3,一切正常。但是,除了将我的 API 请求路由到 CloudFront(域。com/api),我还可以将它们直接路由到 ALB(alb.domain.com/api),这也有效美好的。我不需要对我的 API 请求进行缓存,所以我在分发中禁用了它。考虑到我 (1) 在路由中引入了一个额外的连接,并且 (2) 我的请求现在是根据 CloudFront 定价计算的,我通过 CloudFront 执行请求的意义何在?仅将请求直接路由到 ALB 并仅使用 CloudFront 提供静态文件是否有任何缺点?

在您的场景中(通常)使用 CloudFront 有很多好处。

首先,通过 CloudFront 进行路由给人的印象是这是一个单独的域,这消除了 CORS, helps to reduce complexities in any security configurations (such as CSP) 的实现。此外,如果需要,您可以缓存任何基于静态的请求,或者将来不经常更改的请求。

您还可以获得访问 edge network to do routing 的好处,这对距离该地区较远的客户有好处。这意味着用户将到达离他们最近的边缘位置,然后该边缘位置将通过私有 AWS 网络路由并与源站建立连接(这将比遍历 public 互联网更快)。

此外,边缘安全评估,WAF and Lambda@Edge 都可以在 AWS Edge 基础设施上更靠近用户而不是您自己的资源进行评估。