다음을 통해 공유


빠른 시작: 명령줄에서 Azure에서 함수 만들기

이 문서에서는 로컬 명령줄 도구를 사용하여 HTTP 요청에 응답하는 함수를 만듭니다. 코드를 로컬로 확인한 후 Azure Functions의 서버리스 Flex Consumption 호스팅 계획에 배포합니다.

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

문서 맨 위에 있는 기본 개발 언어를 선택해야 합니다.

Prerequisites

  • Go(추천되는 최신 버전). go version 명령을 사용하여 버전을 확인하십시오.

Azure Functions 핵심 도구 설치

Core Tools를 설치하는 권장 방법은 로컬 개발 시스템의 운영 체제에 따라 다릅니다.

다음 단계에서는 MSI(Windows 설치 프로그램)를 사용하여 Core Tools v4.x를 설치합니다. 다른 패키지 기반 설치 관리자에 대한 자세한 내용은 핵심 도구 추가 정보를 참조하세요.

다음과 같이 Windows 버전에 따라 Core Tools 설치 프로그램을 다운로드하여 실행합니다.

이전에 Windows 설치 프로그램(MSI)을 사용하여 Windows에 Core Tools를 설치한 경우 최신 버전을 설치하기 전에 프로그램 추가/제거에서 이전 버전을 제거해야 합니다.

가상 환경 만들기 및 활성화

적절한 폴더에서 다음 명령을 실행하여 .venv라는 가상 환경을 만들고 활성화합니다. Azure Functions에서 지원하는 Python 버전 중 하나를 사용해야 합니다.

python -m venv .venv
source .venv/bin/activate

Python에서 venv 패키지를 Linux 배포에 설치하지 않은 경우 다음 명령을 실행합니다.

sudo apt-get install python3-venv

활성화된 가상 환경에서 이후의 모든 명령을 실행합니다.

로컬 코드 프로젝트 및 함수 만들기

Azure Functions에서 코드 프로젝트는 각각 특정 트리거에 응답하는 하나 이상의 개별 함수를 포함하는 앱입니다. 프로젝트의 모든 함수는 동일한 구성을 공유하며 Azure에 단위로 배포됩니다. 이 섹션에서는 단일 함수를 포함하는 코드 프로젝트를 만듭니다.

  1. 터미널 또는 명령 프롬프트에서 이 func init 명령을 실행하여 현재 폴더에 함수 앱 프로젝트를 만듭니다.

    func init --worker-runtime dotnet-isolated 
    
  1. 터미널 또는 명령 프롬프트에서 이 func init 명령을 실행하여 현재 폴더에 함수 앱 프로젝트를 만듭니다.

    func init --worker-runtime node --language javascript 
    
  1. 터미널 또는 명령 프롬프트에서 이 func init 명령을 실행하여 현재 폴더에 함수 앱 프로젝트를 만듭니다.

    func init --worker-runtime powershell 
    
  1. 터미널 또는 명령 프롬프트에서 이 func init 명령을 실행하여 현재 폴더에 함수 앱 프로젝트를 만듭니다.

    func init --worker-runtime python 
    
  1. 터미널 또는 명령 프롬프트에서 이 func init 명령을 실행하여 현재 폴더에 함수 앱 프로젝트를 만듭니다.

    func init --worker-runtime node --language typescript 
    
  1. 터미널 또는 명령 프롬프트에서 이 func init 명령을 실행하여 현재 폴더에 함수 앱 프로젝트를 만듭니다.

    func init --worker-runtime custom 
    
  1. 빈 폴더에서 다음 mvn 명령을 실행하여 Azure Functions Maven 원형에서 코드 프로젝트를 생성합니다.

    mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17
    

    Important

    • Java 11에서 함수를 실행하려면 -DjavaVersion=11을 사용합니다. 자세한 내용은 Java 버전을 참조하세요.
    • 환경 변수를 JAVA_HOME 올바른 버전의 JDK 설치 위치로 설정하여 이 문서를 완료합니다.
  2. Maven은 배포 시 프로젝트 생성 완료를 위해 필요한 값을 요청합니다.
    메시지가 표시되면 다음 값을 제공합니다.

    Prompt Value Description
    groupId com.fabrikam Java에 대한 패키지 명명 규칙에 따라 모든 프로젝트에서 프로젝트를 고유하게 식별하는 값입니다.
    artifactId fabrikam-functions 버전 번호가 없는 jar의 이름인 값입니다.
    version 1.0-SNAPSHOT 기본값을 선택합니다.
    package com.fabrikam 생성된 함수 코드에 대한 Java 패키지인 값입니다. 기본값을 사용하세요.
  3. Y를 입력하거나 Enter 키를 눌러 확인합니다.

    Maven은 아티팩트 Id의 이름으로 새 폴더에 프로젝트 파일을 만듭니다. 이 예제에서는 다음과 같습니다 fabrikam-functions.

  4. 프로젝트 폴더로 이동합니다.

    cd fabrikam-functions
    

    \src\main\java\com\fabrikam 프로젝트 디렉터리의 Function.java 새 HTTP 트리거 함수에 대한 템플릿 생성 코드를 검토할 수 있습니다.

  1. func new 명령을 사용하여 프로젝트에 함수를 추가합니다.

    func new --name HttpExample --template "HTTP trigger" --authlevel "function"
    

    프로젝트에 새 코드 파일이 추가됩니다. 이 경우 --name 인수는 함수(HttpExample)의 고유한 이름이고 인수는 --template HTTP 트리거를 지정합니다.

