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

ado*_*ram 6 amazon-s3 amazon-cloudfront amazon-web-services

我们正在尝试设置默认来源为 S3 的 Cloudfront 发行版,但如果在 S3 上找不到内容,我们希望它从 EC2 实例中获取它。

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

过程如下:

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

我们可以在这里使用临时重定向解决方案,直到它在 S3 上更新。

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

我们怎样才能做到这一点?

谢谢,阿多拉姆

小智 5

\n

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

\n
\n\n

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

\n\n

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

\n\n

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

\n\n

在“源组”部分添加故障转移组规则。

\n


cee*_*yoz 1

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