我正在为 Ruby 使用最新的 aws-sdk。我的 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 存储桶时,它工作得非常好。但是在访问爱尔兰地区的 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.
从谷歌我可以找到两个解决方案:
- 放在environment.rb
AWS::S3::DEFAULT_HOST.replace "s3-eu-west-1.amazonaws.com"
的底部 - 设置回形针默认
: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修改后没有任何真正改变,但没有任何效果。
任何帮助请...