Share via


Azure Arc에서 첫 번째 함수 만들기(미리 보기)

이 빠른 시작에서는 Azure Functions 프로젝트를 만들어 Azure Arc 지원 Kubernetes 클러스터에서 실행되는 함수 앱에 배포합니다. 자세한 내용은 Azure Arc App Service, Functions 및 Logic Apps를 참조하세요. 이 시나리오는 Linux에서 실행되는 함수 앱만 지원합니다.

참고 항목

Azure Arc 지원 Kubernetes 클러스터에서 함수를 실행하기 위한 지원은 현재 미리 보기로 제공됩니다.

Azure Arc 지원 Kubernetes 클러스터에 PowerShell 함수 프로젝트를 게시하는 방식은 현재 지원되지 않습니다. Azure Arc 지원 Kubernetes 클러스터에 PowerShell 함수를 배포해야 하는 경우 컨테이너에서 함수 앱을 만듭니다.

함수 앱이 실행되는 컨테이너를 사용자 지정해야 하는 경우 Azure Arc에서 첫 번째 컨테이너화된 함수 만들기(미리 보기)를 참조하세요.

필수 조건

로컬 컴퓨터:

Azure Functions 핵심 도구 설치

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

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

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

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

App Service Kubernetes 환경 만들기

시작하기 전에 Azure Arc 지원 Kubernetes 클러스터에 대해 App Service Kubernetes 환경을 생성해야 합니다.

참고 항목

환경을 만들 때는 사용자 지정 위치 이름과 사용자 지정 위치가 포함된 리소스 그룹의 이름을 모두 기록해 둡니다. 이를 사용하면 환경에서 함수 앱을 만들 때 필요한 사용자 지정 위치 ID를 찾을 수 있습니다.

환경을 만들지 않은 경우 클러스터 관리자에게 문의하세요.

Azure CLI 확장 추가

Azure Cloud Shell에서 Bash 환경을 시작합니다.

이러한 CLI 명령은 아직 핵심 CLI 집합의 일부가 아니므로 다음 명령을 통해 추가합니다.

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

로컬 함수 프로젝트 만들기

Azure Functions에서 함수 프로젝트는 각각 특정 트리거에 응답하는 하나 이상의 개별 함수에 대한 배포 및 실행 단위입니다. 프로젝트의 모든 함수는 동일한 로컬 및 호스팅 구성을 공유합니다. 이 섹션에서는 단일 함수가 포함된 함수 프로젝트를 만듭니다.

  1. 다음과 같이 func init 명령을 실행하여 지정된 런타임에 LocalFunctionProj 폴더에 함수 프로젝트를 만듭니다.

    func init LocalFunctionProj --dotnet
    
  2. 프로젝트 폴더로 이동합니다.

    cd LocalFunctionProj
    

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

  3. 다음 명령을 사용하여 함수를 프로젝트에 추가합니다. 여기서 --name 인수는 함수(HttpExample)의 고유 이름이고, --template 인수는 함수의 트리거(HTTP)를 지정합니다.

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

로컬에서 함수 실행

  1. LocalFunctionProj 폴더에서 로컬 Azure Functions 런타임 호스트를 시작하여 함수를 실행합니다.

    func start
    

    출력의 끝 부분에 다음 줄이 표시됩니다.

    함수를 로컬로 실행할 때 터미널 창 출력의 스크린샷

    참고 항목

    HttpExample이 위와 같이 표시되지 않으면 프로젝트의 루트 폴더 외부에서 호스트를 시작했을 가능성이 높습니다. 이 경우 Ctrl+C를 사용하여 호스트를 중지하고, 프로젝트의 루트 폴더로 이동하여 이전 명령을 다시 실행합니다.

  2. 이 출력에서 HTTP 함수의 URL을 브라우저에 복사하고 쿼리 문자열 ?name=<YOUR_NAME>을 추가하여 전체 URL을 http://localhost:7071/api/HttpExample?name=Functions와 같이 만듭니다. 브라우저는 쿼리 문자열 값을 다시 에코하는 응답 메시지를 표시해야 합니다. 프로젝트를 시작한 터미널에도 요청 시 로그 출력이 표시됩니다.

  3. 완료되면 Ctrl + C를 누르고 y를 입력하여 함수 호스트를 중지합니다.

