Visual Studio Code를 사용하여 Azure Functions 개발

Visual Studio Code용 Azure Functions 확장을 사용하면 로컬에서 함수를 개발하고 Azure에 배포할 수 있습니다. Azure Functions를 처음으로 접하는 경우라면 Azure Functions 소개에서 자세한 내용을 확인할 수 있습니다.

Azure Functions 확장은 다음과 같은 이점을 제공합니다.

  • 로컬 개발 컴퓨터에서 함수를 편집, 빌드 및 실행합니다.
  • Azure에 직접 Azure Functions 프로젝트를 게시합니다.
  • Visual Studio Code의 이점을 활용하면서 다양한 언어로 함수를 작성합니다.

이 문서의 C# 버전을 보고 있습니다. 문서 시작 부분에서 기본 Functions 프로그래밍 언어를 선택합니다.

Functions를 처음 사용하는 경우 먼저 Visual Studio Code 빠른 시작 문서를 완료하는 것이 좋습니다.

이 문서의 Java 버전을 보고 있습니다. 문서 시작 부분에서 기본 Functions 프로그래밍 언어를 선택합니다.

Functions를 처음 사용하는 경우 먼저 Visual Studio Code 빠른 시작 문서를 완료하는 것이 좋습니다.

이 문서의 JavaScript 버전을 보고 있습니다. 문서 시작 부분에서 기본 Functions 프로그래밍 언어를 선택합니다.

Functions를 처음 사용하는 경우 먼저 Visual Studio Code 빠른 시작 문서를 완료하는 것이 좋습니다.

이 문서의 PowerShell 버전을 보고 있습니다. 문서 시작 부분에서 기본 Functions 프로그래밍 언어를 선택합니다.

Functions를 처음 사용하는 경우 먼저 Visual Studio Code 빠른 시작 문서를 완료하는 것이 좋습니다.

이 문서의 Python 버전을 보고 있습니다. 문서 시작 부분에서 기본 Functions 프로그래밍 언어를 선택합니다.

Functions를 처음 사용하는 경우 먼저 Visual Studio Code 빠른 시작 문서를 완료하는 것이 좋습니다.

이 문서의 TypeScript 버전을 보고 있습니다. 문서 시작 부분에서 기본 Functions 프로그래밍 언어를 선택합니다.

Functions를 처음 사용하는 경우 먼저 Visual Studio Code 빠른 시작 문서를 완료하는 것이 좋습니다.

Important

단일 함수 앱에 대한 로컬 개발 및 포털 개발을 혼합하지 않도록 합니다. 로컬 프로젝트에서 함수 앱에 게시할 때 배포 프로세스는 포털에서 개발한 모든 기능을 덮어씁니다.

필수 조건

또한 로컬에서 함수를 실행하고 디버깅하려면 이러한 필수 구성 요소가 필요합니다. 프로젝트를 만들거나 Azure Functions에 게시하는 데만 필요한 것은 아닙니다.

  • 통합 로컬 디버깅 환경을 지원하는 Azure Functions Core Tools. Azure Functions 확장을 설치한 경우 Core Tools를 설치하거나 업데이트하는 가장 쉬운 방법은 명령 팔레트에서 Azure Functions: Install or Update Azure Functions Core Tools 명령을 실행하는 것입니다.

Azure Functions 프로젝트 만들기

Functions 확장을 사용하면 첫 번째 함수를 만드는 동시에 필요한 함수 앱 프로젝트를 만들 수 있습니다. 새 프로젝트에서 HTTP 트리거 함수를 만들려면 다음 단계를 따릅니다. HTTP 트리거는 시연할 가장 간단한 함수 트리거 템플릿입니다.

  1. 작업 막대에서 Azure 아이콘을 선택합니다. 작업 영역(로컬) 영역에서 + 목록을 열고 함수 만들기를 선택합니다.

    새 프로젝트 만들기 창의 스크린샷

  2. 메시지가 표시되면 새 프로젝트 만들기를 선택합니다. 프로젝트 작업 영역의 디렉터리 위치를 선택한 다음 선택을 선택합니다.

    새 폴더를 만들거나 프로젝트 작업 영역으로 빈 폴더를 선택할 수 있지만 이미 작업 영역의 일부인 프로젝트 폴더는 선택하지 마세요.

  3. 메시지가 표시되면 프로젝트에 대한 언어를 선택합니다. 필요한 경우 특정 언어 버전을 선택합니다.

  4. HTTP 트리거 함수 템플릿을 선택하거나 지금 건너뛰기를 선택하여 함수 없이 프로젝트를 만들 수 있습니다. 나중에 언제든지 프로젝트에 함수를 추가할 수 있습니다.

    HTTP 트리거 선택 스크린샷

    템플릿 필터 변경 옵션을 선택하고 값을 Core 또는 All로 설정하여 추가 템플릿을 볼 수 있습니다.

  5. 함수 이름으로 HttpExample을 입력하고 Enter를 선택한 다음 Function 권한 부여를 선택합니다.

    이 권한 부여 수준에서는 함수 엔드포인트를 호출할 때 함수 키를 제공해야 합니다.

    함수 권한 부여 만들기 스크린샷.

  6. 드롭다운 목록에서 작업 영역에 추가를 선택합니다.

     작업 영역에 추가 선택 스크린샷.

  7. 이 폴더에 있는 파일의 작성자를 신뢰하나요? 창에서 를 선택합니다.

    파일의 작성자에 대한 신뢰를 확인하기 위한 스크린샷.

Visual Studio Code는 선택한 언어와 HTTP 트리거 함수에 대한 템플릿에 함수를 만듭니다.

생성된 프로젝트 파일

