使用aws-s3gem,我可以用标准的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桶,但不适用于爱尔兰.
这个人的经历似乎表明这是不可能的.
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
)
Run Code Online (Sandbox Code Playgroud)
编辑
更好的选择是使用aws-sdk其API似乎更好的gem,例如:
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
)
Run Code Online (Sandbox Code Playgroud)