프로젝트 루트 폴더에는 local.settings.jsonhost.json라는 구성 파일을 포함하여 프로젝트에 대한 다양한 파일이 포함되어 있습니다. local.settings.json Azure에서 다운로드한 비밀을 포함할 수 있으므로 파일은 기본적으로 .gitignore 파일의 소스 제어에서 제외됩니다.

함수 만들기 및 빌드

HttpExample 폴더의 function.json 파일은 HTTP 트리거 함수를 선언합니다. 처리기를 추가하고 실행 파일로 컴파일하여 함수를 완료합니다.

  1. Ctrl+N(macOS의 경우 Cmd+N)을 눌러 새 파일을 만듭니다. 이 파일을 handler.go로 함수 앱 루트(host.json과 동일한 폴더에 있음)에 저장합니다.

  2. handler.go에서 다음 코드를 추가하고 파일을 저장합니다. 이는 Go 사용자 지정 처리기입니다.

    package main
    
    import (
        "fmt"
        "log"
        "net/http"
        "os"
    )
    
    func helloHandler(w http.ResponseWriter, r *http.Request) {
        message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n"
        name := r.URL.Query().Get("name")
        if name != "" {
            message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name)
        }
        fmt.Fprint(w, message)
    }
    
    func main() {
        listenAddr := ":8080"
        if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok {
            listenAddr = ":" + val
        }
        http.HandleFunc("/api/HttpExample", helloHandler)
        log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr)
        log.Fatal(http.ListenAndServe(listenAddr, nil))
    }
    
  3. Ctrl+Shift+'를 누르거나 터미널 메뉴에서 새 터미널을 선택하여 VS Code에서 새 통합 터미널을 엽니다.

  4. 다음 명령을 사용하여 사용자 지정 처리기를 컴파일합니다. handler(Windows에서는 handler.exe)라는 실행 파일이 함수 앱 루트 폴더에 출력됩니다.

    go build handler.go
    

함수 앱 구성

함수 호스트는 시작할 때 사용자 지정 처리기 이진 파일을 실행하도록 구성해야 합니다.

  1. host.json을 엽니다.

  2. customHandler.description 섹션에서 defaultExecutablePath 값을 handler로 설정합니다(Windows에서는 handler.exe로 설정).

  3. customHandler 섹션에서 enableForwardingHttpRequest라는 속성을 추가하고, 해당 값을 true로 설정합니다. HTTP 트리거로만 구성된 함수의 경우 이 설정은 사용자 지정 처리기 요청 페이로드 대신 일반 HTTP 요청으로 작업할 수 있도록 하여 프로그래밍을 간소화합니다.

  4. customHandler 섹션이 다음 예제와 같은지 확인합니다. 파일을 저장합니다.

    "customHandler": {
      "description": {
        "defaultExecutablePath": "handler",
        "workingDirectory": "",
        "arguments": []
      },
      "enableForwardingHttpRequest": true
    }
    

