2014-10-21 2 views
1

Я использую последний aws-sdk для Ruby. Мой файл реки содержит следующую строку для подключения к S3 ведру:RoR AWS-SDK Ошибка при доступе к ведру в Европе

require 'aws-sdk' 
... 
AWS.config(
    :access_key_id => 'xxxxx', 
    :secret_access_key => 'xxxxx' 
) 
s3 = AWS::S3.new 
object = s3.buckets['bucket_in_ireland'].objects['data.csv'] 

При обращении к ведру AWS S3 в регионе США, который работает прекрасно. Но получить следующее сообщение об ошибке при обращении к AWS S3 ведра в регионе Ирландии:

AWS::S3::Errorrs::PermanentRedirect: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. 

С помощью Google я смог найти два решения:

  1. Put AWS::S3::DEFAULT_HOST.replace "s3-eu-west-1.amazonaws.com" в нижней части environment.rb
  2. Набор :s3_host_name => 's3-eu-west-1.amazonaws.com' для paperclip По умолчанию

Когда я поместил линию, указанную в (1) в нижней части environment.rb, сообщение об ошибке изменено на следующее:

NameError: uninitialized constant AWS::S3::DEFAULT_HOST 

Затем я попытался (2) путем обновления следующего кода в производстве .rb, но это не помогло.

config.paperclip_defaults = { 
    :storage => :s3, 
    :s3_credentials => { 
    :bucket => ENV['S3_BUCKET_NAME'], 
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'], 
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], 
    :s3_host_name => 's3-eu-west-1.amazonaws.com' 
    } 
} 

Примечание: попытался также применить это исправление [https://github.com/aws/aws-sdk-ruby/issues/510], но ничего не изменилось после внесения изменений в environment.rb, но ничего не работа.

Любая помощь, пожалуйста ...

ответ

0

Установка s3_endpoint в AWS конфигурации решить проблему для меня.

AWS.config(
    :access_key_id => 'xxxx', 
    :secret_access_key => 'xxxx', 
    :s3_endpoint => 's3-eu-west-1.amazonaws.com' 
) 
Смежные вопросы