次の方法で共有


チュートリアル: Python コンソール アプリケーションからユーザー データ関数を呼び出す

Python のコンソール アプリケーションから Fabric ユーザー データ関数項目 (プレビュー) を呼び出すには、実行する必要がある関数エンドポイントに HTTP 要求を送信します。 このクイック スタートでは、Visual Studio Code を使用して Python アプリを設定する方法について説明します。

前提条件

関数を呼び出すコンソール アプリケーションを作成する

  1. この関数はパブリックにアクセスできる必要があります。 関数エクスプローラーで、関数の名前をポイントし、表示される省略記号アイコン (...) を選択して [プロパティ] を選択します。 開いた [プロパティ] ウィンドウで、[パブリック アクセス] を有効にします。 また、Python アプリケーションで使用するパブリック URL も書き留める必要があります。

  2. たとえば、my-data-app など、Python アプリ用の新しいフォルダーを作成します。 VS Code で フォルダーを開きます。

  3. VS Code 内に Python 仮想環境を設定します。 VS Code でローカル環境を作成するには、Ctrl + Shift + Pコマンド パレットを開き、[Python: Create Environment] コマンドを検索して選択します。

    • コマンドにより、環境の種類の一覧が表示され、Venv が選択されます。
    • Python インタープリター バージョン Python 3.11 を選択します。
  4. 次のコマンドを実行して VS Code ターミナルで仮想環境をアクティブにします。

    venv\Scripts\activate.bat
    
  5. 次に、コマンドを実行して、この例に必要な Python ライブラリをインストールします。

    pip install azure-identity, requests 
    
  6. app.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 GraphQL 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.
    # https://learn.microsoft.com/fabric/data-engineering/connect-apps-api-graphql#create-a-microsoft-entra-app
    
    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: 関数の実行結果。 これは、SucceededBadRequestFailedTimeoutResponseTooLarge のいずれかの値になります。
  • output: 関数によって返される出力値。
  • errors: エラーがキャプチャされた場合、ここに、各エラーの名前、エラー メッセージ、エラー プロパティのリストが返されます。

応答コード

この関数は、実行の結果として次の HTTP コードを返します。

応答コード 説明
200 OK (成功) 要求は成功しました
403 (許可されていません) 応答は大きすぎ、実行は失敗しました。
408 (要求タイムアウト) 実行が 200 秒を超えたため、要求は失敗しました。
409 (競合) 要求が実行中に例外をスローしました。
400 (無効な要求) 入力パラメーターが無効であるか不足しているため、要求は失敗しました。
500 (内部サーバー エラー) 内部エラーのため要求は失敗しました。

デバッグおよびテスト

Python デバッガーを使用して VS Code でアプリケーションをデバッグします。 問題が発生した場合にデバッグで必要な場合は、ブレークポイントを追加します。 詳細情報

次のステップ