사용자 지정 위치 가져오기

사용자 지정 위치에서 함수 앱을 만들려면 환경에 대한 정보를 가져와야 합니다.

클러스터 관리자에서 사용자 지정 위치에 대한 다음 정보를 가져옵니다(사용자 지정 위치 만들기 참조).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

다음 단계를 위해 사용자 지정 위치 ID를 가져옵니다.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Azure 리소스 만들기

새 App Service Kubernetes 환경에 함수 코드를 배포하려면 먼저 다음 두 개의 리소스를 추가로 만들어야 합니다.

  • 스토리지 계정. 이 문서에서는 스토리지 계정을 만들지만 경우에 따라 스토리지 계정이 필요하지 않을 수 있습니다. 자세한 내용은 스토리지 고려 사항 문서에서 Azure Arc 지원 클러스터를 참조하세요.
  • 함수 앱 - 함수 코드를 실행하기 위한 컨텍스트를 제공합니다. 함수 앱은 App Service Kubernetes 환경에서 실행되고 로컬 함수 프로젝트에 매핑됩니다. 함수 앱을 통해 함수를 논리 단위로 그룹화하여 더욱 쉽게 관리, 배포 및 리소스 공유할 수 있습니다.

참고 항목

함수 앱은 전용(App Service) 플랜의 App Service Kubernetes 환경에서 실행됩니다. 기존 플랜 없이 함수 앱을 만들면 올바른 플랜이 만들어집니다.

스토리지 계정 만들기

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

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

참고 항목

경우에 따라 스토리지 계정이 필요하지 않을 수 있습니다. 자세한 내용은 스토리지 고려 사항 문서에서 Azure Arc 지원 클러스터를 참조하세요.

이전 예제에서 <STORAGE_NAME>을 사용자에게 적절하고 Azure Storage에서 고유한 이름으로 바꿉니다. 이름은 3~24자의 숫자와 소문자만 포함해야 합니다. Standard_LRS는 범용 계정을 지정하며, Functions로 지원됩니다. --location 값은 표준 Azure 지역입니다.

함수 앱 만들기

az functionapp create 명령을 실행하여 환경에서 새 함수 앱을 만듭니다.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

이 예제에서 <CUSTOM_LOCATION_ID>를 App Service Kubernetes 환경에 대해 결정한 사용자 지정 위치의 ID로 바꿉니다. 또한 <STORAGE_NAME>을 이전 단계에서 사용한 계정의 이름으로 바꾸고, <APP_NAME>을 적절하고 전역적으로 고유한 이름으로 바꿉니다.

Azure에 함수 프로젝트 배포

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

루트 프로젝트 폴더에서 다음 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

Azure Arc 지원 Kubernetes 클러스터에서 전체 배포를 완료하는 데 다소 시간이 걸릴 수 있으므로 다음 명령을 다시 실행하여 게시된 함수를 확인할 수 있습니다.

func azure functionapp list-functions

Azure에서 함수 호출

함수에서 HTTP 트리거를 사용하므로 브라우저 또는 도구(예: curl)를 사용하여 URL에 대한 HTTP 요청을 수행하여 호출합니다.

publish 명령의 출력에 표시된 호출 URL 전체를 브라우저 주소 표시줄에 복사하여 ?name=Functions 쿼리 매개 변수를 추가합니다. 브라우저에서 함수를 로컬로 실행했을 때와 비슷한 출력이 표시됩니다.

브라우저에서 보여 주는 Azure에서 실행되는 함수의 출력

다음 단계

이제 함수 앱이 Azure Arc 지원 App Service Kubernetes 환경의 컨테이너에서 실행되고 있으므로, Queue Storage 출력 바인딩을 추가하여 Azure Storage에 연결할 수 있습니다.