【问题标题】:How do you set S3_KEY and S3_SECRET .env vars in rails / AWS / heroku你如何在 rails / AWS / heroku 中设置 S3_KEY 和 S3_SECRET .env vars
【发布时间】:2014-06-11 20:53:40
【问题描述】:

我在做this heroku tutorial。

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

我在 AWS (Amazon Web Services) 上创建了一个 S3 存储桶,我使用存储桶的唯一名称作为我的 .env(我在我的 Rails 项目中创建了一个 .env 文件,并添加了它到 .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

现在这是否适用于我的所有环境,包括 heroku 上的 prod, 还是我需要对 heroku 做一些特别的事情?

【问题讨论】:

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


    【解决方案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(甚至是私有仓库)。有人专门从 Github 上抓取 AWS 密钥,如果他们找到它们可能会花费你很多钱。

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

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

    【讨论】:

    • 感谢 settheline,一旦我获得 S3 密钥来设置 heroku 的配置变量,我是否也使用这些相同的密钥在我的 .env 中设置这些相同的变量?另外,您能否详细说明我想要的 :storage = :file 文件部分。
    • 看起来您将在 .env 中使用相同的键,是的。我建议在开发中使用本地文件存储来避免存储桶中的任何冲突。您可以按照教程中的说明使用 .env,但看起来您需要使用 Foreman。
    • 我不得不使用存储 :fog 而不是 :s3。我正在使用雾宝石
    猜你喜欢
    • 2021-05-05
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    相关资源
    最近更新 更多