aws-sdk 2.3.0和Paperclip 5.0.0坏区域

时间:2016-10-30 08:31:48

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

我使用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>

3 个答案:

答案 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”,}

只有谷歌搜索确切的错误消息才能找到这个顺便说一句。