프로젝트 템플릿은 선택한 언어로 프로젝트를 만들고 필요한 종속성을 설치합니다. 모든 언어에 대해 새 프로젝트에는 다음 파일이 있습니다.

  • host.json: 함수 호스트를 구성할 수 있습니다. 이러한 설정은 로컬에서 함수를 실행하는 경우와 Azure에서 함수를 실행하는 경우에 적용됩니다. 자세한 내용은 host.json 참조를 참조하세요.

  • local.settings.json: 로컬에서 함수를 실행할 때 사용되는 설정을 유지합니다. 이러한 설정은 함수를 로컬로 실행하는 경우에만 사용됩니다. 자세한 내용은 로컬 설정 파일을 참조하세요.

    Important

    local.settings.json 파일에는 비밀이 포함될 수 있으므로 프로젝트 소스 제어에서 해당 파일을 제외해야 합니다.

언어에 따라 다음과 같은 다른 파일이 만들어집니다.

HttpExample.cs 클래스 라이브러리 파일, 파일의 내용은 프로젝트가 격리된 작업자 프로세스에서 실행되는지 아니면 Functions 호스트를 사용하여 In Process에서 실행되는지에 따라 달라집니다.

  • 프로젝트 종속성과 Java 버전을 포함하여 프로젝트 및 배포 매개 변수를 정의하는 루트 폴더의 pom.xml 파일. pom.xml에는 배포 중에 만들어지는 Azure 리소스에 대한 정보도 포함되어 있습니다.

  • 함수를 구현하는 src 경로의 Functions.java 파일.

생성된 파일은 Functions에 대해 선택한 Node.js 프로그래밍 모델에 따라 달라집니다.

  • 루트 폴더의 package.json 파일.

  • 함수 정의와 함수 코드를 모두 포함하는 src\functions 폴더의 명명된 .js 파일.

다음을 포함하는 HttpExample 폴더:

생성된 파일은 Functions에 대해 선택한 Python 프로그래밍 모델에 따라 달라집니다.

  • Functions에 필요한 패키지를 나열하는 프로젝트 수준 requirements.txt 파일.

  • 함수 정의와 코드를 모두 포함하는 function_app.py 파일.

이제 HTTP 트리거 함수를 로컬에서 실행할 수 있습니다.

프로젝트에 함수 추가

미리 정의된 Functions 트리거 템플릿 중 하나를 기준으로 기존 프로젝트에 새 함수를 추가할 수 있습니다. 새 Functions 트리거를 추가하려면 F1을 선택하여 명령 팔레트를 연 다음 Azure Functions: Create Function 명령을 찾아 실행합니다. 프롬프트에 따라 트리거 유형을 선택하고 트리거의 필수 특성을 정의합니다. 서비스에 연결하기 위해 트리거에 액세스 키 또는 연결 문자열이 필요한 경우 함수 트리거를 만들기 전에 해당 항목을 준비합니다.

이 작업을 수행하면 새 C# 클래스 라이브러리(.cs) 파일이 프로젝트에 추가됩니다.

이 작업을 수행하면 프로젝트에 새 Java(.java) 파일이 추가됩니다.

이 작업의 결과는 Node.js 모델 버전에 따라 다릅니다.

  • 루트 폴더의 package.json 파일.

  • 함수 정의와 함수 코드를 모두 포함하는 src\functions 폴더의 명명된 .js 파일.

이 작업을 수행하면 프로젝트에 새 폴더가 만들어집니다. 이 폴더에는 새 function.json 파일 및 새 PowerShell 코드 파일이 포함되어 있습니다.

이 작업의 결과는 Python 모델 버전에 따라 다릅니다.

Visual Studio Code는 function_app.py 파일(기본 동작) 또는 선택한 다른 Python 파일에 새 함수 코드를 추가합니다.

서비스에 연결

입력 및 출력 바인딩을 추가하여 함수를 다른 Azure 서비스에 연결할 수 있습니다. 바인딩은 연결 코드를 작성하지 않고도 함수를 다른 서비스에 연결합니다.

예를 들어, 스토리지 큐에 데이터를 쓰는 출력 바인딩을 정의하는 방법은 프로세스 모델에 따라 달라집니다.

  1. 필요한 경우 바인딩 확장을 지원하는 패키지에 대한 참조를 추가합니다.

  2. 큐 출력 바인딩에 대한 QueueOutput과 같은 바인딩 매개 변수를 정의하는 특성을 추가하려면 함수 메서드를 업데이트합니다. MultiResponse 개체를 사용하여 여러 메시지 또는 여러 출력 스트림을 반환할 수 있습니다.

예를 들어 스토리지 큐에 데이터를 쓰는 출력 바인딩을 추가하려면 QueueOutput 주석을 사용하여 정의된 바인딩 매개 변수를 추가하도록 함수 메서드를 업데이트합니다. OutputBinding<T> 개체는 함수가 완료된 경우 출력 바인딩에 기록되는 메시지를 나타냅니다.

예를 들어, 스토리지 큐에 데이터를 쓰는 출력 바인딩을 정의하는 방법은 Node.js 모델 버전에 따라 달라집니다.

Node.js v4 모델을 사용하면 return 출력을 작성할 스토리지 큐를 정의하는 output 개체의 storageQueue 함수를 사용하여 함수 정의에 return: 옵션을 수동으로 추가해야 합니다. 함수가 완료되면 출력이 기록됩니다.

Visual Studio Code를 사용하면 편리한 프롬프트 세트를 따라 function.json 파일에 바인딩을 추가할 수 있습니다.

바인딩을 추가하려면 명령 팔레트(F1)를 열고, Azure Functions: 바인딩 추가...를 입력하고, 새 바인딩에 대한 함수를 선택한 다음, 함수에 추가되는 바인딩 유형에 따라 달라지는 프롬프트를 따릅니다.

다음은 새 스토리지 출력 바인딩을 정의하는 예제 프롬프트입니다.

