2012-06-07 72 views
1

解决此问题。事实证明,我花了太多时间研究这个问题,因为它似乎很常见,没有足够的时间再次检查我的秘密访问密钥是否已在我的本地环境中正确复制/粘贴。AWS :: S3 :: Errors :: SignatureDoesNotMatch在本地开发中使用回形针和Amazon S3

我已阅读约20个关于此问题,至今没有人帮助过我。我一直在我的创建控制器中收到一个SignatureDoesNotMatch异常,我找不到原因。

我的类(含有少量的重命名为“S3”,因为该项目没有被释放):

class S3File < ActiveRecord::Base 
    has_attached_file :s3_attachment, 
    storage: :s3, 
    bucket: ENV['S3_BUCKET_NAME'], 
    s3_credentials: { 
     access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
     secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] 
    }, 
    path: ':id/temp.jpg' 
end 

我在.ENV文件中定义的变量ENV与工头开始我的服务器和我已经验证这些值在'foreman run rails console'中是正确的。

这从来没有为我工作,但到目前为止,我已经尝试了几种路径,我已经安装了ImageMagick的,并包括以下宝石:

# rails -v Rails 3.2.2 
# ruby -v Ruby 1.9.2p290 
gem 'paperclip' # paperclip (3.0.4) in Gemfile.lock 
gem 'aws-s3' # aws-s3 (0.6.3) in Gemfile.lock 
gem 'aws-sdk' # aws-sdk (1.5.2) in Gemfile.lock 
gem 'rmagick' # rmagick (2.13.1) in Gemfile.lock 

最后我_form部分看起来像:

<%= form_for @s3_file do |f| %> 
    <div class="field"> 
    <%= f.file_field :email_attachment %>  
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

我会提供更多信息给需要它的人,但是在这一点上我很难过。感谢任何能够提供帮助的人。

回答

0

我一直在看到人们试图一起使用aws-s3和aws-sdk,但是这将会是cause conflicts,因为它们都使用相同的模块命名空间。我并不是说这一定是你的问题,但它绝对没有帮助。回形针需要aws-sdk,所以我会从你的Gemfile中删除aws-s3来启动。如果仍然出现错误,我会建议在has_attached_file行的上方添加一个调试器,并检查ENV变量以确保它们实际上已被设置。

+0

谢谢,我会尝试。 https://devcenter.heroku.com/articles/s3似乎建议使用带回形针的aws-s3,然后我得到有关需要aws-sdk的错误。 – joncalhoun

+0

它实际上取决于您正在使用的Paperclip的版本。他们最近将其从aws-s3更改为aws-sdk,因此您必须根据您使用的版本来使用Gem。切换时不知道,但如果你使用的是最新版本,那么aws-sdk就是要走的路。 –

+0

这不是问题的根源,但它确实允许我删除一个我并不真正需要的宝石,并且可能会阻止未来的问题,所以谢谢。 – joncalhoun

相关问题