Скрытие URL-адресов Amazon при использовании S3, Rails и Paperclip - PullRequest
8 голосов
/ 26 сентября 2010

Я только что настроил загрузку файлов в Amazon S3, используя Rails 3 и Paperclip.Все это работает на удивление хорошо и работает.Есть только одна маленькая деталь, которую я хотел бы разобрать.На данный момент URL-адреса являются амазоночными URL-адресами (т. Е. Start http://s3.amazonaws.com), и я хотел бы, чтобы они начинались с моего домена.

Я уже добавил необходимые записи CNAME в свой DNS иработает нормально, так что я могу получить доступ к файлам через поддомен моего домена. Проблема в том, что URL-адреса, генерируемые paperclip, начинаются с домена amazon. Есть ли простой способ изменить конфигурацию paperclip, чтобы обойти это?

Приветствия

Ответы [ 2 ]

5 голосов
/ 26 сентября 2010

Взгляните на Paperclip::Storage::S3.

2 голосов
/ 07 января 2016

Вот все, что вам нужно, чтобы скрыть URL-адреса Amazon ваших ресурсов S3:

  1. Назовите ваш сегмент S3 после псевдонима домена, который вы хотите использовать.Поэтому, если вы хотите получить доступ к своим ресурсам на http://assets.mysite.com/path/to/image.png, вам следует назвать ваш сегмент S3: assets.mysite.com

  2. Добавить CNAME в свои записи DNS, чтобыassets.mysite.com - это псевдоним assets.mysite.com.s3.amazonaws.com (не включайте «.mysite.com» в поле «имя» DNS-записи.)

  3. Настройте скрепку для использования новогопсевдоним домена, вставленный в путь S3 по умолчанию:

     has_attached_file :my_file,
         ...
         :url => ':s3_alias_url'
         :s3_host_alias => 'assets.mysite.com',
         ...
    

У меня обычно есть разные сегменты для разработки, подготовки и производства, и я использую псевдоним домена только для сегмента продукта.Поэтому, чтобы убедиться, что он работает в каждой среде, мои настройки :url часто так:

:url => (ENV['USE_S3_ALIAS'] == 'TRUE' ? ':s3_alias_url' : ':s3_domain_url')
...