Automatisch gegenereerde KEDA-schaalregels overschrijven voor Azure Functions in Container Apps

Functions in Container Apps worden normaal gesproken uitgevoerd in de door het platform beheerde schaalmodus. Bij het opstarten inspecteert de Functions-host triggers (bijvoorbeeld HTTP, Wachtrij of Timer) en Azure Container Apps maakt de overeenkomende KEDA-triggerconfiguratie voor de app-revisie.

Stel properties.template.scale.allowScalingRuleOverride in wanneer u deze automatische toewijzing wilt uitschakelen en uw eigen schaalregels wilt opgeven in template.scale.rules.

Prerequisites

  • Een Container Apps-resource die is geïmplementeerd als een Functions-app (kind=functionapp).
  • De Azure CLI, met toestemming om az rest aan te roepen op de app-resource.
  • REST API-versie 2026-03-02-preview of nieuwer.

Eigenschapsdefinitie

Property Typ Standaard Van toepassing op: API-versie
properties.template.scale.allowScalingRuleOverride boolean (nullbaar) false / null Alleen functies in Container Apps (kind=functionapp) 2026-03-02-preview en hoger

Behavior

Overschrijvingswaarde Regels voor schalen Behavior
false of null Automatisch gegenereerd Azure maakt en beheert KEDA-regels van gedetecteerde Functions-triggers. Door de gebruiker opgegeven regels worden geblokkeerd in deze modus.
true Door de klant gedefinieerd Azure genereert geen regels op basis van triggers. De regels die u opgeeft, worden gebruikt voor schaalbeslissingen.
true zonder opgegeven regels Niet opgegeven Azure slaat het genereren van regels op basis van triggers over. Alleen het standaardgedrag van de HTTP-scaler van het platform blijft actief.

Overschrijving inschakelen en aangepaste schaalregels instellen

Dit voorbeeld begint met door platform beheerde schaalaanpassing (allowScalingRuleOverride=false) en schakelt over naar handmatig regelbeheer. De PATCH-aanvraag bevat één Azure wachtrijregel en één HTTP-gelijktijdigheidsregel.

  1. Maak een PATCH-hoofdbestand met de naam 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. Pas deze update toe.

    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
    

Verwacht resultaat:

  • Door triggers afgeleide regels worden niet gegenereerd voor de nieuwe revisie.
  • De aangepaste regels (my-queue-rule en my-http-rule) zijn gekoppeld aan de revisie.
  • Uitschaalgedrag volgt nu de wachtrijlengte (queueLength=20) en HTTP-concurrency (concurrentRequests=50).

Overschrijving uitschakelen en terugzetten naar door het platform gegenereerde regels

In dit voorbeeld wordt een handmatig geconfigureerde app (allowScalingRuleOverride=true) geretourneerd naar door het platform beheerde schaalaanpassing.

Important

Een aanvraag waarbij allowScalingRuleOverride=false wordt ingesteld terwijl rules niet leeg is, wordt afgewezen. Als u wilt teruggaan, stuurt u rules: [] in dezelfde PATCH.

  1. Maak een PATCH-hoofdbestand met de naam patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Pas deze update toe.

    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
    

Verwacht resultaat:

  • Aangepaste schaalregels worden verwijderd.
  • Azure hervat het maken van schaalregels op basis van gedetecteerde Functions-triggers.
  • Er wordt een nieuwe revisie geproduceerd met door het platform beheerde schaalaanpassing.

Foutscenario's

Scenario Foutcode Foutmelding
Stel allowScalingRuleOverride=true in op een app die geen Functions-app is (kind is geen functionapp) AllowScalingRuleOverrideNotApplicable De AllowScalingRuleOverride eigenschap is alleen van toepassing op Functie-apps (kind = 'functionapp'). Het kan niet worden ingesteld voor andere soorten container-apps.
Instellen op allowScalingRuleOverride=false zolang aangepaste schaalregels nog aanwezig zijn FunctionAppCannotSetScaleRules Er kan niet worden overgeschakeld naar de platformbeheerde modus als er niet-lege schaalregels bestaan, om te voorkomen dat door de klant gedefinieerde schaalregels per ongeluk worden verwijderd. Klanten moeten expliciet [] (lege array) instellen in schaalregels als ze willen dat het platform dit automatisch beheert.