prompt 설명
바인딩 방향 선택 out 바인딩은 출력 바인딩입니다.
방향으로 바인딩 선택 Azure Queue Storage 바인딩은 Azure Storage 큐 바인딩입니다.
코드에서 이 바인딩을 식별하는 데 사용하는 이름 msg 코드에서 참조되는 바인딩 매개 변수를 식별하는 이름입니다.
메시지가 전송될 큐 outqueue 바인딩이 데이터를 쓰는 큐의 이름입니다. 바인딩을 처음 사용할 때 queueName이 없으면 바인딩이 알아서 만듭니다.
"local.settings.json"에서 설정 선택 MyStorageConnection 스토리지 계정의 연결 문자열이 포함된 애플리케이션 설정의 이름입니다. AzureWebJobsStorage 설정에는 함수 앱을 사용하여 만든 스토리지 계정의 연결 문자열이 포함됩니다.

함수 폴더의 function.json 파일에서 직접 마우스 오른쪽 단추를 클릭(macOS에서는 Ctrl + 클릭)하고, 바인딩 추가를 선택하고, 동일한 프롬프트를 수행할 수도 있습니다.

이 예제에서는 function.json 파일에 있는 bindings 배열에 다음 바인딩이 추가됩니다.

{
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "MyStorageConnection"
}

예를 들어 스토리지 큐에 데이터를 쓰는 출력 바인딩을 정의하는 방법은 Python 모델 버전에 따라 달라집니다.

함수의 @queue_output 데코레이터는 스토리지 큐에 대한 출력에 대한 명명된 바인딩 매개 변수를 정의하는 데 사용됩니다. 여기서 func.Out은 기록되는 출력을 정의합니다.

다음 예제에서는 HTTP 트리거 함수Queue Storage 출력 바인딩을 추가한 후의 함수 정의를 보여 줍니다.

HTTP 트리거 함수도 HTTP 응답을 반환하므로 함수는 HTTP 및 큐 출력을 모두 나타내는 MultiResponse 개체를 반환합니다.

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

이 예제는 출력 바인딩을 포함하는 MultiResponse 개체의 정의입니다.

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

해당 예제를 자체 프로젝트에 적용할 때 ASP.NET Core 통합을 사용하는지 여부에 따라 HttpRequestHttpRequestData로 변경하고 IActionResultHttpResponseData로 변경해야 할 수 있습니다.

함수가 완료되면 큐에 메시지가 전송됩니다. 출력 바인딩을 정의하는 방법은 프로세스 모델에 따라 다릅니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.

Node.js 모델 v4에 대한 예 바인딩은 아직 사용할 수 없습니다.

출력 바인딩을 정의하는 방법은 Node.js 모델의 버전에 따라 달라집니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

출력 바인딩을 정의하는 방법은 Python 모델의 버전에 따라 달라집니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.

Node.js 모델 v4에 대한 예 바인딩은 아직 사용할 수 없습니다.

출력 바인딩을 정의하는 방법은 Node.js 모델의 버전에 따라 달라집니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.

Azure에 로그인

Azure 리소스를 만들거나 앱을 게시하기 전에 Azure에 로그인해야 합니다.

  1. 아직 로그인하지 않은 경우, 작업 막대에서 Azure 아이콘을 선택합니다. 그런 다음, 리소스 영역에서 Azure에 로그인...을 선택합니다.

    VS Code 내의 Azure 로그인 창 스크린샷

    이미 로그인되어 있고 기존 구독을 볼 수 있는 경우 다음 섹션으로 이동합니다. 아직 Azure 계정이 없는 경우 만들기 및 Azure 계정...을 선택합니다. 학생은 Azure for Students 계정 만들기...를 선택할 수 있습니다.

  2. 브라우저에 메시지가 표시되면 Azure 계정을 선택하고 Azure 계정 자격 증명을 사용하여 로그인합니다. 새 계정을 만드는 경우 계정을 만든 후 로그인할 수 있습니다.

  3. 성공적으로 로그인한 후에는 브라우저 창을 닫을 수 있습니다. Azure 계정에 속하는 구독은 사이드바에 표시됩니다.

Azure 리소스 만들기

Functions 프로젝트를 Azure에 게시하려면 Azure 구독에 코드를 실행할 함수 앱 및 관련 리소스가 있어야 합니다. 함수 앱은 함수를 위한 실행 컨텍스트를 제공합니다. Visual Studio Code에서 Azure의 함수 앱으로 게시하면 프로젝트가 패키지되고 Azure 구독에서 선택한 함수 앱에 배포됩니다.

Azure에서 함수 앱을 만들 때 기본값 또는 고급 경로를 사용하여 빠른 함수 앱 만들기 경로를 선택할 수 있습니다. 이렇게 하면 원격 리소스 만들기를 더 효과적으로 제어할 수 있습니다.

빠른 함수 앱 만들기

