我有一个使用carrierwave
,carrierwave-aws
和cloudfront-signer
宝石的Rails 5应用程序。我给出了为Carrierwave配置的默认存储桶。我可以上传并很好地投放内容(例如用户头像等)。
我还有另一个上传器,该上传器具有一个动态存储桶(即每个客户端),用于隔离数据。我可以上传没有问题。问题在于这些文件无法在Cloudfront上提供(403禁止访问)。我怀疑基本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选项提供给存储桶或端点才能使之工作。
有什么想法吗?