함수 앱 관리

Azure Functions에서 함수 앱은 개별 함수에 대한 실행 컨텍스트를 제공합니다. 함수 앱 동작은 지정된 함수 앱에서 호스트하는 모든 함수에 적용됩니다. 함수 앱의 모든 함수는 동일한 언어여야 합니다.

함수 앱의 개별 함수는 함께 배포되며 함께 확장됩니다. 동일한 함수 앱의 모든 함수는 함수 앱이 확장될 때 인스턴스당 리소스를 공유합니다.

연결 문자열, 환경 변수 및 기타 애플리케이션 설정은 각 함수 앱에 대해 개별적으로 정의됩니다. 함수 앱 간에 공유해야 하는 모든 데이터는 지속형 스토리지에 외부적으로 저장해야 합니다.

Azure Portal에서 시작

참고 항목

Azure Portal에서 함수 코드를 편집하는 데 제한이 있으므로 함수를 로컬로 개발하고 Azure의 함수 앱에 코드 프로젝트를 게시해야 합니다. 자세한 내용은 Azure Portal의 개발 제한 사항을 참조하세요.

  1. 우선, Azure 계정을 사용하여 Azure Portal에 로그인합니다. 포털 맨 위에 있는 검색 표시줄에 함수 앱의 이름을 입력하고 목록에서 선택합니다.

  2. 왼쪽 창의 설정 아래 구성을 선택합니다.

    Function app overview in the Azure portal

개요 페이지, 특히 애플리케이션 설정플랫폼 기능에서 함수 앱을 관리하는 데 필요한 모든 항목으로 이동할 수 있습니다.

애플리케이션 설정 작업

함수 코드에 필요한 애플리케이션 설정을 원하는 대로 만들 수 있습니다. Functions에서 사용되는 미리 정의된 애플리케이션 설정도 있습니다. 자세한 내용은 Azure Functions에 대한 앱 설정 참조를 참조하세요.

이러한 설정은 암호화되어 저장됩니다. 자세히 알아보려면 애플리케이션 설정 보안을 참조하세요.

애플리케이션 설정은 Azure Portal에서 관리하거나 Azure CLIAzure PowerShell을 사용하여 관리할 수 있습니다. Visual Studio CodeVisual Studio에서 애플리케이션 설정을 관리할 수도 있습니다.

애플리케이션 설정을 찾으려면 Azure Portal에서 시작을 참조하세요.

애플리케이션 설정 탭은 함수 앱에서 사용하는 설정을 유지 관리합니다. 포털에서 값 표시를 선택하여 값을 확인해야 합니다. 포털에서 설정을 추가하려면 새 애플리케이션 설정을 선택하고 새 키-값 쌍을 추가합니다.

Function app settings in the Azure portal.

애플리케이션 설정 사용

이 함수 앱 설정 값은 코드에서 환경 변수로 읽을 수도 있습니다. 자세한 내용은 다음 언어별 참조 항목의 Environment 변수 섹션을 참조하세요.

함수 앱을 로컬로 개발하는 경우 local.settings.json 프로젝트 파일에 이러한 값의 로컬 복사본을 유지 관리해야 합니다. 자세히 알아보려면 로컬 설정 파일을 참조하세요.

FTPS 배포 설정

Azure Functions는 FTPS를 사용하여 함수 앱에 프로젝트 코드 배포를 지원합니다. 이 배포 방법을 사용하려면 트리거를 동기화해야 하므로 권장되지 않습니다. 프로젝트 파일을 안전하게 전송하려면 언제나 FTP 대신 FTPS를 사용합니다.

다음 방법 중 하나를 사용하여 FTPS 배포에 필요한 자격 증명을 가져올 수 있습니다.

함수 앱에 대한 게시 프로필을 다운로드하여 Azure Portal의 FTPS 게시 자격 증명을 가져올 수 있습니다.

Important

게시 프로필에는 중요한 보안 자격 증명이 포함되어 있습니다. 로컬 컴퓨터에서는 다운로드한 파일을 항상 보호해야 합니다.

