Вопрос о поддержке Amazon S3 для хранения в Discourse

Хотел бы задать вопрос по технической проблеме, связанной с поддержкой Discourse хранилища Amazon S3.

Я наткнулся на пост на форуме ещё с 2013 года, где уже обсуждалась поддержка S3 в Discourse. Также нашёл несколько тем, касающихся разгрузки контента через CDN, но подробной информации по этой теме, похоже, мало.

Я сам развернул форум на Discourse и очень упорно пытаюсь включить загрузку видео. У меня возникло множество идей, но так как я не программист, реализовать их сложно — я всегда нуждаюсь в помощи других, чтобы продвигаться хотя бы понемногу.

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

Действительно, я уже попросил друга помочь мне настроить хранилище S3 и прокси-кэширование. (Для ясности: я не рассматривал использование CDN из-за соображений стоимости — услуга CDN от Amazon S3 может быть довольно дорогой.)

Теперь я столкнулся с проблемой: во время тестирования, несмотря на то что хранилище S3 настроено правильно и теоретически все загрузки с форума должны напрямую отправляться в S3, видеофайлы всё равно не могут быть загружены в хранилище S3.

Не могли бы вы объяснить, что может быть настроено неправильно или что может вызывать эту проблему?

спасибо

Что происходит вместо этого? Появляется ли сообщение об ошибке?

Также стоит проверить настройки «макс. размер вложения (КБ)» и «разрешенные расширения» в разделе Настройки сайта — Файлы.

Обратите внимание, что даже с использованием CDN и S3 эта конфигурация не совсем подходит для видео, так как отсутствует транскодирование для оптимизации под пропускную способность и разрешение устройств клиентов.


Большое спасибо за ваш ответ. Вот ситуация:
На данный момент изображения с моего форума успешно загружаются в S3, а видео — нет. Это действительно сбивает с толку.

Хотя я понимаю, что S3 может всё ещё не быть идеальным решением для обработки видео, основное содержание форума — это текст и изображения. Функция видео нужна лишь для удовлетворения потребностей некоторых пользователей, а сами видео будут не очень большими. Ещё раз большое спасибо за напоминание.

Вы забыли ответить на мой вопрос :slight_smile:

CDN от Amazon дешевле, чем исходящий трафик из корзин S3. Вам определенно стоит использовать CDN перед корзиной S3.

Я подозреваю, что ошибка, о которой вы нам не сообщили, связана с тем, что видео слишком большие. Существуют настройки для изменения этого, но, возможно, лучше включить «Включить прямую загрузку в S3».


При попытке загрузить видео на мой форум теперь сразу отображается сообщение:

«Извините, этот файл слишком большой (максимальный размер — 50 МБ). Почему бы не загрузить ваш большой файл в облачный сервис для обмена, а затем вставить ссылку?»

Однако размер моего видео составляет всего 10 МБ. В настоящее время я использую хранилище S3 с доставкой через CDN CloudFront.

Мне очень сложно разобраться в проблеме. Не могли бы вы предоставить правильную процедуру, предполагая, что никаких предварительных действий не выполнялось? Я попрошу своего друга выполнить правильные шаги и попробовать снова.

Здравствуйте, спасибо за ваш ответ.

Я уже попросил своего друга переключиться с метода хранения S+ с прокси-кэшированием на метод хранения S3 + доставку через CDN CloudFront. Однако, похоже, это не сработало, и я пока не знаю причину. Поэтому хотел бы узнать, могли бы вы предоставить точные команды для выполнения, чтобы мой друг мог попробовать снова.

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

Сначала объясню, что у меня абсолютно нет знаний в области программирования или кодинга. Я учился на японском языке в университете, поэтому, кроме изучения японского, я ничего не понимаю в коде. Если некоторые мои идеи покажутся наивными, прошу меня извинить.

Благодаря тому, что сервер, на котором размещался мой форум, был отключён, мне пришлось приложить усилия для его восстановления, что позволило мне изучить ключевые моменты работы с хранилищем S3 и CDN CloudFront. Затем, применив эти знания, я задумался, существуют ли другие провайдеры хранилищ и CDN. Я обратился к ChatGPT и с радостью получил ответы на свои вопросы.

