Нужна помощь в настройке CDN

Что ж, я решился и начал миграцию своих загрузок. Хочу поделиться своим опытом новичка: некоторые предложения и вопросы, которые могут помочь другим или послужить обратной связью. Если настройка S3-бакета хорошо документирована, то в отношении CDN информации гораздо меньше. Вот примеры:

  • Мне (не программисту) потребовалось некоторое время, чтобы понять, что существует два режима работы с CDN. Один предназначен для загрузок, а другой — отдельно для «активов», таких как CSS и визуальные элементы дизайна сайта.
  • Настройка CDN для любого из этих типов могла бы выиграть от дополнительной документации или руководства. Push или pull? Ограниченный доступ к бакету? Руководство по объектным хранилищам, похоже, предполагает, что все уже знают, как это настроить.
  • Меня также немного сбило с толку пересечение настроек в админ-панели и переменных окружения. Можно использовать и то, и другое, но рекомендуется использовать переменные окружения. Сосредоточившись пока только на загрузках, я обнаружил, что мне нужен лишь поднабор переменных окружения из руководства по объектным хранилищам? (Я хотел избежать включения CDN для активов, так как не знал, как его настроить (push или pull)).
  • Для меня также не очевидно, как включить пользовательский домен для CDN. С CNAME я разобрался, но как включить SSL? Нужно ли как-то настроить сертификат Let’s Encrypt для работы с AWS CDN?
  • Скрипт migrate_to_s3 завершил работу с ошибкой и предложил повторить запуск с трассировкой. Я запускал его несколько раз, а также вручную пересоздавал посты. В конце концов он завершил работу с радостным сообщением «Done!», и похоже, что теперь все загрузки загружаются через CDN.
  • Я не ожидал, что все загрузки останутся и на машине с Discourse. Это ожидаемое поведение? Я думал, что миграция означает, что задача rake также удалит локальные копии? Или это произойдет позже в рамках процесса очистки устаревших файлов?

Я рад, что решился (я всё-таки не из робких). Сайт продолжает работать нормально, но есть несколько открытых вопросов:

  • ограниченный доступ к бакету (да/нет)
  • удаление загрузок, которые всё ещё находятся на сервере, чтобы я мог работать с меньшими резервными копиями
  • SSL-сертификат для пользовательского домена CDN
  • как настроить CDN с push (или, может, pull?) для активов CDN? Это просто увеличит скорость сайта?

Плюс использования переменных окружения в том, что они существуют даже до восстановления вашего сайта. Таким образом, если вся ваша конфигурация S3 хранится в YAML-файле, а резервные копии находятся в S3, для восстановления сайта вам понадобится только этот YAML-файл. Вам достаточно пересобрать контейнер и выполнить восстановление через командную строку.

Еще одно преимущество использования переменных окружения заключается в том, что эти настройки скрыты от пользовательского интерфейса, поэтому администратор (не имеющий доступа к файловой системе) не сможет их увидеть. (И, соответственно, не сможет их изменить). Однако это может быть и недостатком, поскольку в таком случае вы не сможете увидеть или изменить эти настройки через интерфейс, если захотите. :man_shrugging:

Просто выполните pull. Ничего сложного.