Zastąp automatycznie generowane reguły skalowania KEDA dla funkcji platformy Azure w usłudze Container Apps platformy Azure

Funkcje w usłudze Container Apps zwykle działają w trybie skalowania zarządzanego przez platformę. Podczas uruchamiania host usługi Azure Functions analizuje wyzwalacze (na przykład HTTP, Queue lub Timer), a Azure Container Apps tworzy odpowiadającą temu konfigurację wyzwalacza KEDA dla rewizji aplikacji.

Ustaw properties.template.scale.allowScalingRuleOverride , gdy chcesz wyłączyć to automatyczne mapowanie i udostępnić własne reguły skalowania w programie template.scale.rules.

Prerequisites

  • Zasób usługi Azure Container Apps wdrożony jako aplikacja Functions (kind=functionapp).
  • Azure CLI z uprawnieniem do wywoływania az rest względem zasobu aplikacji.
  • Wersja 2026-03-02-preview interfejsu API REST lub nowsza.

Definicja właściwości

Property Typ Wartość domyślna Dotyczy wersja API
properties.template.scale.allowScalingRuleOverride boolean (może mieć wartość null) false / null Funkcje dostępne tylko w usłudze Container Apps (kind=functionapp) 2026-03-02-preview i nowsze

Behavior

Zastąp wartość Reguły skalowania Behavior
false lub null Generowane automatycznie Azure tworzy reguły KEDA i zarządza nimi na podstawie odnalezionych wyzwalaczy usługi Functions. Reguły dostarczone przez użytkownika są blokowane w tym trybie.
true Zdefiniowane przez klienta Azure nie generuje reguł opartych na wyzwalaczach. Podane reguły są używane do podejmowania decyzji dotyczących skalowania.
true bez podanych reguł Nie podano Azure pomija generowanie reguł opartych na wyzwalaczach. Aktywne pozostaje tylko domyślne zachowanie skalera HTTP platformy.

Włączanie zastępowania i udostępnianie niestandardowych reguł skalowania

W tym przykładzie rozpoczyna się skalowanie zarządzane przez platformę (allowScalingRuleOverride=false) i przełącza się do ręcznego sterowania regułami. Żądanie PATCH zawiera jedną regułę kolejki Azure i jedną regułę współbieżności HTTP.

  1. Utwórz plik treści PATCH o nazwie 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. Zastosuj aktualizację.

    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
    

Oczekiwany wynik:

  • Reguły pochodzące z wyzwalacza nie są generowane dla nowej wersji.
  • Reguły niestandardowe (my-queue-rule i my-http-rule) są dołączone do poprawki.
  • Sposób skalowania poziomego jest teraz uzależniony od długości kolejki (queueLength=20) i poziomu współbieżności HTTP (concurrentRequests=50).

Wyłącz zastępowanie i przywróć reguły generowane przez platformę

Ten przykład zwraca ręcznie skonfigurowaną aplikację (allowScalingRuleOverride=true) do skalowania zarządzanego przez platformę.

Important

Żądanie, które ustawia allowScalingRuleOverride=false , gdy rules nie jest puste, jest odrzucane. Aby przełączyć z powrotem, wyślij rules: [] w tym samym żądaniu PATCH.

  1. Utwórz plik treści PATCH o nazwie patch-disable-override.json.

    {
      "properties": {
        "template": {
          "scale": {
            "allowScalingRuleOverride": false,
            "rules": []
          }
        }
      }
    }
    
  2. Zastosuj aktualizację.

    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
    

Oczekiwany wynik:

  • Niestandardowe reguły skalowania zostały wyczyszczone.
  • Azure wznawia tworzenie reguł skalowania na podstawie odnalezionych wyzwalaczy usługi Functions.
  • Nowa rewizja jest generowana z wykorzystaniem skalowania zarządzanego przez platformę.

Scenariusze błędów

Scenario Kod błędu Komunikat o błędzie
Ustaw allowScalingRuleOverride=true w aplikacji, która nie jest aplikacją Functions (kind nie jest functionapp) AllowScalingRuleOverrideNotApplicable Właściwość AllowScalingRuleOverride ma zastosowanie tylko dla aplikacji funkcji (kind = 'functionapp'). Nie można go ustawić dla innych rodzajów aplikacji kontenera.
Ustaw allowScalingRuleOverride=false, gdy niestandardowe reguły skalowania nadal istnieją FunctionAppCannotSetScaleRules Nie można przełączyć się do trybu zarządzanego przez platformę, jeśli istnieją jakiekolwiek reguły, aby zapobiec przypadkowemu usunięciu zdefiniowanych przez klienta reguł skalowania. Klienci muszą jawnie ustawić [] (pustą tablicę) w regułach skalowania, jeśli platforma ma automatycznie zarządzać.