我使用AWS-SDK 2.3.0
gem和paperclip 5.0.0
gem。
在我的config/environment/development.rb
文件中
config.paperclip_defaults = {
storage: :s3,
s3_region: 'eu-west-1',
s3_credentials: {
bucket: 'myBucketName',
access_key_id: 'xxxxxxxxxxxxxxxxxxxxxx',
secret_access_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
}
当我创建我的存储桶时,我的存储区域设置为爱尔兰,因此根据AWS提供的文档,我将我的s3区域设置为eu-west-1
。
我假设我的详细信息都是正确的但是,当我上传图片时,它会被保存到存储桶中,但它不会显示在我的rails应用上。如果我右键单击新选项卡中的打开图像,我会收到此错误:
<Message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
答案 0 :(得分:0)
解决这个问题的方法是创建一个名为:
的文件config/initializers/paperclip.rb
并添加以下内容:
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
Paperclip::Attachment.default_options[:s3_host_name] = 's3-eu-west-1.amazonaws.com'
在第3行,我eu-west-1
取代您所在的地区。
答案 1 :(得分:0)
我也遇到了这个问题。对我来说问题是我的ENV中指定了错误的区域。确保通过单击&#34;属性&#34;来检查S3中的区域。为你的水桶。我只是在亚马逊控制台的URL栏中查看该区域,这可能只是我所在的区域。
另请注意美国标准区域was renamed到美国东部(弗吉尼亚州北部),其区域字符串为us-east-1
。
答案 2 :(得分:-1)
这似乎是维护回形针的团队的一个已知问题。
https://github.com/thoughtbot/paperclip/issues/2151
aminariana于3月25日发表评论 目前的解决方法:配置 s3_host_name到s3- [region] .amazonaws.com就像这样:
config.paperclip_defaults = {s3_host_name: “s3 - #{ENV ['AWS_REGION']}。amazonaws.com”,}
只有谷歌搜索确切的错误消息才能找到这个顺便说一句。