【问题标题】:Rails 4 + Paperclip + S3: Changing endpoint to access an S3 bucket in User model?Rails 4 + Paperclip + S3:更改端点以访问用户模型中的 S3 存储桶?
【发布时间】:2014-01-19 09:38:57
【问题描述】:

我认为应该是对这个问题的一个非常简单的解决方法,但我似乎无法让它发挥作用。我有一个 Rails 4 应用程序,一个带有回形针的photograph 属性设置的用户模型,我将它链接到 S3。

这是用户模型:

  has_attached_file :photograph,
  :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :storage => :s3,
  :bucket => " my-bucket-name ",
  :default_url => '/images/:attachment/missing_:style.png',
  :s3_credentials => S3_CREDENTIALS

图片可以正常添加到我的 S3 存储桶中,但是当我尝试使用 <%= image_tag @user.photograph.url %> 渲染图片时,它没有显示出来。经进一步检查,图片网址为:

http://s3.amazonaws.com/my-bucket-name/users/photographs/000/000/001/original/20121103_132556.jpg?1388619625

如果我在浏览器中点击此 URL,我会看到如下 XML 文件:

<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> ... </RequestId>
  <Bucket>my-bucket-name</Bucket>
  <HostId>
    ...
  </HostId>
  <Endpoint>my-bucket-name.s3.amazonaws.com</Endpoint>
</Error>

因此,当我在浏览器中点击 url http://my-bucket-name.s3.amazonaws.com/actives/photographs/000/000/001/original/20121103_132556.jpg?1388619625 时,我看到的图片就好了。

如何更改我的用户模型中的端点?处理这个的正常方法是什么?我必须补充一点,我的 S3 存储桶是北加州地区。谢谢。

【问题讨论】:

    标签: ruby-on-rails amazon-s3 paperclip


    【解决方案1】:

    解决了!刚刚在我的User 模型中添加了这两行:

      :url =>':s3_domain_url',
      :path => '/:class/:attachment/:id_partition/:style/:filename',
    

    【讨论】:

      【解决方案2】:

      有时问题是您的存储桶不在美国服务器中(亚马逊的默认设置)。

      您可以使用此更改端点

      :s3_host_name => 'your_host_name'
      

      您可以在端点列Amazon endpoints下的以下链接中找到您的主机名

      如果您不知道您的存储桶区域,您可以在存储桶属性中找到它。

      【讨论】:

        猜你喜欢
        • 2016-03-12
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 2018-01-07
        • 1970-01-01
        • 2019-01-07
        • 2018-10-06
        • 2016-06-14
        相关资源
        最近更新 更多