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


5

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

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

流程如下:

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

我们可以在这里使用临时重定向解决方案,直到在S3上对其进行更新为止。

S3重定向不是解决方案,因为S3重定向似乎仅适用于现有对象或整个存储桶,而不会丢失对象。

我们如何实现这一目标?

谢谢阿多拉姆


Answers:


1

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


0

借助CloudFront的原始故障转移功能,您可以为您的发行版设置两个原始-主数据库和辅助数据库,这样,如果CloudFront检测到您的原始数据库不可用,则从辅助数据库中提供内容。如果您的来源不可用,CloudFront已经允许您配置自定义错误页面或使用Lambda @ Edge生成重定向。现在,借助Origin Failover,您可以轻松地在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配置中添加两个来源。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.