403在Heroku上使用redmine_s3插件时出错

时间:2011-08-09 14:46:00

标签: heroku amazon-s3 redmine redmine-plugins

我正在Heroku上运行Redmine(来自http://github.com/edavis10/redmine的1.2稳定分支)并希望使用redmine_s3插件(https://github.com/tigrish/redmine_s3)将资产存储在S3上。

我使用本指南进行设置:http://blog.firsthand.ca/2010/10/installing-redmine-on-heroku-with-s3.html

它在本地运行很好,当我启动Redmine(在生产环境中)时,它会创建配置的存储桶并存储我上传的任何资产。

但是当我尝试在Redmine上运行它时,它会在第一次请求Heroku时崩溃

/usr/ruby1.9.2/lib/ruby/1.9.1/net/http.rb:2303:in `error!': 403 "Forbidden" (Net::HTTPServerException)
from /app/vendor/plugins/redmine_r3/lib/S3.rb:306:in `block in make_request'
from /usr/ruby1.9.2/lib/ruby/1.9.1/net/http.rb:627:in `start'
from /app/vendor/plugins/redmine_r3/lib/S3.rb:281:in `make_request'
from /app/vendor/plugins/redmine_r3/lib/S3.rb:157:in `create_bucket'
from /app/vendor/plugins/redmine_r3/lib/redmine_s3/connection.rb:57:in `create_bucket'
from /app/vendor/plugins/redmine_r3/init.rb:17:in `block in <top (required)>'

违规行在这里:https://github.com/tigrish/redmine_s3/blob/master/lib/S3.rb#L306

我进行了双重和三重检查,Heroku和我的本地计算机上的配置(S3凭据,存储桶名称等)完全相同。 我尝试了不同的存储桶名称和S3凭据,仍然是同样的错误。 Redmine本身(没有redmine_s3插件)在Heroku中运行得非常好。 只要我添加插件......热潮!

我怀疑从Heroku到S3的请求有一些奇怪的标题或其他属性使S3拒绝请求。

任何人都可以确认或否认吗? 如果有任何关于如何使这项工作的想法,我会很高兴。

3 个答案:

答案 0 :(得分:1)

你的水桶在哪个区域?尝试使用美国标准中的铲斗。

我遇到了同样的麻烦。首先,我使用位于东京的一个桶,我收到了同样的错误信息。 我检查了响应代码和正文。响应代码为409 Conflict。错误信息如下。

BucketAlreadyOwnedByYou
Your previous request to create the named bucket succeeded and you already own it.

我认为此错误意味着redmine_s3将尝试创建一个具有您在美国标准中指定的存储桶名称的存储桶。但是,有一个存储桶在其他区域已经具有相同的名称。所以你会收到一个错误。

答案 1 :(得分:0)

试试我的fork of the plugin,我似乎记得像去年那样的问题。它可能正在尝试为测试环境创建存储桶,如果您没有在Heroku上定义,那么它将失败(potential fix)。

答案 2 :(得分:0)

最后,它实际上是Ruby 1.9.2的一个问题。一旦我降级到1.8.7,它就开始工作了! :)感谢Jack Chu在给Eric Davies的评论中让我走上正轨。