Azure Functions 런타임 버전을 대상으로 지정하는 방법

함수 앱은 Azure Functions 런타임의 특정 버전에서 실행됩니다. 기본적으로 함수 런타임의 최신 4.x 버전에서 함수 앱을 만듭니다. 지원되는 주 버전에서 실행되는 경우에만 사용자의 함수 앱이 지원됩니다. 이 문서에서는 필요한 경우 특정 버전의 Functions 런타임을 대상으로 지정하거나 고정 하도록 Azure에서 함수 앱을 구성하는 방법을 설명합니다.

고려 사항

특정 런타임 버전을 대상으로 지정할 때는 다음 사항을 고려해야 합니다.

  • Flex 소비 계획은 런타임 버전 4.x에서만 실행됩니다. Flex 소비 계획은 앱 설정을 지원하지 FUNCTIONS_EXTENSION_VERSION 않으므로 이 계획에서 실행할 때 앱은 특정 런타임 버전을 대상으로 지정할 수 없습니다.
  • 특정 버전을 대상으로 지정하는 방법은 사용자가 Windows와 Linux 중 어느 쪽을 실행하는지에 따라 다릅니다.
  • 이 문서는 Windows 또는 Linux에만 적용됩니다. 사용자의 운영 체제를 문서 상단에서 선택합니다.
  • 가능하면 항상 지원되는 최신 런타임 버전에서 앱을 실행합니다. 최신 버전에 문제가 있는 경우에만 지시에 따라 앱을 특정 버전에 고정하세요. 사용자의 함수가 올바르게 실행되는 즉시 항상 런타임의 최신 버전으로 업그레이드하도록 하세요.
  • 로컬 개발 중에는, Azure Functions Core Tools의 설치된 버전과 Azure에서 함수 앱이 사용하는 주 런타임 버전이 일치해야 합니다. 자세한 내용은 Core Tools 버전에서 확인할 수 있습니다.

사용자의 런타임 버전 업데이트하기

가능하면 항상 지원되는 최신 버전의 Azure Functions 런타임에서 함수 앱을 실행합니다. 함수 앱이 현재 이전 버전의 런타임에서 실행 중인 경우 앱을 버전 4.x로 마이그레이션합니다.

사용자의 앱에 기존 함수가 있는 경우에는, 더 높은 런타임 버전으로 업그레이드하기 전에 예방 조치를 취해야 합니다. 다음 문서에서는 언어별 호환성이 손상되는 변경을 포함하여 주 버전 간의 호환성이 손상되는 변경에 대해 자세히 설명합니다. 또한 기존 함수 앱의 성공적인 마이그레이션을 위한 단계별 지침을 제공합니다.

현재 런타임 버전은 현재 런타임 버전 보기에서 확인할 수 있습니다.

현재 런타임 버전 보기

함수 앱의 현재 런타임 버전은 다음 방법 중 하나로 확인할 수 있습니다.

다음 절차를 따라서 현재 함수 앱에서 사용하는 런타임 버전을 보고 업데이트하세요.

  1. Azure Portal에서 함수 앱으로 이동합니다.

  2. 설정을 확장한 다음, 구성을 선택합니다.

  3. 함수 런타임 설정 탭에서 런타임 버전을 확인합니다. 이 예제에서, 해당 버전은 ~4로 설정됩니다.

    런타임 버전을 확인하는 방법을 보여 주는 스크린샷입니다.

특정 버전으로 고정하기

Azure Functions를 사용하면 지정된 함수 앱에서 사용하는 런타임 버전을 FUNCTIONS_EXTENSION_VERSION 앱 설정을 사용하여 대상으로 지정할 수 있습니다. 주 버전(~4)만 지정하면, 함수 앱이 새 부 버전의 런타임을 사용 가능해지는 즉시 자동으로 업데이트됩니다. 부 버전 업데이트는 새 부 버전이 함수를 중단하는 변경 내용을 도입할 가능성이 없으므로 자동으로 업데이트됩니다.

