빠른 시작: Visual Studio를 사용하여 Azure에서 첫 번째 C# 함수 만들기
Azure Functions를 사용하면 Visual Studio를 사용하여 로컬 C# 함수 프로젝트를 만든 다음, 이 프로젝트를 쉽게 게시하여 Azure의 확장 가능한 서버리스 환경에서 실행할 수 있습니다. Visual Studio Code를 사용하여 C# 앱을 로컬로 개발하려는 경우 대신 이 문서의 Visual Studio Code 기반 버전을 고려해야 합니다.
기본적으로 이 문서에서는 Functions 호스트와 동일한 프로세스의 .NET 6에서 실행되는 C# 함수를 만드는 방법을 보여 줍니다. 이러한 진행 중인 C# 함수는 .NET 6과 같은 LTS(Long Term Support) .NET 버전에서만 지원됩니다. 프로젝트를 만들 때 대신 격리된 작업자 프로세스에서 .NET 6에서 실행되는 함수를 만들도록 선택할 수 있습니다. 격리된 작업자 프로세스는 .NET의 LTS 및 STS(Standard Term Support) 버전을 모두 지원합니다. 자세한 내용은 .NET Functions 격리 작업자 프로세스 가이드에서 지원되는 버전을 참조하세요.
이 문서에서는 다음 방법을 설명합니다.
- Visual Studio를 사용하여 C# 클래스 라이브러리 프로젝트를 만듭니다.
- HTTP 요청에 응답하는 함수를 만듭니다.
- 코드를 로컬로 실행하여 함수 동작을 확인합니다.
- 코드 프로젝트를 Azure Functions에 배포합니다.
이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.
사전 요구 사항
Visual Studio 2022. 설치하는 동안 Azure 개발 워크로드를 선택해야 합니다.
함수 앱 프로젝트 만들기
Visual Studio의 Azure Functions 프로젝트 템플릿은 Azure에서 함수 앱에 게시할 수 있는 C# 클래스 라이브러리 프로젝트를 만듭니다. 함수 앱을 사용하면 함수를 논리 단위로 그룹화하여 더 쉽게 리소스를 관리, 배포, 크기 조정 및 공유할 수 있습니다.
Visual Studio 메뉴에서 파일>새로 만들기>프로젝트를 차례로 선택합니다.
새 프로젝트 만들기에서 검색 상자에 함수를 입력하고, Azure Functions 템플릿을 선택한 다음, 다음을 선택합니다.
새 프로젝트 구성에서 프로젝트의프로젝트 이름을 입력한 다음, 다음을 선택합니다. 함수 앱 이름은 C# 네임스페이스로 유효해야 하므로 밑줄, 하이픈 또는 기타 영숫자가 아닌 문자는 사용하지 마세요.
추가 정보에서 Functions 작업자에 대한 다음 옵션 중 하나를 선택합니다.
옵션 .NET 버전 프로세스 모델 Description .NET 6.0(장기 지원) .NET 6 In-Process In-process C# 함수는 LTS(장기 지원) .NET 버전에서만 지원됩니다. 함수 코드는 Functions 호스트와 동일한 프로세스에서 실행됩니다. .NET 6.0 격리(장기 지원) .NET 6 격리된 작업자 프로세스 함수는 .NET 6에서 실행되지만 Functions 호스트와는 별도의 프로세스에서 실행됩니다. .NET 7.0 격리됨 .NET 7 격리된 작업자 프로세스 .NET 7은 .NET의 LTS 버전이 아니므로 함수는 .NET 7의 격리된 프로세스에서 실행되어야 합니다. 격리된 v4 .NET Framework .NET Framework 4.8 격리된 작업자 프로세스 함수가 .NET Framework 지원되는 라이브러리만 사용해야 하는 경우 이 옵션을 선택합니다. .NET Core 3.1(장기 지원) .NET Core 3.1 In-Process .NET Core 3.1은 더 이상 지원되는 .NET 버전이 아니며 Functions 버전 4.x에서 지원되지 않습니다. 대신 .NET 6.0을 사용합니다. v1 .NET Framework .NET Framework In-Process 함수가 이전 버전의 .NET Framework 지원되는 라이브러리만 사용해야 하는 경우 이 옵션을 선택합니다. Functions 런타임 버전 1.x가 필요합니다. 두 프로세스 모델은 서로 다른 API를 사용하며, 각 프로세스 모델은 함수 프로젝트 코드를 생성할 때 다른 템플릿을 사용합니다. .NET 6.0 이상 .NET 런타임 버전에 대한 옵션이 표시되지 않으면 Azure Functions 도구 설치를 업데이트해야 할 수 있습니다.
나머지 추가 정보 설정의 경우 다음 표의 값을 사용합니다.
설정 값 Description Function HTTP 트리거 이 값은 HTTP 요청에 의해 트리거되는 함수를 만듭니다. 런타임 스토리지 계정(AzureWebJobsStorage)에 Azurite 사용 사용 Azure의 함수 앱에는 스토리지 계정이 필요하기 때문에 Azure에 프로젝트를 게시할 때 할당되거나 생성됩니다. HTTP 트리거는 Azure Storage 계정 연결 문자열을 사용하지 않습니다. 다른 모든 트리거 형식에는 유효한 Azure Storage 계정 연결 문자열이 필요합니다. 이 옵션을 선택하면 Azurite 에뮬레이터가 사용됩니다. 권한 부여 수준 익명 만들어진 함수를 모든 클라이언트에서 키를 제공하지 않고 트리거할 수 있습니다. 이 권한 부여 설정을 통해 새 함수를 쉽게 테스트할 수 있습니다. 키 및 권한 부여에 대한 자세한 내용은 권한 부여 키 및 HTTP 및 웹후크 바인딩을 참조하세요. 권한 부여 수준을 익명으로 설정했는지 확인합니다. 함수의 기본 수준을 선택하는 경우 Azure의 함수 엔드포인트에 액세스하기 위한 요청에 함수 키를 제공해야 합니다.
만들기를 선택하여 함수 프로젝트 및 HTTP 트리거 함수를 만듭니다.
Visual Studio는 HTTP 트리거 함수 형식에 대한 상용구 코드가 포함된 프로젝트와 클래스를 만듭니다. 상용구 코드는 요청 본문 또는 쿼리 문자열의 값을 포함하는 HTTP 응답을 보냅니다. HttpTrigger
특성은 HTTP 요청에서 함수를 트리거하도록 지정합니다.
함수 이름 바꾸기
FunctionName
메서드 특성은 함수 이름을 설정하며, 생성되는 기본값은 Function1
입니다. 프로젝트를 만들 때 도구를 사용하여 기본 함수 이름을 재정의할 수 없으므로 함수 클래스, 파일 및 메타데이터에 따라 더욱 적절한 이름을 생성해야 합니다.
파일 탐색기에서 Function1.cs 파일을 마우스 오른쪽 단추로 클릭하고 이름을
HttpExample.cs
로 바꿉니다.코드에서 Function1 클래스의 이름을
HttpExample
로 바꿉니다.HttpTrigger
메서드Run
에서FunctionName
메서드 특성을HttpExample
로 바꿉니다.
함수 정의는 이제 다음 코드와 같이 표시됩니다.
[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
이제 함수의 이름을 바꾸었으므로 로컬 컴퓨터에서 이를 테스트할 수 있습니다.
로컬에서 함수 실행
Visual Studio는 Azure Functions Core Tools와 통합되므로 Azure Functions 런타임 전체를 사용하여 함수를 로컬로 테스트할 수 있습니다.
함수를 실행하려면 Visual Studio에서 F5를 누릅니다. 도구에서 HTTP 요청을 처리할 수 있도록 방화벽 예외를 사용하도록 설정해야 할 수도 있습니다. 함수를 로컬로 실행하는 경우 권한 부여 수준이 적용되지 않습니다.
Azure Functions 런타임 출력에서 함수의 URL을 복사합니다.
브라우저의 주소 표시줄에 HTTP 요청에 대한 URL을 붙여 넣습니다.
?name=<YOUR_NAME>
쿼리 문자열을 이 URL에 추가하고 요청을 실행합니다. 다음 이미지에서는 함수가 반환한 로컬 GET 요청에 대한 응답을 브라우저에 보여 줍니다.디버깅을 중지하려면 Visual Studio에서 Shift+F5를 누릅니다.
함수가 로컬 컴퓨터에서 제대로 실행되는지 확인한 후에 해당 프로젝트를 Azure에 게시해야 합니다.
Azure에 프로젝트 게시
Visual Studio는 로컬 프로젝트를 Azure에 게시할 수 있습니다. 프로젝트를 게시하려면 먼저 Azure 구독에 함수 앱이 있어야 합니다. Azure에 함수 앱이 아직 없는 경우 Visual Studio 게시에서 프로젝트를 처음 게시할 때 함수 앱이 만들어집니다. 이 문서에서는 함수 앱 및 관련 Azure 리소스를 만듭니다.
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다. 대상에서 Azure를 선택한 후 다음을 선택합니다.
Windows에서 실행되는 함수 앱을 만드는 특정 대상에 대해 Azure Function 앱(Windows)을 선택한 후, 다음을 선택합니다.
함수 인스턴스에서 새 Azure Function 만들기...를 선택합니다.
다음 표에 지정된 값을 사용하여 새 인스턴스를 만듭니다.
설정 값 Description 이름 전역적으로 고유한 이름 새 함수 앱을 고유하게 식별하는 이름입니다. 이 이름을 수락하거나 새 이름을 입력합니다. 유효한 문자는 a-z
,0-9
및-
입니다.구독 사용자의 구독 사용할 Azure 구독입니다. 이 구독을 수락하거나 드롭다운 목록에서 새 구독을 선택합니다. 리소스 그룹 리소스 그룹의 이름 함수 앱을 만들 리소스 그룹입니다. 드롭다운 목록에서 기존 리소스 그룹을 선택하거나 새로 만들기를 선택하여 새 리소스 그룹을 만듭니다. 계획 유형 Consumption 프로젝트를 사용량 요금제에서 실행되는 함수 앱에 게시하는 경우 함수 앱의 실행에 대한 비용만 지불합니다. 다른 호스팅 계획에는 비용이 더 많이 듭니다. 위치 App Service의 위치 사용자 또는 함수가 액세스하는 기타 서비스에 가까운 지역의 위치를 선택합니다. Azure Storage 범용 스토리지 계정 Azure 스토리지 계정은 함수 런타임에서 필요합니다. 새로 만들기를 선택하여 범용 스토리지 계정을 구성합니다. 스토리지 계정 요구 사항을 충족하는 기존 계정을 선택할 수도 있습니다. 만들기를 선택하여 Azure에서 함수 앱 및 관련된 리소스를 만듭니다. 리소스 만들기 상태는 창의 왼쪽 하단에 표시됩니다.
함수 인스턴스에서 패키지 파일에서 실행이 선택되어 있는지 확인합니다. Run-From-Package 모드를 사용하도록 설정된 상태에서 Zip 배포를 사용하여 함수 앱이 배포됩니다. Zip Deploy는 성능이 향상되므로 함수 프로젝트에 권장되는 배포 방법입니다.
마침를 선택하고 게시 페이지에서 게시를 선택하여 프로젝트 파일이 포함된 패키지를 Azure의 새 함수 앱에 배포합니다.
배포가 완료되면 Azure에서 함수 앱의 루트 URL이 게시 탭에 표시됩니다.
게시 탭의 호스팅 섹션에서 Azure Portal에서 열기를 선택합니다. 그러면 Azure Portal에서 새 함수 앱 Azure 리소스가 열립니다.
Azure에서 함수 확인
클라우드 탐색기에서 새 함수 앱을 선택해야 합니다. 그렇지 않은 경우 구독 >App Services를 확장하고 새 함수 앱을 선택합니다.
마우스 오른쪽 단추로 함수 앱을 클릭하고 브라우저에서 열기를 선택합니다. 그러면 기본 웹 브라우저에서 함수 앱의 루트가 열리고 함수 앱이 실행 중임을 나타내는 페이지가 표시됩니다.
브라우저의 주소 표시줄에서
/api/HttpExample?name=Functions
문자열을 기준 URL에 추가하고 요청을 실행합니다.HTTP 트리거 함수를 호출하는 URL은 다음과 같은 형식입니다.
http://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functions
이 URL로 이동하면 다음 예제와 같이 함수에서 반환된 원격 GET 요청에 대한 브라우저의 응답이 표시됩니다.
리소스 정리
Azure에서 리소스란 함수 앱, 함수, 스토리지 계정 등을 의미합니다. 리소스는 리소스 그룹으로 그룹화되며 그룹을 삭제하면 그룹의 모든 항목을 삭제할 수 있습니다.
이 빠른 시작을 완료하기 위해 Azure 리소스를 만들었습니다. 계정 상태 및 서비스 가격 책정에 따라 리소스에 대해 요금이 청구될 수 있습니다. 이 컬렉션의 다른 빠른 시작은 이 빠른 시작을 기반으로 구성됩니다. 이후의 빠른 시작, 자습서 또는 기타 이 빠른 시작에서 만든 서비스를 사용하여 작업하려는 경우 이 빠른 시작에서 만든 리소스를 정리하지 않습니다.
추가 비용이 발생하지 않도록 다음 단계를 수행하여 함수 앱 및 관련 리소스를 삭제합니다.
Visual Studio 게시 대화 상자의 호스팅 섹션에서 Azure Portal에서 열기를 선택합니다.
함수 앱 페이지에서 개요 탭을 선택한 다음, 리소스 그룹 아래의 링크를 선택합니다.
리소스 그룹 페이지에서 포함된 리소스 목록을 검토하고 삭제하려는 항목인지 확인합니다.
리소스 그룹 삭제를 선택하고 지시를 따릅니다.
삭제는 몇 분 정도 소요됩니다. 완료되면 알림이 잠시 표시됩니다. 페이지 위쪽의 종 모양 아이콘을 선택해도 알림을 확인할 수 있습니다.
다음 단계
이 빠른 시작에서는 Visual Studio를 사용하여 Azure에서 간단한 HTTP 트리거 함수가 있는 C# 함수 앱을 만들고 게시했습니다.
다음 문서는 선택한 프로세스 모델에 따라 달라집니다.
Functions 호스트에서 In Process를 실행하는 C# 함수를 사용하는 방법에 대한 자세한 내용은 Azure Functions를 사용하여 C# 클래스 라이브러리 함수 개발을 참조하세요.
다음 문서로 이동하여 함수에 Azure Storage 큐 바인딩을 추가하는 방법을 알아봅니다.