8. Конфигурация BLOB-адаптера (application.yml)
Файл application.yml – основной конфигурационный файл BLOB-адаптер, в котором задана логика и порядок работы модуля:
получение и обработка входящих запросов;
настройка подключения к СМЭВ3-адаптеру, СМЭВ4-адаптеру и Хранилищу BLOB-объектов, и другие настройки необходимые для корректной работы модуля.
8.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
http-server:
enabled: ${SERVER_ENABLED:true}
port: ${SERVER_PORT:8081}
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
vertx:
web-client:
max-pool-size: 100
blob:
default-request-timeout: 60s
storage:
client: awssdk # vertx/awssdk
protocol: ${BLOB_STORAGE_PROTOCOL:http} # use only for client vertx
host: ${BLOB_STORAGE_HOST:localhost}
port: ${BLOB_STORAGE_PORT:8888}
path-prefix: ${BLOB_STORAGE_PATH_PREFIX:}
path-postfix: ${BLOB_STORAGE_PATH_POSTFIX:}
bucket: ${BUCKET:} # use only for client awssdk
auth:
type: ${BLOB_STORAGE_AUTH_TYPE:NONE} # BASIC/TOKEN/AUTH/NONE/AWSBASICCREDENTIALS
user: ${BLOB_STORAGE_AUTH_USER:user} # use only for auth.type BASIC
password: ${BLOB_STORAGE_AUTH_PASSWORD:pass} # use only for auth.type BASIC
access-token: ${ACCESS_TOKEN:} # use only for auth.type AWSBASICCREDENTIALS
secret-token: ${SECRET_TOKEN:} # use only for auth.type AWSBASICCREDENTIALS
token: ${BLOB_STORAGE_AUTH_TOKEN:token} # use only for auth.type TOKEN
authorization-server: # use only for auth.type AUTH
protocol: ${AUTH_SERVER_PROTOCOL:http}
host: ${AUTH_SERVER_HOST:localhost}
port: ${AUTH_SERVER_PORT:80}
path: ${AUTH_SERVER_PATH:oauth2/token}
client-id: ${AUTH_SERVER_CLIENT_ID:}
client-secret: ${AUTH_SERVER_CLIENT_SECRET:}
logging:
request-response:
blob-request: ${BLOB_REQUEST_LOG_ENABLED:false}
blob-response: ${BLOB_RESPONSE_LOG_ENABLED:false}
prostore-rest-client:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9095}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
# Настройки модуля сбора информации о компонентах витрины
component-info:
enabled: true
# DataSource Prostore
datasource: ''
# Схема Prostore
datamart: component_info
# Имя таблицы для записи информации о компоненте
table-name: component_info
# Период попыток создания схемы, при неуспехе
create-table-period: 60s
# Период публикации health-check
publish-period: 60s
# Период после которого компонент считается неактивным при отсутствии health-check
timeout-active: 300s
# Список элементов конфига маскируемых при отправке,
# если указан узловой элемент, то маскируются все вложенные в него элементы
secrets:
- blob.storage.auth.user
- blob.storage.auth.password
- blob.storage.auth.token
- blob.storage.auth.authorization-server.client-secret
metrics:
port: ${METRICS_PORT:9837}
9. Параметры конфигурации
Настройка конфигурации BLOB-адаптера осуществляется путем редактирования параметров настроек в файле application.yml,
где настраиваются секции:
http-server- указывается порт сервера;executor- настраивается размер пула для запросов;vertx- настраиваются значения вертиклов;blob- настраивается подключение к Хранилищу BLOB-объектов;logging- настраивается логирование работы модуля;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore;component-info- настройки модуля сбора информации о компонентах витрины;metrics- настраивается получение метрик.
9.1. Секция http-server
Секция http-server позволяет настраивать взаимодействие с BLOB-объектами через модуль СМЭВ3-адаптер по
протоколу http/https и задавать порт, на котором будет открыт доступ к серверу.
Например:
http-server:
enabled: ${SERVER_ENABLED:true}
port: ${SERVER_PORT:8081}
enabled- флаг активации работы с сервером;port- порт, на котором будет открыт доступ к серверу.
9.2. Секция executor
Секция executor предназначена для масштабирования нагрузки (увеличения / уменьшения) на модуль.
Например:
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
Параметры настроек
reader-pool-size- размер пула для чтения Kafka, напримерEXECUTOR_READER_POOL_SIZE:20.
9.3. Секция vertx
Секция vertx определяет настройки количества вертиклов.
Например:
vertx:
web-client:
max-pool-size: 20
Параметры настроек
max-pool-size- максимальное значение для веб-клиента.
9.4. Секция blob
Секция blob предназначена для настройки:
размера выгружаемого чанка BLOB;
пути к Хранилищу BLOB-объектов (GET-запрос);
метода аутентификации для модуля BLOB-адаптера;
получения токена;
повторной аутентификаций при истечении времени жизни токена.
Например:
blob:
default-request-timeout: 60s
storage:
client: awssdk # vertx/awssdk
protocol: ${BLOB_STORAGE_PROTOCOL:http} # use only for client vertx
host: ${BLOB_STORAGE_HOST:localhost}
port: ${BLOB_STORAGE_PORT:8888}
path-prefix: ${BLOB_STORAGE_PATH_PREFIX:}
path-postfix: ${BLOB_STORAGE_PATH_POSTFIX:}
bucket: ${BUCKET:} # use only for client awssdk
auth:
type: ${BLOB_STORAGE_AUTH_TYPE:NONE} # BASIC/TOKEN/AUTH/NONE/AWSBASICCREDENTIALS
user: ${BLOB_STORAGE_AUTH_USER:user} # use only for auth.type BASIC
password: ${BLOB_STORAGE_AUTH_PASSWORD:pass} # use only for auth.type BASIC
access-token: ${ACCESS_TOKEN:} # use only for auth.type AWSBASICCREDENTIALS
secret-token: ${SECRET_TOKEN:} # use only for auth.type AWSBASICCREDENTIALS
token: ${BLOB_STORAGE_AUTH_TOKEN:token} # use only for auth.type TOKEN
authorization-server: # use only for auth.type AUTH
protocol: ${AUTH_SERVER_PROTOCOL:http}
host: ${AUTH_SERVER_HOST:localhost}
port: ${AUTH_SERVER_PORT:80}
path: ${AUTH_SERVER_PATH:oauth2/token}
client-id: ${AUTH_SERVER_CLIENT_ID:}
client-secret: ${AUTH_SERVER_CLIENT_SECRET:}
Параметры конфигурации
default-request-timeout- значение в секундах таймаута запроса;client- клиент сервера хранилища BLOB-объектов, напримерBLOB_STORAGE_CLIENT:awssdk;protocol- протокол обмена с сервером хранилища BLOB-объектов (одно из значенийhttpилиhttps), напримерBLOB_STORAGE_PROTOCOL:http;host- имя сервера хранилища BLOB-объектов, напримерBLOB_STORAGE_HOST:localhost;port- порт сервера хранилища BLOB-объектов, если отсутствует, то следует использовать следующие порты80для HTTP,443для HTTPS, напримерBLOB_STORAGE_PORT:8888;path-prefix- путь до места хранилища BLOB-объектов, путь до места хранения BLOB-объекта на сервере хранилища BLOB-объектов, напримерBLOB_STORAGE_PATH_POSTFIX:;path-postfix- окончание пути, начало списка параметров, напримерBLOB_STORAGE_PATH_PREFIX:;bucket- наименование хранилища, только для клиентов AWSSDK;auth- параметры аутентификации BLOB-адаптера;type-тип аутентификации (NONE- нет,BASIC- по имени/паролю,TOKEN- по токену,AUTH- через сервер аутентификации), напримерBLOB_STORAGE_AUTH_TYPE:NONE;user- имя пользователя (для аутентификацииBASIC), напримерBLOB_STORAGE_AUTH_USER:user;password- пароль (для аутентификацииBASIC), напримерBLOB_STORAGE_AUTH_PASSWORD:pass;token- токен (для аутентификацииTOKEN), напримерBLOB_STORAGE_AUTH_TOKEN:token;protocol- имя протокола HTTP или HTTPS (для аутентификацииAUTH), напримерAUTH_SERVER_PROTOCOL:http;host- строка с IP или FQDN сервера авторизации (для аутентификацииAUTH), напримерAUTH_SERVER_HOST:localhost;port- TCP-порт (для аутентификацииAUTH), напримерAUTH_SERVER_PORT:80;path- путь на сервере (для аутентификацииAUTH), напримерAUTH_SERVER_PATH:oauth2/token;client-id- идентификатор клиента, присвоенный BLOB-адаптеру в сервере авторизации (для аутентификацииAUTH), напримерAUTH_SERVER_CLIENT_ID:;client-secret- секретный код клиента, присвоенный BLOB-адаптеру в сервере авторизации (для аутентификацииAUTH), напримерAUTH_SERVER_CLIENT_SECRET:.
Пример 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.
9.6. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore.
Например:
prostore-rest-client:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9095}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
Параметры настроек
host- адрес ProStore, напримерPS_HOST:localhost;port- порт ProStore, напримерPS_PORT:9195;max-pool-size- максимальное число подключений к ProStore, напримерPS_MAX_POOL_SIZE:8;
9.7. Секция component-info
В секции component-info хранятся настройки компонента сбора информации о компонентах витрины.
Например:
component-info:
enabled: true
datasource: ''
datamart: component_info
table-name: component_info
create-table-period: 60s
publish-period: 60s
timeout-active: 300s
secrets:
- keys
Параметры настроек
enabled- статус подключения компонента, указывается булево значение;datasource- датасорс Prostore;datamart- схема Prostore;table-name- имя таблицы для записи информации о компоненте;create-table-period- период попыток создания схемы, при неуспехе, указывается в секундах;publish-period- период публикации health-check, указывается в секундах;timeout-active- период после которого компонент считается неактивным при отсутствии health-check, указывается в секундах;secrets- список элементов конфига маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы.
9.8. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9837.