使用S3,Rails和Paperclip时隐藏亚马逊网址

时间:2010-09-25 22:59:58

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

我刚刚使用Rails 3和Paperclip设置了文件上传到Amazon S3。所有这一切都非常好,并且正常运行。我想整理一个小细节。目前,网址是亚马逊网址(即开始http://s3.amazonaws.com),我希望他们从我的网域开始。

我已经将必要的CNAME记录添加到我的DNS中,并且它们工作正常,因此我可以通过我的域的子域访问这些文件。问题在于回形针生成的URL始于亚马逊域。有没有一种简单的方法来更改回形针配置以解决这个问题?

干杯

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

这里隐藏了S3资产的Amazon网址所需的一切:

  1. 在您要使用的域别名后命名您的S3存储桶。因此,如果您想要http://assets.mysite.com/path/to/image.png访问您的资产,那么您应该命名您的S3存储桶: assets.mysite.com

  2. 在您的DNS记录中添加CNAME,以便assets.mysite.comassets.mysite.com.s3.amazonaws.com的别名(不要包含' .mysite.com'在&#中39; DNS记录的名称'字段。)

  3. 设置回形针以使用默认S3路径的新域别名insetad:

     has_attached_file :my_file,
         ...
         :url => ':s3_alias_url'
         :s3_host_alias => 'assets.mysite.com',
         ...
    
  4. 我通常有不同的桶用于开发,登台和生产,我只使用prod桶的域别名。因此,为了确保它在每个环境中都有效,我的:url设置通常是这样的:

    :url => (ENV['USE_S3_ALIAS'] == 'TRUE' ? ':s3_alias_url' : ':s3_domain_url')