Ошибка RoR AWS-SDK при доступе к корзине в регионе Европы

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

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 в регионе US все работает отлично. Но возникает следующая ошибка при доступе к корзине 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.

В гугле я нашел два решения:

  1. Поместите AWS::S3::DEFAULT_HOST.replace "s3-eu-west-1.amazonaws.com" внизу файла environment.rb.
  2. Установите :s3_host_name => 's3-eu-west-1.amazonaws.com' для настроек скрепки по умолчанию.

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

NameError: uninitialized constant AWS::S3::DEFAULT_HOST

Затем я попытался (2), обновив следующий код в production.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, но ничего не работает.

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


person theGeekster    schedule 21.10.2014    source источник


Ответы (1)


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

  AWS.config(
    :access_key_id => 'xxxx', 
    :secret_access_key => 'xxxx',
    :s3_endpoint => 's3-eu-west-1.amazonaws.com'
  )
person theGeekster    schedule 22.10.2014