이 섹션에서는 함수 앱 및 관련 리소스를 Azure 구독에서 만듭니다.

  1. 작업 표시줄에서 Azure 아이콘을 선택합니다. 그런 다음, 리소스 영역에서 + 아이콘을 선택하고 Azure에서 함수 앱 만들기 옵션을 선택합니다.

    Azure 구독에서 리소스 만들기

  2. 프롬프트에서 다음 정보를 제공합니다.

    프롬프트 선택 사항
    구독 선택 사용할 구독을 선택합니다. 리소스 아래에 하나의 구독만 표시되는 경우 이 메시지가 표시되지 않습니다.
    함수 앱에 대해 전역적으로 고유한 이름 입력 URL 경로에 유효한 이름을 입력합니다. 입력한 이름이 Azure Functions에서 고유한지 확인하기 위해 유효성을 검사합니다.
    런타임 스택 선택 로컬로 실행한 언어 버전을 선택합니다.
    새 리소스의 위치 선택 성능을 향상시키려면 근처에 있는 지역을 선택합니다.

    확장은 Azure에서 생성되는 개별 리소스의 상태를 Azure: Activity Log 패널에 표시합니다.

    Azure 리소스 만들기의 로그

  3. 생성이 완료되면 구독에 다음과 같은 Azure 리소스가 생성됩니다. 리소스 이름은 함수 앱 이름에 따라 지정됩니다.

    • 리소스 그룹 - 관련 리소스에 대한 논리 컨테이너입니다.
    • 표준 Azure Storage 계정 - 프로젝트에 대한 상태 및 기타 정보를 유지 관리합니다.
    • 함수 앱 - 함수 코드를 실행할 수 있는 환경을 제공합니다. 함수 앱을 사용하면 함수를 논리 단위로 그룹화하여 동일한 호스팅 계획 내에서 더 쉽게 리소스를 관리, 배포 및 공유할 수 있습니다.
    • 함수 앱의 기본 호스트를 정의하는 App Service 플랜입니다.
    • 앱에서 함수의 사용을 추적하는 함수 앱에 연결된 Application Insights 인스턴스입니다.

    함수 앱을 만들고 배포 패키지가 적용되면 알림이 표시됩니다.

    기본적으로 함수 앱에 필요한 Azure 리소스는 사용자가 제공하는 함수 앱 이름을 기반으로 만들어집니다. 기본적으로 함수 앱과 동일한 새 리소스 그룹에도 만들어집니다. 이러한 리소스의 이름을 사용자 지정하거나 기존 리소스를 다시 사용하려면 대신 고급 만들기 옵션을 사용하여 프로젝트를 게시해야 합니다.

고급 옵션을 사용하여 Azure의 새 함수 앱에 프로젝트 게시

다음 단계에서는 고급 만들기 옵션을 사용하여 만든 새 함수 앱에 프로젝트를 게시합니다.

  1. 명령 팔레트에 Azure Functions: Azure에서 함수 앱 만들기...(고급)을 입력합니다.

  2. 로그인하지 않은 경우 Azure에 로그인하라는 메시지가 표시됩니다. 또한 무료 Azure 계정을 만들 수 있습니다. 브라우저에서 로그인한 후 Visual Studio Code로 돌아갑니다.

  3. 프롬프트에 따라 다음 정보를 제공합니다.

    프롬프트 선택 사항
    새 함수 앱의 전역적으로 고유한 이름을 입력합니다. 새 함수 앱을 식별하는 전역적으로 고유한 이름을 입력한 다음, Enter를 선택합니다. 함수 앱 이름에 대한 유효한 문자는 a-z, 0-9-입니다.
    런타임 스택을 선택하세요. 로컬로 실행 중인 언어 버전을 선택합니다.
    OS를 선택합니다. Linux 또는 Windows를 선택합니다. Python 앱은 Linux에서 실행해야 합니다.
    새 리소스에 대한 리소스 그룹을 선택합니다. 새 리소스 그룹 만들기를 선택하고 myResourceGroup과 같은 리소스 그룹 이름을 입력합니다. 기존 리소스 그룹을 선택할 수도 있습니다.
    새 리소스의 위치 선택 사용자 또는 함수가 액세스하는 기타 서비스에 가까운 지역의 위치를 선택합니다.
    호스팅 플랜을 선택합니다. 함수가 실행될 때만 요금이 부과되는 서버리스 사용량 플랜 호스팅의 경우 사용량를 선택합니다.
    스토리지 계정을 선택합니다.: 새 스토리지 계정 만들기를 선택하고 프롬프트에서 함수 앱에서 사용하는 새 스토리지 계정에 대해 전역적으로 고유한 이름을 입력합니다. 스토리지 계정 이름은 3~24자 사이여야 하고 숫자 및 소문자만 포함할 수 있습니다. 기존 계정을 선택할 수도 있습니다.
    앱의 Application Insights 리소스를 선택하세요. 새 Application Insights 리소스 만들기를 선택하고 프롬프트에서 함수에서 런타임 데이터를 저장하는 데 사용되는 인스턴스의 이름을 입력합니다.

    함수 앱을 만들고 배포 패키지가 적용된 후 알림이 표시됩니다. 만든 Azure 리소스를 포함한 만들기 및 배포 결과를 표시하려면 이 알림에서 출력 보기를 선택합니다.

Azure에서 HTTP 트리거 함수의 URL 가져오기

클라이언트에서 HTTP 트리거 함수를 호출하려면 함수 앱에 배포한 후 사용할 수 있는 함수의 URL이 필요합니다. 이 URL에는 필요한 모든 함수 키가 포함되어 있습니다. 확장을 사용하여 배포된 함수에 대한 이러한 URL을 가져올 수 있습니다. Azure에서 원격 함수를 실행하려면 지금 함수 실행 확장 기능을 사용합니다.

  1. F1을 선택하여 명령 팔레트를 연 다음 Azure Functions: Functions URL 복사 명령을 찾아 실행합니다.

  2. 프롬프트에 따라 Azure에서 함수 앱을 선택하고 호출하려는 특정 HTTP 트리거를 선택합니다.

함수 URL은 code 쿼리 매개 변수에 의해 전달된 필수 키와 함께 클립보드에 복사됩니다. HTTP 도구를 사용하여 POST 요청을 제출하거나 브라우저를 사용하여 원격 함수에 GET 요청을 제출합니다.

확장이 Azure에서 함수의 URL을 가져올 때 해당 확장은 Azure 계정을 사용하여 함수를 시작하는 데 필요한 키를 자동으로 검색합니다. 함수 액세스 키에 대해 자세히 알아보기 HTTP가 아닌 트리거된 함수를 시작하려면 관리자 키를 사용해야 합니다.