함수 앱의 게시 프로필을 다운로드하려면 다음을 수행합니다.

  1. 함수 앱의 개요 페이지를 선택한 다음 게시 프로필 가져오기를 선택합니다.

    Download publish profile

  2. 파일 콘텐츠를 저장한 후 복사합니다.

  1. 파일에서 특성이 publishMethod="FTP"publishProfile 요소를 찾습니다. 이 요소에서 publishUrl, userName 특성과 userPWD 특성에는 FTPS 게시에 대한 대상 URL 및 자격 증명이 포함됩니다.

호스팅 계획 유형

함수 앱을 만들 때 앱이 실행되는 호스팅 계획도 만들 수도 있습니다. 계획에는 하나 이상의 함수 앱이 있을 수 있습니다. 함수의 기능, 크기 조정 및 가격은 계획 유형에 따라 달라집니다. 자세히 알아보려면 Azure Functions 호스팅 옵션을 참조하세요.

Azure Portal에서 함수 앱에 사용되는 계획의 유형을 결정하거나 Azure CLI 또는 Azure PowerShell API를 사용하여 확인할 수 있습니다.

다음 값은 계획 유형을 가리킵니다.

플랜 유형 포털 Azure CLI/PowerShell
소비 소비 Dynamic
Premium ElasticPremium ElasticPremium
전용(App Service) 다양 다양

함수 앱에서 사용하는 계획의 유형을 결정하려면 Azure Portal의 함수 앱에 대한 개요 탭에서 App Service 계획을 참조하세요. 가격 책정 계층을 보려면 App Service 계획의 이름을 선택한 다음 왼쪽 창에서 속성을 선택합니다.

View scaling plan in the portal

마이그레이션 계획

Azure Portal 또는 Azure CLI 명령을 사용하여 Windows에서 소비 플랜과 프리미엄 플랜 간에 함수 앱을 마이그레이션할 수 있습니다. 플랜 간에 마이그레이션할 때 다음 고려 사항에 유의합니다.

  • 전용(App Service) 요금제에 대한 직접 마이그레이션은 현재 지원되지 않습니다.
  • 마이그레이션은 Linux에서 지원되지 않습니다.
  • 원본 플랜과 대상 플랜은 동일한 리소스 그룹 및 지리적 지역에 있어야 합니다. 자세한 내용은 앱을 다른 App Service 계획으로 이동을 참조하세요.
  • 특정 CLI 명령은 마이그레이션 방향에 따라 다릅니다.
  • 함수 앱이 한쪽 계획에서 다른쪽 계획으로 마이그레이션될 때 함수 실행이 가동 중지되는 시간이 발생합니다.
  • 상태 및 기타 앱별 콘텐츠는 마이그레이션 전후에 앱에서 동일한 Azure Files 공유를 사용하므로 유지됩니다.

포털에서 마이그레이션

Azure Portal에서 소비 또는 프리미엄 플랜 앱으로 이동하고 App Service 요금제에서 App Service 요금제 변경을 선택합니다. 다른 플랜 유형을 선택하고 새 형식의 새 App Service 요금제를 만들고 확인을 선택합니다. 자세한 내용은 앱을 다른 App Service 계획으로 이동을 참조하세요.

사용 계획에서 프리미엄 계획으로

다음 절차를 사용하여 사용 계획에서 Windows의 프리미엄 계획으로 마이그레이션할 수 있습니다.

  1. 다음과 같이 az functionapp plan create 명령을 실행하여 기존 함수 앱과 동일한 지역 및 리소스 그룹에 새 App Service 요금제(탄력적 프리미엄)를 만듭니다.

    az functionapp plan create --name <NEW_PREMIUM_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP> --location <REGION> --sku EP1
    
  2. 다음과 같이 az functionapp update 명령을 실행하여 기존 함수 앱을 새 프리미엄 계획으로 마이그레이션합니다.

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_PREMIUM_PLAN>
    
  3. 이전 사용 함수 앱 계획이 더 이상 필요하지 않은 경우 새 함수로 성공적으로 마이그레이션되었는지 확인한 후 원래 함수 앱 계획을 삭제합니다. 다음과 같이 az functionapp plan list 명령을 실행하여 리소스 그룹의 모든 사용 계획 목록을 가져옵니다.

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='Y'].{PlanName:name,Sites:numberOfSites}" -o table
    

    사이트를 0개 포함하는 마이그레이션 이전의 계획을 안전하게 삭제할 수 있습니다.

  4. 다음과 같이 az functionapp plan delete 명령을 실행하여 마이그레이션한 사용 계획을 삭제합니다.

    az functionapp plan delete --name <CONSUMPTION_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP>
    

