Anular las reglas de escalado de KEDA generadas automáticamente para Azure Functions en Container Apps

Functions en Container Apps normalmente se ejecuta en modo de escalado administrado por la plataforma. Al iniciarse, el host de Functions inspecciona los activadores (por ejemplo, HTTP, cola o temporizador), y Azure Container Apps crea la configuración del activador de KEDA correspondiente para la revisión de la aplicación.

Establezca properties.template.scale.allowScalingRuleOverride cuando desee deshabilitar esa asignación automática y proporcione sus propias reglas de escalado en template.scale.rules.

Prerequisites

  • Un recurso de Container Apps implementado como una aplicación de Functions (kind=functionapp).
  • CLI de Azure, con permiso para llamar a az rest sobre el recurso de la aplicación.
  • Versión 2026-03-02-preview o posterior de la API REST.

Definición de propiedad

Propiedad Tipo Default Se aplica a Versión de API
properties.template.scale.allowScalingRuleOverride boolean (admisión de valores NULL) false / null Funciones solo para Container Apps (kind=functionapp) 2026-03-02-preview y versiones posteriores

Comportamiento

Invalidar el valor Normas de escala Comportamiento
false o null Generado automáticamente Azure crea y administra reglas KEDA a partir de desencadenadores de Functions detectados. Las reglas proporcionadas por el usuario se bloquean en este modo.
true Definido por el cliente Azure no genera reglas basadas en desencadenadores. Las reglas que proporcione se usan para tomar decisiones de escala.
true sin reglas proporcionadas Ninguno proporcionado Azure omite la generación de reglas basadas en desencadenadores. Solo el comportamiento del escalador HTTP de línea base de la plataforma permanece activo.

Active la anulación y proporcione reglas de escalado personalizadas

Este ejemplo comienza con el escalado administrado por la plataforma (allowScalingRuleOverride=false) y cambia al control de reglas manual. La solicitud PATCH incluye una regla de cola Azure y una regla de simultaneidad HTTP.

  1. Cree un archivo de cuerpo PATCH denominado 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. Aplique la actualización.

    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
    

Resultado esperado:

  • Las reglas derivadas del desencadenador no se generan para la nueva revisión.
  • Las reglas personalizadas (my-queue-rule y my-http-rule) se adjuntan a la revisión.
  • El comportamiento de escalado horizontal ahora se basa en la profundidad de la cola (queueLength=20) y la simultaneidad HTTP (concurrentRequests=50).

Desactivar la anulación y volver a las reglas generadas por la plataforma

En este ejemplo se devuelve una aplicación configurada manualmente (allowScalingRuleOverride=true) al escalado administrado por la plataforma.

Importante

Se rechaza una solicitud que establece allowScalingRuleOverride=false mientras rules no está vacía. Para volver atrás, envíe rules: [] en el mismo PATCH.

  1. Cree un archivo de cuerpo PATCH denominado patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Aplique la actualización.

    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
    

Resultado esperado:

  • Se eliminan las reglas de escalado personalizadas.
  • Azure reanuda la creación de reglas de escalado a partir de desencadenadores de Functions detectados.
  • Se genera una nueva revisión con el escalado administrado por la plataforma.

Escenarios de error

Escenario Código de error Mensaje de error
Configurar allowScalingRuleOverride=true en una aplicación que no sea de Functions (kind no es functionapp) AllowScalingRuleOverrideNotApplicable La AllowScalingRuleOverride propiedad solo es aplicable a Function Apps (kind = 'functionapp'). No se puede establecer para otros tipos de aplicaciones de contenedor.
Establecer allowScalingRuleOverride=false mientras las reglas de escalado personalizadas siguen estando presentes FunctionAppCannotSetScaleRules No se puede cambiar al modo controlado por la plataforma si ya existen reglas, para evitar eliminar accidentalmente reglas de escalado definidas por el cliente. Los clientes deben establecer [] explícitamente (matriz vacía) en reglas de escalado si quieren que la plataforma administre automáticamente.