프로젝트 파일 배포

연결된 원본 위치에서 원본 파일을 업데이트할 때 Azure의 함수 앱이 업데이트되도록 지속적인 배포를 설정하는 것이 좋습니다. Visual Studio Code에서 프로젝트 파일을 배포할 수도 있습니다. Visual Studio Code에서 게시할 때 Zip 배포 기술을 활용할 수 있습니다.

Important

기존 함수 앱에 배포하면 항상 Azure에서 해당 앱의 콘텐츠를 덮어씁니다.

  1. Azure 작업의 리소스 영역에서 방금 만든 함수 앱 리소스를 찾아 마우스 오른쪽 단추로 클릭한 다음, 함수 앱에 배포...를 선택합니다.

  2. 이전 배포를 덮어쓰라는 메시지가 표시되면 배포를 선택하여 함수 코드를 새 함수 앱 리소스에 배포합니다.

  3. 배포가 완료되면 출력 보기를 선택하여 사용자가 만든 Azure 리소스를 포함한 만들기 및 배포 결과를 봅니다. 알림이 누락된 경우 오른쪽 아래 모서리에 있는 종 모양 아이콘을 선택하여 다시 확인합니다.

    출력 보기 창의 스크린샷

함수 실행

Azure Functions 확장을 사용하면 개별 함수를 실행할 수 있습니다. 로컬 개발 컴퓨터의 프로젝트 또는 Azure 구독에서 함수를 실행할 수 있습니다.

HTTP 트리거 함수의 경우 확장은 HTTP 엔드포인트를 호출합니다. 다른 종류의 트리거의 경우 확장은 관리자 API를 호출하여 함수를 시작합니다. 함수에 전송된 요청의 메시지 본문은 트리거 형식에 따라 다릅니다. 트리거에서 테스트 데이터를 요구하는 경우 특정 JSON 형식으로 데이터를 입력하라는 메시지가 표시됩니다.

Azure에서 함수 실행

Visual Studio Code를 사용하여 Azure에서 함수를 실행하려면 다음 단계를 따릅니다.

  1. 명령 팔레트에 Azure Functions: 지금 Functions 실행을 입력하고 Azure 구독을 선택합니다.

  2. 목록에서 Azure의 함수 앱을 선택합니다. 함수 앱이 표시되지 않는 경우 올바른 구독에 로그인했는지 확인합니다.

  3. 목록에서 실행하려는 함수를 선택합니다. 요청 본문 입력에 요청의 메시지 본문을 입력하고 Enter 키를 눌러 이 요청 메시지를 함수로 보냅니다.

    요청 본문 입력의 기본 텍스트는 본문의 형식을 나타냅니다. 함수 앱에 함수가 없으면 이 오류와 함께 알림 오류가 표시됩니다.

    함수가 Azure에서 실행되고 응답을 반환하면 Visual Studio Code는 알림을 표시합니다.

Azure 구독의 함수 앱에서 실행하려는 함수에 대한 바로 가기 메뉴를 연 다음 지금 함수 실행...을 선택하여 Azure: Functions 영역에서 함수를 실행할 수도 있습니다.

Visual Studio Code에서 Azure의 함수를 실행할 때 확장은 Azure 계정을 사용하여 함수를 시작하는 데 필요한 키를 자동으로 검색합니다. 함수 액세스 키에 대해 자세히 알아보기 HTTP가 아닌 트리거된 함수를 시작하려면 관리자 키를 사용해야 합니다.

로컬로 함수 실행

로컬 런타임은 Azure에서 함수 앱을 호스트하는 것과 동일한 런타임입니다. 로컬 설정은 local.settings.json 파일에서 읽습니다. Functions 프로젝트를 로컬로 실행하려면 추가 요구 사항을 충족해야 합니다.

로컬로 실행되도록 프로젝트 구성

Functions 런타임은 HTTP 및 웹후크가 아닌 모든 트리거 형식에 대해 내부적으로 Azure Storage 계정을 사용합니다. 따라서 Values.AzureWebJobsStorage 키를 유효한 Azure Storage 계정 연결 문자열로 설정해야 합니다.

이 섹션에서는 Azure Storage Explorer와 함께 Visual Studio Code용 Azure Storage 확장을 사용하여 스토리지 연결 문자열에 연결하고 검색합니다.

스토리지 계정 연결 문자열을 설정하려면 다음을 수행합니다.

  1. Visual Studio에서 클라우드 탐색기를 열고 스토리지 계정>스토리지 계정을 확장한 후 속성을 선택하고 기본 연결 문자열 값을 복사합니다.

  2. 사용자 프로젝트에서 local.settings.json 파일을 열고 AzureWebJobsStorage 키의 값을 복사한 연결 문자열로 설정합니다.

  3. 이전 단계를 반복하여 사용자의 함수에 필요한 다른 연결에 대한 배열에 고유 키를 추가합니다.

자세한 내용은 로컬 설정 파일을 참조하세요.

로컬로 함수 디버그

함수를 디버깅하려면 F5 키를 선택합니다. Core Tools를 사용할 수 없는 경우 설치하라는 메시지가 표시됩니다. Core Tools를 설치하고 실행하는 경우 출력은 터미널에 표시됩니다. 이 단계는 터미널에서 func start Core Tools 명령을 실행하는 것과 동일하지만 추가 빌드 작업과 연결된 디버거가 있습니다.

