8

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

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

Приветствия

ответ

5

Посмотрите на Paperclip::Storage::S3.

+4

В частности ': s3_alias_url' –

+2

Спасибо за это. Я уже посмотрел на это и не мог понять, но после того, как ваше приглашение снова посмотрело с новой силой и нашло сообщение в группе Google, это позволило мне решить эту проблему. Выложили ссылку, если кто-то застрял на одном и том же. Привет, ребята. https://groups.google.com/group/paperclip-plugin/browse_thread/thread/e1acd8339490438c?pli=1 – Addsy

+0

Возможно, это опция DNS? – AnApprentice

2

Вот все, что вам нужно, чтобы скрыть URLs 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. . ком»в 'имя' поле записи DNS)

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

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

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

:url => (ENV['USE_S3_ALIAS'] == 'TRUE' ? ':s3_alias_url' : ':s3_domain_url') 
Смежные вопросы