1

使用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 存储桶,但不适用于爱尔兰。

这个人的经历似乎表明这是不可能的。

4

1 回答 1

6

好的,我刚刚在这里找到了答案

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
)

编辑

更好的选择是使用aws-sdkAPI 看起来更好的 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
)
于 2013-06-20T15:20:20.627 回答