Eseguire l'override delle regole di scalabilità KEDA generate automaticamente per Funzioni di Azure nelle app contenitore

Le funzioni nelle app contenitore vengono in genere eseguite in modalità di scalabilità gestita dalla piattaforma. All'avvio, il runtime di Functions esamina i trigger (ad esempio HTTP, Queue o Timer) e App contenitore di Azure crea la configurazione del trigger KEDA corrispondente per la revisione dell'app.

Impostare properties.template.scale.allowScalingRuleOverride quando si vuole disabilitare il mapping automatico e fornire regole di scalabilità personalizzate in template.scale.rules.

Prerequisiti

  • Una risorsa di Container Apps distribuita come app Functions (kind=functionapp).
  • interfaccia della riga di comando di Azure, con l'autorizzazione a chiamare az rest sulla risorsa dell'applicazione.
  • Versione 2026-03-02-preview dell'API REST o successiva.

Definizione di proprietà

Proprietà Tipo Impostazione predefinita Si applica a Versione dell'API
properties.template.scale.allowScalingRuleOverride boolean (nullable) false / null Funzioni solo in Container Apps (kind=functionapp) 2026-03-02-preview e versioni successive

Behavior

Sostituisci valore Regole di scalabilità Behavior
false oppure null Generato automaticamente Azure crea e gestisce le regole KEDA dai trigger di Funzioni individuate. Le regole fornite dall'utente vengono bloccate in questa modalità.
true Definito dal cliente Azure non genera regole basate su trigger. Le regole fornite vengono usate per le decisioni di scalabilità.
true senza regole fornite Nessuno specificato Azure ignora la generazione di regole basate su trigger. Solo il comportamento del scaler HTTP di base della piattaforma rimane attivo.

Abilitare l'override e fornire regole di scalabilità personalizzate

Questo esempio inizia con il ridimensionamento gestito dalla piattaforma (allowScalingRuleOverride=false) e passa al controllo manuale delle regole. La richiesta PATCH include una regola di coda Azure e una regola di concorrenza HTTP.

  1. Creare un file di corpo PATCH denominato 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. Applicare l'aggiornamento.

    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
    

Risultato previsto:

  • Le regole derivate dal trigger non vengono generate per la nuova revisione.
  • Le regole personalizzate (my-queue-rule e my-http-rule) sono associate alla revisione.
  • Il comportamento di scalabilità orizzontale si basa ora sulla profondità della coda (queueLength=20) e sulla concorrenza HTTP (concurrentRequests=50).

Disabilitare l'override e ripristinare le regole generate dalla piattaforma

Questo esempio restituisce un'app configurata manualmente (allowScalingRuleOverride=true) al ridimensionamento gestito dalla piattaforma.

Importante

Una richiesta che imposta allowScalingRuleOverride=false mentre rules non è vuota viene rifiutata. Per tornare indietro, inviare rules: [] nella stessa PATCH.

  1. Creare un file di corpo PATCH denominato patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Applicare l'aggiornamento.

    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
    

Risultato previsto:

  • Le regole di scalabilità personalizzate vengono cancellate.
  • Azure riprende la creazione di regole di scalabilità dai trigger di Funzioni individuati.
  • Viene generata una nuova revisione con scalabilità gestita dalla piattaforma.

Scenari di errore

Scenario Codice di errore Messaggio d'errore
Impostare allowScalingRuleOverride=true in un'app senza funzioni (kind non è functionapp) AllowScalingRuleOverrideNotApplicable La AllowScalingRuleOverride proprietà è applicabile solo alle app per le funzioni (kind = 'functionapp'). Non può essere impostato per altri tipi di app contenitore.
Impostare allowScalingRuleOverride=false mentre le regole di scalabilità personalizzate sono ancora presenti FunctionAppCannotSetScaleRules Non è possibile passare alla modalità controllata dalla piattaforma se esistono regole non vuote per proteggere l'eliminazione accidentale delle regole di scalabilità definite dal cliente. I clienti devono impostare esplicitamente [] (array vuoto) nelle regole di scalabilità se vogliono che la piattaforma lo gestisca automaticamente.