Visual Studio를 사용하여 첫 번째 함수 만들기Create your first function using Visual Studio

Azure Functions를 사용하면 먼저 VM을 만들거나 웹 애플리케이션을 게시하지 않고도 서버를 사용하지 않는 환경에서 코드를 실행할 수 있습니다.Azure Functions lets you execute your code in a serverless environment without having to first create a VM or publish a web application.

이 문서에서는 Visual Studio 2019를 사용하여 "hello world" 함수를 로컬로 만들고 테스트한 다음, Azure에 게시하는 방법에 대해 알아봅니다.In this article, you learn how to use Visual Studio 2019 to locally create and test a "hello world" function and then publish it to Azure. 이 빠른 시작은 Visual Studio 2019용으로 설계되었습니다.This quickstart is designed for Visual Studio 2019. Visual Studio 2017을 사용하여 Functions 프로젝트를 만드는 경우 먼저 최신 Azure Functions 도구를 설치해야 합니다.When creating a Functions project using Visual Studio 2017, you must first install the latest Azure Functions tools.

브라우저의 localhost 함수 응답

필수 조건Prerequisites

이 자습서를 완료하려면 먼저 Visual Studio 2019를 설치해야 합니다.To complete this tutorial, you must first install Visual Studio 2019. Azure 개발 워크로드도 설치되어 있어야 합니다.Make sure that the Azure development workload is also installed.

Azure 개발 워크로드가 포함된 Visual Studio 설치

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.

함수 앱 프로젝트 만들기Create a function app project

Visual Studio의 Azure Functions 프로젝트 템플릿은 Azure에서 함수 앱에 게시할 수 있는 프로젝트를 만듭니다.The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. 함수 앱을 사용하여 리소스를 관리, 배포 및 공유하기 위한 논리적 단위로 함수를 그룹화할 수 있습니다.You can use a function app to group functions as a logical unit for management, deployment, and sharing of resources.

  1. Visual Studio의 파일 메뉴에서 새로 만들기 > 프로젝트를 차례로 선택합니다.In Visual Studio, on the File menu, select New > Project.

  2. 새 프로젝트 만들기 대화상자에서 functions를 검색하여 Azure Functions 템플릿을 선택하고 다음을 선택합니다.In the Create a new project dialog box, search for functions, choose the Azure Functions template, and select Next.

  3. 프로젝트 이름을 입력하고 만들기를 선택합니다.Enter a name for your project, and select Create. 함수 앱 이름은 C# 네임스페이스로 유효해야 하므로 밑줄, 하이픈 또는 기타 영숫자가 아닌 문자는 사용하지 마세요.The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. 새 Azure Functions 애플리케이션 만들기에서 다음 옵션을 사용합니다.In Create a new Azure Functions application, use the following options:

    • Azure Functions v2(.NET Core) 1Azure Functions v2 (.NET Core) 1
    • HTTP 트리거HTTP trigger
    • 스토리지 계정: Storage 에뮬레이터Storage Account: Storage Emulator
    • 권한 부여 수준: 익명Authorization level: Anonymous
    옵션Option 제안 값Suggested value 설명Description
    함수 런타임Functions runtime Azure Functions 2.x
    (.NET Core)
    Azure Functions 2.x
    (.NET Core)
    .NET Core를 지원하는 Azure Functions 버전 2.x 런타임을 사용하는 함수 프로젝트를 만듭니다.This setting creates a function project that uses the version 2.x runtime of Azure Functions, which supports .NET Core. Azure Functions 1.x는 .NET Framework를 지원합니다.Azure Functions 1.x supports the .NET Framework. 자세한 내용은 Azure Functions 런타임 버전을 대상으로 지정하는 방법을 참조하세요.For more information, see Target Azure Functions runtime version.
    함수 템플릿Function template HTTP 트리거HTTP trigger HTTP 요청에서 트리거되는 함수를 만듭니다.This setting creates a function triggered by an HTTP request.
    Storage 계정Storage Account Storage 에뮬레이터Storage Emulator HTTP 트리거는 Azure Storage 계정 연결을 사용하지 않습니다.An HTTP trigger doesn't use the Azure Storage account connection. 다른 모든 트리거 유형은 유효한 스토리지 계정 연결 문자열이 필요합니다.All other trigger types require a valid Storage account connection string. 함수에는 스토리지 계정이 필요하기 때문에 Azure에 프로젝트를 게시할 때 할당되거나 생성됩니다.Because Functions requires a storage account, one is assigned or created when you publish your project to Azure.
    권한 부여 수준Authorization level 익명Anonymous 만들어진 함수를 모든 클라이언트에서 키를 제공하지 않고 트리거할 수 있습니다.The created function can be triggered by any client without providing a key. 이 권한 부여 설정을 통해 새 함수를 쉽게 테스트할 수 있습니다.This authorization setting makes it easy to test your new function. 키 및 권한 부여에 대한 자세한 내용은 HTTP 및 웹후크 바인딩에서 권한 부여 키를 참조하세요.For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.

    참고

    권한 부여 수준Anonymous로 설정했는지 확인합니다.Make sure you set the Authorization level to Anonymous. 기본 수준인 Function을 선택하면 함수 엔드포인트에 액세스하도록 요구하는 요청에 함수 키를 제공해야 합니다.If you choose the default level of Function, you're required to present the function key in requests to access your function endpoint.

  5. 만들기를 선택하여 함수 프로젝트 및 HTTP 트리거 함수를 만듭니다.Select Create to create the function project and HTTP-triggered function.