프로젝트가 실행 중일 때 확장의 지금 함수 실행... 기능을 사용하여 프로젝트가 Azure에 배포될 때와 같이 함수를 트리거할 수 있습니다. 디버그 모드에서 프로젝트를 실행하면 예상대로 Visual Studio Code에서 중단점이 적중됩니다.

  1. 명령 팔레트에 Azure Functions: 지금 Functions 실행을 입력하고 로컬 프로젝트를 선택합니다.

  2. 프로젝트에서 실행할 함수를 선택하고 요청 본문 입력에 요청의 메시지 본문을 입력합니다. Enter를 눌러 이 요청 메시지를 함수로 보냅니다. 요청 본문 입력의 기본 텍스트는 본문 형식이어야 합니다. 함수 앱에 함수가 없으면 이 오류와 함께 알림 오류가 표시됩니다.

  3. 함수가 로컬로 실행되고 응답이 수신된 후 Visual Studio Code에서 알림이 발생합니다. 기능 실행에 대한 정보는 터미널 패널에 표시됩니다.

로컬로 실행할 때는 키가 필요하지 않습니다. 이는 함수 키와 관리자 수준 키 모두에 적용됩니다.

로컬에서 앱 설정 작업

Azure의 함수 앱에서 실행하는 경우 함수에 필요한 설정은 앱 설정에 안전하게 저장됩니다. 로컬 개발 중에 이러한 설정은 local.settings.json 파일의 Values 컬렉션에 대신 추가됩니다. local.settings.json 파일은 로컬 개발 도구에서 사용하는 설정도 저장합니다.

프로젝트의 local.settings.json 파일에 있는 Values 컬렉션의 항목은 Azure에서 함수 앱의 애플리케이션 설정에 있는 항목을 미러링하기 위한 것입니다.

기본적으로 이러한 설정은 프로젝트가 Azure에 게시될 때 자동으로 마이그레이션되지 않습니다. 게시가 완료된 후 Azure에서 함수 앱에 local.settings.json의 설정을 게시하는 옵션이 제공됩니다. 자세한 내용은 애플리케이션 설정 게시를 참조하세요.

ConnectionStrings의 값은 절대 게시되지 않습니다.

코드에서 함수 애플리케이션 설정 값을 환경 변수로 읽을 수도 있습니다. 자세한 내용은 환경 변수를 참조하세요.

  • 이 함수 앱 설정 값은 코드에서 환경 변수로 읽을 수도 있습니다. 자세한 내용은 환경 변수를 참조하세요.
  • 이 함수 앱 설정 값은 코드에서 환경 변수로 읽을 수도 있습니다. 자세한 내용은 환경 변수를 참조하세요.
  • 이 함수 앱 설정 값은 코드에서 환경 변수로 읽을 수도 있습니다. 자세한 내용은 환경 변수를 참조하세요.
  • 이 함수 앱 설정 값은 코드에서 환경 변수로 읽을 수도 있습니다. 자세한 내용은 환경 변수를 참조하세요.

Azure의 애플리케이션 설정

프로젝트의 local.settings.json 파일에 대한 설정은 Azure의 함수 앱에 있는 애플리케이션 설정과 동일해야 합니다. local.settings.json에 추가하는 모든 설정은 Azure의 함수 앱에도 추가해야 합니다. 이러한 설정은 프로젝트를 게시할 때 자동으로 업로드되지 않습니다. 마찬가지로 포털의 함수 앱에서 만든 모든 설정은 로컬 프로젝트에 다운로드해야 합니다.

애플리케이션 설정 게시

Azure의 함수 앱에 필요한 설정을 게시하는 가장 쉬운 방법은 프로젝트를 게시한 후 표시되는 설정 업로드 링크를 사용하는 것입니다.

애플리케이션 설정을 업로드하기 위한 스크린샷.

명령 팔레트에서 Azure Functions: Upload Local Setting 명령을 사용하여 설정을 게시할 수도 있습니다. Azure Functions: Add New Setting 명령을 사용하여 Azure의 애플리케이션 설정에 개별 설정을 추가할 수 있습니다.

local.settings.json을 파일을 게시하기 전에 저장해야 합니다.

로컬 파일이 암호화되어 있는 경우 암호 해독, 게시 및 암호화가 다시 수행됩니다. 두 위치에 충돌하는 값이 있는 설정이 있는 경우 계속하는 방법을 선택하라는 메시지가 표시됩니다.

구독, 함수 앱 및 애플리케이션 설정을 확장하여 Azure: Functions 영역에서 기존 앱 설정을 봅니다.

 Visual Studio Code에서 함수 앱 설정을 보기 위한 스크린샷.

Azure에서 설정 다운로드

Azure에서 애플리케이션 설정을 만든 경우 Azure Functions: Download Remote Settings 명령을 사용하여 local.settings.json 파일에 다운로드할 수 있습니다.

업로드와 마찬가지로 로컬 파일이 암호화되어 있는 경우 암호 해독, 업데이트 및 암호화가 다시 수행됩니다. 두 위치에 충돌하는 값이 있는 설정이 있는 경우 계속하는 방법을 선택하라는 메시지가 표시됩니다.

바인딩 확장 설치

HTTP 및 타이머 트리거를 제외하고는 바인딩이 확장 패키지로 구현됩니다.

필요한 트리거 및 바인딩에 대한 확장 패키지를 명시적으로 설치해야 합니다. 설치하는 특정 패키지는 프로젝트의 프로세스 모델에 따라 달라집니다.

터미널 창에서 dotnet add package 명령을 실행하여 프로젝트에 필요한 확장 패키지를 설치합니다. 템플릿은 격리된 프로세스 클래스 라이브러리에 대한 바인딩을 추가하는 방법을 보여 줍니다.

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>

<BINDING_TYPE_NAME>을 필요한 바인딩이 포함된 패키지의 이름으로 바꿉니다. 원하는 바인딩 참조 문서는 지원되는 바인딩 목록에서 찾을 수 있습니다.

예제의 <TARGET_VERSION>을 패키지의 특정 버전(예: 3.0.0-beta5)으로 바꿉니다. 유효한 버전은 NuGet.org의 개별 패키지 페이지에 나열되어 있습니다. 현재 Functions 런타임에 해당하는 주 버전은 바인딩의 참조 문서에 지정되어 있습니다.

