我正在使用最新的aws-sdk for 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存储桶时效果非常好。但是在访问区域 Ireland 中的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我可以找到两个解决方案:
AWS::S3::DEFAULT_HOST.replace "s3-eu-west-1.amazonaws.com"
放在 environment.rb :s3_host_name => 's3-eu-west-1.amazonaws.com'
醇>
当我将(1)中提到的行放在 environment.rb 的底部时,错误消息更改为以下内容:
NameError: uninitialized constant AWS::S3::DEFAULT_HOST
然后我尝试通过更新 production.rb 中的以下代码来尝试(2)但是没有帮助。
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 :(得分:0)
将 s3_endpoint 设置为AWS配置解决了我的问题。
AWS.config(
:access_key_id => 'xxxx',
:secret_access_key => 'xxxx',
:s3_endpoint => 's3-eu-west-1.amazonaws.com'
)