Container Apps の関数は、通常、プラットフォームで管理されるスケーリング モードで実行されます。 起動時に、Functions ホストはトリガー(HTTP、キュー、タイマーなど)を調べ、Azure Container Apps はアプリのリビジョンに対応する KEDA トリガー構成を作成します。
自動マッピングを無効にし、properties.template.scale.allowScalingRuleOverrideで独自のスケール ルールを指定する場合は、template.scale.rulesを設定します。
前提条件
- Functions アプリとしてデプロイされた Container Apps リソース (
kind=functionapp)。 - アプリ リソースに対して
az restを呼び出すアクセス許可を持つAzure CLI。 - REST API バージョン
2026-03-02-preview以降。
プロパティ定義
| 財産 | タイプ | Default | 適用対象 | API バージョン |
|---|---|---|---|---|
properties.template.scale.allowScalingRuleOverride |
boolean (null 許容) |
false / null |
コンテナー アプリでのみ利用可能な Functions (kind=functionapp) |
2026-03-02-preview 以降 |
Behavior
| 値をオーバーライドする | スケール ルール | Behavior |
|---|---|---|
false または null |
自動生成 | Azure検出された Functions トリガーから KEDA ルールを作成および管理します。 ユーザー指定のルールは、このモードではブロックされます。 |
true |
顧客定義 | Azureでは、トリガーベースのルールは生成されません。 指定したルールは、スケールの決定に使用されます。 |
true 規則が指定されていない |
用意なし | Azureは、トリガーベースのルールの生成をスキップします。 プラットフォームのベースライン HTTP スケーラー動作のみがアクティブなままです。 |
オーバーライドを有効にしてカスタム スケール ルールを指定する
この例は、プラットフォームで管理されるスケーリング (allowScalingRuleOverride=false) から始まり、手動のルール制御に切り替えます。 PATCH 要求には、1 つの Azure Queue ルールと 1 つの 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 プロパティは、Function Apps (kind = 'functionapp') にのみ適用されます。 他のコンテナー アプリの種類には設定できません。 |
カスタム スケール ルールがまだ存在する間に allowScalingRuleOverride=false を設定する |
FunctionAppCannotSetScaleRules |
顧客が定義したスケール ルールを誤って削除することを保護するために空でないルールが存在する場合、プラットフォーム制御モードに切り替えることはできません。 プラットフォームを自動管理する場合は、スケール ルールで [] (空の配列) を明示的に設定する必要があります。 |