Python의 콘솔 애플리케이션에서 Fabric 사용자 데이터 함수 항목(미리 보기)을 호출하려면 실행해야 하는 함수 엔드포인트에 HTTP 요청을 보낼 수 있습니다. 이 빠른 시작에서는 Visual Studio Code를 사용하여 Python 앱을 설정하는 방법을 알아봅니다.
필수 조건
- Visual Studio Code를 설치합니다.
- 로컬 컴퓨터에 Python 3.1을 다운로드합니다.
- Microsoft Fabric 계정이 없다면 무료로 계정을 만듭니다.
- 작업 영역만듭니다.
- 사용자 데이터 함수 항목을 만들고 게시합니다. VS Code에서 만드는 방법 또는 포털에서 만드는 방법에 대한 문서를 확인합니다. 변경 내용을 게시하여 사용자 데이터 함수 항목을 호출할 준비가 되도록 합니다.
함수를 호출하기 위한 콘솔 애플리케이션을 만듭니다.
해당 함수는 공개적으로 액세스 가능해야 합니다. 함수 탐색기에서 함수 이름을 마우스로 가리키고 나타나는 줄임표 아이콘(...)을 선택한 다음, 속성을 선택합니다. 열리는 속성 창에서 공용 액세스를 사용하도록 설정합니다. Python 애플리케이션에서 사용할 공용 URL도 기록해 두어야 합니다.
Python 앱을 위한 새 폴더(예: my-data-app)를 만듭니다. VS Code에서 폴더를 엽니다.
VS Code에서 Python 가상 환경을 설정합니다. VS Code에서 로컬 환경을 만들려면 Ctrl+Shift+P를 눌러 명령 팔레트를 열고 Python: 환경 만들기 명령을 검색하여 선택합니다.
- 이 명령은 환경 유형 목록을 제시하고 Venv를 선택합니다.
- Python 인터프리터 버전 Python 3.11을 선택합니다.
VS Code 터미널에서 다음 명령을 실행하여 가상 환경을 활성화합니다.
venv\Scripts\activate.bat
다음으로, 이 예에 필요한 Python 라이브러리를 설치하기 위해 명령을 실행합니다.
pip install azure-identity, requests
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 호출을 발행하여 호출할 수 있습니다. 함수 탐색기에서 호출하려는 함수를 선택하고 함수 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입니다.
-
상태: 함수 실행 결과입니다. 다음 값 중 하나를 가질 수 있습니다.
Succeeded
,BadRequest
,Failed
,Timeout
및ResponseTooLarge
. - 출력: 함수가 반환하는 출력 값입니다.
- 오류: 오류가 캡처된 경우 각 오류의 이름, 오류 메시지 및 오류 속성이 포함된 목록이 반환됩니다.
응답 코드
해당 함수는 실행 결과로 다음 HTTP 코드를 반환합니다.
응답 코드 | 설명 |
---|---|
200 확인(성공) | 요청이 성공했습니다. |
403(사용할 수 없음) | 응답이 너무 커서 호출이 실패했습니다. |
408(요청 시간 제한) | 요청이 실패했습니다. 실행에 200초 이상 걸렸기 때문입니다. |
409(충돌) | 요청이 실행 중에 예외를 발생시켰습니다. |
400(잘못된 요청) | 입력 매개 변수가 잘못되었거나 누락되어 요청이 실패했습니다. |
500(Internal Server Error) | 내부 오류로 인해 요청이 실패했습니다. |
디버깅 및 테스트
Python 디버거를 사용하여 VS Code에서 애플리케이션을 디버깅합니다. 문제가 발생할 경우 디버깅을 위해 필요한 경우 중단점을 추가합니다. 자세히 알아보기