AWS Cloudfront 多个来源 - 如果在第一个来源中找不到,我们如何回退到第二个来源

AWS Cloudfront 多个来源 - 如果在第一个来源中找不到,我们如何回退到第二个来源

我们正在尝试设置一个 Cloudfront 分布,其中默认来源是 S3,但如果在 S3 上找不到内容,我们希望它从 EC2 实例中获取内容。

我们可以设置这些多个来源:S3 和 EC2 以及两种行为,均默认为 (*),并在需要时将其故障转移到第二个来源 (EC2) 吗?

流程如下:

  1. 我们的后端在 EC2 实例上生成图像。
  2. 我们会尽快将它们上传到 S3,但不是立即的。
  3. 当用户尝试访问 cdn.example.com/images/picture.jpg 时,它会将 Cloudfront 定向到我们的 S3 存储桶,如果图像还不存在,我们希望将该请求重定向到 EC2 服务器。

我们对这里的临时重定向解决方案感到满意,直到它在 S3 上更新为止。

S3 重定向不是答案,因为 S3 重定向似乎只适用于现有对象或整个存储桶,而不适用于丢失的对象。

我们怎样才能实现这个目标?

谢谢,Adoram

答案1

借助 CloudFront 的源故障转移功能,您可以为分发设置两个源 - 主源和辅助源,这样,如果 CloudFront 检测到主源不可用,您的内容将从辅助源提供。CloudFront 已经允许您配置自定义错误页面,或者在源不可用时使用 Lambda@Edge 生成重定向。现在,借助源故障转移,您可以轻松地在 AWS 源或非 AWS 自定义 HTTP 源的组合之间设置故障转移逻辑,从而最大限度地减少对查看者体验的干扰。例如,您可以有两个 Amazon S3 存储桶作为您的源,您可以将内容独立上传到这两个存储桶。如果 CloudFront 从您的主存储桶请求的对象不存在,或者与主存储桶的连接超时,CloudFront 将从您的辅助存储桶请求该对象。因此,您可以将 CloudFront 配置为在响应 HTTP 4xx 或 5xx 状态代码时触发故障转移。

来源 :https://aws.amazon.com/about-aws/whats-new/2018/11/amazon-cloudfront-announces-support-for-origin-failover/

文档:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html

在 Cloudfront 配置中添加您的两个来源。

在‘源组’部分添加您的故障转移组规则。

答案2

CloudFront 不支持您的用例。您需要在应用程序中处理此问题 - 在您的系统完成向 S3 的传输之前,不要为项目提供 CDN URL。

相关内容