Carrierwave + Cloudfront + подписанные URL-адреса + несколько блоков - PullRequest
1 голос
/ 26 октября 2019

У меня есть приложение Rails 5, использующее carrierwave, carrierwave-aws и гемы cloudfront-signer. Я дал стандартное ведро, настроенное для Carrierwave. Я могу нормально загружать и обслуживать контент (т. Е. Пользовательские аватары и т. Д.).

У меня есть другой загрузчик, который имеет динамический сегмент (т. Е. Для каждого клиента) для разделения данных. Я могу загрузить без проблем. Проблема в том, что эти файлы не будут обслуживаться через облачный фронт (403 Запрещено). Я подозреваю, что базовая конфигурация CW пытается подписать сегменты, используя другой сегмент для доступа к файлам.

Вот моя загруженная конфигурация, которую я до сих пор пробовал:

  def initialize(*)
    super

    # https://stackoverflow.com/questions/31589872/setup-for-an-uploader-carrierwave

        self.aws_credentials = {
          region: ENV['AWS_REGION']
        }

        self.aws_bucket = Apartment::Tenant.current
        self.aws_signer = -> (unsigned_url, options) { Aws::CF::Signer.sign_url unsigned_url, options }

  end

Этоустанавливает пользовательский сегмент, но кажется, что URL не работают. Они подписаны, но все возвращают 403.

Я подозреваю, что мне нужно передать параметры aws_signer в корзину или конечную точку, чтобы эта работа работала.

Есть идеи?

...