ruby-on-rails - Paperclip 使用 S3 在 Heroku 上上传

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

我很抱歉重述旧的提示,但我已经束手无策,不知道下一步该去哪里。我在 Heroku 上使用 Paperclip 并配置了 S3 上传。我能够在我的本地开发环境中运行,但是一旦它在 Heroku 上运行,我就遇到了这个错误:

AWS::S3::Errors::PermanentRedirect (The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

我用谷歌搜索了这个错误并通读了 Heroku 文档,我相信我已经正确设置了所有内容。我最初认为我的问题源于我的存储桶位于 s3-us-west-1.amazonaws.com 区域,但我不再相信了。

以下是我的 Heroku 配置的相关部分:

AWS_REGION:                      us-west-1
S3_BUCKET_NAME:                  my-super-awesomely-amazing-bucket

来 self 的 config/environments/production.rb 文件:

  config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
      :bucket => ENV['S3_BUCKET_NAME'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    } 
  }

我的 paperclip.rb 初始化文件:

if Rails.env.production? 
  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-us-west-1.amazonaws.com'
end

以及相关模型中我的回形针配置:

has_attached_file :document,
:styles => { },
:default_url => "/image_styles/:style/missing.png"

那么...我在这里做错了什么?在这一点上,我确定我错过了一些明显的东西,但我不知道从这里去哪里。我觉得我已经认真配置了所有内容,但 PermanentRedirect 错误不断出现。

最佳答案

这可能不是直接的解决方案,但我们发现您必须在 s3_credentials block 的外部包含 bucket 选项:

#config/environments/production.rb
config.paperclip_defaults = {
    storage: :s3,
    s3_host_name: 's3-eu-west-1.amazonaws.com',
    s3_credentials: {
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
    },
    bucket: ENV['S3_BUCKET_NAME']
}

这对我们在 Heroku 上 100% 有效,但它是否对您有效(因为您的存储桶在不同的区域)是另一回事

如果您需要更多帮助,请发表评论,我很乐意为您提供一些想法

关于ruby-on-rails - Paperclip 使用 S3 在 Heroku 上上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25356342/

相关文章:

ruby-on-rails - 如何在我的 heroku 托管 Ruby on Rails Web 应用程序中调试 "Application Error"?

ruby-on-rails - 子类和 Rabl

ruby-on-rails - rails 5.2 如何在 Controller 中获取表单数据值

ruby - 确定ruby中对象的类型

ruby , `match' : invalid byte sequence in UTF-8

git - 如何在 Heroku 上更改应用程序的 git url

ruby-on-rails - "bin/rails: No such file or directory"w/Heroku 上的 Ruby 2 和 Rails 4

ruby-on-rails - Create_Association 不起作用

ruby-on-rails - Rails response_重定向除X mime-type外的所有请求

ruby-on-rails - 运动鞋未在 heroku 上接收消息 - RabbitMQ Bigwig