Для экспорта и импорта дашбордов с помощью API Apache Superset необходимо выполнить несколько шагов. Перед тем, как начать, убедитесь, что у вас есть доступ к Superset и настроены права на выполнение запросов в API.
Инструкция актуальна для версии Apache Superset 3.1.1
Экспорт дашборда через Apache Superset API
Для экспорта дашборда с помощью API необходимо сделать следующие операции:
- Зайти в API Swagger и ознакомиться с документацией АПИ. Обычно оно располагается по адресу
https://your-domain-with-superset.ru/swagger/v1
или
http://localhost:8088/swagger/v1
- Открыв Swagger вы увидите следующую картинку
- Далее необходимо получить access_token и refresh_token
- После этого выполняется запрос со списком дашбордов, вычленяется нужный id дашборда
- посылается запрос на экспорт дашборда в директорию
Apache Superset curl: Authenticate and get a JWT access and refresh token
Выпуск JWT access token для работы с Apache Superset с помощью curl
Запускаем команду
curl -X POST \ https://your-domain-superset.ru/api/v1/security/login \ -H 'Content-Type: application/json' \ -d '{ "username": "admin_my_login_123", "password": "qwerty123_your_complex_password", "provider": "db", "refresh": true }'
Должны получить ответ от сервера:
{"access_token":"eyJ0eXAiOldksjoxNzExMTgxMDgzLCJqdGkiOiI5YWU0YTddfsgdgfdsgYTJhNi1lY2Q1ZjI1MDggdsfdgdfgoiYWNjZXNzIiwic3ViIjoxLCJuYmYiOjE3MTExODEwODMsfdgsdfgMTk4M30.r0XUxqealOHxTSfKC_1TCBxQSG3FdBjSIYMNQKb_pOo","refresh_token":"eyJ0eXAiOiJKVdsfgfhdgOiJIUzI1NiJ9.eyJmcmVzaCIdfgsdfgthrthtfxMTE4MTA4MywiasdfgdfsgdfsgZDctMmZmNzI5ZDQ1ZjgLCJzdWI4MywiZXhwIjoxNzEzNzczMDgzfQ.TQqRXIJL9qYHg_qU5_VhLQ7SQO1ysa6UaAPCyyNIGuA"}
Access token и refresh token являются ключевыми элементами в механизме аутентификации и авторизации при использовании технологии JWT (JSON Web Token):
- Access Token: Этот токен предоставляет доступ к защищенным ресурсам или функциональности. Когда пользователь успешно аутентифицирован, ему выдается access token, который затем должен быть предоставлен при каждом запросе к защищенным ресурсам или API. Access token обычно имеет ограниченное время жизни (например, несколько минут или часов), после чего он становится недействительным.
- Refresh Token: Refresh token используется для обновления или продления срока действия access token без необходимости повторной аутентификации пользователя. Обычно refresh token имеет более длительный срок действия, чем access token. После истечения срока действия access token, клиент может использовать refresh token для получения нового access token. Это позволяет пользователям оставаться аутентифицированными в течение продолжительного времени без необходимости вводить свои учетные данные повторно.
Как получить access_token и refresh_token через Swagger в Apache Superset
Заходим в swagger:
http://localhost:8088/swagger/v1
У вас может быть свой адрес и не обязательно должен быть указан порт 8088.
Далее находим раздел api/v1/security/login
и выполняем запрос (как на gif):
Обновление токена JWT access_token с помощью ваш_refresh_token
Запускаем в консоли код:
curl -X POST \ https://your-domain-superset.ru/api/v1/security/refresh \ -H 'Accept: application/json' \ -H 'Authorization: Bearer ваш_refresh_token'
В качестве ответа мы должны получить новый действующий access_token, с помощью которого мы можем обращаться к API.
Получаем список Дашбордов (из него нужно получить IDs)
Запускаем команду
curl -X GET \ https://your-domain-superset.ru/api/v1/dashboard/ \ -H "Authorization: Bearer ваш_access_token"
С токеном это будет выглядеть так:
curl -X GET \ https://your-domain-superset.ru/api/v1/dashboard/ \ -H "Authorization: Bearer eyJ0eXAiOldksjoxNzExMTgxMDgzLCJqdGkiOiI5YWU0YTddfsgdgfdsgYTJhNi1lY2Q1ZjI1MDggdsfdgdfgoiYWNjZXNzIiwic3ViIjoxLCJuYmYiOjE3MTExODEwODMsfdgsdfgMTk4M30.r0XUxqealOHxTSfKC_1TCBxQSG3FdBjSIYMNQKb_pOo"
Экспорт дашбордов с помощью Access Token JWT из Superset
Следующая команда сохранит дашборд с ID = 1
в директорию /opt/dashboards_20240323.zip
# Экспорт dashboards ID = 1 sudo curl -X GET "https://your-domain-superset.ru/api/v1/dashboard/export/?q=%5B1%5D" -o /opt/dashboards_20240323.zip -s \ -H "Authorization: Bearer eyJ0eXAiOldksjoxNzExMTgxMDgzLCJqdGkiOiI5YWU0YTddfsgdgfdsgYTJhNi1lY2Q1ZjI1MDggdsfdgdfgoiYWNjZXNzIiwic3ViIjoxLCJuYmYiOjE3MTExODEwODMsfdgsdfgMTk4M30.r0XUxqealOHxTSfKC_1TCBxQSG3FdBjSIYMNQKb_pOo"
На выходе мы получим zip файл, в котором будут лежать директории со всеми объектами дашборда в формате yaml:
Импорт дашборда через Apache Superset API
Импортировать дашборды из архива zip можно с помощью команды
# Import dashboards from a file curl -X 'POST' \ 'https://your-domain-superset.ru/api/v1/dashboard/import/' \ -H 'accept: application/json' \ -H 'Content-Type: multipart/form-data' \ -F 'formData=@/opt/dashboard_1_1227.zip;type=application/zip' \ -F 'overwrite=true' \ -F 'passwords=' \ -F 'ssh_tunnel_passwords=' \ -F 'ssh_tunnel_private_key_passwords=' \ -F 'ssh_tunnel_private_keys=' \ -H 'Authorization: Bearer ваш_access_token'
Пояснения по коду для curl:
curl
: это утилита командной строки для передачи данных по URL-адресам с использованием различных протоколов. В данном случае, она используется для отправки HTTP запроса.-X 'POST'
: опцияX
указывает метод запроса, в данном случае, POST, который используется для отправки данных на сервер.'https://your-domain-superset.ru/api/v1/dashboard/import/'
: это URL-адрес, куда отправляется запрос. Здесь указан конечный точка API Superset для импорта панелей инструментов.-H 'accept: application/json'
: это HTTP заголовок, который сообщает серверу, что клиент (в данном случаеcurl
) принимает ответ в формате JSON.-H 'Content-Type: multipart/form-data'
: это HTTP заголовок, указывающий тип контента, который отправляется серверу.multipart/form-data
используется для передачи файлов и других данных вместе с запросом.-F 'formData=@/opt/dashboard_1_1227.zip;type=application/zip'
: это опцияF
, которая добавляет данные формы к запросу. В данном случае, она указывает на файл, который будет загружен на сервер. Файлdashboard_1_1227.zip
находится по пути/opt/
и имеет MIME-типapplication/zip
.-F 'overwrite=true'
: это также данные формы, указывающие, нужно ли перезаписывать существующие панели инструментов. Здесь установлено значениеtrue
, что означает, что существующие панели будут перезаписаны.-F 'passwords='
: это данные формы, которые могут использоваться для указания паролей (если они необходимы для импортируемых панелей инструментов). В данном случае пустое значение указывает на то, что пароли не заданы.-F 'ssh_tunnel_passwords='
,-F 'ssh_tunnel_private_key_passwords='
и-F 'ssh_tunnel_private_keys='
: это также данные формы, которые могут использоваться для указания паролей и ключей для SSH туннелей (если они необходимы для импортируемых панелей инструментов). В данном случае пустые значения указывают на то, что данные для SSH туннелей не заданы.-H 'Authorization: Bearer ваш_access_token'
: это HTTP заголовок, который используется для аутентификации. Здесь указывается токен доступа (access token
), который должен быть предоставлен в заголовкеAuthorization
. Этот токен предположительно является средством аутентификации для доступа к API Superset.
Ручной импорт выгруженных дашбордов в Superset
Если у вас есть архив с выгруженными дашбордами из суперсет через АПИ, то их можно загрузить вручную через интерфейс Apache Superset.
В разделе Dashboards выбрать импорт и выбрать архив:
Leave a Reply