빠른 시작: Visual Studio를 사용하여 Azure에서 첫 번째 C# 함수 만들기

Azure Functions를 사용하면 Visual Studio를 사용하여 로컬 C# 함수 프로젝트를 만든 다음, 이 프로젝트를 쉽게 게시하여 Azure의 확장 가능한 서버리스 환경에서 실행할 수 있습니다. Visual Studio Code를 사용하여 C# 앱을 로컬로 개발하려는 경우 대신 이 문서의 Visual Studio Code 기반 버전을 고려해야 합니다.

기본적으로 이 문서에서는 격리된 작업자 프로세스의 .NET 8에서 실행되는 C# 함수를 만드는 방법을 보여 줍니다. 격리된 작업자 프로세스에서 실행되는 함수 앱은 Functions에서 지원하는 모든 버전의 .NET에서 지원됩니다. 자세한 내용은 지원되는 버전을 참조하세요.

이 문서에서는 다음 방법을 설명합니다.

  • Visual Studio를 사용하여 C# 클래스 라이브러리 프로젝트를 만듭니다.
  • HTTP 요청에 응답하는 함수를 만듭니다.
  • 코드를 로컬로 실행하여 함수 동작을 확인합니다.
  • 코드 프로젝트를 Azure Functions에 배포합니다.

이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.

이 비디오에서는 Azure에서 C# 함수를 만드는 방법을 보여 줍니다.

비디오의 단계도 다음 섹션에 설명되어 있습니다.

필수 조건

함수 앱 프로젝트 만들기

Visual Studio의 Azure Functions 프로젝트 템플릿은 Azure에서 함수 앱에 게시할 수 있는 C# 클래스 라이브러리 프로젝트를 만듭니다. 함수 앱을 사용하면 함수를 논리 단위로 그룹화하여 더 쉽게 리소스를 관리, 배포, 크기 조정 및 공유할 수 있습니다.

  1. Visual Studio 메뉴에서 파일>새로 만들기>프로젝트를 차례로 선택합니다.

  2. 새 프로젝트 만들기에서 검색 상자에 함수를 입력하고, Azure Functions 템플릿을 선택한 다음, 다음을 선택합니다.

  3. 새 프로젝트 구성에서 프로젝트에 대한 프로젝트 이름을 입력한 다음, 다음을 선택합니다. 함수 앱 이름은 C# 네임스페이스로 유효해야 하므로 밑줄, 하이픈 또는 기타 영숫자가 아닌 문자는 사용하지 마세요.

  4. 나머지 추가 정보 설정의 경우

    설정 설명
    Functions 작업자 .NET 8.0 격리됨(장기 지원) 함수는 .NET 8의 격리된 작업자 프로세스에서 실행됩니다.
    Function HTTP 트리거 이 값은 HTTP 요청에 의해 트리거되는 함수를 만듭니다.
    런타임 스토리지 계정(AzureWebJobsStorage)에 Azurite 사용 Enable Azure의 함수 앱에는 스토리지 계정이 필요하기 때문에 Azure에 프로젝트를 게시할 때 할당되거나 생성됩니다. HTTP 트리거는 Azure Storage 계정 연결 문자열을 사용하지 않습니다. 다른 모든 트리거 형식에는 유효한 Azure Storage 계정 연결 문자열이 필요합니다. 이 옵션을 선택하면 Azurite 에뮬레이터가 사용됩니다.
    권한 부여 수준 익명 만들어진 함수를 모든 클라이언트에서 키를 제공하지 않고 트리거할 수 있습니다. 이 권한 부여 설정을 통해 새 함수를 쉽게 테스트할 수 있습니다. 키 및 권한 부여에 대한 자세한 내용은 권한 부여 키HTTP 및 웹후크 바인딩을 참조하세요.

    Screenshot of Azure Functions project settings.

    권한 부여 수준익명으로 설정했는지 확인합니다. 기본 수준인 Function을 선택하면 Azure에서 함수 엔드포인트에 액세스하도록 요구하는 요청에 함수 키를 제공해야 합니다.

  5. 만들기를 선택하여 함수 프로젝트 및 HTTP 트리거 함수를 만듭니다.

Visual Studio는 HTTP 트리거 함수 형식에 대한 상용구 코드가 포함된 프로젝트와 클래스를 만듭니다. 상용구 코드는 요청 본문 또는 쿼리 문자열의 값을 포함하는 HTTP 응답을 보냅니다. HttpTrigger 특성은 HTTP 요청에서 함수를 트리거하도록 지정합니다.

