Skip to content

Хранилище файлов

Страница для администраторов. В хранилище файлов лежат вложения задач, файлы, загруженные функциями продукта, и дампы базы данных.

S3-совместимое хранилище

Встроенного хранилища у TAktom нет — файлы живут во внешнем объектном хранилище с API S3. Подходит любой провайдер с S3-совместимым интерфейсом: Selectel, VK Cloud, Yandex Object Storage, Amazon S3 и другие.

Облачные инстансы приходят с настроенным хранилищем

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

Пока хранилище не настроено

Хранилище — такая же функция, как остальные: включите её в разделе Админ → Плагины, затем настройте и назначьте (см. ниже). Пока хранилище не настроено и не назначено, прикрепить файл к задаче нельзя — всё остальное работает как обычно. Ответ «хранилище не настроено» на неназначенной задаче — штатное состояние, а не сбой.

Настройка

  1. Включите функцию хранилища в разделе Админ → Плагины (она также должна быть разрешена конфигурацией инстанса — см. Функции и настройки).
  2. Создайте бакет в панели провайдера хранилища — сам продукт бакеты не создаёт. Имя — от 3 до 63 символов: строчные латинские буквы, цифры и дефис, без точек.
  3. Откройте Админ → Хранилище → S3-совместимое хранилище и заполните реквизиты: регион, имя бакета и ключи доступа; при необходимости — адрес службы (для провайдеров, отличных от Amazon), префикс, под которым хранятся ключи объектов, и режим адресации path-style.
  4. Нажмите «Проверить доступ» и убедитесь, что бакет достижим, прежде чем на него начнут полагаться.
  5. Если хранилище будет держать вложения задач, примените правила межсайтового доступа — см. CORS.
  6. Назначьте хранилище на задачи — см. Назначение.

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

CORS: обязателен для вложений

Браузер загружает вложения напрямую в бакет, минуя серверы приложения, — поэтому бакет должен разрешать запросы со страницы инстанса. Кнопка «Применить CORS» на странице хранилища настраивает это в одно действие: укажите адрес(а), с которых открывается инстанс.

Провайдер должен обслуживать CORS

У части провайдеров CORS работает только при virtual-hosted адресации бакета (<бакет>.<домен хранилища>). Если конфигурация принята, а загрузка вложений всё равно падает в браузере с ошибкой CORS — снимите галку path-style в настройках и включите бакету virtual-hosted адресацию в панели провайдера.

Назначение хранилища

Настроенное хранилище само по себе ничего не принимает. Назначения задаются отдельно и в двух разных местах:

Что хранитсяГде назначается
Вложения задач и загрузки функцийАдмин → Настройки
Дампы базы данныхАдмин → Бэкап (см. Резервные копии)

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

Как передаются файлы

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

Ссылки подписываются ключами доступа хранилища. Если нужно обесценить все выданные ранее ссылки — например, при подозрении на утечку — перевыпустите ключи доступа у провайдера и введите новые в настройках хранилища.

Срок жизни ссылок и предельный размер файла задаются в Конфигурации.

Потенциально опасные типы файлов

Файлы, которые браузер охотно выполнил бы в сессии ваших пользователей — HTML, SVG, XML, — всегда отдаются только на скачивание и никогда не отображаются в браузере. Это сделано намеренно и не настраивается.

Отключение хранилища

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

Смена хранилища не переносит файлы

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

Полная очистка данных стирает реквизиты

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

Что дальше