从一个S3读取图像并写入另一个S3时获取Excon :: Errors :: SocketError?

时间:2012-09-04 19:21:38

标签: ruby-on-rails-3 amazon-s3 carrierwave

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

是否有配置Carrierwave从我们的生产S3读取图像,但是将任何新图像写入分段S3(以免污染我们的生产图像存储)?


更新:我已经尝试为CarrierWave创建一个自定义存储引擎来执行此操作(请参阅this gist - 基本上与雾存储引擎相同,但第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中的代码中看到的那样,我希望此解决方案能够从暂存中读取,如果在暂存时未找到图像,则可以回退到生产阶段。但是,所有写操作都应该只进行分段。

1 个答案:

答案 0 :(得分:2)

有几种方法可以使用S3。如果您的广告连播中有点并希望执行SSL,则需要强制您的网址如下所示:https://s3.amazonaws.com/staging.asset.domain.com/blah。您无法使用https://yourdomain.com/blah,因为亚马逊没有您的证书。您也无法使用https://staging.asset.domain.com.s3.amazonaws.com/blah,因为证书只会深入一级。 (即如果你的水桶没有点,那就行了。)