Přepsat automaticky generovaná pravidla škálování KEDA pro Azure Functions v Azure Container Apps

Funkce v Container Apps se obvykle spouští v režimu škálování spravovaném platformou. Při spuštění hostitel Functions zkoumá triggery (například HTTP, fronta nebo časovač) a Azure Container Apps vytvoří pro revizi aplikace odpovídající konfiguraci triggeru KEDA.

Nastavte properties.template.scale.allowScalingRuleOverride , když chcete toto automatické mapování zakázat a poskytnout vlastní pravidla škálování v template.scale.rules.

Předpoklady

  • Prostředek Container Apps nasazený jako aplikace Functions (kind=functionapp).
  • Azure CLI s oprávněním k volání az rest u prostředku aplikace.
  • Verze 2026-03-02-preview rozhraní REST API nebo novější.

Definice vlastnosti

Property Typ Výchozí Vztahuje se na Verze rozhraní API
properties.template.scale.allowScalingRuleOverride boolean (s možnou hodnotou null) false / null Funkce pouze pro kontejnerové aplikace (kind=functionapp) 2026-03-02-preview a novější

Behavior

Přepisující hodnota Pravidla škálování Behavior
false nebo null Automaticky vygenerováno Azure vytváří a spravuje pravidla KEDA na základě zjištěných triggerů služby Functions. Uživatelem zablokovaná pravidla jsou v tomto režimu.
true Definované zákazníkem Azure negeneruje pravidla založená na triggerech. Pravidla, která zadáte, se používají k rozhodování o škálování.
true bez zadaných pravidel Není zadáno Azure přeskočí generování pravidel na základě triggerů. Aktivní zůstává pouze výchozí chování škálovače HTTP platformy.

Povolte přepsání a zadejte vlastní pravidla škálování

Tento příklad začíná škálováním spravovaným platformou (allowScalingRuleOverride=false) a přepne na ruční řízení pravidel. Požadavek PATCH obsahuje jedno pravidlo služby Azure Queue a jedno pravidlo souběžnosti pro HTTP.

  1. Vytvořte základní soubor PATCH s názvem 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. Nainstalujte aktualizaci.

    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
    

Očekávaný výsledek:

  • Pravidla odvozená od triggeru se negenerují pro novou revizi.
  • Vlastní pravidla (my-queue-rule a my-http-rule) jsou připojena k revizi.
  • Chování při horizontálním škálování se teď řídí hloubkou fronty (queueLength=20) a souběžností požadavků HTTP (concurrentRequests=50).

Zrušit přepsání a vrátit se k pravidlům generovaným platformou

Tento příklad vrátí ručně nakonfigurovanou aplikaci (allowScalingRuleOverride=true) pro škálování spravované platformou.

Important

Požadavek, který nastaví allowScalingRuleOverride=false , když rules není prázdný, se odmítne. Chcete-li přepnout zpět, odešlete rules: [] ve stejném požadavku PATCH.

  1. Vytvořte základní soubor PATCH s názvem patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Nainstalujte aktualizaci.

    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
    

Očekávaný výsledek:

  • Vlastní pravidla škálování jsou vymazána.
  • Azure obnoví vytváření pravidel škálování ze zjištěných triggerů functions.
  • Vytvoří se nová revize se škálováním spravovaným platformou.

Chybové scénáře

Scenario Kód chyby Zpráva o chybě
Nastavit allowScalingRuleOverride=true v aplikaci, která není aplikací Functions (kind není functionapp) AllowScalingRuleOverrideNotApplicable Tato AllowScalingRuleOverride vlastnost se vztahuje pouze na aplikace Function Apps (kind = 'functionapp'). Nedá se nastavit pro jiné druhy kontejnerových aplikací.
Nastavte allowScalingRuleOverride=false, zatímco vlastní pravidla škálování jsou stále přítomna FunctionAppCannotSetScaleRules Nejde přepnout do režimu řízeného platformou, pokud existují neprázdná pravidla, která chrání náhodně odstraněná pravidla škálování definovaná zákazníkem. Zákazníci musí v pravidlech škálování výslovně nastavit [] (prázdné pole), pokud chtějí, aby platforma spravovala automaticky.