자습서: Azure Queue Storage를 트리거로 사용하는 Python 함수
이 자습서에서는 다음 작업을 완료하여 Storage Queue를 트리거로 사용하여 Python 함수를 구성하는 방법에 대해 알아봅니다.
- Visual Studio Code를 사용하여 Python 함수 프로젝트를 만듭니다.
- Visual Studio Code를 사용하여 함수를 로컬로 실행합니다.
- Azure CLI를 사용하여 서비스 커넥터를 통해 Azure 함수와 Storage Queue 간에 연결을 만듭니다.
- Visual Studio를 사용하여 함수를 배포합니다.
이 자습서의 함수 프로젝트 구성 요소 개요:
프로젝트 구성 요소 | 선택/솔루션 |
---|---|
원본 서비스 | Azure 함수 |
대상 서비스 | Azure Storage Queue |
함수 바인딩 | Storage Queue를 트리거로 |
로컬 프로젝트 인증 형식 | 연결 문자열 |
클라우드 함수 인증 형식 | 연결 문자열 |
Warning
사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명된 인증 흐름은 다른 흐름에는 없는 위험을 전달하며, 애플리케이션에서 매우 높은 신뢰 수준을 요구합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.
필수 조건
- 지원되는 플랫폼 중 하나에 Visual Studio Code를 설치합니다.
- Azure CLI Azure Cloud Shell에서 사용하거나 로컬로 설치할 수 있습니다.
- Azure Storage 계정 및 스토리지 큐. Azure Storage가 없는 경우 만듭니다.
- 이 가이드에서는 Azure Functions 개발자 가이드에 제시된 기본 개념과 Functions에서 서비스에 연결하는 방법을 알고 있다고 가정합니다.
Python 함수 프로젝트 만들기
자습서에 따라 로컬 Azure Functions 프로젝트를 만들고 프롬프트에서 다음 정보를 제공합니다.
프롬프트 | 선택 사항 |
---|---|
언어 선택 | Python 을 선택합니다. (v1 프로그래밍 언어 모델) |
가상 환경을 만들 Python 인터프리터 선택 | 선호하는 Python 인터프리터를 선택합니다. 옵션이 표시되지 않으면 Python 이진에 대한 전체 경로를 입력합니다. |
프로젝트의 첫 번째 함수에 사용할 템플릿 선택 | Azure Queue Storage trigger 을 선택합니다. |
함수 이름 제공 | QueueStorageTriggerFunc 를 입력합니다. |
"local.settings.json"에서 설정 선택 | 스토리지 계정을 선택하고 트리거로 작동하는 큐 이름을 제공할 수 있는 Create new local app settings 를 선택합니다. |
Azure Storage 큐를 트리거로 사용하여 Python 함수 프로젝트를 만들었습니다. 로컬 프로젝트는 local.settings.json
파일에 저장된 연결 문자열을 사용하여 Azure Storage에 연결합니다. 마지막으로 함수의 __init__.py
파일에 있는 main
함수는 function.json
파일에 정의된 함수 바인딩의 도움으로 연결 문자열을 사용할 수 있습니다.
로컬에서 함수 실행
자습서에 따라 함수를 로컬로 실행하고 트리거를 확인합니다.
- 스토리지에 연결하라는 메시지가 표시되면 Azure 함수 리소스를 만들 때 선택한 대로 스토리지 계정을 선택합니다. 이 값은 Azure 함수의 런타임에 사용되며 트리거에 사용하는 스토리지 계정과 반드시 동일하지는 않습니다.
- 함수를 로컬로 시작하려면
<kbd>
F5</kbd>
키를 누르거나 왼쪽 작업 표시줄에서 실행 및 디버그 아이콘을 선택합니다. - 트리거가 제대로 작동하는지 확인하려면 함수를 로컬로 실행하고 Azure Portal에서 Storage 큐 창을 열고 메시지 추가를 선택하고 테스트 메시지를 제공합니다. 함수가 트리거되고 Visual Studio Code 터미널에서 큐 항목으로 처리되는 것을 볼 수 있습니다.
서비스 커넥터를 사용하여 연결 만들기
마지막 단계에서 함수 프로젝트를 로컬로 확인했습니다. 이제 클라우드에 배포된 후 스토리지 큐에서 함수를 트리거할 수 있도록 클라우드에서 Azure 함수와 Azure Storage 큐 간의 연결을 구성하는 방법을 알아봅니다.
- 로컬 프로젝트에서
function.json
파일을 열고bindings
의connection
속성 값을AZURE_STORAGEQUEUE_CONNECTIONSTRING
으로 변경합니다. - 다음 Azure CLI 명령을 실행하여 Azure 함수와 Azure Storage 계정 간에 연결을 만듭니다.
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-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}/queueServices/default
이 단계에서는 함수의 앱 설정에서 AZURE_STORAGEQUEUE_CONNECTIONSTRING
변수를 구성하는 서비스 커넥터 리소스를 만듭니다. 함수 바인딩 런타임은 이를 사용하여 스토리지에 연결하므로 함수는 스토리지 큐에서 트리거를 수락할 수 있습니다. 자세한 내용은 서비스 커넥터를 통해 Azure Functions를 서비스에 연결하는 방법으로 이동하세요.
Azure에 함수 배포
이제 Azure에 함수를 배포하고 스토리지 큐 트리거가 작동하는지 확인할 수 있습니다.
- 이 Azure Functions 자습서에 따라 함수를 Azure에 배포합니다.
- Azure Portal에서 스토리지 큐 창을 열고 메시지 추가를 선택하고 테스트 메시지를 제공합니다. 함수가 트리거되고 함수 로그에서 큐 항목으로 처리되는 것을 볼 수 있습니다.
문제 해결
No such host is known (<acount-name>.queue.core.windows.net:443)
과 같은 스토리지 호스트와 관련된 오류가 있는 경우 Azure Storage에 연결하는 데 사용하는 연결 문자열에 큐 엔드포인트가 포함되어 있는지 확인합니다. 그렇지 않은 경우 Azure Portal에서 Azure Storage로 이동하여 창에서 Access keys
연결 문자열 복사하고 값을 바꿉니다.
프로젝트를 로컬로 시작할 때 이 오류가 발생하면 local.settings.json
파일을 확인합니다.
이 오류가 클라우드에 함수를 배포할 때 발생하는 경우(이 경우 함수 배포는 일반적으로 Syncing triggers
에서 실패함) 함수의 앱 설정을 확인합니다.
리소스 정리
이 프로젝트를 계속 사용하지 않으려면 이전에 만든 함수 앱 리소스를 삭제합니다.
다음 단계
서비스 커넥터 개념과 Azure Functions가 서비스에 연결하는 데 도움이 되는 방법에 대한 자세한 내용은 아래 문서를 참조하세요.