Linux 앱은 linuxFxVersion 사이트 설정과 함께 FUNCTIONS_EXTENSION_VERSION을 사용하여 함수를 실행할 올바른 Linux 기본 이미지를 결정합니다. Linux에서 새 함수 앱을 생성하면, 런타임은 올바른 기본 이미지를 사용자의 언어 스택의 런타임 버전에 기반하여 자동으로 선택합니다.

특정 런타임 버전에 고정하면 함수 앱이 다시 시작됩니다.

특정 부 버전(예: 4.0.12345) FUNCTIONS_EXTENSION_VERSION을 지정하는 경우 자동 버전 업데이트로 다시 이동하도록 명시적으로 선택할 때까지 함수 앱을 해당 런타임의 특정 버전에 고정합니다. 함수 앱이 주 버전을 대상으로 지정하지 못하게 하는 문제를 해결하는 동안에는, 특정 부 버전에만 고정하세요. 이전 부 버전은 프로덕션 환경에서 정기적으로 제거됩니다. 함수 앱이 나중에 제거되는 부 버전에 고정되면 함수 앱은 설정된 버전 대신 가장 가까운 기존 버전에서 FUNCTIONS_EXTENSION_VERSION실행됩니다. App Service 공지 사항에서 부 버전 제거를 발표합니다.

참고

Visual Studio에서, 런타임의 특정 부 버전에 고정된 앱에 게시하려고 하는 경우에 최신 버전으로 업데이트하거나 게시를 취소하라는 대화 상자가 표시됩니다. 특정 부 버전을 사용해야 할 때, 이 확인을 피하려면 <DisableFunctionExtensionVersionUpdate>true</DisableFunctionExtensionVersionUpdate> 속성을 사용자의 .csproj 파일에 추가합니다.

사용자의 앱을 런타임의 특정 버전에 일시적으로 고정하려면, 다음 방법 중 하나를 사용하세요.

다음 절차를 따라서 현재 함수 앱에서 사용하는 런타임 버전을 보고 업데이트하세요.

  1. Azure Portal에서 함수 앱으로 이동합니다.

  2. 설정을 확장한 다음, 구성을 선택합니다.

  3. 함수 런타임 설정 탭에서 런타임 버전을 확인합니다. 이 예제에서, 해당 버전은 ~4로 설정됩니다.

    런타임 버전을 확인하는 방법을 보여 주는 스크린샷입니다.

  1. 특정 부 버전에 사용자의 앱을 고정하려면, 왼쪽 창에서 설정을 확장한 다음 환경 변수를 선택합니다.

  2. 앱 설정 탭에서 FUNCTIONS_EXTENSION_VERSION을 선택하고, 값을 필요한 부 버전으로 변경한 다음 적용을 선택합니다.

  3. 적용을 선택한 다음 확인을 선택하여 변경 사항을 적용하고, 해당 앱을 다시 시작합니다.

애플리케이션 설정에 이 변경 사항이 적용된 후에 함수 앱이 다시 시작됩니다.

Linux의 특정 런타임 버전에 함수 앱을 고정하려면 사이트 설정에서linuxFxVersion 버전별 기본 이미지 URL을 형식DOCKER|<PINNED_VERSION_IMAGE_URI>으로 설정합니다.

중요합니다

Linux의 고정된 기능 앱은 정기적인 보안 및 호스트 기능 업데이트를 받지 않습니다. 기술 지원 엔지니어가 이와 다른 설정을 권장하지 않는 한 FUNCTIONS_EXTENSION_VERSION 설정과 언어 및 버전에 대한 표준 linuxFxVersion 값(예: Python|3.12)을 사용합니다. 유효한 값에 대한 내용은 linuxFxVersion 참조 문서에서 확인할 수 있습니다.

특정 런타임에 대한 고정은 사용량 플랜에서 실행되는 Linux 함수 앱에 대해 현재 지원되지 않습니다.

다음 예제에서는 Node.js 22 함수 앱을 특정 런타임 버전 4.14.0.3에 고정하는 데 필요한 값을 보여줍니다 linuxFxVersion .

DOCKER|mcr.microsoft.com/azure-functions/node:4.14.0.3-node22

필요한 경우 기술 지원 엔지니어가 애플리케이션에 유효한 기본 이미지 URI를 제공할 수 있습니다.