함수 이름 바꾸기

Function 메서드 특성은 함수 이름을 설정하며, 생성되는 기본값은 Function1입니다. 프로젝트를 만들 때 도구를 사용하여 기본 함수 이름을 재정의할 수 없으므로 함수 클래스, 파일 및 메타데이터에 따라 더욱 적절한 이름을 생성해야 합니다.

  1. 파일 탐색기에서 Function1.cs 파일을 마우스 오른쪽 단추로 클릭하고 이름을 HttpExample.cs로 바꿉니다.

  2. 코드에서 Function1 클래스의 이름을 HttpExample로 바꿉니다.

  3. Run 메서드에서 Function 메서드 특성을 HttpExample로 바꿉니다.

함수 정의는 이제 다음 코드와 같이 표시됩니다.

[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
{
    return new OkObjectResult("Welcome to Azure Functions!");
}

이제 함수의 이름을 바꾸었으므로 로컬 컴퓨터에서 이를 테스트할 수 있습니다.

로컬에서 함수 실행

Visual Studio는 Azure Functions Core Tools와 통합되므로 Azure Functions 런타임 전체를 사용하여 함수를 로컬로 테스트할 수 있습니다.

  1. 함수를 실행하려면 Visual Studio에서 F5를 누릅니다. 도구에서 HTTP 요청을 처리할 수 있도록 방화벽 예외를 사용하도록 설정해야 할 수도 있습니다. 함수를 로컬로 실행하는 경우 권한 부여 수준이 적용되지 않습니다.

  2. Azure Functions 런타임 출력에서 함수의 URL을 복사합니다.

    Azure local runtime

  3. HTTP 요청에 대한 URL을 브라우저의 주소 표시줄에 붙여넣고 요청을 실행합니다. 다음 이미지에서는 함수가 반환한 로컬 GET 요청에 대한 응답을 브라우저에 보여 줍니다.

    Function localhost response in the browser

  4. 디버깅을 중지하려면 Visual Studio에서 Shift+F5를 누릅니다.

함수가 로컬 컴퓨터에서 제대로 실행되는지 확인한 후에 해당 프로젝트를 Azure에 게시해야 합니다.

Azure에 프로젝트 게시

Visual Studio는 로컬 프로젝트를 Azure에 게시할 수 있습니다. 프로젝트를 게시하려면 먼저 Azure 구독에 함수 앱이 있어야 합니다. Azure에 함수 앱이 아직 없는 경우 Visual Studio 게시에서 프로젝트를 처음 게시할 때 함수 앱이 만들어집니다. 이 문서에서는 함수 앱 및 관련 Azure 리소스를 만듭니다.

  1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다. 대상에서 Azure를 선택한 후 다음을 선택합니다.

    Screenshot of publish window.

  2. Windows에서 실행되는 함수 앱을 만드는 특정 대상에 대해 Azure Function 앱(Windows)을 선택한 후, 다음을 선택합니다.

    Screenshot of publish window with specific target.

  3. 함수 인스턴스에서 새 Azure Function 만들기...를 선택합니다.

    Screenshot of create a new function app instance.

  4. 다음 표에 지정된 값을 사용하여 새 인스턴스를 만듭니다.

    설정 설명
    이름 전역적으로 고유한 이름 새 함수 앱을 고유하게 식별하는 이름입니다. 이 이름을 수락하거나 새 이름을 입력합니다. 유효한 문자는 a-z, 0-9-입니다.
    구독 구독 사용할 Azure 구독입니다. 이 구독을 수락하거나 드롭다운 목록에서 새 구독을 선택합니다.
    리소스 그룹 리소스 그룹의 이름 함수 앱을 만들 리소스 그룹입니다. 새로 만들기를 선택하여 새 리소스 그룹을 만듭니다. 드롭다운 목록에서 기존 리소스 그룹을 선택할 수도 있습니다.
    계획 유형 Consumption 프로젝트를 사용량 요금제에서 실행되는 함수 앱에 게시하는 경우 함수 앱의 실행에 대한 비용만 지불합니다. 다른 호스팅 계획에는 비용이 더 많이 듭니다.
    위치 App Service의 위치 사용자 또는 함수가 액세스하는 기타 서비스에 가까운 지역위치를 선택합니다.
    Azure Storage 범용 스토리지 계정 Azure 스토리지 계정은 함수 런타임에서 필요합니다. 새로 만들기를 선택하여 범용 스토리지 계정을 구성합니다. 스토리지 계정 요구 사항을 충족하는 기존 계정을 선택할 수도 있습니다.
    Application Insights Application Insights 인스턴스 함수 앱에 Application Insights 통합을 사용하도록 설정해야 합니다. 새로 만들기를 선택하여 새 인스턴스 또는 기존 Log Analytics 작업 영역에서 새 인스턴스를 만듭니다. 기존 인스턴스를 선택할 수도 있습니다.

    Screenshot of Create App Service dialog.

  5. 만들기를 선택하여 Azure에서 함수 앱 및 관련된 리소스를 만듭니다. 리소스 만들기 상태는 창의 왼쪽 하단에 표시됩니다.

  6. 함수 인스턴스에서 패키지 파일에서 실행이 선택되어 있는지 확인합니다. Run-From-Package 모드를 사용하도록 설정된 상태에서 Zip 배포를 사용하여 함수 앱이 배포됩니다. Zip Deploy는 성능이 향상되므로 함수 프로젝트에 권장되는 배포 방법입니다.

    Screenshot of Finish profile creation.

  7. 마침를 선택하고 게시 페이지에서 게시를 선택하여 프로젝트 파일이 포함된 패키지를 Azure의 새 함수 앱에 배포합니다.

    배포가 완료되면 Azure에서 함수 앱의 루트 URL이 게시 탭에 표시됩니다.

  8. 게시 탭의 호스팅 섹션에서 Azure Portal에서 열기를 선택합니다. 그러면 Azure Portal에서 새 함수 앱 Azure 리소스가 열립니다.

    Screenshot of Publish success message.

Azure에서 함수 확인

  1. Azure Portal에서 새 함수 앱의 개요 페이지에 있어야 합니다.

  2. Functions에서 HttpExample이라는 새 함수를 선택한 다음, 함수 페이지에서 함수 URL 가져오기를 선택한 다음, 클립보드로 복사 아이콘을 선택합니다.

  3. 브라우저의 주소 표시줄에 방금 복사한 URL을 붙여넣고 요청을 실행합니다.

    HTTP 트리거 함수를 호출하는 URL은 다음과 같은 형식입니다.

    https://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functions

  4. 이 URL로 이동하면 다음 예제와 같이 함수에서 반환된 원격 GET 요청에 대한 브라우저의 응답이 표시됩니다.

    Function response in the browser

리소스 정리

Azure에서 리소스란 함수 앱, 함수, 스토리지 계정 등을 의미합니다. 리소스는 리소스 그룹으로 그룹화되며 그룹을 삭제하면 그룹의 모든 항목을 삭제할 수 있습니다.

이 빠른 시작을 완료하기 위해 Azure 리소스를 만들었습니다. 계정 상태서비스 가격 책정에 따라 이러한 리소스에 대한 요금이 청구될 수 있습니다. 이 컬렉션의 다른 빠른 시작은 이 빠른 시작을 기반으로 구성됩니다. 이후의 빠른 시작, 자습서 또는 기타 이 빠른 시작에서 만든 서비스를 사용하여 작업하려는 경우 이 빠른 시작에서 만든 리소스를 정리하지 않습니다.

어떠한 추가 비용도 발생하지 않도록 다음 단계를 수행하여 함수 앱 및 관련 리소스를 삭제합니다.

  1. Visual Studio 게시 대화 상자의 호스팅 섹션에서 Azure Portal에서 열기를 선택합니다.

  2. 함수 앱 페이지에서 개요 탭을 선택한 다음, 리소스 그룹 아래의 링크를 선택합니다.

    Select the resource group to delete from the function app page

  3. 리소스 그룹 페이지에서 포함된 리소스 목록을 검토하고 삭제하려는 항목인지 확인합니다.

  4. 리소스 그룹 삭제를 선택하고 지시를 따릅니다.

    삭제는 몇 분 정도 소요됩니다. 완료되면 알림이 잠시 표시됩니다. 또한 페이지 위쪽의 종 모양 아이콘을 선택하여 알림을 확인할 수도 있습니다.

다음 단계

이 빠른 시작에서는 Visual Studio를 사용하여 Azure에서 간단한 HTTP 트리거 함수가 있는 C# 함수 앱을 만들고 게시했습니다.

격리된 작업자 프로세스에서 실행되는 C# 함수를 사용하는 방법에 대한 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요. 격리된 작업자 프로세스에서 지원되는 다른 버전의 .NET 버전을 보려면 .NET 지원 버전을 확인하세요.

다음 문서로 이동하여 함수에 Azure Storage 큐 바인딩을 추가하는 방법을 알아봅니다.