C# 스크립트에서는 확장 번들을 사용합니다.

바인딩 확장을 설치하는 가장 쉬운 방법은 확장 번들을 사용하도록 설정하는 것입니다. 번들을 활성화하면 미리 정의된 확장 패키지 세트가 자동으로 설치됩니다.

확장 번들을 사용하도록 설정하려면 host.json 파일을 열고 다음 코드와 일치하도록 콘텐츠를 업데이트합니다.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.*, 4.0.0)"
    }
}

어떤 이유로 확장 번들을 사용하여 프로젝트에 대한 바인딩 확장을 설치할 수 없는 경우 명시적으로 확장 설치를 참조하세요.

함수 모니터링

로컬로 함수를 실행하면 로그 데이터가 터미널 콘솔로 스트리밍됩니다. Functions 프로젝트가 Azure의 함수 앱에서 실행되는 경우 로그 데이터를 가져올 수도 있습니다. Azure의 스트리밍 로그에 연결하여 거의 실시간으로 로그 데이터를 볼 수 있습니다. 함수 앱의 동작 방식을 보다 완전히 파악하기 위해 Application Insights를 사용하도록 설정해야 합니다.

스트리밍 로그

애플리케이션을 개발하는 동안 거의 실시간의 로깅 정보를 보는 것이 종종 유용합니다. 함수에 의해 생성되는 로그 파일의 스트리밍을 볼 수 있습니다. Azure Functions: Start streaming logs 명령을 사용하여 명령 팔레트에서 로그를 활성화합니다. 이 출력은 HTTP로 트리거되는 함수에 대한 요청의 스트리밍 로그 예입니다.

H T T P 트리거에 대한 스트리밍 로그 출력의 스크린샷.

자세한 내용은 스트리밍 로그를 참조하세요.

Application Insights

함수 앱을 Application Insights와 통합하여 함수 실행을 모니터링해야 합니다. Azure Portal에서 함수 앱을 만들 때 이 통합은 기본적으로 발생합니다. Visual Studio 게시 중에 함수 앱을 만들 때 Application Insights를 직접 통합해야 합니다. 방법을 알아보려면 Application Insights 통합 사용을 참조하세요.

Application Insights를 사용하여 모니터링하는 방법에 대한 자세한 내용은 Azure Functions 모니터링을 참조하세요.

C# 스크립트 프로젝트

기본적으로 모든 C# 프로젝트는 C#으로 컴파일된 클래스 라이브러리 프로젝트로 생성됩니다. 대신 C# 스크립트 프로젝트를 사용하려면 Azure Functions 확장 설정에서 C# 스크립트를 기본 언어로 선택해야 합니다.

  1. 파일>기본 설정>설정을 선택합니다.

  2. 사용자 설정>확장>Azure Functions로 이동합니다.

  3. Azure Function: Project Language에서 C#Script를 선택합니다.

이 단계를 완료한 후 기본 Core Tools에 대한 호출에는 C# 스크립트(.csx) 프로젝트 파일을 생성하고 게시하는 --csx 옵션이 포함됩니다. 이 기본 언어를 지정하면 사용자가 만드는 모든 프로젝트는 기본적으로 C# 스크립트 프로젝트로 지정됩니다. 기본값이 설정되면 프로젝트 언어를 선택하라는 메시지가 표시되지 않습니다. 다른 언어로 프로젝트를 만들려면 이 설정을 변경하거나 사용자 settings.json 파일에서 제거해야 합니다. 이 설정을 제거하면 프로젝트를 만들 때 언어를 선택하라는 메시지가 다시 표시됩니다.

명령 팔레트 참조

Azure Functions 확장은 Azure에서 함수 앱과 상호 작용하기 위한 영역에서 유용한 그래픽 인터페이스를 제공합니다. 명령 팔레트(F1)에서도 같은 기능을 명령으로 사용할 수 있습니다. 다음 Azure Functions 명령을 사용할 수 있습니다.

