2013-06-20 2 views
1

Используя драгоценный камень aws-s3, я могу успешно выполнить транзакцию со стандартным ведром s3, но один из них сделан в Ирландии (s3-eu-west-1) дает ошибку The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. После 2 часов поиска это все равно ничего не значит для меня, есть ли способ обойти эту проблему.Доступ к нестандартному ведеру s3

Этот simple tutorial отлично подходит для стандартного ведра s3, но не для Ирландии.

Это person's experiences похоже, что это невозможно.

ответ

6

ОК Я только что нашел the answer here.

require 'aws/s3' 
AWS::S3::Base.establish_connection!(
    :access_key_id  => ACCESS_KEY_ID, 
    :secret_access_key => SECRET_ACCESS_KEY 
) 
AWS::S3::DEFAULT_HOST.replace('s3-eu-west-1.amazonaws.com') # <= the crucial hacky line 
AWS::S3::S3Object.store(
    file_name, 
    temp_file, 
    bucket, 
    :content_type => mime_type 
) 

Редактировать

Much better option является использование aws-sdk камень которого API кажется намного лучше, и т.д .:

require 'aws-sdk' 
s3 = AWS::S3.new(
    :access_key_id => ACCESS_KEY_ID, 
    :secret_access_key => SECRET_ACCESS_KEY, 
    :s3_endpoint => 's3-eu-west-1.amazonaws.com' 
) 
bucket = s3.buckets[bucket_name] 
bucket.objects.create(
    file_name, 
    temp_file, 
    :content_type => mime_type 
) 
Смежные вопросы