为 Amazon AWS 3 设置私有密钥



我使用雾和载波。现在我只有在本地运行的简单上传器:

CarrierWave.configure do |config|
    config.fog_credentials = {
        :provider               => 'AWS',
        :aws_access_key_id      => ENV['S3_ACCESS_KEY'],
        :aws_secret_access_key  =>  ENV['S3_SECRET_KEY'],
      :region                 => 'us-west-1', # Change this for 
  }
  config.fog_directory  = "bucket-main"    
end

但是现在我有一个问题,我应该在哪里保存我的密钥。

在 heroku 环境中,我可以像这样打印

$ heroku config:set S3_ACCESS_KEY=THERANDOMKEYYOUGOT  
$ heroku config:set S3_SECRET_KEY=an0tHeRstRing0frAnDomjUnK  
$ heroku config:set S3_REGION=us-west-2  
$ heroku config:set S3_BUCKET=my-sample-app-bucket-20160126

但是我不知道在本地计算机上该怎么做。

我已经按照本教程 https://github.com/sifxtreme/rails-carrierwave-s3

并将我的密钥存储在我刚刚创建的config/secrets.yml file中:

development: &defaults
  S3_ACCESS_KEY: "AKHJJHHJHJJHHJHJDHJDDJDHJDHJDJHDRANDOMFQ"
  S3_SECRET_KEY: "HfkdjgjkfjkgjkfjkRANDOM2JSJDKKJJKSSJDJKSKaN"
test:
  <<: *defaults
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  <<: *defaults

但是 rails 的命令给了我这个错误: /home/jonstark/.rvm/gems/ruby-2.3.0@railstutorial_rails_4_0/gems/fog-core-1.35.0/lib/fog/core/service.rb:244:in "validate_options":缺少必需的参数:aws_access_key_id, aws_secret_access_key(参数错误)

那我该怎么办?

以我的secrets.yml,我倾向于做的是:

# secrets.yml
local: &local
  secret_key_base: 123abc
remote: &remote
  secret_key_base: abc123
  aws_secret_key: <%= ENV['AWS_SECRET_KEY'] %>
development:
  <<: *local
test:
  <<: *local
production:
  <<: *remote

上面的文件应该是我倾向于做的事情的足够好的概念证明。这样,您可以将机密存储在环境变量中,而不必将它们提交到源代码管理中。我从不将它们提交到源代码管理中。

如果一个平台要求你将机密提交到源代码管理,那么它是一个具有一些糟糕软件架构的平台。体系结构应始终考虑安全性。

由于您使用的是开发环境,因此实际上不需要连接到 AWS S3,除非您在其上进行开发。理想情况下,为了帮助加快开发环境并避免阻塞服务器,您可以将文件保存到public文件夹中,而不是 S3 上。

我解决了这个问题,将宝石"费加罗"添加到我的宝石文件中。

最新更新