首页 > 解决方案 > Carrierwave + Cloudfront + 签名 URL + 多个存储桶

问题描述

我有一个使用carrierwave,carrierwave-awscloudfront-signergems 的 Rails 5 应用程序。我给了一个为 Carrierwave 配置的默认存储桶。我可以很好地上传和提供内容(即用户头像等)。

我有另一个上传器,它有一个动态存储桶(即每个客户端)来隔离数据。我可以上传没有问题。问题是这些文件不会在云端提供服务(403 Forbidden)。我怀疑基本 CW 配置正在尝试使用另一个存储桶对存储桶进行签名以访问文件。

这是我迄今为止尝试过的上传配置:

  def initialize(*)
    super

    # https://stackoverflow.com/questions/31589872/setup-for-an-uploader-carrierwave

        self.aws_credentials = {
          region: ENV['AWS_REGION']
        }

        self.aws_bucket = Apartment::Tenant.current
        self.aws_signer = -> (unsigned_url, options) { Aws::CF::Signer.sign_url unsigned_url, options }

  end

它设置了自定义存储桶,但 URL 似乎失败了。它们已签名,但都返回 403。

我怀疑我需要向存储桶或端点提供 aws_signer 选项以使其工作。

有任何想法吗?

标签: amazon-web-servicesamazon-s3carrierwaveamazon-cloudfront

解决方案


推荐阅读