Хранилище файлов
Страница для администраторов. В хранилище файлов лежат вложения задач, файлы, загруженные функциями продукта, и дампы базы данных.
S3-совместимое хранилище
Встроенного хранилища у TAktom нет — файлы живут во внешнем объектном хранилище с API S3. Подходит любой провайдер с S3-совместимым интерфейсом: Selectel, VK Cloud, Yandex Object Storage, Amazon S3 и другие.
Облачные инстансы приходят с настроенным хранилищем
Инстанс, размещённый в облаке, поставляется с уже подключённым хранилищем: под него заведён отдельный бакет, объём которого определяется тарифом, а вложения и дампы назначены на него из коробки — настраивать ничего не нужно. При желании администратор может заменить его собственным S3-совместимым хранилищем: реквизиты вводятся на той же странице, что описана ниже.
Пока хранилище не настроено
Хранилище — такая же функция, как остальные: включите её в разделе Админ → Плагины, затем настройте и назначьте (см. ниже). Пока хранилище не настроено и не назначено, прикрепить файл к задаче нельзя — всё остальное работает как обычно. Ответ «хранилище не настроено» на неназначенной задаче — штатное состояние, а не сбой.
Настройка
- Включите функцию хранилища в разделе Админ → Плагины (она также должна быть разрешена конфигурацией инстанса — см. Функции и настройки).
- Создайте бакет в панели провайдера хранилища — сам продукт бакеты не создаёт. Имя — от 3 до 63 символов: строчные латинские буквы, цифры и дефис, без точек.
- Откройте Админ → Хранилище → S3-совместимое хранилище и заполните реквизиты: регион, имя бакета и ключи доступа; при необходимости — адрес службы (для провайдеров, отличных от Amazon), префикс, под которым хранятся ключи объектов, и режим адресации path-style.
- Нажмите «Проверить доступ» и убедитесь, что бакет достижим, прежде чем на него начнут полагаться.
- Если хранилище будет держать вложения задач, примените правила межсайтового доступа — см. CORS.
- Назначьте хранилище на задачи — см. Назначение.
Секретный ключ после сохранения наружу не отдаётся: интерфейс показывает лишь признак того, что ключ задан. Префикс ключей позволяет держать несколько инстансов в одном бакете, не смешивая их файлы.
CORS: обязателен для вложений
Браузер загружает вложения напрямую в бакет, минуя серверы приложения, — поэтому бакет должен разрешать запросы со страницы инстанса. Кнопка «Применить CORS» на странице хранилища настраивает это в одно действие: укажите адрес(а), с которых открывается инстанс.
Провайдер должен обслуживать CORS
У части провайдеров CORS работает только при virtual-hosted адресации бакета (<бакет>.<домен хранилища>). Если конфигурация принята, а загрузка вложений всё равно падает в браузере с ошибкой CORS — снимите галку path-style в настройках и включите бакету virtual-hosted адресацию в панели провайдера.
Назначение хранилища
Настроенное хранилище само по себе ничего не принимает. Назначения задаются отдельно и в двух разных местах:
| Что хранится | Где назначается |
|---|---|
| Вложения задач и загрузки функций | Админ → Настройки |
| Дампы базы данных | Админ → Бэкап (см. Резервные копии) |
Хранилищ может быть настроено и несколько — каждая задача назначается независимо, так что вложения и дампы могут жить в разных бакетах и даже у разных провайдеров.
Как передаются файлы
Браузер загружает и скачивает содержимое файлов напрямую в хранилище по ссылкам, которые подписаны и живут считанные минуты. Приложение не пропускает байты через себя, поэтому крупные вложения не нагружают серверы приложения.
Ссылки подписываются ключами доступа хранилища. Если нужно обесценить все выданные ранее ссылки — например, при подозрении на утечку — перевыпустите ключи доступа у провайдера и введите новые в настройках хранилища.
Срок жизни ссылок и предельный размер файла задаются в Конфигурации.
Потенциально опасные типы файлов
Файлы, которые браузер охотно выполнил бы в сессии ваших пользователей — HTML, SVG, XML, — всегда отдаются только на скачивание и никогда не отображаются в браузере. Это сделано намеренно и не настраивается.
Отключение хранилища
Выключение функции хранилища не стирает ни его настройки, ни назначения. Запись исчезает из списка, пока функция отключена, и возвращается вместе с настройками, когда вы включаете её снова. Уже загруженные файлы остаются на месте — просто недоступны, пока хранилище выключено.
Смена хранилища не переносит файлы
Назначив другое хранилище, вы меняете только то, куда пойдут новые файлы. Ранее загруженные остаются в прежнем бакете и в новом не найдутся, поэтому меняйте хранилище на пустом инстансе — либо перенесите объекты средствами провайдера, сохранив их ключи.
Полная очистка данных стирает реквизиты
Очистка всех данных сбрасывает и настройки хранилища: назначения переживают очистку, а реквизиты нужно ввести заново. Сами файлы в бакете очистка не трогает.
Что дальше
- Резервные копии — куда складываются дампы базы.
- Функции и настройки — включение функций.
- Конфигурация — лимит размера вложений и срок жизни ссылок.