容器應用程式的功能通常以平台管理的縮放模式執行。 啟動時,Functions 主機會檢查觸發器(例如 HTTP、佇列或計時器),而 Azure 容器應用程式 會為應用程式版本建立對應的 KEDA 觸發器設定。
當您想要停用該自動映射,並在 properties.template.scale.allowScalingRuleOverride 中提供自行定義的縮放規則時,請設定 template.scale.rules。
先決條件
- 部署為 Functions 應用程式的 Container Apps 資源 (
kind=functionapp)。 - Azure CLI,具有對應用程式資源呼叫
az rest的權限。 - REST API 版本
2026-03-02-preview或更新版本。
屬性定義
| Property | 類型 | 預設值 | 適用對象 | API 版本 |
|---|---|---|---|---|
properties.template.scale.allowScalingRuleOverride |
boolean (可取消) |
false / null |
僅適用於容器應用程式的功能(kind=functionapp) |
2026-03-02-preview 及更新版本 |
行為
| 覆寫值 | 尺度規則 | 行為 |
|---|---|---|
false 或 null |
自動生成 | Azure 會根據發現的函式觸發器建立並管理 KEDA 規則。 使用者自編規則在此模式下會被封鎖。 |
true |
由客戶定義 | Azure 不會產生基於觸發器的規則。 你提供的規則用於規模決策。 |
true 且未提供任何規則 |
未提供 | Azure 跳過基於觸發器的規則生成。 只有平台的基準 HTTP 調整器行為會保持作用中。 |
啟用覆寫並提供自訂調整規則
此範例從平台管理的擴展allowScalingRuleOverride=false()開始,接著切換到手動規則控制。 PATCH 請求包含一條 Azure Queue 規則和一條 HTTP 並發規則。
建立一個名為
patch-enable-override.json的 PATCH 主體檔案。{ "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" } } } ] } } } }套用更新。
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
預期結果:
- 不會為新修訂版本產生由觸發條件衍生的規則。
- 自訂規則(
my-queue-rule和my-http-rule)會附加在修訂版上。 - 擴展行為現在遵循佇列深度(
queueLength=20)與HTTP並發性(concurrentRequests=50)。
停用覆寫並還原為平台產生的規則
此範例會將手動設定的應用程式 allowScalingRuleOverride=true 恢復為平台管理的擴縮。
Important
當 allowScalingRuleOverride=false 為非空時,將 rules 設為某值的請求會遭到拒絕。 若要切換回來,請在同一個 PATCH 要求中傳送 rules: []。
建立一個名為
patch-disable-override.json的 PATCH 主體檔案。{ "properties": { "template": { "scale": { "allowScalingRuleOverride": false, "rules": [] } } } }套用更新。
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
預期結果:
- 自訂調整規則會被清除。
- Azure 會從探索到的 Functions 觸發程序繼續建立調整規則。
- 系統會產生新的修訂版本,套用平台管理的調整。
錯誤狀況
| 劇本 | 錯誤代碼 | 錯誤訊息 |
|---|---|---|
在非 Functions 應用程式上設定 allowScalingRuleOverride=true(kind 不是 functionapp) |
AllowScalingRuleOverrideNotApplicable |
此 AllowScalingRuleOverride 屬性僅適用於功能應用程式(kind = 'functionapp')。 它無法設定成其他容器應用程式類型。 |
在自訂縮放規則仍存在時設定 allowScalingRuleOverride=false |
FunctionAppCannotSetScaleRules |
若已存在為避免意外刪除客戶自訂擴縮規則而設的非空規則,則無法切換為平台控制模式。 如果客戶想要平台自動管理,就必須在 scale 中明確設定 [] (空陣列)。 |