Automatisch generierte KEDA-Skalierungsregeln für Azure Functions in Container Apps überschreiben

Funktionen in Container-Apps werden normalerweise im plattformverwalteten Skalierungsmodus ausgeführt. Beim Start prüft der Funktionenhost Trigger (z. B. HTTP, Warteschlange oder Timer), und Azure Container Apps erstellt die entsprechende KEDA-Triggerkonfiguration für die App-Revision.

Setzen Sie properties.template.scale.allowScalingRuleOverride, wenn Sie diese automatische Zuordnung deaktivieren und eigene Skalierungsregeln in template.scale.rules angeben möchten.

Voraussetzungen

  • Eine Container-Apps-Ressource, die als Functions-App (kind=functionapp) bereitgestellt wird.
  • Die Azure CLI mit der Berechtigung, az rest für die App-Ressource aufzurufen.
  • REST-API-Version 2026-03-02-preview oder höher.

Eigenschaftsdefinition

Property Typ Vorgabe Gilt für: API-Version
properties.template.scale.allowScalingRuleOverride boolean (NULL-Werte zulassen) false / null Nur Funktionen für Container-Apps (kind=functionapp) 2026-03-02-preview und höher

Behavior

Außerkraftsetzungswert Skalierungsregeln Behavior
false oder null Automatisch generiert Azure erstellt und verwaltet KEDA-Regeln aus ermittelten Funktionentriggern. Vom Benutzer bereitgestellte Regeln werden in diesem Modus blockiert.
true Kundendefiniert Azure generiert keine triggerbasierten Regeln. Die von Ihnen bereitgestellten Regeln werden für Skalierungsentscheidungen verwendet.
true ohne Regeln angegeben Keine Angabe Azure überspringt die triggerbasierte Regelgenerierung. Nur das grundlegende HTTP-Scalerverhalten der Plattform bleibt aktiv.

Überschreibung aktivieren und benutzerdefinierte Skalierungsregeln angeben

Dieses Beispiel beginnt mit der plattformverwalteten Skalierung (allowScalingRuleOverride=false) und wechselt zur manuellen Regelsteuerung. Die PATCH-Anforderung enthält eine Azure Warteschlangenregel und eine HTTP-Parallelitätsregel.

  1. Erstellen Sie eine PATCH-Bodydatei mit dem Namen 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. Wenden Sie das Update an.

    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
    

Erwartetes Ergebnis:

  • Trigger-abgeleitete Regeln werden für die neue Revision nicht generiert.
  • Die benutzerdefinierten Regeln (my-queue-rule und my-http-rule) werden der Überarbeitung angefügt.
  • Das Skalierungsverhalten folgt jetzt der Warteschlangentiefe (queueLength=20) und der HTTP-Parallelität (concurrentRequests=50).

Außerkraftsetzung deaktivieren und auf plattformgenerierte Regeln zurücksetzen

In diesem Beispiel wird eine manuell konfigurierte App (allowScalingRuleOverride=true) zur plattformverwalteten Skalierung zurückgegeben.

Important

Eine Anforderung, die festlegt allowScalingRuleOverride=false , während rules nicht leer ist, wird abgelehnt. Um zurückzuwechseln, senden Sie rules: [] im selben PATCH-Vorgang.

  1. Erstellen Sie eine PATCH-Textkörperdatei mit dem Namen patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Wenden Sie das Update an.

    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
    

Erwartetes Ergebnis:

  • Benutzerdefinierte Skalierungsregeln werden gelöscht.
  • Azure setzt das Erstellen von Skalierungsregeln aus ermittelten Funktionentriggern fort.
  • Eine neue Revision wird mit plattformverwalteter Skalierung erstellt.

Fehlerszenarien

Scenario Fehlercode Fehlermeldung
Legen Sie allowScalingRuleOverride=true für eine Nicht-Funktions-App fest (kind ist nicht functionapp) AllowScalingRuleOverrideNotApplicable Die AllowScalingRuleOverride Eigenschaft gilt nur für Funktions-Apps (kind = 'functionapp'). Sie kann nicht für andere Container-App-Typen festgelegt werden.
Festlegen allowScalingRuleOverride=false , während benutzerdefinierte Skalierungsregeln noch vorhanden sind FunctionAppCannotSetScaleRules Kann nicht in den plattformgesteuerten Modus wechseln, wenn nicht leere Regeln vorhanden sind, um versehentlich gelöschte, vom Kunden definierte Skalierungsregeln zu schützen. Kunden müssen in den Skalierungsregeln explizit [] (leeres Array) festlegen, wenn die Plattform die Verwaltung automatisch übernehmen soll.