Visual Studio는 HTTP 트리거 함수 형식에 대한 상용구 코드가 포함된 프로젝트와 클래스를 만듭니다.Visual Studio creates a project and class that contains boilerplate code for the HTTP trigger function type. 메서드의 FunctionName 특성은 함수 이름을 설정하며, 기본적으로 HttpTrigger입니다.The FunctionName attribute on the method sets the name of the function, which by default is HttpTrigger. HttpTrigger 특성은 HTTP 요청에서 함수를 트리거하도록 지정합니다.The HttpTrigger attribute specifies that the function is triggered by an HTTP request. 상용구 코드는 요청 본문 또는 쿼리 문자열의 값을 포함하는 HTTP 응답을 보냅니다.The boilerplate code sends an HTTP response that includes a value from the request body or query string.

메서드에 적절한 특성을 적용하면 입력 및 출력 바인딩을 사용하여 함수의 기능을 확장할 수 있습니다.You can expand the capabilities of your function using input and output bindings by applying the appropriate attributes to the method. 자세한 내용은 Azure Functions C# 개발자 참조트리거 및 바인딩 섹션을 참조하세요.For more information, see the Triggers and bindings section of the Azure Functions C# developer reference.

함수 프로젝트 및 HTTP로 트리거되는 함수를 만들었으니, 로컬 컴퓨터에서 이 함수를 테스트할 수 있습니다.Now that you've created your function project and an HTTP-triggered function, you can test it on your local computer.

로컬에서 함수 실행Run the function locally

Visual Studio는 Azure Functions Core Tools와 통합되므로 Functions 런타임 전체를 사용하여 함수를 로컬로 테스트할 수 있습니다.Visual Studio integrates with Azure Functions Core Tools so that you can test your functions locally using the full Functions runtime.

  1. 함수를 실행하려면 F5를 누릅니다.To run your function, press F5. 도구에서 HTTP 요청을 처리할 수 있도록 방화벽 예외를 사용하도록 설정해야 합니다.You may need to enable a firewall exception so that the tools can handle HTTP requests. 로컬에서 실행하는 경우 권한 부여 수준은 적용되지 않습니다.Authorization levels are never enforced when running locally.

  2. Azure Functions 런타임 출력에서 함수의 URL을 복사합니다.Copy the URL of your function from the Azure Functions runtime output.

    Azure 로컬 런타임

  3. HTTP 요청에 대한 URL을 브라우저의 주소 표시줄에 붙여 넣습니다.Paste the URL for the HTTP request into your browser's address bar. 이 URL에 쿼리 문자열 ?name=<YOUR_NAME>을 추가하고 요청을 실행합니다.Append the query string ?name=<YOUR_NAME> to this URL and execute the request. 다음은 함수에서 반환된 로컬 GET 요청에 대한 브라우저의 응답을 보여 줍니다.The following shows the response in the browser to the local GET request returned by the function:

    브라우저의 localhost 함수 응답

  4. 디버깅을 중지하려면 Shift + F5를 누릅니다.To stop debugging, press Shift + F5.

함수가 로컬 컴퓨터에서 제대로 실행되는지 확인한 후에 해당 프로젝트를 Azure에 게시해야 합니다.After you have verified that the function runs correctly on your local computer, it's time to publish the project to Azure.

Azure에 프로젝트 게시Publish the project to Azure

