Container Apps의 Azure Functions에 대해 자동 생성된 KEDA 스케일 규칙 재정의

Container Apps의 함수는 일반적으로 플랫폼 관리형 크기 조정 모드에서 실행됩니다. 시작 시 Functions 호스트는 트리거(예: HTTP, 큐 또는 타이머)를 검사하고, Azure Container Apps 앱 수정 버전에 대해 일치하는 KEDA 트리거 구성을 만듭니다.

자동 매핑을 비활성화하고 template.scale.rules에서 사용자 지정 크기 조정 규칙을 제공하려면 properties.template.scale.allowScalingRuleOverride로 설정하세요.

사전 요구 사항

  • Functions 앱(kind=functionapp)으로 배포된 Container Apps 리소스입니다.
  • 앱 리소스에 대해 az rest 호출할 수 있는 권한이 있는 Azure CLI.
  • REST API 버전 2026-03-02-preview 이상.

속성 정의

Property Type 기본값 적용 대상 API 버전
properties.template.scale.allowScalingRuleOverride boolean (null 허용) false / null Container Apps의 함수만(kind=functionapp) 2026-03-02-preview 및 이후

Behavior

값 재정의 스케일링 규칙 Behavior
false 또는 null 자동 생성 Azure 검색된 Functions 트리거에서 KEDA 규칙을 만들고 관리합니다. 사용자가 제공한 규칙은 이 모드에서 차단됩니다.
true 고객 설정 Azure 트리거 기반 규칙을 생성하지 않습니다. 제공하는 규칙은 크기 조정 결정에 사용됩니다.
true 규칙이 제공되지 않음 제공되지 않음 Azure 트리거 기반 규칙 생성을 건너뜁니다. 플랫폼의 기준 HTTP 스케일러 동작만 활성 상태로 유지됩니다.

재정의를 활성화하고 사용자 지정 크기 조정 규칙 제공

이 예제는 플랫폼 관리형 크기 조정(allowScalingRuleOverride=false)으로 시작하고 수동 규칙 제어로 전환합니다. PATCH 요청에는 하나의 Azure 큐 규칙과 하나의 HTTP 동시성 규칙이 포함됩니다.

  1. 라는 PATCH 본문 파일을 만듭니다 patch-enable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": true,
            "rules": [
              {
                "name": "my-queue-rule",
                "custom": {
                  "type": "azure-queue",
                  "metadata": {
                    "queueName": "my-test-queue",
                    "queueLength": "20",
                    "connectionFromEnv": "AzureWebJobsStorage"
                  }
                }
              },
              {
                "name": "my-http-rule",
                "http": {
                  "metadata": {
                    "concurrentRequests": "50"
                  }
                }
              }
            ]
          }
        }
      }
    }
    
  2. 업데이트를 적용합니다.

    az rest --method PATCH \
      --uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName}?api-version=2026-03-02-preview" \
      --headers "Content-Type=application/json" \
      --body @patch-enable-override.json
    

예상되는 결과:

  • 트리거 파생 규칙은 새 수정 버전에 대해 생성되지 않습니다.
  • 사용자 지정 규칙(my-queue-rulemy-http-rule)이 수정 버전에 연결됩니다.
  • 이제 스케일 아웃 동작은 큐 깊이(queueLength=20) 및 HTTP 동시성(concurrentRequests=50)을 따릅니다.

재정의 사용 안 함 및 플랫폼 생성 규칙으로 되돌리기

이 예제에서는 수동으로 구성된 앱(allowScalingRuleOverride=true)을 플랫폼 관리형 크기 조정에 반환합니다.

Important

비어있지 않은 상태에서 allowScalingRuleOverride=false 설정하는 rules 요청은 거부됩니다. 다시 전환하려면 같은 PATCH 요청에서 rules: []를 보내세요.

  1. 라는 PATCH 본문 파일을 만듭니다 patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. 업데이트를 적용합니다.

    az rest --method PATCH \
      --uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{appName}?api-version=2026-03-02-preview" \
      --headers "Content-Type=application/json" \
      --body @patch-disable-override.json
    

예상되는 결과:

  • 사용자 지정 크기 조정 규칙이 지워집니다.
  • Azure는 검색된 Functions 트리거를 기반으로 크기 조정 규칙 생성을 재개합니다.
  • 플랫폼 관리형 크기 조정을 사용하여 새 수정 버전이 생성됩니다.

오류 시나리오

Scenario 오류 코드 오류 메시지
Functions 앱이 아닌 앱(kindfunctionapp이 아님)에서 allowScalingRuleOverride=true 설정 AllowScalingRuleOverrideNotApplicable AllowScalingRuleOverride 속성은 Function Apps(kind = 'functionapp')에만 적용됩니다. 다른 컨테이너 앱 종류에 대해서는 설정할 수 없습니다.
사용자 지정 크기 조정 규칙이 아직 있는 상태에서 allowScalingRuleOverride=false 설정 FunctionAppCannotSetScaleRules 비어 있지 않은 규칙이 있는 경우 실수로 고객 정의 확장 규칙을 삭제하는 것을 보호하기 위해 플랫폼 제어 모드로 전환할 수 없습니다. 고객은 플랫폼이 자동으로 관리할 수 있도록 하려면 스케일 규칙에서 [](빈 배열)을 명시적으로 설정해야 합니다.