프리미엄 계획에서 사용 계획으로

다음 절차를 사용하여 프리미엄 계획에서 Windows의 사용 계획으로 마이그레이션할 수 있습니다.

  1. 다음과 같이 az functionapp plan create 명령을 실행하여 기존 함수 앱과 동일한 지역 및 리소스 그룹에 새 함수 앱(사용)을 만듭니다. 또한 이 명령은 함수 앱이 실행되는 새 사용 계획을 만듭니다.

    az functionapp create --resource-group <MY_RESOURCE_GROUP> --name <NEW_CONSUMPTION_APP_NAME> --consumption-plan-location <REGION> --runtime dotnet --functions-version 3 --storage-account <STORAGE_NAME>
    
  2. 다음과 같이 az functionapp update 명령을 실행하여 기존 함수 앱을 새 사용 계획으로 마이그레이션합니다.

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_CONSUMPTION_PLAN> --force
    
  3. 기존 함수 앱을 실행하기 위해 만든 계획만 필요하므로 다음과 같이 az functionapp delete 명령을 실행하여 1단계에서 만든 함수 앱을 삭제합니다.

    az functionapp delete --name <NEW_CONSUMPTION_APP_NAME> --resource-group <MY_RESOURCE_GROUP>
    
  4. 이전 프리미엄 함수 앱 계획이 더 이상 필요하지 않은 경우 새 함수로 성공적으로 마이그레이션되었는지 확인한 후 원래 함수 앱 계획을 삭제합니다. 프리미엄 플랜이 삭제될 때까지 요금이 계속 청구됩니다. 다음과 같이 az functionapp plan list 명령을 실행하여 리소스 그룹의 모든 프리미엄 계획 목록을 가져옵니다.

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='EP'].{PlanName:name,Sites:numberOfSites}" -o table
    
  5. 다음과 같이 az functionapp plan delete 명령을 실행하여 마이그레이션한 프리미엄 계획을 삭제합니다.

    az functionapp plan delete --name <PREMIUM_PLAN> --resource-group <MY_RESOURCE_GROUP>
    

함수 액세스 키 가져오기

HTTP 트리거 함수는 일반적으로 https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME> 형식의 URL을 사용하여 호출할 수 있습니다. 함수에 대한 권한 부여가 anonymous 이외의 값으로 설정된 경우, 요청에 액세스 키도 제공해야 합니다. ?code= 쿼리 문자열 또는 요청 헤더를 사용하여 URL에 액세스 키를 제공할 수 있습니다. 자세한 내용은 함수 액세스 키를 참조하세요. 액세스 키를 얻는 데는 몇 가지 방법이 있습니다.

  1. Azure Portal에 로그인한 다음, 함수 앱을 검색하고 선택합니다.

  2. 확인하려는 함수를 선택합니다.

  3. 함수 아래의 왼쪽 탐색에서 앱 키를 선택합니다.

    그러면 앱의 모든 함수에 액세스하는 데 사용할 수 있는 호스트 키가 반환됩니다. 또한 모든 함수 앱 API에 대한 관리자 수준의 액세스 권한을 제공하는 시스템 키를 반환합니다.

HTTP 트리거 함수의 개발자 아래에서 기능 키를 선택하여 특정 기능 키에 대한 키만 사용하여 최소 권한을 연습할 수도 있습니다.

Azure Portal의 개발 제한 사항

Azure Portal에서 함수를 개발할 때는 다음과 같은 제한 사항을 고려해야 합니다.

  • 포털 내 편집은 JavaScript, PowerShell, Python 및 C# 스크립트 함수에 대해서만 지원됩니다.
  • Python 포털 내 편집은 소비 플랜에서 실행되는 경우에만 지원됩니다.
  • 포털 내 편집은 현재 포털에서 만들어졌거나 마지막으로 편집된 함수에 대해서만 지원됩니다.
  • 포털 외부에서 함수 앱에 코드를 배포하면 더 이상 포털에서 해당 함수 앱에 대한 코드를 편집할 수 없습니다. 이 경우에는 계속해서 로컬 개발을 사용합니다.
  • 컴파일된 C# 함수, Java 함수 및 일부 Python 함수의 경우 포털에서 함수 앱 및 관련 리소스를 만들 수 있습니다. 그러나 함수 코드 프로젝트를 로컬로 만든 다음, Azure에 게시해야 합니다.