프로젝트를 게시하려면 먼저 Azure 구독에 함수 앱이 있어야 합니다.You must have a function app in your Azure subscription before you can publish your project. 프로젝트를 처음 게시할 때 Visual Studio 게시에서 함수 앱을 만듭니다.Visual Studio publishing creates a function app for you the first time you publish your project.

  1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.In Solution Explorer, right-click the project and select Publish.

  2. 게시 대상 선택 대화 상자에서 이미지 아래의 표에 지정된 게시 옵션을 사용합니다.In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    게시 대상 선택

    옵션Option 설명Description
    Azure Functions 사용량 요금제Azure Functions Consumption plan 프로젝트를 사용량 요금제에서 실행되는 함수 앱에 게시하는 경우 함수 앱의 실행에 대한 비용만 지불합니다.When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. 다른 호스팅 계획에는 비용이 더 많이 듭니다.Other hosting plans incur higher costs. 자세한 내용은 Azure Functions 크기 조정 및 호스팅을 참조하세요.To learn more, see Azure Functions scale and hosting.
    새로 만들기Create new Azure에서 관련 리소스가 있는 새 함수 앱이 만들어집니다.A new function app, with related resources, is created in Azure. 기존 항목 선택을 선택하면 Azure에 있는 기존 함수 앱의 모든 파일을 로컬 프로젝트의 파일로 덮어씁니다.When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. 기존 함수 앱에 업데이트를 다시 게시하는 경우에만 이 옵션을 사용합니다.Only use this option when republishing updates to an existing function app.
    패키지 파일에서 실행Run from package file Run-From-Package 모드를 사용하도록 설정된 상태에서 Zip 배포를 사용하여 함수 앱이 배포됩니다.Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. 성능을 향상시키므로 함수를 실행하는 데 추천되는 방법입니다.This is the recommended way of running your functions, which results in better performance. 이 옵션을 사용하지 않는 경우 Azure에 게시하기 전에 함수 앱 프로젝트가 로컬로 실행되지 않도록 해야 합니다.When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  3. 게시를 선택합니다.Select Publish. Visual Studio에서 Azure 계정에 아직 로그인하지 않은 경우 로그인을 선택합니다.If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. Azure 체험 계정을 만들 수도 있습니다.You can also create a free Azure account.

  4. App Service: 새로 만들기 대화 상자에서 이미지 아래의 표에 지정된 호스팅 설정을 사용합니다.In the App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    App Service 만들기 대화 상자

    설정Setting 제안 값Suggested value 설명Description
    NameName 전역적으로 고유한 이름Globally unique name 새 함수 앱을 고유하게 식별하는 이름입니다.Name that uniquely identifies your new function app. 유효한 문자는 a-z, 0-9-입니다.Valid characters are a-z, 0-9, and -.
    구독Subscription 구독 선택Choose your subscription 사용할 Azure 구독입니다.The Azure subscription to use.
    리소스 그룹Resource Group myResourceGroupmyResourceGroup 함수 앱을 만들 리소스 그룹의 이름입니다.Name of the resource group in which to create your function app. 새로 만들기를 선택하여 새 리소스 그룹을 만듭니다.Choose New to create a new resource group.
    호스팅 계획Hosting Plan 소비 계획Consumption plan 새로 만들기를 선택하여 서버리스 계획을 만든 후에 크기 아래에서 사용량을 선택해야 합니다.Make sure to choose the Consumption under Size after you select New to create a serverless plan. 또한 사용자 근처 또는 함수가 액세스할 기타 서비스에 가까운 지역위치를 선택합니다.Also, choose a Location in a region near you or near other services your functions access. 소비 이외의 계획에서 실행하는 경우 함수 앱의 크기 조정을 관리해야 합니다.When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Azure StorageAzure Storage 범용 스토리지 계정General-purpose storage account Functions 런타임에는 Azure Storage 계정이 필요합니다.An Azure storage account is required by the Functions runtime. 새로 만들기를 선택하여 범용 스토리지 계정을 만듭니다.Select New to create a general-purpose storage account. 스토리지 계정 요구 사항을 충족하는 기존 계정을 사용할 수도 있습니다.You can also use an existing account that meets the storage account requirements.
  5. 만들기를 선택하여 이러한 설정으로 Azure에서 함수 앱 및 관련 리소스를 만들고, 함수 프로젝트 코드를 배포합니다.Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. 베포가 완료된 후에 Azure에서 함수 앱의 주소인 사이트 URL 값을 기록해 둡니다.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    게시 성공 메시지

Azure에서 함수 테스트Test your function in Azure

  1. 게시 프로필 페이지에서 함수 앱의 기준 URL을 복사합니다.Copy the base URL of the function app from the Publish profile page. 로컬에서 함수를 테스트할 때 사용한 URL의 localhost:port 부분을 새 기준 URL로 바꿉니다.Replace the localhost:port portion of the URL you used when testing the function locally with the new base URL. 이전처럼 이 URL에 ?name=<YOUR_NAME> 쿼리 문자열을 추가하고 요청을 실행합니다.As before, make sure to append the query string ?name=<YOUR_NAME> to this URL and execute the request.

    HTTP로 트리거되는 함수를 호출하는 URL은 다음 형식이어야 합니다.The URL that calls your HTTP triggered function should be in the following format:

     http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?name=<YOUR_NAME> 
    
  2. HTTP 요청에 대한 이러한 새 URL을 브라우저의 주소 표시줄에 붙여넣습니다.Paste this new URL for the HTTP request into your browser's address bar. 다음은 함수에서 반환된 원격 GET 요청에 대한 브라우저의 응답을 보여 줍니다.The following shows the response in the browser to the remote GET request returned by the function:

    브라우저의 함수 응답

다음 단계Next steps

Visual Studio를 사용하여 Azure에서 간단한 HTTP 트리거 함수가 있는 C# 함수 앱을 만들고 게시했습니다.You have used Visual Studio to create and publish a C# function app in Azure with a simple HTTP triggered function. .NET 클래스 라이브러리인 함수를 개발하는 방법에 대해 자세히 알아보려면 Azure Functions C# 개발자 참조를 참조하세요.To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference.