我对ROR很新。我最近在heroku上部署了一个应用程序,并试图通过回形针将附件功能添加到应用程序。aws-s3错误:AWS :: S3 :: MissingAccessKey错误,但密钥已定义?
我遵循了将aws-s3添加到我的应用的所有步骤。这是我最初的代码:
user.rb(模型)
has_attached_file :avatar,
:styles => {:small => "70x70>"},
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/:id/:style/:basename.:extension"
validates_attachment_size :avatar, :less_than => 1.megabytes
validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/png']
s3.yml(文件位于config文件夹中)注:所有这些桶的存在对我的AWS-S3
development:
bucket: my_avatar-dev
access_key_id: amazonaccesskey
secret_access_key: amazon_secret_access_key
test:
bucket: myapp_avatar-test
access_key_id: amazonaccesskey
secret_access_key: amazon_secret_access_key
production:
bucket: myapp_avatar-pro
access_key_id: amazonaccesskey
secret_access_key: amazon_secret_access_key
的Gemfile
gem 'aws-s3'
当运行这个配置,我想我的加载应用程序时,得到一个错误页500错误。运行Heroku logs
显示以下错误:AWS :: S3 :: MissingAccessKey(你没有要求两者的访问密钥提供
所以我也跟着一些建议,并定义键和SECRET_KEY作为环境变量的Heroku,使用以下行代码:
heroku config:add S3_KEY=amazonaccesskey S3_SECRET=amazon_secret_key
我然后加入一个初始化测试环境和通过键或.yml文件取决于环境中启动,代码如下:
初始化/ s3.rb
然后if Rails.env == "production"
# set credentials from ENV hash
S3_CREDENTIALS = { :access_key_id => ENV['S3_KEY'], :secret_access_key => ENV['S3_SECRET'], :bucket => "myapp_avatar-pro"}
else
# get credentials from YML file
S3_CREDENTIALS = Rails.root.join("config/s3.yml")
end
user.rb模型更新以下内容:
has_attached_file :avatar, :storage => :s3, :s3_credentials => S3_CREDENTIALS
我然后部署到Heroku的和测试的应用程序,但我还是继续得到同样的错误(第500页)和错误代码: AWS :: S3 :: MissingAccessKey(您没有提供两个必需的访问密钥。
如果我已经定义了heroku中的变量,这怎么可能?有什么我失踪?这有可能是宝石的东西吗?另外,我正在使用HAML进行造型......不确定这一点是否重要,但仅限于此。我很迷茫,所以任何帮助将不胜感激。非常感谢!
你找出答案吗?我遇到了同样的问题。谢谢。 – noob