함수 앱이 사용자 지정 처리기 실행 파일을 시작하도록 구성됩니다.

로컬에서 함수 실행

프로젝트를 로컬로 실행하고 함수 엔드포인트를 호출하여 새 함수를 확인합니다.

  1. 이 명령을 사용하여 프로젝트 폴더의 루트에서 로컬 Azure Functions 런타임 호스트를 시작합니다.

    func start  
    
    npm install
    npm start
    
    mvn clean package  
    mvn azure-functions:run
    

    출력의 끝 부분에 다음 줄이 나타납니다.

     ...
    
     Now listening on: http://0.0.0.0:7071
     Application started. Press Ctrl+C to shut down.
    
     Http Functions:
    
             HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
     ...
    
     
  2. 이 출력에서 브라우저로 함수의 HttpExample URL을 복사하고 함수 URL로 이동합니다. "hello world" 메시지가 포함된 성공 응답을 받아야 합니다.

    Note

    로컬로 실행할 때 액세스 키 권한 부여가 적용되지 않으므로 반환된 함수 URL에는 액세스 키 값이 포함되지 않으며 함수를 호출할 필요가 없습니다.

  3. 완료되면 Ctrl+C 를 사용하고 함수 호스트를 중지하도록 선택합니다 y .

함수를 지원하는 Azure 리소스 만들기

함수 코드를 Azure에 배포하려면 다음 리소스를 만들어야 합니다.

  • 리소스 그룹 - 관련 리소스에 대한 논리 컨테이너입니다.
  • Functions 호스트에서 상태 및 함수에 대한 기타 정보를 유지하는 데 사용되는 기본 Storage 계정입니다.
  • Functions 호스트가 기본 스토리지 계정에 연결하는 데 사용하는 사용자 할당 관리 ID입니다.
  • 함수 앱 - 함수 코드를 실행할 수 있는 환경을 제공합니다. 함수 앱은 로컬 함수 프로젝트에 매핑되며, 함수를 논리적 단위로 그룹화하여 리소스를 더 쉽게 관리, 배포 및 공유할 수 있습니다.

