Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете вызвать функции пользовательских данных Fabric из внешних приложений, отправив HTTP-запросы в общедоступную конечную точку функции. Это позволяет интегрировать бизнес-логику Fabric в веб-приложения, скрипты автоматизации, микрослужбы или любую систему за пределами среды Fabric.
Изучив это руководство, вы:
- Регистрация приложения Microsoft Entra для проверки подлинности
- Получение общедоступного URL-адреса функции и включение общедоступного доступа
- Создание консольного приложения Python, вызывающего функцию
- Общие сведения о схеме ответа и кодах состояния HTTP
Предпосылки
- Visual Studio Code , установленный на локальном компьютере.
- Python 3.11 , установленный на локальном компьютере.
- Учетная запись Microsoft Fabric. Вы можете зарегистрироваться на бесплатную пробную версию.
- Рабочая область Fabric.
- Опубликованный элемент функций данных пользователя. Инструкции см. в разделе "Создание функций пользовательских данных" в Visual Studio Code или создание функций пользовательских данных на портале.
Создание приложения Microsoft Entra
Чтобы вызвать функции данных пользователей из внешнего приложения, необходимо зарегистрировать приложение в идентификаторе Microsoft Entra. Эта регистрация приложения предоставляет учетные данные, которые приложение Python использует для проверки подлинности.
Перейдите на Центр администрирования Microsoft Entra и зарегистрируйте приложение, выполнив действия, описанные в кратком руководстве: регистрация приложения на платформе идентификации Microsoft.
Значения идентификатора приложения приложения Microsoft Entra (клиента) и идентификатора каталога (клиента) отображаются в поле сводки. Запишите эти значения, так как они требуются позже.
В списке Управление выберите Разрешения API, затем Добавить разрешение.
Добавьте службу PowerBI, выберите делегированные разрешения и выберите UserDataFunction.Execute.All или item. Разрешения Execute.All . Убедитесь, что согласие администратора не требуется.
Вернитесь к параметру "Управление" и выберите "Добавить проверку подлинности>">.
Для локальных целей разработки добавьте
http://localhost:3000в URI перенаправления и убедитесь, что приложение включено для потока кода авторизации с ключом проверки подлинности для Exchange (PKCE). Нажмите кнопку "Настройка", чтобы сохранить изменения. Если приложение сталкивается с ошибкой, связанной с запросами между источниками, добавьте платформу мобильных и классических приложений на предыдущем шаге с тем же URI перенаправления.Вернитесь к проверке подлинности, прокрутите вниз до расширенные настройки и, в разделе Разрешить потоки общедоступных клиентов, выберите Да для Включить следующие потоки для мобильных и настольных приложений.
Создание консольного приложения
Теперь, когда у вас есть регистрация приложения, создайте консольное приложение Python, которое выполняет проверку подлинности и вызывает функцию данных пользователя.
Получение URL-адреса функции для вызова
Каждая функция данных пользователя имеет уникальный общедоступный URL-адрес, который служит в качестве конечной точки REST API. Прежде чем вызывать функцию из внешнего приложения, необходимо включить общедоступный доступ и получить URL-адрес.
Чтобы получить URL-адрес функции, выполните следующие действия:
На портале Fabric откройте элемент функций пользовательских данных.
Убедитесь, что вы работаете только в режиме запуска , а не в режиме разработки .
В обозревателе функций наведите указатель мыши на имя функции и выберите многоточие (...).
Выберите Свойства.
В области свойств убедитесь, что общедоступный доступ включен. Если нет, выберите переключатель, чтобы включить его.
Скопируйте общедоступный URL-адрес для использования в приложении Python.
Подсказка
Если общедоступный доступ уже включен, можно пропустить панель свойств. В обозревателе функций выберите многоточие (...) рядом с именем функции и выберите URL-адрес функции копирования. Это копирует тот же URL-адрес, что и общедоступный URL-адрес в области свойств.
В коде приложения замените заполнитель URL-адресом
FUNCTION_URL, скопированным вами.
Настройка проекта Python
Создайте проект Python с виртуальной средой и установите необходимые зависимости.
Например,
my-data-appсоздайте новую папку для приложения Python.Откройте папку в Visual Studio Code.
Откройте палитру команд (CTRL+SHIFT+P) и найдите Python: создать среду.
Выберите venv в качестве типа среды.
Выберите Python 3.11 в качестве версии интерпретатора.
Откройте новый терминал в Visual Studio Code (CTRL+).
Активируйте виртуальную среду Python:
Виндоус:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activateУстановите необходимые библиотеки Python:
pip install azure-identity requests
Добавление кода приложения
Добавьте код Python, который проходит проверку подлинности с помощью идентификатора Microsoft Entra и вызывает функцию данных пользователя.
Создайте файл с именем
app.pyв папке проекта.Добавьте следующий код. Замените
<REPLACE WITH USER DATA FUNCTION URL>с общедоступным URL-адресом, скопированным ранее.from azure.identity import InteractiveBrowserCredential import requests import json # Acquire a token using interactive browser authentication # This opens a browser window for the user to sign in with their Microsoft account credential = InteractiveBrowserCredential() scope = "https://analysis.windows.net/powerbi/api/user_impersonation" token = credential.get_token(scope) if not token.token: print("Error: Could not get access token") exit(1) # Prepare headers with the access token headers = { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" } FUNCTION_URL = "<REPLACE WITH USER DATA FUNCTION URL>" # Prepare the request data (modify to match your function's expected input) data = {"name": "John"} try: # Call the user data function public URL response = requests.post(FUNCTION_URL, json=data, headers=headers) response.raise_for_status() print(json.dumps(response.json(), indent=2)) except Exception as e: print(f"Error: {e}")Примечание.
В этом примере используется
InteractiveBrowserCredentialдля простоты, который открывает браузер для интерактивного входа. Для рабочих приложений передайтеclient_idиtenant_idиз зарегистрированного приложения Microsoft Entra вInteractiveBrowserCredential, или используйте другой тип учетных данных, например,ClientSecretCredential, для проверки подлинности между службами. Дополнительные сведения см. в разделе библиотека клиента для идентификации Azure в Python.
Запуск приложения
Чтобы запустить приложение, используйте следующую команду в терминале:
python app.py
Откроется окно браузера для входа с помощью учетной записи Майкрософт. После проверки подлинности приложение вызывает функцию данных пользователя и выводит ответ.
Чтобы отладить приложение в Visual Studio Code, установите точки останова, щелкнув в поле рядом с номерами строк, а затем нажмите F5, чтобы начать отладку. Дополнительные сведения см. в статье об отладке Python в Visual Studio Code.
Выходная схема
При вызове функции данных пользователя из внешнего приложения текст ответа следует этой схеме JSON:
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded",
"output": "Hello, John!",
"errors": []
}
Ответ включает следующие свойства:
- functionName: имя выполняемой функции.
- invocationId: уникальный идентификатор для выполнения этой конкретной функции. Полезно для устранения неполадок и сопоставления журналов.
-
состояние: результат выполнения функции. Возможные значения:
Succeeded,BadRequest,Failed,TimeoutиResponseTooLarge. -
выходные данные: возвращаемое значение функции. Тип данных и структура зависят от возвращаемой функции. Например, если функция возвращает строку,
outputэто строка. Если функция возвращает словарь,outputэто объект JSON. -
ошибки: список ошибок, захваченных во время выполнения. Каждая ошибка включает
name,messageи необязательныйpropertiesобъект, содержащий пары "ключ-значение" с дополнительными сведениями. Пусто, когда функция завершается успешно.
Коды ответа
Функция возвращает следующие коды HTTP в результате выполнения.
| Код ответа | Message | Описание |
|---|---|---|
| 200 | Success | Запрос выполнен успешно. |
| 400 | ошибка запроса | Запрос недействителен. Этот ответ может быть вызван отсутствием или неправильными значениями входных параметров, типами данных или именами. Этот ответ также может быть вызван отключением общедоступного доступа для функции. |
| Ошибка 403: Доступ запрещён | Запрещено | Ответ был слишком большим, и вызов завершился ошибкой. |
| 408 | Время ожидания запроса | Сбой запроса произошёл из-за того, что выполнение заняло больше времени, чем предельно допустимый лимит. |
| 409 | Конфликт | Не удалось выполнить запрос из-за конфликтующего состояния. Эта ошибка может быть вызвана необработанным исключением или ошибкой с учетными данными пользователя. |
| 422 | ошибка запроса | Сбой запроса произошел из-за вызванного в функции исключения UserThrownError. |
| 500 | Внутренняя ошибка сервера | Сбой запроса из-за внутренней ошибки в службе. |