【问题标题】:Serving Images uploaded to S3 via CloudFront提供通过 CloudFront 上传到 S3 的图像
【发布时间】:2015-09-08 22:10:55
【问题描述】:

我正在通过我的 Rails 4 应用程序中的 CarrierWave 将图像上传到 AWS S3 存储桶。我也有 Cloudfront 设置,它目前提供我所有的统计资产(不包括公共上传)。

如何通过 Cloudfront 而不是 S3 提供上传的图像,即使它们存储在 S3 存储桶中?我找到了这样的tutorials,但由于我已经运行了一个 CloudFront 分配,我想知道是否应该为我的公共图像上传添加另一个,或者有没有办法将它添加到我的当前分配中。

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-s3 amazon-cloudfront


    【解决方案1】:

    您可以将存储桶作为附加自定义源添加到现有 Cloudfront 分配中。

    然后您可以使用路径模式来确定哪些前缀(例如/images/uploads/*)应该路由到备用源。

    http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern

    由于创建发行版除了在您等待发行版在全球范围内可用时花费您几分钟的时间外不会花费任何时间,因此我建议在将其添加到您的生产发行版之前创建一个新的发行版进行实验......但是这绝对是可行的。

    【讨论】:

    • 谢谢@Michael。这个解决方案实施起来并不困难。但是由于某种原因,当我加载我的应用程序时,/uploads/* 中的图像仍然是从 S3 路由而不是从云端(根据页面源代码)。我也给了它很长一段时间,并确保更新已经完成。
    • @Herm 这听起来像是您的应用程序配置的问题......或者您的页面的旧副本以及旧链接仍在从 Cloudfront 缓存提供。
    • 这可能与我的存储桶策略有关吗?我的政策有什么需要更改的吗?
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2015-12-22
    • 2011-07-23
    • 2017-11-21
    相关资源
    最近更新 更多