1

我正在为 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.

从谷歌我可以找到两个解决方案:

  1. 放在environment.rbAWS::S3::DEFAULT_HOST.replace "s3-eu-west-1.amazonaws.com"的底部
  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修改后没有任何真正改变,但没有任何效果。

任何帮助请...

4

1 回答 1

0

s3_endpoint设置为 AWS config 为我解决了这个问题。

  AWS.config(
    :access_key_id => 'xxxx', 
    :secret_access_key => 'xxxx',
    :s3_endpoint => 's3-eu-west-1.amazonaws.com'
  )
于 2014-10-22T11:50:19.317 回答