가능하면 함수를 로컬로 개발하고 코드 프로젝트를 Azure의 함수 앱에 게시해야 합니다. 자세한 내용은 Azure Functions를 로컬에서 코딩 및 테스트를 참조하세요.

수동으로 확장 설치

C# 클래스 라이브러리 함수는 클래스 라이브러리 프로젝트에서 직접 바인딩 확장을 위한 NuGet 패키지를 포함할 수 있습니다. 다른 non-.NET 언어 및 C# 스크립트의 경우 확장 번들을 사용해야 합니다. 확장을 수동으로 설치해야 하는 경우 로컬로 Azure Functions Core Tools를 사용하여 이렇게 할 수 있습니다. 확장 번들을 사용할 수 없고 포털에서만 작업할 수 있는 경우 고급 도구(Kudu)를 사용하여 사이트에서 직접 extensions.csproj 파일을 수동으로 만들어야 합니다. 먼저 host.json 파일에서 extensionBundle 요소를 제거해야 합니다.

이 동일한 프로세스는 앱에 추가해야 하는 다른 모든 파일에 대해 작동합니다.

Important

가능한 경우 Azure의 함수 앱에서 직접 파일을 편집하면 안 됩니다. 앱 파일을 로컬로 다운로드하고, Core Tools를 사용하여 확장 및 기타 패키지를 설치하고, 변경 내용의 유효성을 검사한 다음, 기타 지원되는 배포 방법 중 하나 또는 Core Tools를 사용하여 앱을 다시 배포하는 것이 좋습니다.

Azure Portal에 기본 제공되는 Functions 편집기를 사용하면 포털에서 직접 함수 코드 및 구성 파일을 업데이트할 수 있습니다.

  1. 함수 앱을 선택한 다음 Functions에서 Functions를 선택합니다.
  2. 함수를 선택하고 개발자에서 코드 + 테스트를 선택합니다.
  3. 편집할 파일을 선택하고 완료되면 저장을 선택합니다.

function.proj 또는 extension.csproj와 같은 앱 루트의 파일은 고급 도구(Kudu)를 사용하여 만들고 편집해야 합니다.

  1. 함수 앱을 선택한 다음 개발 도구에서 고급 도구>이동을 선택합니다.

  2. 메시지가 표시되는 경우 Azure 자격 증명을 사용하여 SCM 사이트에 로그인합니다.

  3. 디버그 콘솔 메뉴에서 CMD를 선택합니다.

  4. .\site\wwwroot로 이동하여 상단의 더하기(+) 단추를 선택한 다음 새 파일을 선택합니다.

  5. 파일 이름(예: extensions.csproj)을 지정하고 Enter 키를 누릅니다.

  6. 새 파일 옆에 있는 편집 단추를 선택하고 파일에 코드를 추가하거나 업데이트한 다음 저장을 선택합니다.

  7. extension.csproj와 같은 프로젝트 파일의 경우 다음 명령을 실행하여 확장 프로젝트를 다시 빌드합니다.

    dotnet build extensions.csproj
    

플랫폼 기능

함수 앱은 Azure App Service 플랫폼에서 실행되고 유지 관리됩니다. 따라서 함수 앱은 Azure의 핵심 웹 호스팅 플랫폼 기능 대부분에 액세스할 수 있습니다. Azure Portal에서 작업하는 경우 왼쪽 창에서 함수 앱에서 사용할 수 있는 App Service 플랫폼의 많은 기능에 액세스할 수 있습니다.

다음 매트릭스는 호스팅 계획 및 운영 체제에 의한 포털 기능 지원을 나타냅니다.

기능 소비 계획 프리미엄 계획 전용 계획
고급 도구(Kudu) Windows: ✔
Linux: X
App Service 편집기 Windows: ✔
Linux: X
Windows: ✔
Linux: X
Windows: ✔
Linux: X
Backup X X
콘솔 Windows: 명령줄
Linux: X
Windows: 명령줄
Linux: SSH
Windows: 명령줄
Linux: SSH

