2

我在 Heroku 上运行 Redmine(来自http://github.com/edavis10/redmine的 1.2-stable 分支)并希望使用 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 拒绝请求。

任何人都可以确认或否认这一点吗?对于如何完成这项工作的任何想法,我都会很高兴。

4

3 回答 3

1

你的桶在哪个地区?尝试使用位于美国标准的水桶。

我有同样的麻烦。首先,我使用了位于东京的存储桶,并且收到了相同的错误消息。我检查了响应代码和正文。响应代码是 409 冲突。错误消息如下。

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

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

于 2011-08-13T02:58:00.610 回答
0

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

于 2011-10-24T11:36:28.477 回答
0

试试我的插件 fork,我似乎记得去年的一个问题。它可能正在尝试为测试环境创建存储桶,如果您没有在 Heroku 上定义它,那么它将失败(潜在修复)。

于 2011-08-09T23:34:28.510 回答