다음 Azure CLI 명령을 사용하여 linuxFxVersion을 보고 설정합니다. 현재는 포털에서 또는 Azure PowerShell을 사용하여 linuxFxVersion을 설정할 수 없습니다.

  • 현재 런타임 버전을 확인하려면, az functionapp config show 명령을 사용합니다.

    az functionapp config show --name <function_app> \
    --resource-group <my_resource_group> --query 'linuxFxVersion' -o tsv
    

    이 코드에서, <function_app>을 사용자의 함수 앱 이름으로 교체합니다. 또한, <my_resource_group>을 사용자의 함수 앱의 리소스 그룹 이름으로 교체합니다. linuxFxVersion의 현재 값이 반환됩니다.

  • 함수 앱에서 linuxFxVersion 설정을 업데이트하려면, az functionapp config set 명령을 사용합니다.

    az functionapp config set --name <FUNCTION_APP> \
    --resource-group <RESOURCE_GROUP> \
    --linux-fx-version <LINUX_FX_VERSION>
    

    <FUNCTION_APP>을 사용자의 함수 앱 이름으로 교체합니다. 또한, <RESOURCE_GROUP>을 사용자의 함수 앱의 리소스 그룹 이름으로 교체합니다. 마지막으로 <LINUX_FX_VERSION>을 기술 지원 엔지니어가 제공한 특정 이미지 값으로 바꿉니다.

이전의 코드 예제에서 Cloud Shell 열기를 선택함으로써, Azure Cloud Shell에서 이러한 명령을 실행할 수 있습니다. 또한 로컬로 Azure CLI를 사용하여, az login을 실행하여 로그인한 후 이 명령을 실행할 수도 있습니다.

사이트 구성이 변경된 후 함수 앱이 다시 시작됩니다.

관리된 리눅스 이미지 업데이트

이 섹션은 Debian Bullseye 관리 이미지를 사용하는 Linux Elastic Premium 또는 Dedicated (App Service) 플랜에서 사용 중인 기존 Python 3.11 및 Java 8, 11, 17 앱에만 적용됩니다. 만약 앱이 이 모든 조건을 충족하지 못한다면, 이 절차를 따를 필요는 없습니다.

최신 관리형 이미지는 영향을 받는 앱이 지원되는 리눅스 배포판으로 이동하면서 현재 언어 버전을 유지할 수 있도록 임시 경로를 제공합니다. 이 절차는 Flex Consumption이나 커스텀 컨테이너 앱에는 적용되지 않습니다. Linux Consumption 플랜에 속한 앱은 Flex Consumption 플랜으로 이전하세요.

이 업데이트는 3부분 linuxFxVersion 값을 사용하여 기존 언어 버전에 맞는 리눅스 배포판을 선택합니다. 기능 호스트를 특정 DOCKER|<IMAGE_URI> 이미지에 고정하지 않습니다.

Bookworm 또는 Noble linuxFxVersion 값을 선택하세요

먼저, 언어 버전을 업데이트할 수 있는지, 현재 버전을 유지해야 하는지 결정하고 최신 리눅스 배포판을 선택하세요.

  1. 앱을 최신 지원 언어 버전으로 업데이트하는 것을 고려해 보세요. 언어 업데이트 후에는 해당 언어 버전에 대해 현재 기본 관리 이미지를 사용합니다.

  2. 앱이 현재 언어 버전을 유지해야 한다면, 해당 최신 이미지 값을 선택하세요:

    언어 버전 데비안 불스아이 가치 최신 배포판 최신 이미지 값
    Python 3.11 Python\|3.11\|2.0 데비안 북웜 Python\|3.11\|3.0
    Java 8 Java\|8\|2.0 우분투 노블 Java\|8\|4.0
    Java 11 Java\|11\|2.0 우분투 노블 Java\|11\|4.0
    Java 17 Java\|17\|2.0 우분투 노블 Java\|17\|4.0

    이 세 부분 값은 Bullseye 시대 이미지에 대해 관리되는 리눅스 이미지를 명시적으로 선택합니다. 그것들은 az functionapp list-runtimes 명령으로 반환되지 않습니다.

최신 관리형 리눅스 이미지를 테스트해 보세요

프로덕션 앱을 업데이트하기 전에 최신 이미지에 대한 앱과 의존성을 테스트하세요.

  1. 별도의 테스트 앱을 만들거나 배포 슬롯을 만드세요.

  2. 운영 앱에서 사용하는 동일한 코드와 구성을 테스트 앱이나 슬롯에 배포하세요.

  3. 이미지 값 업데이트의 단계를 따라 새로운 이미지 값을 설정하세요. 슬롯을 사용하는 경우 각 Azure CLI 명령에 --slot <SLOT_NAME>를 포함하세요.

  4. 각 함수를 호출하여 앱이 성공적으로 실행되는지, 트리거가 정상적으로 실행되는지, 네이티브 또는 운영 체제 의존성이 올바르게 로드되는지 확인하세요.

이미지 값을 업데이트하세요

이미지 값을 바꾸면 함수 앱이 재시작됩니다. 유지보수 기간 동안 운영 환경을 업데이트하거나 배포 슬롯을 사용하세요.

  1. 현재 linuxFxVersion 가치 보기:

    az functionapp config show --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --query linuxFxVersion --output tsv
    

    이 명령어는 사이트 구성에 저장된 값을 반환합니다. 반환된 값은 리눅스 배포판을 식별하는 세 부분 값 대신 언어 및 언어 버전 Python|3.11만 포함할 수 있습니다. 만약 값에 이미지 버전이 포함되어 있지 않다면, Verify the Linux 배포판 의 단계를 따라 앱이 현재 Debian Bullseye를 사용하고 있는지 확인하세요.

  2. linuxFxVersion을 최신 이미지 값으로 설정:

    az functionapp config set --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --linux-fx-version "<LANGUAGE|VERSION|IMAGE_VERSION>"
    

    Debian Bookworm에서 Python 3.11의 경우 Python|3.11|3.0를 사용하세요. Ubuntu Noble에서 Java의 경우 Java|8|4.0, Java|11|4.0 또는 Java|17|4.0를 사용하세요.

  3. 앱이 재시작될 때까지 기다려.

리눅스 배포판을 확인하세요

설정된 값과 앱을 실행하는 리눅스 배포판 모두를 확인하세요.

  1. 업데이트 linuxFxVersion 된 값을 확인하세요:

    az functionapp config show --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --query linuxFxVersion --output tsv
    

    명시적으로 세 부분 값을 설정했기 때문에, 이 명령어는 선택한 Bookworm 또는 Noble 값을 정확히 반환합니다.

  2. https://<APP_NAME>.scm.azurewebsites.net에서 앱의 Kudu 사이트를 여세요.

  3. 환경을 선택하고 KUDU_ENV을 검토하거나 SSH 세션을 열어 다음을 실행하세요:

    cat /etc/os-release
    
  4. 출력이 Python 3.11용 Debian Bookworm이나 Java 8, 11, 17용 Ubuntu Noble을 식별하는지 확인하세요.

  5. 각 기능을 호출하고 트리거와 의존성이 계속 정상적으로 작동하는지 확인하세요.

관리된 리눅스 이미지 업데이트를 롤백하세요

업데이트된 이미지가 호환성 문제를 일으키면, 문제를 해결하는 동안 이전 linuxFxVersion 값을 임시로 복원하세요.

Warning

Debian Bullseye는 종료 시절 이후 더 이상 지원되지 않으며 보안 업데이트도 받지 않습니다. 롤백은 임시 완화책으로만 사용하고, 가능한 한 빨리 지원되는 이미지로 돌아가세요.

  1. Bookworm 또는 Noble linuxFxVersion 값 선택의 표에서 사용 중인 언어 버전에 해당하는 Debian Bullseye 값을 찾으세요.

  2. linuxFxVersion를 해당 Bullseye 값으로 설정하세요:

    az functionapp config set --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --linux-fx-version "<BULLSEYE_LINUX_FX_VERSION>"
    
  3. 앱이 재시작될 때까지 기다린 후, 리 눅스 배포판 검증에서 같은 검사를 반복하세요.

다음 단계