이 빠른 시작에서는 Visual Studio Code를 사용하여 Azure Cosmos DB의 NO SQL 데이터베이스에서 데이터베이스 변경 내용에 응답하는 앱을 빌드합니다. 코드를 로컬에서 테스트한 후 Azure Functions의 Flex 사용량 플랜에서 실행되는 새로운 서버리스 함수 앱에 배포합니다.
프로젝트 원본은 Visual Studio Code와 함께 Azure Developer CLI(azd) 확장을 사용하여 로컬로 프로젝트 코드를 초기화 및 확인하고 코드를 Azure에 배포하는 작업을 간소화합니다. 이 배포는 안전하고 확장성 있는 Azure Functions 배포에 대한 최신 모범 사례를 따릅니다.
중요합니다
이 문서는 현재 C#, Python 및 TypeScript에서만 지원됩니다. 빠른 시작을 완료하려면 문서 맨 위에 있는 지원되는 언어 중 하나를 선택합니다.
필수 조건
활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
지원되는 플랫폼 중 하나에서 Visual Studio Code를 사용하십시오.
Visual Studio Code용 Azure Functions 확장 입니다. 이 확장에는 Azure Functions 핵심 도구가 필요합니다. 이 도구를 로컬에서 사용할 수 없는 경우 확장은 패키지 기반 설치 관리자를 사용하여 설치를 시도합니다. 명령 팔레트에서 실행
Azure Functions: Install or Update Azure Functions Core Tools하여 Core Tools 패키지를 설치하거나 업데이트할 수도 있습니다. 로컬 컴퓨터에 npm 또는 Homebrew가 설치되어 있지 않으면 대신 Core Tools를 수동으로 설치하거나 업데이트해야 합니다.
Visual Studio Code용 C# 확장
-
Node.js 18.x 이상.
node --version명령을 사용하여 버전을 확인하십시오.
Azure Functions에서 지원하는 Python 버전. 자세한 내용은 Python 설치 방법을 참조하세요.
Visual Studio Code용 Python 확장.
- Visual Studio Code용 Azure 개발자 CLI 확장 입니다.
프로젝트 시작
명령 팔레트의 azd init 명령을 사용하여 템플릿에서 로컬 Azure Functions 코드 프로젝트를 만들 수 있습니다.
Visual Studio Code에서 프로젝트를 만들 폴더 또는 작업 영역을 엽니다.
F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Developer CLI (azd): Initialize App (init)검색하고 실행한 다음, 템플릿 선택을 선택합니다.현재 폴더 또는 작업 영역을 초기화하는 동안
azd약간의 지연이 있을 수 있습니다.
메시지가 표시되면 템플릿을 선택하고,
Azure Functions with Cosmos DB Bindings (.NET)를 검색하여, 선택합니다.메시지가 표시되면 고유한 환경 이름(예:
cosmosdbchanges-dotnet.)을 입력합니다.이 명령은 템플릿 리포지토리 에서 프로젝트 파일을 끌어오고 현재 폴더 또는 작업 영역에서 프로젝트를 초기화합니다.
azd에서 환경은 앱에 대한 고유한 배포 컨텍스트를 유지하는 데 사용되며, 둘 이상을 정의할 수 있습니다. 또한 Azure에서 만드는 리소스 그룹의 이름의 일부이기도 합니다.
메시지가 표시되면 템플릿 선택을 선택하고 검색하여
Azure Functions TypeScript CosmosDB trigger을(를) 선택합니다.메시지가 표시되면 고유한 환경 이름(예:
cosmosdbchanges-ts.)을 입력합니다.이 명령은 템플릿 리포지토리 에서 프로젝트 파일을 끌어오고 현재 폴더 또는 작업 영역에서 프로젝트를 초기화합니다.
azd에서 환경은 앱에 대한 고유한 배포 컨텍스트를 유지하는 데 사용되며, 둘 이상을 정의할 수 있습니다. 또한 Azure에서 만드는 리소스 그룹의 이름의 일부이기도 합니다.
메시지가 표시되면 템플릿 선택을 선택한 후, 검색하여
Azure Functions Python with CosmosDB triggers and bindings...을 선택합니다.메시지가 표시되면 고유한 환경 이름(예:
cosmosdbchanges-py.)을 입력합니다.이 명령은 템플릿 리포지토리 에서 프로젝트 파일을 끌어오고 현재 폴더 또는 작업 영역에서 프로젝트를 초기화합니다.
azd에서 환경은 앱에 대한 고유한 배포 컨텍스트를 유지하는 데 사용되며, 둘 이상을 정의할 수 있습니다. 또한 Azure에서 만드는 리소스 그룹의 이름의 일부이기도 합니다.
로컬 운영 체제에 따라 이 명령을 실행하여 구성 스크립트에 필요한 권한을 부여합니다.
충분한 권한으로 다음 명령을 실행합니다.
chmod +x ./infra/scripts/*.sh
앱을 로컬로 실행하려면 먼저 Azure에서 리소스를 만들어야 합니다. 이 프로젝트는 Azure Cosmos DB에 로컬 에뮬레이션을 사용하지 않습니다.
Azure 리소스 만들기
이 프로젝트는 현재 모범 사례를 따르는 다른 필수 Azure 리소스와 함께 Flex Consumption 계획에서 함수 앱을 만드는 명령을 사용하도록 azd provision 구성됩니다.
Visual Studio Code에서 F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Developer CLI (azd): Sign In with Azure Developer CLI검색 및 실행한 다음, Azure 계정을 사용하여 로그인합니다.F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Developer CLI (azd): Provision Azure resources (provision)검색하여 실행하여 필요한 Azure 리소스를 만듭니다.터미널 창에 메시지가 표시되면 다음 필수 배포 매개 변수를 제공합니다.
프롬프트 Description 사용할 Azure 구독 선택 리소스를 만들려는 구독을 선택합니다. 위치 배포 매개 변수 새 Azure 리소스가 포함된 리소스 그룹을 만들 Azure 지역입니다. 현재 Flex 사용량 플랜을 지원하는 지역만 표시됩니다. vnetEnabled 배포 매개 변수 템플릿은 가상 네트워크 내에서 리소스 만들기를 지원하지만 배포 및 테스트를 간소화하려면 선택합니다 False.이
azd provision명령은 Bicep 구성 파일과 함께 이러한 프롬프트에 대한 응답을 사용하여 최신 모범 사례에 따라 이러한 필수 Azure 리소스를 만들고 구성합니다.- 플렉스 사용량 플랜 및 함수 앱
- Azure Cosmos DB 계정
- Azure Storage(필수) 및 Application Insights(권장)
- 사용자의 계정에 대한 액세스 정책 및 역할
- 관리 ID를 사용한 서비스 간 연결(저장된 연결 문자열 대신)
프로비저닝 후크는 또한 로컬로 실행할 때 필요한 local.settings.json 파일을 생성합니다. 이 파일에는 Azure의 Azure Cosmos DB 데이터베이스에 연결하는 데 필요한 설정도 포함되어 있습니다.
팁 (조언)
프로비전하는 동안 단계가 실패하는 경우 문제를 해결한
azd provision후 명령을 다시 실행할 수 있습니다.명령이 성공적으로 완료되면 프로젝트 코드를 로컬로 실행하고 Azure의 Azure Cosmos DB 데이터베이스에서 트리거할 수 있습니다.
로컬에서 함수 실행
Visual Studio Code는 Azure의 새 함수 앱에 게시하기 전에 로컬 개발 컴퓨터에서 이 프로젝트를 실행할 수 있도록 Azure Functions Core 도구 와 통합됩니다.
F1 키를 누르고 명령 팔레트에서 명령을
Azurite: Start검색하고 실행합니다.함수를 로컬로 시작하려면 F5 키를 누르거나 왼쪽 작업 표시줄에서 실행 및 디버그 아이콘을 선택합니다. 터미널 패널에는 Core Tools의 출력이 표시됩니다. 앱이 터미널 패널에서 시작되고 로컬로 실행되는 함수의 이름을 볼 수 있습니다.
Windows에서 실행하는 데 문제가 있는 경우 Visual Studio Code의 기본 터미널이 WSL Bash로 설정되어 있지 않은지 확인합니다.
핵심 도구가 터미널에서 계속 실행 중인 상태에서 F1 키를 누르고 명령 팔레트에서 명령을
NoSQL: Create Item...검색하여 실행하고 데이터베이스와 컨테이너를document-dbdocuments모두 선택합니다.새 Item.json 파일의 내용을 이 JSON 데이터로 바꾸고 저장을 선택합니다.
{ "id": "doc1", "title": "Sample document", "content": "This is a sample document for testing my Azure Cosmos DB trigger in Azure Functions." }저장을 선택하면 터미널에서 함수 실행이 표시되고 로컬 문서가 서비스에서 추가한 메타데이터를 포함하도록 업데이트됩니다.
완료되면 터미널 창에서 Ctrl+C를 눌러
func.exe호스트 프로세스를 중지합니다.
코드 검토(선택 사항)
이 함수는 Azure Cosmos DB NoSQL 데이터베이스의 변경 피드에 따라 트리거됩니다. 이러한 환경 변수는 트리거가 변경 피드를 모니터링하는 방법을 구성합니다.
-
COSMOS_CONNECTION__accountEndpoint: Cosmos DB 계정 엔드포인트 -
COSMOS_DATABASE_NAME: 모니터링할 데이터베이스의 이름 -
COSMOS_CONTAINER_NAME: 모니터링할 컨테이너의 이름
이러한 환경 변수는 작업 중에 azd provision Azure(함수 앱 설정) 및 로컬(local.settings.json)에서 모두 생성됩니다.
CosmosTrigger.cs 프로젝트 파일에서 Azure Cosmos DB 트리거를 정의하는 코드를 검토할 수 있습니다.
cosmos_trigger.ts 프로젝트 파일에서 Azure Cosmos DB 트리거를 정의하는 코드를 검토할 수 있습니다.
function_app.py 프로젝트 파일에서 Azure Cosmos DB 트리거를 정의하는 코드를 검토할 수 있습니다.
함수 코드를 로컬로 검토하고 확인한 후에는 Azure에 프로젝트를 게시해야 합니다.
Azure에 배포
Visual Studio Code에서 명령을 실행 azd deploy 하여 Azure에서 이미 프로비전된 리소스에 프로젝트 코드를 배포할 수 있습니다.
F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Developer CLI (azd): Deploy to Azure (deploy)검색하고 실행합니다.이
azd deploy명령은 코드를 패키지하고 배포 컨테이너에 배포합니다. 그러면 앱이 시작되어 배포된 패키지에서 실행됩니다.명령이 성공적으로 완료되면 앱이 Azure에서 실행됩니다.
Azure에서 함수 호출
Visual Studio Code에서 F1 키를 누르고 명령 팔레트에서 명령을
Azure: Open in portal검색하고 실행하고 새 앱을 선택합니다Function app. 필요한 경우 Azure 계정으로 로그인합니다.이 명령은 Azure Portal에서 새 함수 앱을 엽니다.
주 페이지의 개요 탭에서 함수 앱 이름을 선택한 다음 로그 탭을 선택합니다.
Visual Studio Code의
NoSQL: Create Item명령을 사용하여 이전과 같이 컨테이너에 문서를 다시 추가합니다.모니터링되는 컨테이너의 업데이트에 의해 함수가 트리거되는지 다시 확인합니다.
코드 다시 배포
함수 앱에 azd deploy 코드 업데이트를 배포하는 데 필요한 만큼 명령을 실행할 수 있습니다.
비고
배포된 코드 파일은 항상 최신 배포 패키지로 덮어쓰여집니다.
azd 프롬프트에 대한 초기 응답과 azd에서 생성된 모든 환경 변수는 명명된 환경에 로컬로 저장됩니다.
azd env get-values 명령을 사용하여 Azure 리소스를 만들 때 사용된 환경의 모든 변수를 검토합니다.
자원을 정리하세요
함수 앱과 관련 리소스 작업이 끝나면 이 명령을 사용하여 Azure에서 함수 앱과 관련 리소스를 삭제하고 추가 비용이 발생하지 않도록 할 수 있습니다.
azd down --no-prompt
비고
--no-prompt 옵션은 사용자의 확인 없이 azd에게 리소스 그룹을 삭제하도록 지시합니다.
이 명령은 로컬 코드 프로젝트에는 영향을 미치지 않습니다.