Подключение S3-совместимого хранилища

S3 (Simple Storage Service) обеспечивает надежное и долговременное хранение неограниченного количества файлов и данных. Это позволяет избежать ограничений файловой системы при работе с большими объемами данных.

Настройка S3-совместимого хранилища

В этом разделе мы опишем как настроить S3-совместимое хранилище MinIO для работы с FindFace Multi. Если вы предпочитаете другое S3-совместимое хранилище, предполагается, что его настройку вы выполните самостоятельно.

  1. Подготовьте сервер на Ubuntu.

    Примечание

    Работа MinIO была протестирована только на Ubuntu. Для получения информации о поддержке других ОС обратитесь к официальной документации MinIO.

  2. Чтобы запустить контейнер с MinIO, выполните следующую команду, задав логин/пароль в параметрах MINIO_ROOT_USER и MINIO_ROOT_PASSWORD:

    docker run -d \
    -p 9003:9000 \
    -p 9004:9001 \
    -e "MINIO_ROOT_USER=admin" \
    -e "MINIO_ROOT_PASSWORD=admin_admin" \
    -v /path/to/storage_directory:/data \
    quay.io/minio/minio server /data --console-address ":9001"
    

    где /path/to/storage_directory – директория, выделенная для S3-совместимого хранилища.

  3. Адрес веб-интерфейса MinIO будет зависеть от того, какой интерфейс вы выбрали при установке FindFace Multi на шаге #4.5. Используемый порт – 9004, например, 192.168.112.254:9004. Войдите в веб-интерфейс MinIO с учетными данными MINIO_ROOT_USER, MINIO_ROOT_PASSWORD, которые вы указали на предыдущем шаге.

  4. В пользовательском интерфейсе MinIO создайте хранилище (bucket) (Buckets -> Create Bucket). Присвойте ему имя по умолчанию ffsec.storage.

    Примечание

    Мы советуем оставить название хранилища ffsec.storage, предлагаемое по умолчанию, поскольку оно соответствует параметру STORAGE_BUCKET_NAME в файлах конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py и /opt/findface-multi/configs/findface-multi-legacy/findface-multi-identity-provider.py. Если вы используете другое имя для хранилища, не забудьте соответствующим образом изменить его в указанных выше файлах конфигурации.

    create_bucket_en

  5. Щелкните на хранилище (bucket), чтобы открыть его настройки.

    bucket_settings_en

  6. Измените доступ к хранилищу на public для корректной обработки видеоархивов.

    access_policy_en

  7. В разделе User -> Access Keys создайте ключ доступа. Запишите значения Access key и Secret key , поскольку они понадобятся вам позже для настройки FindFace Multi.

    access_key_en

    Примечание

    Интерфейс MinIO может отличаться. В более ранних версиях настройка ключа доступа производится в разделе Identity -> Service Accounts -> Create service account.

Настройка FindFace Multi для работы S3-совместимого хранилища

  1. В файле конфигурации /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py перейдите в секцию EXTERNAL_STORAGE_CONFIG.

    sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
    
    EXTERNAL_STORAGE_CONFIG = {
        'STORAGE_TYPE': None,
        'STORAGE_BUCKET_NAME': 'ffsec.storage',
        'ACCESS_KEY_ID': 'access-key',
        'SECRET__KEY': 'secret-key',
        'REGION_NAME': 'eu-west-3',
        'LOCAL_S3_SETTINGS': {
            'CONNECTION_ADDRESS': 'localhost:9003',
        },
    }
    

    Настройте параметры EXTERNAL_STORAGE_CONFIG:

    1. Параметр STORAGE_TYPE может принимать значения 'LOCAL', 'AWS', None:

      • None – локальная файловая система (по умолчанию)

      • 'LOCAL' – любое S3-совместимое хранилище (например, MinIO)

      • 'AWS'хранилище Amazon S3.

      Измените параметр 'STORAGE_TYPE' на 'LOCAL', чтобы включить S3-совместимое хранилище.

    2. Значения параметров 'STORAGE_BUCKET_NAME', 'ACCESS_KEY_ID' и 'SECRET__KEY' должны соответствовать аналогичным значениям этих параметров, заданным на этапе инициализации MinIO.

    3. 'REGION_NAME' – значение по умолчанию eu-west-3. Его можно изменить в настройках MinIO.

    4. В 'LOCAL_S3_SETTINGS' -> 'CONNECTION_ADDRESS' измените localhost на IP адрес хоста MinIO, например, 192.168.112.254.

  2. Таким же образом отредактируйте файл /opt/findface-multi/configs/findface-multi-identity-provider/findface-multi-identity-provider.py. Перейдите в секцию EXTERNAL_STORAGE_CONFIG и внесите изменения, аналогичные тем, которые были применены к файлу /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py на предыдущем шаге.

    sudo vi /opt/findface-multi/configs/findface-multi-identity-provider/findface-multi-identity-provider.py
    
    EXTERNAL_STORAGE_CONFIG = {
        'STORAGE_TYPE': None,
        'STORAGE_BUCKET_NAME': 'ffsec.storage',
        'ACCESS_KEY_ID': 'access-key',
        'SECRET__KEY': 'secret-key',
        'REGION_NAME': 'eu-west-3',
        'LOCAL_S3_SETTINGS': {
            'CONNECTION_ADDRESS': 'localhost:9003',
        },
    }
    
  3. Для того чтобы пользовательский интерфейс мог загружать содержимое (миниатюры, полные кадры и т.д.), внесите изменения в файл /opt/findface-multi/configs/findface-multi-ui/nginx-site.conf. В секции server найдите параметр add_header Content-Security-Policy и добавьте адрес {ip_host_s3}:9003/, например:

    sudo vi /opt/findface-multi/configs/findface-multi-ui/nginx-site.conf
    
    ...
    server {
            listen 80 default_server;
            listen [::]:80 default_server;
    ...
            location / {
    ...
            }
            add_header Content-Security-Policy "default-src 'self' 192.168.112.254:9003/ ; img-src 'self' 192.168.112.254:9003/ blob: data:; media-src 'self' blob:; style-src 'self' 'unsafe-inline';";
    ...
    }
    
  4. Выполните пересборку контейнеров FindFace Multi из директории /opt/findface-multi.

    cd /opt/findface-multi
    
    sudo docker-compose down
    
    sudo docker-compose up -d
    
  5. Чтобы убедиться в том, что сервис FindFace Local S3 Storage запущен, изучите логи findface-multi-findface-multi-legacy-1:

    sudo docker logs findface-multi-findface-multi-legacy-1
    

Команда для переноса данных

Для переноса данных в удаленное или локальное хранилище используйте следующую команду:

sudo docker exec -it findface-multi-findface-multi-legacy-1 /opt/findface-security/bin/python3 /tigre_prototype/manage.py transfer_data --to_local / --to_remote
  • Аргумент --to_remote переносит данные в удаленное хранилище.

  • Аргумент --to_local переносит данные в локальную файловую систему.

Перед выполнением указанной команды убедитесь, что вы настроили FindFace Multi для использования S3-совместимого хранилища.