AWS Access Key无法在rails app中运行

时间:2015-08-12 18:55:21

标签: ruby-on-rails amazon-web-services amazon-s3

我有一个使用paperclip和aws-sdk的rails应用程序设置

我的aws.yml文件如下:

development:
  access_key_id: ENV['AWS_ACCESS_KEY_ID']
  secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']

production:
  access_key_id: ENV['AWS_ACCESS_KEY_ID']
  secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']

我的development.rb文件在这里:

config.paperclip_defaults = {
    :storage => :s3,
    :s3_credentials => {
        :bucket => ENV['AWS_BUCKET']
    }
}

我100%确定我的钥匙是正确的。我有两倍,三倍和四倍检查键。我首先尝试了一个Iam用户密钥,但是这不起作用,然后我尝试创建一个根密钥,但这也不起作用。我重新使用全新的Iam用户密钥,并且该用户拥有完整的S3访问权限。

/config/initializers/algoliasearch.rb使用环境变量就好了:

AlgoliaSearch.configuration = { application_id: 'xxxxxx', api_key: ENV['algolia_admin_api_key'] }

但是,当我尝试在我的开发环境中上传文件时,我从aws获得了InvalidAccessKey错误。我还没有在生产上尝试过,因为它使用相同的键(只是桶名称不同)。

我使用了错误的钥匙吗?或者是阻止我的密钥被访问的东西?我找不到任何告诉我如何正确设置钥匙的东西,我完全迷失了。我知道我以前工作过,不记得还有其他步骤。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:我必须将s3凭据添加到production.rb和development.rb环境文件中:

# development.rb
config.paperclip_defaults = {
    :storage => :s3,
    :s3_credentials => {
        :bucket => ENV['AWS_BUCKET'],
        :access_key_id => ENV['HOMEIN_AWS_ACCESS_KEY_ID'],
        :secret_access_key => ENV['HOMEIN_AWS_SECRET_ACCESS_KEY']
    }
}

除桶名外,它们都是相同的。 我觉得这是一个我不知道的更优雅的解决方案,但是...