Интеграция с S3-хранилищем
Primo RPA Orchestrator позволяет хранить файлы в файловой системе или S3-совместимом объектном хранилище. Для некоторых типов файлов также предусмотрено хранение в базе данных.
В S3 могут размещаться:
- архивы дистрибутивов роботов и агентов – служба WebApi;
- архивы RPA-проектов – служба WebApi;
- скриншоты, передаваемые роботами вместе с журналами выполнения, – служба RobotLogs;
- NuGet-пакеты – служба NuGet.
Начиная с Orchestrator 1.26.9, для WebApi и RobotLogs добавлена поддержка Ceph наряду с MinIO. Также появилась возможность хранить архивы RPA-проектов в S3 вместо базы данных. Настройка S3 необязательна: используемый способ хранения определяется конфигурацией каждой службы.
| Компонент и тип файлов | Поддерживаемые варианты хранения |
|---|---|
| WebApi – дистрибутивы роботов и агентов | Файловая система; S3 (MinIO или Ceph) |
| WebApi – архивы RPA-проектов | Файловая система; база данных; S3 (MinIO или Ceph) |
| RobotLogs – скриншоты | Файловая система; S3 (MinIO или Ceph) |
| NuGet – пакеты | Файловая система; MinIO |
Перед началом настройки
- Подготовьте доступное из сети Оркестратора S3-совместимое хранилище и необходимые бакеты.
- Получите у администратора хранилища адрес подключения, ключ доступа (
AccessKey) и секретный ключ (SecretKey) с правами на требуемые операции. - Определите, какие файлы будут храниться в S3. Настройки WebApi, RobotLogs и NuGet задаются раздельно.
- Создайте резервную копию действующей конфигурации и данных перед изменением способа хранения.
Во всех примерах используются условные адреса и значения ключей. Подставьте параметры своей инфраструктуры. Значение SecretKey должно быть зашифровано с помощью предусмотренного продуктом механизма. Не вставляйте незашифрованные ключи в примеры, документацию или репозиторий.
Начиная с Orchestrator 1.26.7.20, сервис MinIO исключён из стандартной Docker-поставки. При этом поддержка подключения к отдельно развернутому MinIO сохраняется. В закрытом контуре заранее обеспечьте сетевую доступность выбранного S3-хранилища.
Настройка WebApi
В конфигурации WebApi секция FileStore определяет способ хранения файлов, в том числе архивов дистрибутивов роботов и агентов.
Выбор хранилища в FileStore
| Параметр | Значения | Значение по умолчанию |
|---|---|---|
FileStore.Type | 0 – файловая система; 1 – S3 | 0 |
FileStore.S3 | 0 – MinIO; 1 – Ceph | 0 |
Пример настройки WebApi для Ceph:
{
"FileStore": {
"Type": 1,
"S3": 1,
"Ceph": {
"Endpoint": "https://ceph.example.local:8080",
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_ENCRYPTED_SECRET_KEY",
"ForcePathStyle": true,
"IgnoreValidateCert": false
}
}
}Пример настройки WebApi для MinIO:
{
"FileStore": {
"Type": 1,
"S3": 0,
"Minio": {
"Endpoint": "minio.example.local:9000",
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_ENCRYPTED_SECRET_KEY",
"SSL": true,
"Bucket": "common-bucket",
"Folder": "webapi",
"IgnoreValidateCert": false
}
}
}Хранение архивов RPA-проектов
Начиная с Orchestrator 1.26.9, хранилище архивов RPA-проектов можно выбирать отдельно. За это отвечает параметр StoreType в конфигурации хранения архивов проектов WebApi.
StoreType | Хранилище |
|---|---|
0 | Файловая система |
1 | База данных (по умолчанию) |
2 | S3 |
Для хранения новых загружаемых архивов проектов в S3 используется значение:
"StoreType": 2При обновлении до 1.26.9 прежний параметр DbStore больше не учитывается.
Удалите его или замените на StoreType в соответствующем блоке конфигурации.
Автоматическая миграция ранее сохранённых архивов проектов из базы данных в S3
не предусмотрена. Перед сменой хранилища обеспечьте доступность
исторических архивов и согласуйте способ их переноса.
Хранение файлов Kerberos keytab
В WebApi используется параметр S3KerberosKeytabs, который до версии 1.26.9 назывался MinioKerberosKeytab.
Если FileStore.Type равен 1 (S3) и словарь S3KerberosKeytabs заполнен, указанные keytab-файлы также хранятся в S3.
Пример фрагмента внутри секции FileStore:
"S3KerberosKeytabs": {
"example.local": {
"BucketName": "keytab",
"ObjectName": "krb5.keytab"
}
}Если хранение keytab в S3 не используется, добавлять этот параметр не требуется.
Настройка RobotLogs
В службе RobotLogs за хранение скриншотов, передаваемых роботами вместе с журналами выполнения, отвечает секция ScreenFileUpload.
| Параметр | Значения | Значение по умолчанию |
|---|---|---|
ScreenFileUpload.StoreType | 0 – файловая система; 1 – S3 | 0 |
ScreenFileUpload.S3 | 0 – MinIO; 1 – Ceph | 0 |
Пример настройки хранения скриншотов в Ceph:
{
"ScreenFileUpload": {
"StoreType": 1,
"S3": 1,
"Ceph": {
"Endpoint": "https://ceph.example.local:8080",
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_ENCRYPTED_SECRET_KEY",
"ForcePathStyle": true,
"IgnoreValidateCert": false
}
}
}Пример настройки хранения скриншотов в MinIO:
{
"ScreenFileUpload": {
"StoreType": 1,
"S3": 0,
"Minio": {
"Endpoint": "minio.example.local:9000",
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_ENCRYPTED_SECRET_KEY",
"SSL": true,
"IgnoreValidateCert": false
}
}
}В существующей секции ScreenFileUpload могут быть и другие настройки: MaxBatch, ScreenFilePath, AgentTimeOut и т. д. Не удаляйте их при добавлении параметров S3.
Параметры подключения к MinIO и Ceph
| Параметр | Назначение |
|---|---|
Endpoint | Адрес S3-сервера. Для Ceph обязательно указывайте полный URL с http:// или https://. |
AccessKey | Идентификатор ключа доступа к S3. |
SecretKey | Секретный ключ доступа. В конфигурации WebApi и RobotLogs должен быть зашифрован. |
Minio.SSL | Использовать HTTPS при подключении к MinIO: true или false. |
Ceph.ForcePathStyle | Использовать адресацию объектов через путь. Для Ceph значение по умолчанию – true; параметр можно не указывать. |
IgnoreValidateCert | Отключить проверку SSL-сертификата при значении true. По умолчанию – false. Доступен в секциях MinIO и Ceph. |
Minio.Bucket | Имя бакета, если параметр предусмотрен конфигурацией службы. |
Minio.Folder | Директория (префикс) внутри бакета, если параметр предусмотрен конфигурацией службы. |
Для рабочей среды используйте HTTPS с действительным доверенным сертификатом.
Значение IgnoreValidateCert: true отключает проверку сертификата и допустимо
только в контролируемом тестовом окружении.
Настройка NuGet
Хранилище NuGet-пакетов настраивается отдельно от WebApi и RobotLogs – в секции Storage службы NuGet.
Storage.Type | Хранилище |
|---|---|
"Minio" | S3-совместимое хранилище MinIO |
"FileSystem" | Файловая система |
Использование MinIO
{
"Storage": {
"Type": "Minio"
},
"Minio": {
"Endpoint": "minio.example.local:9000",
"AccessKey": "YOUR_ACCESS_KEY",
"SecretKey": "YOUR_ENCRYPTED_SECRET_KEY",
"Bucket": "common-bucket",
"Folder": "nuget",
"SSL": true
}
}| Параметр | Назначение | Значение по умолчанию |
|---|---|---|
Minio.Endpoint | Адрес MinIO | – |
Minio.AccessKey | Ключ доступа | – |
Minio.SecretKey | Зашифрованный секретный ключ | – |
Minio.Bucket | Бакет для хранения пакетов | nuget |
Minio.Folder | Директория внутри бакета | Пустая строка (корень бакета) |
Minio.SSL | Использование HTTPS | false |
Использование файловой системы
{
"Storage": {
"Type": "FileSystem"
},
"FileSystem": {
"Path": "C:\\OrchNuget"
}
}В Windows примером каталога является C:\OrchNuget, в Linux – /opt/Primo. Если FileSystem.Path отсутствует или пуст, используется каталог по умолчанию для соответствующей ОС.
Общий бакет для WebApi и NuGet
WebApi и NuGet могут использовать один бакет MinIO, записывая файлы в разные директории. Такая возможность поддерживается начиная с Orchestrator 1.25.9.
Например, для общего бакета common-bucket настройте:
WebApi – внутри секции FileStore.Minio:
{
"Bucket": "common-bucket",
"Folder": "webapi"
}NuGet – внутри секции Minio:
{
"Bucket": "common-bucket",
"Folder": "nuget"
}Примеры показывают только параметры бакета и директории. Остальные свойства подключения должны быть заполнены в соответствующих секциях конфигурации.
В конфигурации MinIO для NuGet пустое значение Folder ("") и "/" означают корневую директорию бакета.
Особенности обновления до Orchestrator 1.26.9
При обновлении конфигурации проверьте следующие изменения:
| Ранее | Начиная с 1.26.9 | Что сделать |
|---|---|---|
DbStore – признак хранения архивов проектов в БД | StoreType со значениями 0 (файловая система), 1 (БД), 2 (S3) | Удалить или заменить устаревший параметр, учитывая выбранный способ хранения |
MinioKerberosKeytab | S3KerberosKeytabs | Переименовать параметр в конфигурации WebApi, если он используется |
| Хранение файлов WebApi и RobotLogs в файловой системе или MinIO | Дополнительно Ceph | При необходимости указать S3: 1 и настроить секцию Ceph |
Изменение типа хранилища не гарантирует переноса ранее сохранённых файлов. Для архивов RPA-проектов миграция исторических данных в S3 не реализована в рамках задачи 54922. Перед переключением проверьте, откуда будут доступны уже загруженные архивы, и сохраните резервную копию.
Проверка работоспособности
После изменения конфигурации перезапустите соответствующие службы, затем проверьте:
- WebApi: загрузите и скачайте архив дистрибутива робота или агента.
- WebApi: загрузите и скачайте новый архив RPA-проекта, убедитесь, что он попал в выбранное хранилище.
- RobotLogs: выполните процесс, создающий скриншот, и проверьте его доступность в журнале робота.
- NuGet: если используется MinIO, загрузите и получите тестовый пакет.
- Проверьте журналы служб на ошибки доступа, TLS и обращения к S3.
При изменении конфигурации продуктивной системы полезно дополнительно проверить работу с крупными архивами (например, около 500 МБ), если такой объём характерен для ваших процессов.
Возможные проблемы
| Признак | Что проверить |
|---|---|
| Файл не загружается в MinIO | Endpoint, значение SSL, сетевую доступность, бакет и права доступа. |
| Ошибка TLS/сертификата | Соответствие http/https, срок действия и доверие к сертификату. |
| Ошибка доступа к Ceph | Полный URL в Ceph.Endpoint, AccessKey, зашифрованный SecretKey, ForcePathStyle и разрешения. |
| Новые архивы доступны, а старые нет | Наличие исторических файлов в прежнем хранилище и выбранный StoreType; автоматического переноса нет. |
| Скриншоты не появляются в журнале | Настройки ScreenFileUpload, доступность S3, журналы RobotLogs и процесс создания скриншота. |
Для выбора способа хранения каждого типа файлов используйте настройки
соответствующей службы. Параметры FileStore.Type,
ScreenFileUpload.StoreType и StoreType для архивов проектов имеют разное
назначение.