이 자습서에서는 다음 작업을 완료하여 Storage Queue를 트리거로 사용하여 Python 함수를 구성하는 방법에 대해 알아봅니다.
- Visual Studio Code를 사용하여 Python 함수 프로젝트를 만듭니다.
- Visual Studio Code를 사용하여 함수를 로컬로 실행합니다.
- Azure CLI를 사용하여 서비스 커넥터를 통해 Azure 함수와 Storage Queue 간에 연결을 만듭니다.
- Visual Studio를 사용하여 함수를 배포합니다.
이 자습서의 함수 프로젝트 구성 요소 개요:
| 프로젝트 구성 요소 | 선택/솔루션 |
|---|---|
| 원본 서비스 | Azure 함수 |
| 대상 서비스 | Azure Storage 큐 |
| 함수 바인딩 | 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에 연결합니다. 마지막으로 함수의 main 파일에 있는 __init__.py 함수는 function.json 파일에 정의된 함수 바인딩의 도움으로 연결 문자열을 사용할 수 있습니다.
로컬에서 함수 실행
자습서에 따라 함수를 로컬로 실행하고 트리거를 확인합니다.
- 스토리지에 연결하라는 메시지가 표시되면 Azure 함수 리소스를 만들 때 선택한 대로 스토리지 계정을 선택합니다. 이 값은 Azure 함수의 런타임에 사용되며 트리거에 사용하는 스토리지 계정과 반드시 동일하지는 않습니다.
- 함수를 로컬로 시작하려면
<kbd>F5</kbd>키를 누르거나 왼쪽 작업 표시줄에서 실행 및 디버그 아이콘을 선택합니다. - 트리거가 제대로 작동하는지 확인하려면 함수를 로컬로 실행하고 Azure Portal에서 Storage 큐 창을 열고 메시지 추가를 선택하고 테스트 메시지를 제공합니다. 함수가 트리거되고 Visual Studio Code 터미널에서 큐 항목으로 처리되는 것을 볼 수 있습니다.
서비스 커넥터를 사용하여 연결 만들기
마지막 단계에서 함수 프로젝트를 로컬로 확인했습니다. 이제 클라우드에 배포된 후 스토리지 큐에서 함수를 트리거할 수 있도록 클라우드에서 Azure 함수와 Azure Storage 큐 간의 연결을 구성하는 방법을 알아봅니다.
- 로컬 프로젝트에서
function.json파일을 열고connection의bindings속성 값을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}/resourceGroups/{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 (<account-name>.queue.core.windows.net:443)과 같은 스토리지 호스트와 관련된 오류가 있는 경우 Azure Storage에 연결하는 데 사용하는 연결 문자열에 큐 엔드포인트가 포함되어 있는지 확인합니다. 그렇지 않은 경우 Azure Portal에서 Azure Storage로 이동하여 창에서 Access keys 연결 문자열 복사하고 값을 바꿉니다.
프로젝트를 로컬로 시작할 때 이 오류가 발생하면 local.settings.json 파일을 확인합니다.
이 오류가 클라우드에 함수를 배포할 때 발생하는 경우(이 경우 함수 배포는 일반적으로 Syncing triggers에서 실패함) 함수의 앱 설정을 확인합니다.
리소스 정리
이 프로젝트를 계속 사용하지 않으려면 이전에 만든 함수 앱 리소스를 삭제합니다.
다음 단계
서비스 커넥터 개념과 Azure Functions가 서비스에 연결하는 데 도움이 되는 방법에 대한 자세한 내용은 아래 문서를 참조하세요.