.. _blob_adapter_config: Конфигурация BLOB-адаптера (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл BLOB-адаптера, в котором задана логика и порядок работы модуля: - получение и обработка входящих запросов; - настройка подключения к СМЭВ3-адаптеру, СМЭВ4-адаптеру и Хранилищу BLOB-объектов, и другие настройки необходимые для корректной работы модуля. .. _blob-application.yml: Пример файла application.yml ################################### В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml http-server: enabled: ${SERVER_ENABLED:true} port: ${SERVER_PORT:8081} metrics: port: ${METRICS_PORT:9837} executor: reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20} blob-storage: protocol: ${BLOB_STORAGE_PROTOCOL:http} host: ${BLOB_STORAGE_HOST:t5-blob-adapter-01.ru-central1.internal} port: ${BLOB_STORAGE_PORT:9000} path-prefix: ${BLOB_STORAGE_PATH_PREFIX:test/image} path-postfix: ${BLOB_STORAGE_PATH_POSTFIX:} auth: type: ${BLOB_STORAGE_AUTH_TYPE:AUTH} user: ${BLOB_STORAGE_AUTH_USER:} password: ${BLOB_STORAGE_AUTH_PASSWORD:} token: ${BLOB_STORAGE_AUTH_TOKEN:} authorization-server: protocol: ${AUTH_SERVER_PROTOCOL:http} host: ${AUTH_SERVER_HOST:t5-avanpost-01.ru-central1.internal} port: ${AUTH_SERVER_PORT:80} path: ${AUTH_SERVER_PATH:oauth2/token} client-id: ${AUTH_SERVER_CLIENT_ID:b0fd0f28-4b99-40d7-8dd3-e663a6cc77d1} client-secret: ${AUTH_SERVER_CLIENT_SECRET:Zaq1sd!sa2} logging: request-response: blob-request: ${BLOB_REQUEST_LOG_ENABLED:false} blob-response: ${BLOB_RESPONSE_LOG_ENABLED:false} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации BLOB-адаптера осуществляется путем редактирования параметров настроек в файле ``application.yml``, где настраиваются секции: - ``http-server`` - указывается порт сервера; - ``metrics`` - настраивается получение метрик - ``executor`` - настраивается размер пула для запросов; - ``blob-storage`` - настраивается подключение к Хранилищу BLOB-объектов; - ``logging`` - настраивается логирование работы модуля. Секция http-server ################### Секция ``http-server`` позволяет настраивать взаимодействие с BLOB-объектами через модуль СМЭВ3-адаптер по протоколу ``HTTP/HTTPS`` и задавать порт, на котором будет открыт доступ к серверу. Например: .. code-block:: yaml http-server: enabled: ${SERVER_ENABLED:true} port: ${SERVER_PORT:8081} - ``enabled`` - флаг активации работы с сервером; - ``port`` - порт, на котором будет открыт доступ к серверу. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры конфигурации** - ``port`` - порт для метрик, например ``METRICS_PORT:9837``. Секция executor ############### Секция ``executor`` предназначена для масштабирования нагрузки (увеличения / уменьшения) на модуль. Например: .. code-block:: yaml executor: reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20} **Параметры настроек** - ``reader-pool-size`` - размер пула для чтения Kafka, например ``EXECUTOR_READER_POOL_SIZE:20``. Секция blob-storage ################### Секция ``blob-storage`` предназначена для настройки: - размера выгружаемого чанка BLOB; - пути к Хранилищу BLOB-объектов (GET-запрос); - метода аутентификации для модуля BLOB-адаптера; - получения токена; - повторной аутентификаций при истечении времени жизни токена. Например: .. code-block:: yaml blob-storage: protocol: ${BLOB_STORAGE_PROTOCOL:http} host: ${BLOB_STORAGE_HOST:t5-blob-adapter-01.ru-central1.internal} port: ${BLOB_STORAGE_PORT:9000} path-prefix: ${BLOB_STORAGE_PATH_PREFIX:test/image} path-postfix: ${BLOB_STORAGE_PATH_POSTFIX:} auth: type: ${BLOB_STORAGE_AUTH_TYPE:AUTH} user: ${BLOB_STORAGE_AUTH_USER:} password: ${BLOB_STORAGE_AUTH_PASSWORD:} token: ${BLOB_STORAGE_AUTH_TOKEN:} authorization-server: protocol: ${AUTH_SERVER_PROTOCOL:http} host: ${AUTH_SERVER_HOST:t5-avanpost-01.ru-central1.internal} port: ${AUTH_SERVER_PORT:80} path: ${AUTH_SERVER_PATH:oauth2/token} client-id: ${AUTH_SERVER_CLIENT_ID:b0fd0f28-4b99-40d7-8dd3-e663a6cc77d1} client-secret: ${AUTH_SERVER_CLIENT_SECRET:Zaq1sd!sa2} **Параметры конфигурации** - ``protocol`` - протокол обмена с сервером хранилища BLOB-объектов (одно из значений **HTTP** или **HTTPS**), например ``BLOB_STORAGE_PROTOCOL:http``; - ``host`` - имя сервера хранилища BLOB-объектов, например ``BLOB_STORAGE_HOST:localhost``; - ``port`` - порт сервера хранилища BLOB-объектов, если отсутствует, то следует использовать следующие порты ``80`` для **HTTP**, ``443`` для **HTTPS**, например ``BLOB_STORAGE_PORT:9000``; - ``path-prefix`` - путь до места хранилища BLOB-объектов, путь до места хранения BLOB-объекта на сервере хранилища BLOB-объектов, например ``BLOB_STORAGE_PATH_POSTFIX:``; - ``path-postfix`` - окончание пути, начало списка параметров, например ``BLOB_STORAGE_PATH_PREFIX:test/image``; - ``auth`` - параметры аутентификации BLOB-адаптера; - ``type`` - тип аутентификации (``NONE`` - нет, ``BASIC`` - по имени/паролю, ``TOKEN`` - по токену, ``AUTH`` - через сервер аутентификации), например ``BLOB_STORAGE_AUTH_TYPE:AUTH``; - ``user`` - имя пользователя (для аутентификации ``BASIC``), например ``BLOB_STORAGE_AUTH_USER:``; - ``password`` - пароль (для аутентификации ``BASIC``), например ``BLOB_STORAGE_AUTH_PASSWORD:``; - ``token`` - токен (для аутентификации ``TOKEN``), например ``BLOB_STORAGE_AUTH_TOKEN:``; - ``protocol`` - имя протокола HTTP или HTTPS (для аутентификации ``AUTH``), например ``AUTH_SERVER_PROTOCOL:http``; - ``host`` - строка с IP или FQDN сервера авторизации (для аутентификации ``AUTH``), например ``AUTH_SERVER_HOST:t5-avanpost-01.ru-central1.internal``; - ``port`` - TCP-порт (для аутентификации ``AUTH``), например ``AUTH_SERVER_PORT:80``; - ``path`` - путь на сервере (для аутентификации ``AUTH``), например ``AUTH_SERVER_PATH:oauth2/token``; - ``client-id`` - идентификатор клиента, присвоенный BLOB-адаптеру в сервере авторизации (для аутентификации ``AUTH``), например ``AUTH_SERVER_CLIENT_ID:AUTH_SERVER_CLIENT_ID:b0fd0f28-4b99-40d7-8dd3-e663a6cc77d1``; - ``client-secret`` - секретный код клиента, присвоенный BLOB-адаптеру в сервере авторизации (для аутентификации ``AUTH``), например ``AUTH_SERVER_CLIENT_SECRET:Zaq1sd!sa2``. **Пример cURL-запроса к серверу аутентификации** cURL (windows) .. code-block:: bash curl -X POST http://t5-avanpost-01.ru-central1.internal/oauth2/token ^ -H "Accept: application/json"^ -H "Content-type: application/x-www-form-urlencoded"^ --data "grant_type=client_credentials&client_id=b0fd0f28-4b99-40d7-8dd3-e663a6cc77d1&client_secret=Zaq1sd!sa2" ^ -o result.txt ^ --trace-ascii result.log cURL (linux) .. code-block:: bash curl --request POST \ --url http://t5-avanpost-01.ru-central1.internal/oauth2/token \ --header 'Accept: application/json' \ --header 'Content-type: application/x-www-form-urlencoded' \ --data 'grant_type=client_credentials&client_id=b0fd0f28-4b99-40d7-8dd3-e663a6cc77d1&client_secret=Zaq1sd!sa2' \ -o result.txt **Пример cURL-запроса к Хранилищу BLOB-объектов** cURL (windows) .. code-block:: bash curl -X GET http://vmserv1.internal.example.com:8080/datamart/data/v1/blobs/1234567 ^ -H "Authorization: bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJqdGkiOiI5YmQ3MzdjZi05MDNmLTQxZTktYjI5Mi1mZmUwM2QzNDhkNWIiLCJleHAiOjE2NTQxMDI5NDgsImlhdCI6MTY1NDEwMTE0OCwiaXNzIjoiY2VydC5pc3N1ZXIuaG9zdCIsImF1ZCI6IiIsImV4cGlyZXNfaW4iOjE4MDAsImNsaWVudF9pZCI6ImIwZmQwZjI4LTRiOTktNDBkNy04ZGQzLWU2NjNhNmNjNzdkMSJ9.qi8JKlQAdMsK3fTq4H88Z5-FppaUP95OH-rmPtCxEMmlPnyhNCRJe34aKMR5mXVldEzY1clV87-qjWCyPLH_Zkqji1C7aQz7fMbgZixhY2wrQnXAXRfslkRe5Ph3GYYd26GvWOG1xl99AHvfDWIfI1SGcJyd0z_iOl1GbghLvSV38MquZ8ugBdKaDjV-Ww3U_sWlJVO-oF8xjUMYuhOSsCNxhxMng1oVwUdAUbbgoB5ldyoGTbqmbQMYvBmKBT0eZqOR6RnJEAjmfOC9YeWwADKwovFybvGOaQZsjlaoJ2XxpmS79U7UO_6KXK1cnHfshVuB5_yUwubrRh6tRxt0CA"^ -o result.bin ^ --trace-ascii result.log **Пример настройки динамической ссылки на файлы с содержимым BLOB-полей** **Пример 1** Если на Витрине данных поле с типом ``LINK`` содержит текст ``12345678`` и для получения содержимого BLOB надо использовать строку вызова: .. code-block:: bash http://aa.bb.cc:8080/api/v1/blobs/12345678 Настройки файла ``application.yml`` должны иметь следующий вид: .. code-block:: yaml blob-storage: protocol: http host: aa.bb.cc port: 8080 path-prefix: api/v1/blobs/ **Пример 2** Если на Витрине данных поле с типом ``LINK`` содержит текст ``12345678`` и для получения содержимого BLOB надо использовать строку вызова: .. code-block:: bash https://aa.bb.cc/api/v1/blobs/12345678/data?format=jpg&size=low&backgraund=#000000, Настройки файла ``application.yml`` должны иметь следующий вид: .. code-block:: yaml blob-storage: protocol: https host: aa.bb.cc path-prefix: api/v1/blobs/ path-postfix: /data params: format: jpg size: low backgraund: "#000000" **Пример 3** Если на Витрине данных поле с типом ``LINK`` содержит текст ``12345678`` и для получения содержимого BLOB надо использовать строку вызова: .. code-block:: bash http://aa.bb.cc:8080/api/v1/blobs/12345678 Настройки файла ``application.yml`` должны иметь следующий вид: .. code-block:: yaml blob-storage: protocol: ${PROT:http} host: ${HOST:aa.bb.cc} port: ${PORT:80} path-prefix: ${PREFIX:api/v1/blobs/} **Пример 4** Если требуется получить строку вида: .. code-block:: bash https://aa.bb.cc:8080/app/{link}/download?requester_id={value}&user=fdsfs&zip=true Необходимо настроить: 1. На Витрине данных поле с типом ``LINK`` должно содержать текст: .. code-block:: bash 12345678/download?requester_id=ABCDEFGH 2. В файл ``application.yml`` добавить следующие настройки: .. code-block:: yaml blob-storage: protocol: https host: aa.bb.cc port: 8080 path-prefix: api/ params: user: fdsfs zip: true **Указание дополнительных параметров к Хранилищу BLOB-объектов** Например: .. code-block:: yaml blob-storage: params: name1: value1 name2: value2 Пример запроса: .. code-block:: bash /files/test?name1=value1&name2=value2 Секция logging ############## В секции ``logging`` настраивается логирование работы модуля. Например: .. code-block:: yaml logging: request-response: blob-request: ${BLOB_REQUEST_LOG_ENABLED:false} blob-response: ${BLOB_RESPONSE_LOG_ENABLED:false} **Параметры настроек** - ``blob-request`` - журналировать запросы, например ``BLOB_REQUEST_LOG_ENABLED:false``; - ``blob-request`` - журналировать ответы, например ``BLOB_RESPONSE_LOG_ENABLED:false``.