이 빠른 시작에서는 Visual Studio Code를 사용하여 Azure SQL Database 테이블의 변경 내용에 응답하는 앱을 빌드합니다. 코드를 로컬로 테스트한 후 Azure Functions의 Flex Consumption 계획에서 실행되는 새 서버리스 함수 앱에 배포합니다.
프로젝트 원본은 Visual Studio Code에서 Azure 개발자 CLI(azd) 확장을 사용하여 로컬로 프로젝트 코드를 초기화 및 확인하고 코드를 Azure에 배포하는 작업을 간소화합니다. 이 배포는 안전하고 확장성 있는 Azure Functions 배포에 대한 최신 모범 사례를 따릅니다.
중요합니다
Azure SQL 데이터베이스의 변경 내용에 응답하는 것은 모든 언어에서 지원되지만 이 빠른 시작 시나리오에는 현재 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 확장 입니다.
- Visual Studio Code용 SQL Server(mssql) 확장 입니다.
프로젝트 시작
명령 팔레트의 azd init 명령을 사용하여 템플릿에서 로컬 Azure Functions 코드 프로젝트를 만들 수 있습니다.
Visual Studio Code에서 프로젝트를 만들 폴더 또는 작업 영역을 엽니다.
F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Developer CLI (azd): Initialize App (init)검색하고 실행한 다음, 템플릿 선택을 선택합니다.메시지가 표시되면
Azure Functions with SQL Triggers and Bindings을 검색하여 선택합니다.메시지가 표시되면 고유한 환경 이름(예:
sqldbchanges.)을 입력합니다.
이 명령은 템플릿 리포지토리 에서 프로젝트 파일을 끌어오고 현재 폴더 또는 작업 영역에서 프로젝트를 초기화합니다.
azd에서 환경은 앱에 대한 고유한 배포 컨텍스트를 유지하는 데 사용되며, 둘 이상을 정의할 수 있습니다. 또한 Azure에서 만드는 리소스 그룹의 이름의 일부이기도 합니다.
이 명령은 템플릿 리포지토리 에서 프로젝트 파일을 끌어오고 현재 폴더 또는 작업 영역에서 프로젝트를 초기화합니다.
azd에서 환경은 앱에 대한 고유한 배포 컨텍스트를 유지하는 데 사용되며, 둘 이상을 정의할 수 있습니다. 또한 Azure에서 만드는 리소스 그룹의 이름의 일부이기도 합니다.
이 명령은 템플릿 리포지토리 에서 프로젝트 파일을 끌어오고 현재 폴더 또는 작업 영역에서 프로젝트를 초기화합니다.
azd에서 환경은 앱에 대한 고유한 배포 컨텍스트를 유지하는 데 사용되며, 둘 이상을 정의할 수 있습니다. 또한 Azure에서 만드는 리소스 그룹의 이름의 일부이기도 합니다.
앱을 로컬로 실행하려면 먼저 Azure에서 리소스를 만들어야 합니다.
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 SQL Database(기본 이름: ToDo)
- Azure Storage(필수) 및 Application Insights(권장)
- 사용자의 계정에 대한 액세스 정책 및 역할
- 관리 ID를 사용한 서비스 간 연결(저장된 연결 문자열 대신)
프로비저닝 후크는 또한 로컬로 실행하는 데 필요한 local.settings.json 파일을 생성합니다. 이 파일에는 Azure에서 데이터베이스에 연결하는 데 필요한 설정이 포함되어 있습니다.
코드 검토(선택 사항)
샘플은 다음 두 가지 함수를 정의합니다.
| 함수 이름 | 코드 파일 | 트리거 유형 | Description |
|---|---|---|---|
httptrigger-sql-output |
sql_output_http_trigger.cs | HTTP 트리거 | 올바른 형식의 JSON 페이로드를 수락하고 SQL 출력 바인딩을 사용하여 개체를 테이블에 행 ToDo 으로 삽입합니다. |
ToDoTrigger |
sql_trigger.cs | SQL 트리거 |
ToDo 테이블에서 행 수준 변경 내용을 수신 대기하고 변경된 행을 나타내는 개체를 반환합니다. |
형식은 ToDoItemToDoItem.cs 정의됩니다.
| 함수 이름 | 코드 파일 | 트리거 유형 | Description |
|---|---|---|---|
http_trigger_sql_output |
function_app.py | HTTP 트리거 | 올바른 형식의 JSON 페이로드를 수락하고 SQL 출력 바인딩을 사용하여 개체를 테이블에 행 ToDo 으로 삽입합니다. |
httptrigger-sql-output |
sql_trigger_todo | SQL 트리거 |
ToDo 테이블에서 행 수준 변경 내용을 수신 대기하고 변경된 행을 나타내는 개체를 반환합니다. |
형식은 ToDoItemtodo_item.py 정의됩니다.
| 함수 이름 | 코드 파일 | 트리거 유형 | Description |
|---|---|---|---|
httpTriggerSqlOutput |
sql_output_http_trigger.ts | HTTP 트리거 | 올바른 형식의 JSON 페이로드를 수락하고 SQL 출력 바인딩을 사용하여 개체를 테이블에 행 ToDo 으로 삽입합니다. |
sqlTriggerToDo |
sql_trigger.ts | SQL 트리거 |
ToDo 테이블에서 행 수준 변경 내용을 수신 대기하고 변경된 행을 나타내는 개체를 반환합니다. |
형식은 ToDoItemToDoItem.ts 정의됩니다.
두 함수 모두 Microsoft Entra ID 인증을 사용하여 Azure SQL Database 인스턴스에 대한 ID 기반 연결을 정의하는 앱 수준 AZURE_SQL_CONNECTION_STRING_KEY_* 환경 변수를 사용합니다. 이러한 환경 변수는 작업 중에 azd provision Azure(함수 앱 설정) 및 로컬(local.settings.json)에서 모두 생성됩니다.
SQL 데이터베이스에 연결
Visual Studio Code용 SQL Server(mssql) 확장을 사용하여 새 데이터베이스에 연결할 수 있습니다. 이 확장을 사용하면 테이블에서 SQL 트리거 함수를 ToDo 실행하도록 업데이트할 수 있습니다.
F1 키를 누르고 명령 팔레트에서 명령을
MS SQL: Add Connection검색하고 실행합니다.연결 대화 상자에서 입력 유형을Azure 찾아보기로 변경한 다음, 나머지 옵션을 설정합니다.
Option Choose Description 서버 SQL Server 인스턴스 기본적으로 Azure 계정에 액세스할 수 있는 모든 서버가 표시됩니다. 구독, 리소스 그룹 및 위치를 사용하여 서버 목록을 필터링할 수 있습니다. Database ToDo프로비전 프로세스 중에 만든 데이터베이스입니다. 인증 유형 Microsoft Entra ID 아직 로그인하지 않은 경우 로그인 을 선택하고 Azure 계정에 로그인합니다. 테넌트 ID 특정 계정 테넌트입니다. 계정에 둘 이상의 테넌트가 있는 경우 구독에 올바른 테넌트 선택 연결을 선택하여 데이터베이스에 연결합니다. 연결은 호스팅 서버에서 관리자 권한이 부여되고 데이터베이스에 매핑
dbo된 로컬 사용자 계정을 사용합니다.SQL Server 보기에서 연결을 찾아 확장한 다음, SQL Server 탐색기에서 새 서버를 찾습니다. 테이블을 확장하여
ToDo테이블이 존재하는지 확인합니다. 존재하지 않는 경우 다시 실행하고azd provision오류를 확인해야 할 수 있습니다.
로컬에서 함수 실행
Visual Studio Code는 Azure의 새 함수 앱에 게시하기 전에 로컬 개발 컴퓨터에서 이 프로젝트를 실행할 수 있도록 Azure Functions Core 도구 와 통합됩니다.
F1 키를 누르고 명령 팔레트에서 명령을
Azurite: Start검색하고 실행합니다.함수를 로컬로 시작하려면 F5 키를 누르거나 왼쪽 작업 표시줄에서 실행 및 디버그 아이콘을 선택합니다.
터미널 패널에는 Core Tools의 출력이 표시됩니다. 앱이 터미널 패널에서 시작되고 로컬로 실행되는 함수의 이름을 볼 수 있습니다.
앱을 실행하면 두 함수 트리거를 모두 확인하고 디버그할 수 있습니다.
SQL 출력 바인딩에 쓰는 HTTP 트리거 함수를 확인하려면 다음을 수행합니다.
프로젝트 파일에서도 찾을 수 있는 이 JSON 개체를
test.http복사합니다.{ "id": "11111111-1111-1111-1111-111111111111", "order": 1, "title": "Test Todo Item", "url": "https://example.com", "completed": false }이 데이터는 HTTP 엔드포인트를 호출할 때 SQL 데이터베이스에 삽입하는 행을 나타냅니다. 출력 바인딩은 데이터 개체를 데이터베이스의
INSERT작업으로 변환합니다.앱이 실행되면 작업 영역 아래의 Azure 보기에서 로컬 프로젝트>함수를 확장합니다.
HTTP 함수(또는 macOS에서 Ctrl+클릭)를 마우스 오른쪽 단추로 선택하고 , 지금 함수 실행을 선택하고, 복사한 JSON 데이터를 붙여넣고, Enter 키를 누릅니다.
함수는 HTTP 요청을 처리하고 연결된 SQL 데이터베이스에 항목을 쓰고 만든 개체를 반환합니다.
SQL Server 탐색기로 돌아가서 테이블을 마우스 오른쪽 단추로 선택하고
ToDo(또는 macOS에서 Ctrl+클릭), 상위 1000개 선택 선택 쿼리가 실행되면 삽입되거나 업데이트된 행을 반환합니다.3단계를 반복하고 동일한 ID를 사용하여 동일한 데이터 개체를 다시 보냅니다. 이번에는 출력 바인딩이 데이터베이스 대신 작업을 수행하고
UPDATE데이터베이스의INSERT기존 행을 수정합니다.
완료되면 터미널에 Ctrl+C 를 입력하여 핵심 도구 프로세스를 중지합니다.
Azure에 배포
Visual Studio Code에서 명령을 실행 azd deploy 하여 Azure에서 이미 프로비전된 리소스에 프로젝트 코드를 배포할 수 있습니다.
F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Developer CLI (azd): Deploy to Azure (deploy)검색하고 실행합니다.이
azd deploy명령은 코드를 패키지하고 배포 컨테이너에 배포합니다. 그러면 앱이 시작되어 배포된 패키지에서 실행됩니다.명령이 성공적으로 완료되면 앱이 Azure에서 실행됩니다. Azure에서 실행되는 함수 앱의
EndpointURL인 값을 기록해 둡다.
Azure에서 함수 호출
Visual Studio Code에서 F1 키를 누르고 명령 팔레트에서 명령을
Azure: Open in portal검색하고 실행하고 새 앱을 선택합니다Function app. 필요한 경우 Azure 계정으로 로그인합니다.왼쪽 창에서 로그 스트림 을 선택합니다. 이 스트림은 앱의 Application Insights 로그에 연결됩니다.
Visual Studio Code로 돌아가서 Azure에서 두 함수를 모두 실행합니다.
F1 키를 눌러 명령 팔레트를 열고, 명령을
Azure Functions: Execute Function Now...검색하고 실행합니다.목록에서 원격 함수 앱을 검색하여 선택한 다음, HTTP 트리거 함수를 선택합니다.
이전과 마찬가지로 JSON 개체 데이터를 Enter 페이로드 본문 에 붙여넣고 Enter 키를 누릅니다.
{ "id": "11111111-1111-1111-1111-111111111111", "order": 1, "title": "Test Todo Item", "url": "https://example.com", "completed": false }INSERT대신UPDATE를 수행하려면,id를 새 GUID 값으로 바꾸십시오.포털로 돌아가서 로그 창에서 실행 출력을 봅니다.
자원을 정리하세요
함수 앱과 관련 리소스 작업이 끝나면 이 명령을 사용하여 Azure에서 함수 앱과 관련 리소스를 삭제하고 추가 비용이 발생하지 않도록 할 수 있습니다.
azd down --no-prompt
비고
--no-prompt 옵션은 사용자의 확인 없이 azd에게 리소스 그룹을 삭제하도록 지시합니다.
이 명령은 로컬 코드 프로젝트에는 영향을 미치지 않습니다.