Azure Functions 명령 설명
새 설정 추가 Azure에서 새 애플리케이션 설정을 만듭니다. 자세한 내용은 애플리케이션 설정 게시를 참조하세요. 이 설정을 로컬 설정으로 다운로드해야 할 수도 있습니다.
배포 원본 구성 Azure의 함수 앱을 로컬 Git 리포지토리에 연결합니다. 자세히 알아보려면 Azure Functions에 대한 연속 배포를 참조하세요.
GitHub 리포지토리에 연결 함수 앱을 GitHub 리포지토리에 연결합니다.
함수 URL 복사 Azure에서 실행되는 HTTP 트리거 함수의 원격 URL을 가져옵니다. 자세한 내용은 배포된 함수의 URL 가져오기를 참조하세요.
Azure에서 함수 앱 만들기 Azure의 구독에서 새 함수 앱을 만듭니다. 자세한 내용은 Azure에서 새 함수 앱에 게시하는 방법에 대한 섹션을 참조하세요.
설정 암호 해독 Azure Functions: Encrypt Settings에 의해 암호화된 로컬 설정을 해독합니다.
함수 앱 삭제 Azure의 구독에서 함수 앱을 제거합니다. App Service 계획에 다른 앱이 없는 경우 해당 앱을 삭제하는 옵션도 제공됩니다. 스토리지 계정 및 리소스 그룹과 같은 다른 리소스는 삭제되지 않습니다. 모든 리소스를 제거하려면 대신 리소스 그룹을 삭제해야 합니다. 로컬 프로젝트가 영향을 받지 않습니다.
함수 삭제 Azure의 함수 앱에서 기존 함수를 제거합니다. 이 삭제는 로컬 프로젝트에 영향을 미치지 않으므로 대신 로컬로 함수를 제거한 다음 프로젝트를 다시 게시하는 것이 좋습니다.
프록시 삭제 Azure의 함수 앱에서 Azure Functions 프록시를 제거합니다. 프록시에 대한 자세한 내용은 Azure Functions 프록시 사용을 참조하세요.
설정 삭제 Azure에서 함수 앱 설정을 삭제합니다. 이 삭제는 local.settings.json 파일의 설정에 영향을 주지 않습니다.
리포지토리에서 연결 해제 Azure의 함수 앱과 소스 제어 리포지토리 간의 지속적 배포 연결을 제거합니다.
원격 설정 다운로드 Azure에서 선택한 함수 앱의 설정을 local.settings.json 파일로 다운로드합니다. 로컬 파일이 암호화되면 암호 해독, 업데이트 및 암호화가 다시 수행됩니다. 두 위치에 충돌하는 값이 있는 설정이 있는 경우 계속하는 방법을 선택하라는 메시지가 표시됩니다. 이 명령을 실행하기 전에 local.settings.json 파일에 대한 변경 내용을 저장해야 합니다.
설정 편집 Azure의 기존 함수 앱 설정 값을 변경합니다. 이 명령은 local.settings.json 파일의 설정에 영향을 주지 않습니다.
암호화 설정 로컬 설정에서 Values 배열의 개별 항목을 암호화합니다. 이 파일에서 IsEncryptedtrue로 설정되어 로컬 런타임이 설정을 사용하기 전에 암호 해독하도록 지정합니다. 로컬 설정을 암호화하여 중요한 정보 누출의 위험을 줄입니다. Azure에서 애플리케이션 설정은 항상 암호화된 상태로 저장됩니다.
지금 함수 실행 관리 API를 사용하여 함수를 수동으로 시작합니다. 이 명령은 디버깅 중에 로컬로 테스트하거나 Azure에서 실행되는 함수에 대해 테스트하는 데 사용됩니다. Azure에서 함수를 시작하는 경우 확장은 먼저 Azure에서 함수를 시작하는 원격 관리 API를 호출하는 데 사용하는 관리자 키를 자동으로 가져옵니다. API로 전송되는 메시지의 본문은 트리거의 유형에 따라 달라집니다. 타이머 트리거는 데이터를 전달할 필요가 없습니다.
VS Code에서 사용할 프로젝트 초기화 필요한 Visual Studio Code 프로젝트 파일을 기존 Functions 프로젝트에 추가합니다. Core Tools를 사용하여 만든 프로젝트로 작업하려면 이 명령을 사용합니다.
Azure Functions Core Tools 설치 또는 업데이트 로컬로 함수를 실행하는 데 사용되는 Azure Functions Core Tools를 설치하거나 업데이트합니다.
재배포 연결된 Git 리포지토리의 프로젝트 파일을 Azure의 특정 배포에 다시 배포할 수 있습니다. Visual Studio Code에서 로컬 업데이트를 다시 게시하려면 프로젝트를 다시 게시하세요.
설정 이름 바꾸기 Azure에서 기존 함수 앱 설정의 키 이름을 변경합니다. 이 명령은 local.settings.json 파일의 설정에 영향을 주지 않습니다. Azure에서 설정 이름을 바꾼 후에는 해당 변경 사항을 로컬 프로젝트에 다운로드해야 합니다.
다시 시작 Azure에서 함수 앱을 다시 시작합니다. 업데이트를 배포하면 함수 앱도 다시 시작됩니다.
Set AzureWebJobsStorage AzureWebJobsStorage 애플리케이션 설정의 값을 설정합니다. 이 설정은 Azure Functions에 필요합니다. Azure에서 함수 앱을 만들 때 설정됩니다.
Start Azure에서 중지된 함수 앱을 시작합니다.
스트리밍 로그 시작 Azure에서 함수 앱에 대한 스트리밍 로그를 시작합니다. 로깅 정보를 거의 실시간으로 확인해야 하는 경우 Azure에서 원격 문제 해결 중에 스트리밍 로그를 사용합니다. 자세한 내용은 스트리밍 로그를 참조하세요.
Stop Azure에서 실행되는 함수 앱을 중지합니다.
스트리밍 로그 중지 Azure에서 함수 앱에 대한 스트리밍 로그를 중지합니다.
슬롯 설정으로 전환 사용하도록 설정하면 지정된 배포 슬롯에 대한 애플리케이션 설정이 유지됩니다.
Azure Functions Core Tools 제거 Azure Functions Core Tools를 제거합니다. 이는 확장에 필요합니다.
로컬 설정 업로드 local.settings.json 파일에서 Azure의 선택한 함수 앱에 설정을 업로드합니다. 로컬 파일이 암호화되면 암호 해독, 업로드 및 암호화가 다시 수행됩니다. 두 위치에 충돌하는 값이 있는 설정이 있는 경우 계속하는 방법을 선택하라는 메시지가 표시됩니다. 이 명령을 실행하기 전에 local.settings.json 파일에 대한 변경 내용을 저장해야 합니다.
GitHub에서 커밋 보기 함수 앱이 리포지토리에 연결되어 있을 때 특정 배포의 최신 커밋을 보여 줍니다.
배포 로그 보기 Azure에서 함수 앱에 대한 특정 배포에 대한 로그를 보여 줍니다.

다음 단계

Azure Functions Core Tools에 대한 자세한 내용은 Azure Functions Core Tools 사용을 참조하세요.

.NET 클래스 라이브러리인 함수를 개발하는 방법에 대해 자세히 알아보려면 Azure Functions C# 개발자 참조를 참조하세요. 이 문서에서는 특성을 사용하여 Azure Functions에서 지원하는 다양한 유형의 바인딩을 선언하는 방법의 예제에 대한 링크를 제공합니다.