6

我们有一个登台服务器设置来使用与我们的生产服务器不同的 S3 存储桶,但这需要我们手动同步存储桶之间的图像,以便在登台时查看图像。由于我们有数以万计的图像(每天都在增长),这是不可行的。

无论如何配置 Carrierwave 以从我们的生产 S3 读取图像,但将任何新图像写入暂存 S3(以免污染我们的生产图像存储)?


更新:我已经尝试为 CarrierWave 创建一个自定义存储引擎来执行此操作(请参阅此要点——除第 228 行外,与雾存储引擎基本相同),但在尝试获取时出现此错误图片:

 Excon::Errors::SocketError (hostname does not match the server certificate (OpenSSL::SSL::SSLError)):
   lib/carrier_wave/storage/dual_fog.rb:214:in `exists?'
   lib/carrier_wave/storage/dual_fog.rb:228:in `public_url'
   lib/carrier_wave/storage/dual_fog.rb:267:in `url'

有谁知道这是为什么?正如您从 gist 中的代码中看到的那样,我希望此解决方案能够从暂存中读取,并在暂存时找不到图像时回退到生产。但是,所有写操作都应该只进入暂存阶段。

4

1 回答 1

2

有几种使用 S3 的方法。如果您的存储桶中有点并且想要执行 SSL,则需要强制您的 URL 看起来像这样:https://s3.amazonaws.com/staging.asset.domain.com/blah. 您不能使用https://yourdomain.com/blah,因为亚马逊没有您的证书。您也不能使用https://staging.asset.domain.com.s3.amazonaws.com/blah,因为证书只能深入一级。(即如果你的桶没有点,它会工作。)

于 2013-05-18T21:32:35.437 回答