2012-09-04 14 views
6

Tenemos una configuración de servidor de transición para usar un depósito S3 diferente de nuestro servidor de producción, pero eso requiere que sincronicemos manualmente las imágenes entre los depósitos para ver las imágenes en etapas. Como tenemos decenas de miles de imágenes (creciendo a diario), esto no es viable.Obtención de Excon :: Errors :: SocketError al leer imágenes de un S3 y escribir en otro?

¿Hay alguna forma de configurar Carrierwave para leer imágenes de nuestra producción S3, pero escribir cualquier imagen nueva en la escena S3 (para no contaminar nuestra tienda de imágenes de producción)?


ACTUALIZACIÓN: He intentado mi mano en la creación de un motor de almacenamiento personalizado para CarrierWave que hacer esto (ver this gist --básicamente idéntico al motor de almacenamiento niebla a excepción de la línea 228), pero yo Estoy obteniendo este error cuando intento buscar imágenes:

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' 

¿Alguien sabe por qué es así? Como puede ver en el código en la esencia, quiero que esta solución sea capaz de leer de la puesta en escena, y volver a la producción si no se encuentra ninguna imagen en la puesta en escena. Sin embargo, todas las operaciones de escritura solo deben pasar a etapas.

+1

Adivinanza aleatoria: ¿su cubo de ensayo tiene un '.' en su nombre? –

+0

@FrederickCheung Sí, nuestro 'fog_host' está configurado en' assets.domain.com', y 'fog_read_host' está establecido en' stage.assets.domain.com'. ¿Eso está causando problemas? – neezer

+3

Si el cubo s3 real tiene un punto it it (El CNAME al que alias no importa) entonces la validación ssl vert fallará - la mayoría de los navegadores/biblioteca aceptarán un certificado * .dominio.com solo para los subdominios directos, no para foo.bar.domain.com –

Respuesta

2

Existen varias formas de usar S3. Si tiene puntos en su segmento y quiere hacer SSL, deberá forzar que sus URL se vean así: https://s3.amazonaws.com/staging.asset.domain.com/blah. No puede usar https://yourdomain.com/blah porque amazon no tiene su certificado. Tampoco puede usar https://staging.asset.domain.com.s3.amazonaws.com/blah porque los certs solo tienen un nivel de profundidad. (es decir, si su cubo no tenía puntos, funcionaría).

Cuestiones relacionadas