이 문서의 나머지 부분에서는 함수 앱에 유용한 포털의 다음 기능에 대해 집중적으로 설명합니다.

App Service 설정을 사용하는 방법에 대한 자세한 내용은 Azure App Service 설정 구성을 참조하세요.

App Service 편집기

The App Service editor

App Service 편집기는 JSON 구성 파일과 코드 파일을 둘 다 수정하는 데 사용할 수 있는 포털 내 고급 편집기입니다. 이 옵션을 선택하면 기본 편집기와 함께 별도의 브라우저 탭이 실행됩니다. 이를 통해 Git 리포지토리와 통합하고 코드를 실행 및 디버깅하며 함수 앱 설정을 수정할 수 있습니다. 이 편집기는 기본 제공 함수 편집기와 비교할 때 함수에 대해 고급 개발 환경을 제공합니다.

로컬 컴퓨터에서 함수를 개발하는 것이 좋습니다. 로컬로 개발하고 Azure에 게시하는 경우 프로젝트 파일은 포털에서 읽기 전용입니다. 자세히 알아보려면 로컬로 Azure Functions 코딩 및 테스트를 참조하세요.

콘솔

Function app console

포털 내 콘솔은 명령줄에서 함수 앱과 상호 작용하려는 경우에 이상적인 개발자 도구입니다. 일반적인 명령에는 배치 파일 및 스크립트 실행과 함께 디렉터리 및 파일의 생성 및 탐색이 포함됩니다.

로컬로 개발하는 경우 Azure Functions Core ToolsAzure CLI를 사용하는 것이 좋습니다.

고급 도구(Kudu)

Configure Kudu

App Service용 고급 도구(Kudu라고도 함)를 사용하면 함수 앱의 고급 관리 기능에 액세스할 수 있습니다. Kudu에서 시스템 정보, 앱 설정, 환경 변수, 사이트 확장, HTTP 헤더 및 서버 변수를 관리할 수 있습니다. https://<myfunctionapp>.scm.azurewebsites.net/과 같은 함수 앱에 대한 SCM 엔드포인트로 이동하여 Kudu를 시작할 수도 있습니다.

배포 센터

소스 제어 솔루션을 사용하여 함수 코드를 개발하고 유지 관리하는 경우 배포 센터를 사용하여 소스 제어에서 빌드 및 배포할 수 있습니다. 업데이트를 수행할 때 프로젝트가 빌드되고 Azure에 배포됩니다. 자세한 내용은 Azure Functions의 배포 기술을 참조하세요.

크로스-원본 자원 공유

클라이언트에서 악의적인 코드가 실행되는 것을 방지하기 위해 최신 브라우저는 웹 애플리케이션의 요청을 별도의 도메인에서 실행되는 리소스로 차단합니다. CORS(원본 간 리소스 공유)를 사용하면 Access-Control-Allow-Origin 헤더에서 함수 앱의 엔드포인트를 호출할 수 있는 원본을 선언할 수 있습니다.

포털

함수 앱에 대해 허용된 원본 목록을 구성할 때 Access-Control-Allow-Origin 헤더는 함수 앱의 HTTP 엔드포인트에서 모든 응답에 자동으로 추가됩니다.

Configure function app's CORS list

다른 도메인 항목이 있는 경우 와일드카드(*)는 무시됩니다.

az functionapp cors add 명령을 사용하여 허용된 원본 목록에 도메인을 추가합니다. 다음 예에서는 contoso.com 도메인을 추가합니다.

az functionapp cors add --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--allowed-origins https://contoso.com

az functionapp cors show 명령을 사용하여 현재 허용된 원본을 나열합니다.

인증

Configure authentication for a function app

함수가 HTTP 트리거를 사용하는 경우 먼저 호출이 인증되도록 요구할 수 있습니다. App Service는 Facebook, Microsoft 및 Twitter 같은 소셜 공급자를 사용하는 Microsoft Entra 인증 및 로그인을 지원합니다. 특정 인증 공급자를 구성하는 방법에 대한 자세한 내용은 Azure App Service 인증 개요를 참조하세요.

다음 단계