我已经建立了一个系统,其中我有产品模板。品牌将覆盖模板以创建产品。您可以将图片上传到模板,并在产品上进行覆盖。产品图片被上传到对应品牌的S3存储桶中。但是在产品模板上,图片被上传到一个通用的S3存储桶。
有没有办法让品牌的存储桶回退到通用存储桶,如果它接收到带有文件url的404或403。类似于托管网站重定向规则?这些只是带有图片的桶,所以它不会是一个托管的网站,我希望避免打开它。
发布于 2019-08-01 00:14:43
单独使用S3无法做到这一点,但可以将CloudFront与两个S3存储桶配合使用,并在源组中配置适当的源故障切换设置,以便第一个存储桶中的403/404错误会导致CloudFront从第二个存储桶中发出后续请求。
为缓存行为配置源故障切换后,CloudFront将对查看器请求执行以下操作:
< code >F211
这似乎就是您所描述的所需行为。当然,这意味着需要回退到第二个存储桶的缓存未命中将需要额外的时间来提供服务,但对于缓存命中,不会有任何延迟,因为CloudFront只对缓存未命中执行“尝试一个,然后尝试另一个”。这还意味着,您将在主存储桶上为不存在的对象支付一些流量,因此,如果主存储桶经常拥有对象,这将是最有意义的。
此解决方案不重定向浏览器-- CloudFront在返回响应之前遵循第二条路径--因此,在上传回退对象时,您需要注意附加到回退对象的Cache-Control设置,因为在回退对象已被获取和缓存(由CloudFront或浏览器缓存)之后添加(以前不存在的)主对象在任何缓存对象过期之前都是不可见的。
https://stackoverflow.com/questions/57281863
复制相似问题