8. Конфигурация BLOB-адаптера (application.yml)
Файл application.yml – основной конфигурационный файл BLOB-адаптера, в котором задана логика и порядок работы модуля:
получение и обработка входящих запросов;
настройка подключения к СМЭВ3-адаптеру, СМЭВ4-адаптеру и Хранилищу BLOB-объектов, и другие настройки необходимые для корректной работы модуля.
8.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
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}
9. Параметры конфигурации
Настройка конфигурации BLOB-адаптера осуществляется путем редактирования параметров настроек в файле application.yml,
где настраиваются секции:
http-server- указывается порт сервера;metrics- настраивается получение метрикexecutor- настраивается размер пула для запросов;blob-storage- настраивается подключение к Хранилищу BLOB-объектов;logging- настраивается логирование работы модуля.
9.1. Секция http-server
Секция http-server позволяет настраивать взаимодействие с BLOB-объектами через модуль СМЭВ3-адаптер по
протоколу HTTP/HTTPS и задавать порт, на котором будет открыт доступ к серверу.
Например:
http-server:
enabled: ${SERVER_ENABLED:true}
port: ${SERVER_PORT:8081}
enabled- флаг активации работы с сервером;port- порт, на котором будет открыт доступ к серверу.
9.2. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- порт для метрик, напримерMETRICS_PORT:9837.
9.3. Секция executor
Секция executor предназначена для масштабирования нагрузки (увеличения / уменьшения) на модуль.
Например:
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
Параметры настроек
reader-pool-size- размер пула для чтения Kafka, напримерEXECUTOR_READER_POOL_SIZE:20.
9.4. Секция blob-storage
Секция blob-storage предназначена для настройки:
размера выгружаемого чанка BLOB;
пути к Хранилищу BLOB-объектов (GET-запрос);
метода аутентификации для модуля BLOB-адаптера;
получения токена;
повторной аутентификаций при истечении времени жизни токена.
Например:
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)
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)
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)
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 надо использовать строку вызова:
http://aa.bb.cc:8080/api/v1/blobs/12345678
Настройки файла application.yml должны иметь следующий вид:
blob-storage:
protocol: http
host: aa.bb.cc
port: 8080
path-prefix: api/v1/blobs/
Пример 2
Если на Витрине данных поле с типом LINK содержит текст 12345678 и для получения содержимого BLOB надо использовать строку вызова:
https://aa.bb.cc/api/v1/blobs/12345678/data?format=jpg&size=low&backgraund=#000000,
Настройки файла application.yml должны иметь следующий вид:
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 надо использовать строку вызова:
http://aa.bb.cc:8080/api/v1/blobs/12345678
Настройки файла application.yml должны иметь следующий вид:
blob-storage:
protocol: ${PROT:http}
host: ${HOST:aa.bb.cc}
port: ${PORT:80}
path-prefix: ${PREFIX:api/v1/blobs/}
Пример 4
Если требуется получить строку вида:
https://aa.bb.cc:8080/app/{link}/download?requester_id={value}&user=fdsfs&zip=true
Необходимо настроить:
На Витрине данных поле с типом
LINKдолжно содержать текст:
12345678/download?requester_id=ABCDEFGH
В файл
application.ymlдобавить следующие настройки:
blob-storage:
protocol: https
host: aa.bb.cc
port: 8080
path-prefix: api/
params:
user: fdsfs
zip: true
Указание дополнительных параметров к Хранилищу BLOB-объектов
Например:
blob-storage:
params:
name1: value1
name2: value2
Пример запроса:
/files/test?name1=value1&name2=value2
9.5. Секция logging
В секции logging настраивается логирование работы модуля.
Например:
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.