다음 단계에서 Azure CLI 명령을 사용하여 필요한 리소스를 만듭니다.

  1. 아직 로그인하지 않은 경우 Azure에 로그인합니다.

    az login
    

    az login 명령을 선택하면 사용자가 Azure 계정에 로그인됩니다. Azure Cloud Shell에서 실행할 때 이 단계를 건너뜁니다.

  2. 아직 설치하지 않은 경우 이 az extension add 명령을 사용하여 Application Insights 확장을 설치합니다.

    az extension add --name application-insights
    
  3. az group create 명령을 사용하여 선택한 지역에 이름이 지정된 AzureFunctionsQuickstart-rg 리소스 그룹을 만듭니다.

    az group create --name "AzureFunctionsQuickstart-rg" --location "<REGION>"
    

    이 예제에서는 <REGION>을 Flex Consumption 계획을 지원하는 가까운 지역으로 대체합니다. az functionapp list-flexconsumption-locations 명령을 사용하여 현재 지원되는 지역 목록을 봅니다.

  4. az storage account create 명령을 사용하여 리소스 그룹 및 지역에 범용 스토리지 계정을 만듭니다.

    az storage account create --name <STORAGE_NAME> --location "<REGION>" --resource-group "AzureFunctionsQuickstart-rg" \
    --sku "Standard_LRS" --allow-blob-public-access false --allow-shared-key-access false
    

    이 예제에서는 사용자에게 적합하고 Azure Storage에서 고유한 이름으로 대체 <STORAGE_NAME> 합니다. 이름은 3~24자의 숫자와 소문자만 포함해야 합니다. Standard_LRS는 범용 계정을 지정하며, Functions로 지원됩니다. 이 새 계정은 특정 리소스에 대한 권한이 부여된 Microsoft Entra 인증 ID를 사용해야만 액세스할 수 있습니다.

  5. 이 스크립트를 사용하여 사용자 할당 관리 ID를 만들고, 개체의 jq반환된 JSON 속성을 구문 분석하고, 기본 스토리지 계정에 권한을 부여 Storage Blob Data Owner 합니다.

    output=$(az identity create --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" --location <REGION> \
    --query "{userId:id, principalId: principalId, clientId: clientId}" -o json)
    
    userId=$(echo $output | jq -r '.userId')
    principalId=$(echo $output | jq -r '.principalId')
    clientId=$(echo $output | jq -r '.clientId')
    
    storageId=$(az storage account show --resource-group "AzureFunctionsQuickstart-rg" --name <STORAGE_NAME> --query 'id' -o tsv)
    az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal \
    --role "Storage Blob Data Owner" --scope $storageId
    

    로컬 Bash 셸에 유틸리티가 jq 없는 경우 Azure Cloud Shell에서 사용할 수 있습니다. 이 예제에서는 <STORAGE_NAME><REGION>를 각각 기본 스토리지 계정 이름과 지역으로 바꿉니다.

    az identity create 명령은 이름이 인 func-host-storage-userID를 만듭니다. 반환된 principalIdaz role assignment create 명령을 사용하여 기본 스토리지 계정에서 이 새로운 ID에 권한을 할당하는 데 사용됩니다. 이 az storage account show 명령은 스토리지 계정 ID를 가져오는 데 사용됩니다.

  6. az functionapp create 명령을 사용하여 Azure에서 함수 앱을 만듭니다.

    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime dotnet-isolated --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime java --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime node --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime other --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    

    이 예제에서는 이러한 자리 표시자를 적절한 값으로 바꿉다.

    • <APP_NAME>: 사용자에게 적합한 전역적으로 고유한 이름입니다. <APP_NAME>은 함수 앱의 기본 DNS 도메인이기도 합니다.
    • <STORAGE_NAME>: 이전 단계에서 사용한 계정의 이름입니다.
    • <REGION>: 현재 지역입니다.
    • <LANGUAGE_VERSION>: 해당하는 경우 로컬에서 확인한 것과 동일한 지원되는 언어 스택 버전을 사용합니다.

    이 명령은 Flex 소비 계획에서 Linux의 사용자가 지정한 언어 런타임으로 실행되는 함수 앱을 만듭니다. 여기에서 발생하는 사용량은 무료입니다. 또한 이 명령은 함수 앱 실행을 모니터링하고 로그를 보는 데 사용할 수 있는 동일한 리소스 그룹에 연결된 Azure Application Insights 인스턴스를 만듭니다. 자세한 내용은 Azure Functions 모니터링을 참조하세요. 인스턴스를 활성화할 때까지 비용이 발생하지 않습니다.

  7. 이 스크립트를 사용하여 Application Insights 인스턴스의 모니터링 메트릭 게시자 역할에 사용자 할당 관리 ID를 추가합니다.

    appInsights=$(az monitor app-insights component show --resource-group "AzureFunctionsQuickstart-rg" \
        --app <APP_NAME> --query "id" --output tsv)
    principalId=$(az identity show --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" \
        --query principalId -o tsv)
    az role assignment create --role "Monitoring Metrics Publisher" --assignee $principalId --scope $appInsights
    

    이 예제에서는 <APP_NAME>을 함수 앱 이름으로 바꿉니다. az role assignment create 명령은 사용자를 역할에 추가합니다. Application Insights 인스턴스의 리소스 ID와 사용자의 보안 주체 ID는 각각 az monitor app-insights component showaz identity show 명령을 사용하여 가져옵니다.

애플리케이션 설정 업데이트

Functions 호스트가 공유 비밀을 사용하여 기본 스토리지 계정에 연결할 수 있도록 하려면, AzureWebJobsStorage 연결 문자열 설정을 여러 AzureWebJobsStorage__ 접두사가 붙은 설정으로 바꾸십시오. 이러한 설정은 앱이 사용자 할당 관리 ID를 사용하여 스토리지 및 Application Insights에 연결하는 데 사용하는 복잡한 설정을 정의합니다.

  1. 이 스크립트를 사용하여 사용자 할당 관리 ID의 클라이언트 ID를 가져오고 이를 사용하여 스토리지 및 Application Insights에 대한 관리 ID 연결을 정의합니다.

    clientId=$(az identity show --name func-host-storage-user \
        --resource-group AzureFunctionsQuickstart-rg --query 'clientId' -o tsv)
    az functionapp config appsettings set --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" \
        --settings AzureWebJobsStorage__accountName=<STORAGE_NAME> \
        AzureWebJobsStorage__credential=managedidentity AzureWebJobsStorage__clientId=$clientId \
        APPLICATIONINSIGHTS_AUTHENTICATION_STRING="ClientId=$clientId;Authorization=AAD"
    

    이 스크립트에서 <APP_NAME>를 함수 앱의 이름으로, <STORAGE_NAME>를 스토리지 계정의 이름으로 각각 바꾸십시오.

  2. az functionapp config appsettings delete 명령을 실행하여 공유 비밀 키를 포함하는 기존 AzureWebJobsStorage 연결 문자열 설정을 제거합니다.

    az functionapp config appsettings delete --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" --setting-names AzureWebJobsStorage
    

    이 예제에서는 <APP_NAME>를 함수 앱의 이름으로 교체합니다.

이 시점에서 Functions 호스트는 공유 비밀 대신 관리 ID를 사용하여 스토리지 계정에 안전하게 연결할 수 있습니다. 이제 Azure 리소스에 프로젝트 코드를 배포할 수 있습니다.

Azure에 함수 프로젝트 배포

Azure에서 함수 앱을 성공적으로 만들었으면 이제 func azure functionapp publish 명령을 사용하여 로컬 함수 프로젝트를 배포할 준비가 되었습니다.

  1. 루트 프로젝트 폴더에서 다음 func azure functionapp publish 명령을 실행합니다.

    func azure functionapp publish <APP_NAME>
    

    이 예제에서는 <APP_NAME>을 앱 이름으로 바꿉니다. 배포에 성공하면 다음 출력과 비슷한 결과가 표시됩니다(보기 편하게 자름).

     ...
    
     Getting site publishing info...
     Creating archive for current directory...
     Performing remote build for functions project.
    
     ...
    
     Deployment successful.
     Remote build succeeded!
     Syncing triggers...
     Functions in msdocs-azurefunctions-qs:
         HttpExample - [httpTrigger]
             Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
     
  2. 로컬 터미널 또는 명령 프롬프트에서 이 명령을 실행하여 액세스 키를 포함한 URL 엔드포인트 값을 가져옵니다.

    func azure functionapp list-functions <APP_NAME> --show-keys
    

    이 예제에서는 <APP_NAME>를 앱의 이름으로 다시 바꾸십시오.

  3. 함수 엔드포인트를 호출하는 데 사용하는 반환된 엔드포인트 URL 및 키를 복사합니다.

pom.xml 파일 업데이트

Azure에서 함수 앱을 성공적으로 만든 후 Maven이 새 앱에 배포할 수 있도록 pom.xml 파일을 업데이트합니다. 그렇지 않으면 Maven은 배포 중에 새 Azure 리소스 집합을 만듭니다.

  1. Azure Cloud Shell에서 다음 az functionapp show 명령을 사용하여 새 사용자 할당 관리 ID의 배포 컨테이너 URL 및 ID를 가져옵니다.

    az functionapp show --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg  \
        --query "{userAssignedIdentityResourceId: properties.functionAppConfig.deployment.storage.authentication.userAssignedIdentityResourceId, \
        containerUrl: properties.functionAppConfig.deployment.storage.value}"
    

    이 예제에서는 <APP_NAME>를 함수 앱의 이름으로 교체합니다.

  2. 프로젝트 루트 디렉터리에서 텍스트 편집기로 pom.xml 파일을 열고 properties 요소를 찾아 특정 속성 값을 갱신합니다.

    속성 이름 Value
    java.version 와 같이 로컬에서 확인한 것과 동일한 17 사용합니다.
    azure.functions.maven.plugin.version 1.37.1
    azure.functions.java.library.version 3.1.0
    functionAppName Azure의 함수 앱 이름.
  3. configurationazure-functions-maven-plugin 섹션을 찾아서 이 XML 조각으로 바꿉니다.

    <configuration>
        <appName>${functionAppName}</appName>
        <resourceGroup>AzureFunctionsQuickstart-rg</resourceGroup>
        <pricingTier>Flex Consumption</pricingTier>
        <region>....</region>
        <runtime>
            <os>linux</os>
            <javaVersion>${java.version}</javaVersion>
        </runtime>
        <deploymentStorageAccount>...</deploymentStorageAccount>
        <deploymentStorageResourceGroup>AzureFunctionsQuickstart-rg</deploymentStorageResourceGroup>
        <deploymentStorageContainer>...</deploymentStorageContainer>
        <storageAuthenticationMethod>UserAssignedIdentity</storageAuthenticationMethod>
        <userAssignedIdentityResourceId>...</userAssignedIdentityResourceId>
        <appSettings>
            <property>
                <name>FUNCTIONS_EXTENSION_VERSION</name>
                <value>~4</value>
            </property>
        </appSettings>
    </configuration>
    
  4. configuration 요소에서 줄임표(...) 값을 다음과 같이 구체적으로 대체합니다.

    Configuration Value
    region 기존 함수 앱의 지역 코드(예: eastus.)
    deploymentStorageAccount 사용자 스토리지 계정의 이름입니다.
    deploymentStorageContainer 가져온 \ 값에서 containerUrl 다음에 오는 배포 공유의 이름입니다.
    userAssignedIdentityResourceId 가져온 관리 ID의 정규화된 리소스 ID입니다.
  5. 변경 내용을pom.xml 파일에 저장합니다.

이제 Maven을 사용하여 기존 앱에 코드 프로젝트를 배포할 수 있습니다.

Azure에 함수 프로젝트 배포

  1. 명령 프롬프트에서 다음 명령을 실행합니다.

    mvn clean package azure-functions:deploy
    
  2. 배포가 성공하면 이 Core Tools 명령을 실행하여 액세스 키를 포함한 URL 엔드포인트 값을 가져옵니다.

    func azure functionapp list-functions <APP_NAME> --show-keys
    

    이 예제에서는 <APP_NAME>를 앱의 이름으로 다시 바꾸십시오.

  3. 함수 엔드포인트를 호출하는 데 사용하는 반환된 엔드포인트 URL 및 키를 복사합니다.

Azure에서 함수 호출

함수는 HTTP 트리거를 사용하고 GET 요청을 지원하므로 함수 수준 액세스 키를 사용하여 해당 URL에 대한 HTTP 요청을 만들어 호출합니다. 브라우저에서 GET 요청을 실행하는 것이 가장 쉽습니다.

복사한 URL 및 액세스 키를 브라우저 주소 표시줄에 붙여넣습니다.

엔드포인트 URL은 다음 예제와 같이 표시됩니다.

https://contoso-app.azurewebsites.net/api/httpexample?code=aabbccdd...

이 경우 엔드포인트 URL에 대한 GET 요청을 수행할 때 쿼리 문자열에 액세스 키를 제공해야 합니다. 임의 클라이언트의 액세스를 제한하려면 액세스 키를 사용하는 것이 좋습니다. HTTP 클라이언트를 사용하여 POST 요청을 수행할 때 대신 헤더에 x-functions-key 액세스 키를 제공해야 합니다.

이 URL로 이동할 때 브라우저는 함수를 로컬로 실행할 때와 유사한 출력을 표시해야 합니다.

자원을 정리하세요

다음 단계를 계속 진행하여 Azure Storage 큐 출력 바인딩을 추가하는 경우 이미 수행한 작업을 기반으로 빌드할 때 모든 리소스를 그대로 유지합니다.

그렇지 않으면 추가 비용이 발생하지 않도록 다음 명령을 사용하여 리소스 그룹 및 포함된 모든 리소스를 삭제합니다.

az group delete --name AzureFunctionsQuickstart-rg

다음 단계