我刚刚使用Rails 3和Paperclip设置了文件上传到Amazon S3。所有这一切都非常好,并且正常运行。我想整理一个小细节。目前,网址是亚马逊网址(即开始http://s3.amazonaws.com),我希望他们从我的网域开始。
我已经将必要的CNAME记录添加到我的DNS中,并且它们工作正常,因此我可以通过我的域的子域访问这些文件。问题在于回形针生成的URL始于亚马逊域。有没有一种简单的方法来更改回形针配置以解决这个问题?
干杯
答案 0 :(得分:5)
答案 1 :(得分:2)
这里隐藏了S3资产的Amazon网址所需的一切:
在您要使用的域别名后命名您的S3存储桶。因此,如果您想要http://assets.mysite.com/path/to/image.png
访问您的资产,那么您应该命名您的S3存储桶: assets.mysite.com
在您的DNS记录中添加CNAME,以便assets.mysite.com
是assets.mysite.com.s3.amazonaws.com
的别名(不要包含' .mysite.com'在&#中39; DNS记录的名称'字段。)
设置回形针以使用默认S3路径的新域别名insetad:
has_attached_file :my_file,
...
:url => ':s3_alias_url'
:s3_host_alias => 'assets.mysite.com',
...
我通常有不同的桶用于开发,登台和生产,我只使用prod桶的域别名。因此,为了确保它在每个环境中都有效,我的:url
设置通常是这样的:
:url => (ENV['USE_S3_ALIAS'] == 'TRUE' ? ':s3_alias_url' : ':s3_domain_url')