Автоматическое удаление фрагментов OBS

Фрагменты OBS — это неполные данные, которые генерируются в результате сбоя во время загрузки объектов в бакет. Основные причины их возникновения:

  • Прерывания связи с сервером OBS из-за плохого соединения с сетью.

  • Ручная приостановка загрузки.

  • Неисправность или внезапное отключение устройства, с которого идет загрузка.

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

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

Создание политики и представительства в IAM

  1. В консоли перейдите в раздел Management & Deployment → Identity and Access Management.

  2. В боковом меню выберите Permissions.

  3. Нажмите Create Custom Policy.

  4. Заполните параметры политики:

    • Policy Name — укажите название политики.

    • Policy view — выберите JSON.

    • Policy Content — введите следующий код:

      {
          "Version": "1.1",
          "Statement": [
             {
                "Action": ["obs:*"],
                "Effect": "Allow"
             }
          ]
       }
      
  5. Сохраните политику — нажмите OK.

  6. В боковом меню выберите Agencies.

  7. Нажмите Create Agency.

  8. Заполните параметры представительства:

    • Agency Name — укажите название представительства.

    • Agency Type — выберите Cloud service.

    • Cloud Service — нажмите Select и выберите FunctionGraph.

    • Validity Period — выберите из списка Unlimited.

    • Permissions — нажмите Assign Permissions. В выпадающем списке All policies/roles нажмите Custom policies и выберите созданную ранее политику.

  9. Сохраните представительство — нажмите OK.

Создание функции

  1. Для создания функции потребуется ZIP-архив, содержащий Java-файл с кодом и настройки для функции в YAML-формате. Скачать архив.

  2. В консоли перейдите в раздел Computing → FunctionGraph.

  3. В боковом меню выберите Functions.

  4. Нажмите Import Function.

  5. Заполните параметры импорта:

    • App — выберите default.

    • Нажмите Select File и выберите скачанный ZIP-файл (clean_obs_fragments_latest.zip).

    • В блоке Functions в поле Name укажите имя функции или оставьте значение по умолчанию.

  6. Сохраните параметры — нажмите OK.

  7. Перейдите на вкладку Configuration.

    • Agency — выберите из списка созданное ранее представительство.

    • Environment Variables — в строке с Key, равным age_hours, отредактируйте значение Value — возраст фрагмента в часах. Например, 24.

      Примечание

      По умолчанию возраст фрагмента установлен на 0. Это означает, что все фрагменты будут немедленно удалены после срабатывания триггера функции.

  8. В правом верхнем углу нажмите Save.

  9. Перейдите на вкладку Triggers.

  10. Нажмите Create Trigger и заполните параметры триггера:

    • Trigger Type — выберите из списка тип Timer.

    • Timer Name — укажите название триггера.

    • Rule — выберите и настройте правило удаления фрагментов:

      • Fixed rate — заданная периодичность запуска триггера.

      • Cron Expression — периодичность задается с помощью cron-выражения.

  11. Сохраните триггер — нажмите ОК.

Функция удаления фрагментов OBS готова.

Запустили Evolution free tier
для Dev & Test
Получить