403 Ошибка при использовании плагина redmine_s3 на Heroku

Я использую Redmine (стабильная версия 1.2 с http://github.com/edavis10/redmine) на Heroku и хотите использовать плагин redmine_s3 (https://github.com/tigish/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 отклоняет запрос.

Кто-нибудь может это подтвердить или опровергнуть? Я был бы рад любым идеям о том, как заставить это работать.


person Manuel Meurer    schedule 09.08.2011    source источник


Ответы (3)


В каком регионе находится ваше ведро? Попробуйте использовать ведро, расположенное в стандарте США.

У меня была такая же беда. Сначала я использовал ведро, расположенное в Токио, и получил такое же сообщение об ошибке. Я проверил код ответа и тело. Код ответа: 409 Конфликт. Сообщение об ошибке было ниже.

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

Я думаю, что эта ошибка означает, что redmine_s3 попытается создать корзину с именем, которое вы указали в стандарте США. Однако есть ведро с таким же именем в другом регионе. Таким образом, вы получите ошибку.

person Yuki Awano    schedule 13.08.2011
comment
Юки, спасибо за ответ! Я попытался создать ведро сам, вместо того, чтобы разрешить его создание redmine_s3, но получил ту же ошибку. Я также пробовал создавать корзины в разных регионах и выбирал длинные имена корзин, которые были гарантированно уникальными. - person Manuel Meurer; 13.08.2011

Попробуйте мой форк плагина, кажется, я помню такую ​​проблему в прошлом году. Это может быть попытка создать корзину для тестовой среды, которая, если вы не определили ее в Heroku, потерпит неудачу (возможное исправление).

person Eric Davis    schedule 09.08.2011
comment
Спасибо, Эрик, но, как вы видите в моем вопросе, я уже использую вашу вилку. :) Зачем Redmine запускать тестовую среду на Heroku? - person Manuel Meurer; 10.08.2011
comment
Я действительно думаю, что это может быть проблема Ruby 1.9.2. Я использую Redmine на Heroku с этим плагином (на ruby ​​​​1.8.7), и он отлично работает. Я пытался преобразовать свое приложение в ChiliProject, который является ответвлением Redmine, но я получаю 403 в стеке Heroku Cedar, то есть 1.9.2. - person Jack Chu; 30.08.2011

В конце концов, это была проблема с Ruby 1.9.2. Как только я понизился до 1.8.7, он начал работать! :) Спасибо Джеку Чу в комментариях к Эрику Дэвису за то, что направил меня на правильный путь.

person Manuel Meurer    schedule 24.10.2011