Python でコンソール アプリケーションから Fabric ユーザー データ関数項目を呼び出すには、実行する必要がある関数エンドポイントに HTTP 要求を送信できます。 このクイック スタートでは、Visual Studio Code を使用して Python アプリを設定する方法について説明します。
前提条件
- Visual Studio Code をインストールします。
- Python 3.1 をローカル コンピューターにダウンロードします。
- Microsoft Fabric アカウントがない場合は、無料アカウントを作成します。
- ワークスペースを作成します。
- ユーザー データ関数項目を作成して発行します。 Visual Studio Code で作成する方法、またはポータルで作成する方法については、次の記事を参照してください。 変更内容を発行して、ユーザー データ関数項目を呼び出す準備を整えます。
Microsoft Entra アプリを作成する
次の手順では、Microsoft Entra で ReactJS アプリケーションのサポートを構成する方法について説明します。
「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」で説明されている手順を使用してアプリケーションを登録します。
Microsoft Entra アプリ アプリケーション (クライアント) ID と ディレクトリ (テナント) ID の値が [概要] ボックスに表示されます。 後で必要になるため、これらの値を記録します。
[管理] リストで、[API 権限] を選択し、[権限を追加] します。
PowerBI サービスを追加し、委任されたアクセス許可を選択し、UserDataFunction.Execute.All または項目を選択します。Execute.All アクセス許可。 管理者の同意が必要ないことを確認します。
[管理] 設定に戻り、[認証] を選択>プラットフォーム>Single-page アプリケーションを追加します。
ローカル開発の目的で、
http://localhost:3000に を追加し、Proof Key for Code Exchange (PKCE) を使用した認証コード フローに対してアプリケーションが有効になっていることを確認します。 [構成] ボタンを選択して、変更を保存します。 アプリケーションでクロスオリジン要求に関連するエラーが発生した場合は、前の手順で同じリダイレクト URI を使用 して Mobile アプリケーションとデスクトップ アプリケーション プラットフォームを追加します。認証 に戻り、下にスクロールして [詳細設定] をし、[パブリック クライアント フローのを許可 する] の下にある [ はい] を選択次のモバイル およびデスクトップ フロー を有効にします。
コンソール アプリケーションを作成する
この関数はパブリックにアクセスできる必要があります。 関数エクスプローラーで、関数の名前をポイントし、表示される省略記号アイコン (...) を選択して [プロパティ] を選択します。 開いた [プロパティ] ウィンドウで、[パブリック アクセス] を有効にします。 また、Python アプリケーションで使用するパブリック URL も書き留める必要があります。
たとえば、my-data-app など、Python アプリ用の新しいフォルダーを作成します。 Visual Studio Code でフォルダーを開きます。
Visual Studio Code で Python 仮想環境を設定します。 Visual Studio Code でローカル環境を作成するには、Ctrl + Shift + P キーを押してコマンド パレットを開き、[Python: 環境の作成] コマンドを検索して選択します。
- このコマンドは、環境の種類の一覧を表示し、 venv を選択します。
- Python インタープリター バージョン Python 3.11 を選択します。
次のコマンドを実行して、Visual Studio Code ターミナルで仮想環境をアクティブ化します。
venv\Scripts\activate.bat次に、コマンドを実行して、この例に必要な Python ライブラリをインストールします。
pip install azure-identity, requestsapp.pyファイルを作成し、コードを使用してユーザー データ関数項目を呼び出します。from azure.identity import InteractiveBrowserCredential import requests import json # Acquire a token # DO NOT USE IN PRODUCTION. # Below code to acquire token is to test the User data function endpoint and is for the purpose of development only. # For production, always register an application in a Microsoft Entra ID tenant and use the appropriate client_id and scopes. app = InteractiveBrowserCredential() scp = 'https://analysis.windows.net/powerbi/api/user_impersonation' result = app.get_token(scp) if not result.token: print('Error:', "Could not get access token") # Prepare headers headers = { 'Authorization': f'Bearer {result.token}', 'Content-Type': 'application/json' } FUNCTION_URL = '<REPLACE WITH USER DATA FUNCTION URL>' # Prepare the request data data = '{"name": "John"}' # JSON payload to send to the Azure Function headers = { # "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } 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())) except Exception as e: print({"error": str(e)}, 500) if __name__ == "__main__": app.run(debug=True)注
この例は、開発用途のみが想定されています。 運用環境のユース ケースでこのアプリケーションを使用する前に、Microsoft Entra ID 認証を使用するようにアプリケーションを更新してください。
外部アプリケーションからの関数の呼び出し
関数は、エンドポイント URL への REST 呼び出しを発行することによって呼び出すことができます。 関数エクスプローラーで呼び出す関数を選択し、[Copy Function URL] (関数 URL のコピー) を選択します。 [プロパティ] メニューから、外部でこの URL を使用する機能をオンまたはオフにすることもできます。
次に、アプリケーションでこの URL を使用して関数を呼び出します。 「アプリケーションからユーザー データ関数を呼び出す」を参照してください。
出力スキーマ
外部アプリケーションからユーザー データ関数を呼び出すと、出力スキーマの形式は次のようになります。
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded | BadRequest | Failed | Timeout | ResponseTooLarge",
"output": /*shows the result of the function dependeing on the output type*/,
"errors": [
{
"name": "Error name",
"message": "Error message",
"properties": {
/*Key value pairs custom to error*/
}
},
]
}
次のプロパティが返されます。
- functionName: 実行された関数の名前。
- invocationId: 関数を実行するための呼び出し ID。
-
status: 関数の実行結果とサポートされる値は、
Succeeded、BadRequest、Failed、Timeout、およびResponseTooLargeです。 - output: 関数によって返される出力値。
- errors: エラーがキャプチャされた場合、ここに、各エラーの名前、エラー メッセージ、エラー プロパティのリストが返されます。
応答コード
この関数は、実行の結果として次の HTTP コードを返します。
| 応答コード | メッセージ | 説明 |
|---|---|---|
| 200 | Success | 要求は成功しました。 |
| 400 | 正しくない要求 | 要求が無効でした。 この応答は、入力パラメーター値、データ型、または名前が見つからないか、正しくない可能性があります。 この応答は、関数のパブリック アクセスがオフになっている場合にも発生する可能性があります。 |
| 4:03 | 許可されていません | 応答は大きすぎ、実行は失敗しました。 |
| 408 | 要求タイムアウト | 実行が 200 秒を超えたため、要求は失敗しました。 |
| 409 | 葛藤 | 状態が競合しているため、要求を完了できませんでした。 これは、ハンドルされない例外またはユーザー資格情報のエラーが原因で発生する可能性があります。 |
| 422 | 正しくない要求 | 関数で UserThrownError が発生したため、要求は失敗しました。 |
| 500 | 内部サーバー エラー | サービスの内部エラーが原因で要求が失敗しました。 |
デバッグおよびテスト
Python デバッガーを使用して Visual Studio Code でアプリケーションをデバッグします。 問題が発生した場合にデバッグで必要な場合は、ブレークポイントを追加します。 詳細情報