S3存储桶端点错误导致错误

时间:2014-01-16 18:52:14

标签: ruby-on-rails ruby-on-rails-3 amazon-web-services amazon-s3 paperclip

我的存储桶位于us-west-2并且文件正在s3上正确上传但是当我尝试下载时出现错误

<Error><Code>PermanentRedirect</Code>
      <Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message>                     
     <RequestId>2C53AD66AA6BE074</RequestId>
     <Bucket>mytprod</Bucket>
     <Endpoint>mytprod.s3.amazonaws.com</Endpoint>
</Error>

production.rb

 # Paperclip configuration
  config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => 'mytprod',
    :access_key_id => 'xxxxxxxxxxxx',
    :secret_access_key => 'xxxxxxxxxxxxxxxxxxxxx',
    :region            => 'us-west-2',
    :s3_endpoint => "ec2.us-west-2.amazonaws.com"
    },
  }

请在我错的地方帮助我。

2 个答案:

答案 0 :(得分:0)

出于某种原因,它不喜欢:ec2.us-west-2.amazonaws.com您可以尝试使用端点:s3.amazonaws.com,如消息所示。根据文件,这也是太平洋西北地区的终点(us-west-2)

http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

答案 1 :(得分:0)

ec2.us-west-2.amazonaws.com 是有效的S3端点。

看起来,巧合的是,亚马逊有一个名为“ec2.us-west-2.amazonaws.com”的存储桶,它的存​​在是为了重定向好奇的人们看到的EC2主机名转到EC2登陆页面......所以非常幸运,机会和巧合,请求恰好击中S3,生成重定向。

“s3-us-west-2.amazonaws.com”是us-west-2中S3的正确终点。

http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

为什么上传不会被破坏的解释 - 最有可能 - 因为您正在使用的库正在后台处理重定向消息并将请求重新发送到正确的位置。