На самом деле я всегда хотел создать видеосайт, но быстро отказался от этой идеи из-за высокой стоимости жёстких дисков. Теперь, узнав о новом решении, я снова загорелся идеей создать видеосайт для поддержки видео на форуме Discourse.

Согласно рекомендациям GPT, я узнал, что для видеосайта можно использовать либо PeerTube, либо MediaCMS — обе системы отличные.

Сейчас у меня есть два основных вопроса:

Первый вопрос: Обе системы видеосайтов поддерживают хранилище Backblaze B2 с доставкой через CDN Cloudflare. Поскольку видео не хранятся на моём собственном жёстком диске, воспроизведение видео на сайте уже использует API Backblaze B2. Я хочу, чтобы форум был связан с видеосайтом не просто через ссылки, а чтобы кнопка загрузки на форуме напрямую вызывала мой видеосайт (например, MediaCMS) в качестве источника. Это означало бы два вызова API:

  1. Форум вызывает видеосайт MediaCMS.
  2. Видеосайт MediaCMS вызывает хранилище Backblaze B2.

Хотелось бы узнать, технически ли осуществимы такие повторяющиеся вызовы API.

Второй вопрос: Могут ли система форума и система видеосайта использовать общую систему учётных записей пользователей, чтобы пользователи могли использовать один и тот же аккаунт. Это влияет на то, как будут работать вызовы API.

  • Вариант 1: Как администратор видеосайта я регистрирую учётную запись администратора, связанную с форумом. Когда форум загружает видео через API, технически это администратор загружает его на сайт MediaCMS.
  • Вариант 2: При использовании общей системы учётных записей загрузка видео осуществляется через учётную запись пользователя на форуме, а через API синхронизируется с сайтом MediaCMS. Тогда пользователь сможет увидеть загруженное видео под своей учётной записью на видеосайте.

Я консультировался с GPT по поводу этих подходов, и GPT в целом дал положительную оценку. Однако, к сожалению, при многократном использовании я обнаружил, что GPT может давать советы и помогать в принятии стратегических решений, но в деталях иногда бывает неточен. Поскольку у меня нет собственных знаний в области программирования, я не уверен, действительно ли эти идеи осуществимы.

Если возможно, буду очень благодарен, если вы укажете, какие части этих идей осуществимы, а какие — нет.

Тогда им, вероятно, стоит принять участие в этой теме. Следовали ли они инструкции Настройка провайдера объектного хранилища, совместимого с S3, для загрузки файлов, внесли ли настройки в файл ymll и добавили ли часть, отвечающую за отправку активов в S3?

Возможно, браузер каким-то образом не передаёт размер корректно.

Вы пробовали это сделать?


Здравствуйте. На самом деле ситуация следующая:
Видео размером менее 10 МБ можно загрузить на мой собственный сервер, но сами видеофайлы не могут быть загружены в S3.
При загрузке видео система автоматически захватывает первый кадр в качестве эскиза, и изображение эскиза может быть загружено в S3.

Однако для видео размером более 10 МБ ничего загрузить нельзя.

Если бы ваш друг следовал инструкции Настройка провайдера объектного хранилища, совместимого с S3, для загрузки файлов, параметр enable_s3_uploads у вас бы не отображался. Неясно, является ли установка этих параметров в базе данных вместо переменных окружения частью проблемы.

Это не то же самое, что Включить прямую загрузку в S3. Речь идет о “Включить прямую загрузку в S3”.

Вам также нужно изменить параметры Максимальный размер изображения (КБ) и Максимальный размер вложения (КБ).

Однако я увеличил максимальный размер загрузки до 100 МБ, попытался загрузить файл размером 37 МБ и получил ошибку «файл слишком большой». Возможно, вы правы, и это баг. Я давно не обновлял сайт, на котором проводил тестирование.

Вы изменили это также в app.yml?

Большое спасибо за всю вашу помощь.
Он сказал, что следовал инструкциям по адресу Configure an S3 compatible object storage provider for uploads, но это не сработало.
Однако только что, после того как он сделал то же самое, что вы предложили, и изменил максимальный размер загружаемого файла на 100 МБ, видео успешно загрузилось в хранилище S3.
Огромное спасибо!

Значит, он сделал что-то не так и должен был попросить о помощи. Вероятно, он упустил часть, касающуюся загрузки ресурсов в S3.

Отлично! Где-то есть тема о том, как увеличить этот лимит в 100 МБ.