자습서: Azure Table Storage를 출력으로 사용하는 Python 함수
이 자습서에서는 다음 작업을 완료하여 스토리지 테이블을 출력으로 사용해 Python 함수를 구성하는 방법에 대해 알아봅니다.
- Visual Studio Code를 사용하여 Python 함수 프로젝트를 만듭니다.
- 스토리지 테이블 출력 함수 바인딩을 추가합니다.
- Visual Studio Code를 사용하여 함수를 로컬로 실행합니다.
- Azure CLI를 사용하여 서비스 커넥터를 통해 Azure 함수와 스토리지 테이블 간에 연결을 만듭니다.
- Visual Studio를 사용하여 함수를 배포합니다.
이 자습서의 함수 프로젝트 구성 요소 개요:
프로젝트 구성 요소 | 선택/솔루션 |
---|---|
원본 서비스 | Azure 함수 |
대상 서비스 | Azure Storage 테이블 |
함수 바인딩 | HTTP 트리거, 스토리지 테이블을 출력으로 사용 |
로컬 프로젝트 인증 형식 | 연결 문자열 |
클라우드 함수 인증 형식 | 연결 문자열 |
Warning
사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명된 인증 흐름은 다른 흐름에는 없는 위험을 전달하며, 애플리케이션에서 매우 높은 신뢰 수준을 요구합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.
필수 조건
- 지원되는 플랫폼 중 하나에 Visual Studio Code를 설치합니다.
- Azure CLI Azure Cloud Shell에서 사용하거나 로컬로 설치할 수 있습니다.
- Azure Storage 계정 및 스토리지 테이블. 스토리지 계정이 없는 경우 새로 만듭니다.
- 이 가이드에서는 Functions 개발자 가이드에 제시된 개념과 Azure Functions에서 서비스에 연결하는 방법을 알고 있다고 가정합니다.
Python 함수 프로젝트 만들기
자습서에 따라 로컬 Azure Functions 프로젝트를 만들고 프롬프트에서 다음 정보를 제공합니다.
프롬프트 | 선택 사항 |
---|---|
언어 선택 | Python 을 선택합니다. (v1 프로그래밍 언어 모델) |
가상 환경을 만들 Python 인터프리터 선택 | 선호하는 Python 인터프리터를 선택합니다. 옵션이 표시되지 않으면 Python 이진에 대한 전체 경로를 입력합니다. |
프로젝트의 첫 번째 함수에 사용할 템플릿 선택 | HTTP trigger 을 선택합니다. |
함수 이름 제공 | TableStorageOutputFunc 를 입력합니다. |
권한 부여 수준 | 누구나 함수 엔드포인트를 호출할 수 있는 Anonymous 를 선택합니다. |
HTTP 트리거를 사용하여 Python 함수 프로젝트를 만들었습니다.
스토리지 테이블 출력 바인딩 추가
바인딩 특성은 지정된 함수에 대한 function.json 파일에 정의되어 있습니다. 바인딩을 만들려면 함수 폴더의 function.json
파일을 마우스 오른쪽 단추로 클릭하고(macOS의 경우 Ctrl+ 클릭) 바인딩 추가...를 선택합니다. 프롬프트에 따라 새 바인딩에 대해 다음 바인딩 속성을 정의합니다.
prompt | 값 | 설명 |
---|---|---|
바인딩 방향 선택 | out |
바인딩은 출력 바인딩입니다. |
...방향으로 바인딩 선택 | Azure Table Storage |
바인딩은 Azure Storage 테이블 바인딩입니다. |
코드에서 이 바인딩을 식별하는 데 사용하는 이름 | outMessage |
코드에서 참조되는 바인딩 매개 변수를 식별하는 이름입니다. |
데이터가 기록되는 스토리지 계정에 있는 테이블 이름 | testTable |
함수가 출력으로 기록하는 테이블 이름입니다. 스토리지 계정이 없는 경우 스토리지 계정에 testTable 이라고 명명된 테이블을 만듭니다. |
"local.setting.json"에서 설정 선택 | Create new local app settings |
함수가 출력으로 기록하는 스토리지 계정을 선택합니다. Visual Studio Code가 로컬 프로젝트 연결을 위한 연결 문자열을 검색합니다. |
바인딩이 성공적으로 추가되었는지 확인하려면 다음을 수행합니다.
TableStorageOutputFunc/function.json
파일을 열고type: table
및direction: out
이 적용된 새 바인딩이 이 파일에 추가되었는지 확인합니다.local.settings.json
파일을 열고 스토리지 계정 연결 문자열이 포함된 새 키-값 쌍<your-storage-account-name>_STORAGE: <your-storage-account-connection-string>
이 이 파일에 추가되었는지 확인합니다.
바인딩이 추가된 후 여기서 TableStorageOutputFunc/__init__.py
를 Python 파일로 바꿔 바인딩을 사용하도록 함수 코드를 업데이트합니다.
import logging
import uuid
import json
import azure.functions as func
def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:
rowKey = str(uuid.uuid4())
data = {
"Name": "Output binding message",
"PartitionKey": "message",
"RowKey": rowKey
}
outMessage.set(json.dumps(data))
return func.HttpResponse(f"Message created with the rowKey: {rowKey}")
로컬에서 함수 실행
자습서에 따라 함수를 로컬로 실행하고 테이블 출력을 확인합니다.
- 스토리지 계정에 연결하라는 메시지가 표시되면 Azure Function 리소스를 만들 때 선택한 대로 스토리지 계정을 선택합니다. 이 값은 Azure Function 런타임에 사용됩니다. 출력에 사용하는 스토리지 계정이 반드시 동일하지는 않습니다.
- 함수를 로컬로 시작하려면
<kbd>
F5</kbd>
키를 누르거나 왼쪽 작업 표시줄에서 실행 및 디버그 아이콘을 선택합니다. - 함수가 테이블에 기록할 수 있는지 확인하려면 Visual Studio Code WORKSPACE 보기에서 함수의
Execute Function Now...
를 마우스 오른쪽 단추로 클릭하고 함수 응답을 확인합니다. 응답 메시지에는 테이블에 기록된rowKey
가 포함되어야 합니다.
서비스 커넥터를 사용하여 서비스 연결 만들기
마지막 단계에서 함수 프로젝트를 로컬로 확인했습니다. 이제 함수가 클라우드에 배포된 후 스토리지 Blob에 기록할 수 있도록 클라우드에서 Azure Function 및 Azure Storage 테이블 간의 연결을 구성하는 방법을 알아봅니다.
- 로컬 프로젝트에서
function.json
파일을 열고bindings
의connection
속성 값을AZURE_STORAGETABLE_CONNECTIONSTRING
으로 변경합니다. - 다음 Azure CLI 명령을 실행하여 Azure Function과 Azure Storage 간에 연결을 만듭니다.
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
--source-id
형식:/subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
--target-id
형식:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default
함수의 앱 설정에서 AZURE_STORAGETABLE_CONNECTIONSTRING
변수를 구성하는 서비스 커넥터 리소스를 만들었습니다. 그러면 함수 바인딩에서 이 앱 설정을 사용하여 스토리지에 연결하므로 함수가 스토리지 테이블에 기록할 수 있습니다. 서비스 커넥터를 통해 Azure Functions가 서비스에 연결하는 방법에 대해 자세히 알아볼 수 있습니다.
Azure에 함수 배포
이제 Azure에 함수를 배포하고 스토리지 테이블 출력 바인딩이 작동하는지 확인할 수 있습니다.
- 이 Azure Functions 자습서에 따라 함수를 Azure에 배포합니다.
- 함수가 테이블에 기록할 수 있는지 확인하려면 Visual Studio Code RESOURCES 보기에서 함수의
Execute Function Now...
를 마우스 오른쪽 단추로 클릭하고 함수 응답을 확인합니다. 응답 메시지에는 함수가 테이블에 방금 기록한rowKey
가 포함되어야 합니다.
문제 해결
스토리지 호스트와 관련된 오류(예: No such host is known (<acount-name>.table.core.windows.net:443)
)가 있는 경우 Azure Storage에 연결하는 데 사용하는 연결 문자열에 테이블 엔드포인트가 포함되어 있는지 확인해야 합니다. 그렇지 않은 경우 Azure Storage 포털로 이동하여 Access keys
블레이드에서 연결 문자열을 복사하고 값을 바꿉니다.
프로젝트를 로컬로 시작할 때 이 오류가 발생하면 local.settings.json
파일을 확인합니다.
이 오류가 클라우드에 함수를 배포할 때 발생하는 경우(이 경우 함수 배포는 일반적으로 Syncing triggers
에서 실패함) 함수의 앱 설정을 확인합니다.
리소스 정리
이 프로젝트를 계속 사용하지 않으려면 이전에 만든 함수 앱 리소스를 삭제합니다.
다음 단계
서비스 커넥터 개념 및 Azure Functions를 다른 클라우드 서비스에 연결할 때 서비스 커넥터가 지원하는 방식을 자세히 알아보려면 아래 문서를 참조하세요.