ruby-on-rails-3 - 如何使用 Rails 3 中的 Paperclip 和 s3 存储解决 "Missing Credentials"

标签 ruby-on-rails-3 amazon-s3

我有一个非常简单的模型和附件

has_attached_file :upload,
    :storage => :s3,
       :bucket => 'bestofbauer',
       :s3_credentials => {
         :access_key_id => ENV['MyAccessKEY'],
         :secret_access_key => ENV['MySecretKey']
       }

我有一个名为 bestofbauer 的带有 s3 的存储桶设置。

我知道我可以将凭据重构为初始化程序,但我还没有得到它来保存附件,所以我并不担心。

当我运行对象及其附件的保存时,我得到:
RuntimeError in RecommendationsController#create

Missing credentials

我倾倒了:Credentials missing when uploading photos with Paperclip and Amazon s3 但这并没有解决我的问题。

我正在使用以下 gem :
gem "paperclip"
gem "sws-sdk"
gem 'aws-s3'

还有其他想法吗?

最佳答案

您需要设置环境变量。这里有两种不同的方法来做到这一点:

  • 每次运行 rails server 或任何其他访问您的 S3 帐户的命令时,您都需要包含您的 key :
    $ MyAccessKEY=ACCESS_KEY MySecretKEY=SECRET_KEY rails server
    
  • 我假设你正在使用 bash 所以编辑你的 ~/.bash_rc~/.bash_profile 来设置你的环境变量
    export MyAccessKEY=ACCESS_KEY
    export MySecretKEY=SECRET_KEY
    

    然后打开一个新的终端窗口并仔细检查它们是否已设置
    $ echo $MyAccessKey
    > ACCESS KEY PRINTS OUT HERE
    

  • 如果您要部署到 Heroku,那么您还需要在那里提供环境变量:
    $ heroku config:add MyAccessKEY=ACCESS_KEY MySecretKEY=SECRET_KEY
    

    您可以查看您的 Heroku 配置:
    $ heroku config
    

    它将列出您为该应用程序拥有的所有配置变量。

    您可能还想将 S3 存储桶名称放在 ENV 设置中,这样在本地测试时就不会弄乱存储桶。

    关于ruby-on-rails-3 - 如何使用 Rails 3 中的 Paperclip 和 s3 存储解决 "Missing Credentials",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9624978/

    相关文章:

    ruby-on-rails - 在登录时设计一个 session 变量

    amazon-s3 - 在S3中自定义404页面

    caching - Amazon s3 404 页面缓存在 cloudflare cdn

    python - Amazon S3 - 分段上传与分割文件然后上传

    ruby-on-rails - rails : is Passenger Standalone suitable for production deployment?

    ruby-on-rails - 如何逐行递增地构建 ActiveRecord 查询?

    ruby-on-rails - 无论如何要访问 Rails 控制台中的连接表?

    ruby-on-rails - 什么是包含字母、无空格或特定长度数字的用户名的正则表达式?

    amazon-web-services - AWS CloudFront 与 Youtube - 在网页上加载视频的更快方法是什么?

    amazon-web-services - Amazon S3 同步到本地机器失败