Object Storage
Все бакеты развертываются с помощью Terraform модуля bucket и используют Yandex Object Storage.
my.medikt.net
Тип: SPA приложение (user-spa)
Описание: Хостинг статического контента для user-spa. Использует website hosting конфигурацию.
Особенности:
- Website hosting включен (index.html, error.html)
- CORS: только разрешенные origins (https://my.medikt.net/)
- ACL: AllUsers READ (публичный доступ)
- Lifecycle: резервация user-spa бэкапов через 90 дней
private.medikt.net
Тип: Приватное хранилище
Описание: Хранилище для приватных файлов (загружаемые пользователем видео, временные файлы транскодирования).
Особенности:
- CORS правила разрешают PUT/GET от любых источников
- Используется сервисным аккаунтом transcoder для загрузки исходных файлов
public.medikt.net
Тип: Публичное хранилище
Описание: Хранилище для публичного контента. Доступно всем пользователям.
Особенности:
- AllUsers имеют права READ (публичный доступ по ссылкам)
- CORS правила разрешают PUT/GET от любых источников
- Используется сервисным аккаунтом content для доступа к контенту
Использование:
- Содержимое кэшируется через CDN (cdn.medikt.net → public.medikt.net)
- Контент доступен по URL вида: https://cdn.medikt.net/...
transcoderbucket.medikt.net
Тип: Временное хранилище для транскодирования
Описание: Хранилище для временного хранения видео во время процесса транскодирования.
Особенности:
- Lifecycle rule: автоматическое удаление через 31 день
- Используется сервисным аккаунтом transcoder
Использование:
- Временное хранилище для загружаемых пользователем видео
- Временное хранилище для экспортированных из edgecenter стримов
Схема взаимодействия
user → upload API → private.medikt.net (загрузка)
→ transcoder → transcoderbucket.medikt.net (временное хранилище)
→ CDN (cdn.medikt.net) → public.medikt.net (доставка контента)
Terraform модуль bucket
Все бакеты используют модуль ../modules/bucket с общими параметрами:
Основные переменные:
bucket-name- имя бакетаprovider-zone,provider-token,provider-cloudid,provider-folderid- параметры провайдераcors_rule- настройки CORSbucket_grants- права доступа (например, AllUsers READ)expiration_rotation_period- время жизни объектов в дняхwebsite- конфигурация website hosting