如何在rails / AWS / heroku中设置S3_KEY和S3_SECRET .env变量

时间:2014-04-26 00:14:53

标签: ruby-on-rails heroku amazon-s3 environment-variables

我正在做this heroku tutorial

在教程中,它提到我需要为S3_KEY,S3_SECRET和S3_BUCKET设置环境变量。

我在AWS(亚马逊网络服务)上创建了一个S3 Bucket,我使用了Bucket的唯一名称作为我的.env(我在我的网站上创建了一个.env文件) Rails项目,并将其添加到.gitignore)S3_BUCKET变量。

但是,在本教程中,我需要设置 S3_KEY和S3_SECRET。

我在哪里可以找到这些变量?我似乎无法在AWS / S3上找到它们。我想生成这些变量或与这些变量有什么关系?

第二个问题:我将有一个模型照片看起来像这样......

class Photo < ActiveRecord::Base
    has_attached_file   :image,
                        :styles => { thumbnail: "100x100#" },
                        :storage => :s3,
                        :s3_credentials => {    :access_key_id  => ENV['S3_KEY'],
                                                :secret_access_key => ENV['S3_SECRET'],
                                                :bucket => ENV['S3_BUCKET'] }
end

这现在可以在我的所有环境中使用,包括proku on heroku,还是我需要对heroku做一些特别的事情?

1 个答案:

答案 0 :(得分:1)

您在此处所做的是确定这些变量的用途。

:s3_credentials => {    :access_key_id  => ENV['S3_KEY'],
                                                :secret_access_key => ENV['S3_SECRET'],
                                                :bucket => ENV['S3_BUCKET'] }

现在您需要设置生产中变量的实际值。

要创建新密钥和密钥,请转到AWS管理控制台,然后单击右上角的名称。接下来,单击安全凭据并生成新的访问密钥对。请使用以下这些。

要为heroku设置AWS变量,请从命令行执行以下操作:

$ heroku config:set S3_KEY=xxxxxxxxxx S3_SECRET=xxxxxxxxxxxxxxxxxxxxxx

显然用你的实际钥匙替换x。如果您想了解有关配置变量的更多信息,请点击此处:Heroku Config Vars

您最后可能会注意到这一点,但无论如何都值得一提。确保您永远不会将实际的AWS密钥推送到Github(甚至是私人仓库)。有些人专门为AWS密钥搜索Github,如果他们找到它们可能会花费你很多钱。

关于第二个问题,我会将本地存储用于测试/开发环境。做这样的事情:

 if Rails.env.test? || Rails.env.development?
    :storage = :file
 else
    :storage = :s3
 end