Azure Functions 1.x のhost.json リファレンス

host.json メタデータ ファイルには、関数アプリ インスタンス内のすべての関数に影響する構成オプションが含まれています。 この記事では、バージョン 1.x ランタイムで使用できる設定を示します。 JSON スキーマは、 http://json.schemastore.org/host にあります。

メモ

本記事はAzure Functionsランタイム1.xの参照host.json を保持します。 その他の歴史的情報については、 ランタイム1.xのレガシーリファレンスを参照してください。 現在の host.json 参照については、Azure Functions 2.x以降のhost.json 参照を参照してください。

関数アプリの他の構成オプションは、アプリの設定で管理されます。

host.json の一部の設定は、local.settings.json ファイルでローカルに実行するときにのみ使用されます。

サンプル host.json ファイル

次のサンプル host.json ファイルには、すべての使用できるオプションが指定されています。

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    },
    "applicationInsights": {
        "sampling": {
          "isEnabled": true,
          "maxTelemetryItemsPerSecond" : 5
        }
    },
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix"
        }
    },
    "eventHub": {
      "maxBatchSize": 64,
      "prefetchCount": 256,
      "batchCheckpointFrequency": 1
    },
    "functions": [ "QueueProcessor", "GitHubWebHook" ],
    "functionTimeout": "00:05:00",
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    },
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 20,
        "maxConcurrentRequests": 10,
        "dynamicThrottlesEnabled": false
    },
    "id": "9f4ea53c5136457d883d685e57164f08",
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    },
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    },
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    },
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    },
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    },
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    },
    "watchDirectories": [ "Shared" ],
}

この記事の次のセクションでは、最上位レベルの各プロパティについて説明します。 特記がない場合は、いずれも省略可能です。

集約者

Application Insights のメトリックを計算するときに集計される関数呼び出しの数を指定します。

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    }
}
プロパティ 既定値 説明
batchSize 1000 集計する要求の最大数。
flushTimeout 00:00:30 集計する最長期間。

関数呼び出しは、2つの制限のうち最初の段階に達したときに集約されます。

applicationInsights

Application Insights のサンプリング機能を制御します。

{
        "applicationInsights": {
                "sampling": {
                    "isEnabled": true,
                    "maxTelemetryItemsPerSecond" : 5
                }
        }
}
プロパティ 既定値 説明
isEnabled ほんとう サンプリングを有効または無効にします。
maxTelemetryItemsPerSecond 5 サンプリングが開始されるしきい値。

DocumentDB

Azure Cosmos DB トリガーとバインドの構成設定。

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
プロパティ 既定値 説明
ゲートウェイモード ゲートウェイ Azure Cosmos DB サービスに接続するときに関数によって使用される接続モード。 オプションは Direct と Gateway です
プロトコル Https Azure Cosmos DB サービスへの接続時に関数によって使用される接続プロトコル。 両方のモードの説明についてはこちらを参照してください
leasePrefix 該当なし アプリ内のすべての関数で使用するプレフィックスをリースします。

durableTask

Durable Functions の構成設定。

Azure Functionsランタイム1.xでは、durableTaskセクションが host.json ファイルのルートにあります。 利用可能な設定はDurable Functions拡張機能のバージョンによって異なります。 現在の設定参照については、Durable Functions host.json設定を参照してください。

eventHub

Event Hub トリガーとバインディングの構成設定。

functions

ジョブのホストが実行される関数の一覧。 空の配列は、すべての関数を実行することを示します。 ローカルで実行する場合にのみ使用します。 Azureの関数アプリでは、代わりに Azure Functionsの手順に従って、この設定を使用するのではなく、特定の関数を無効にする必要があります。

{
    "functions": [ "QueueProcessor", "GitHubWebHook" ]
}

functionTimeout

すべての関数のタイムアウト期間を示します。 サーバーレス従量課金プランの有効な範囲は 1 秒から 10 分であり、既定値は 5 分です。 App Service プランに全体的な制限はありません。既定は null です (タイムアウトなしを示します)。

{
    "functionTimeout": "00:05:00"
}

ヘルスモニター

ホスト正常性モニターの構成設定。

{
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    }
}
プロパティ 既定値 説明
enabled ほんとう 機能が有効かどうかを指定します。
ヘルスチェック間隔 10 秒 バックグラウンドでの定期的な正常性チェックの時間間隔。
ヘルスチェックウィンドウ 2 分 healthCheckThreshold 設定で使用されるスライド時間枠。
ヘルスチェック閾値 6 正常性チェックの最大失敗回数。この回数を超えると、ホスト リサイクルが開始します。
counterThreshold 0.80 パフォーマンス カウンターが異常とみなされるしきい値。

http

HTTPトリガーとバインディングの設定。

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
プロパティ 既定値 説明
dynamicThrottlesEnabled(動的スロットルの有効化) 虚偽 この設定を有効にすると、要求処理パイプラインが、システム パフォーマンス カウンター (接続、スレッド、プロセス、メモリ、CPU など) を定期的にチェックし、カウンターのいずれかが組み込まれた上限閾値 (80%) を超えた場合は、カウンターが正常なレベルに戻るまで要求は 429 "Too Busy" 応答で拒否されます。
maxConcurrentRequests 無制限 (-1) 並列で実行される HTTP 関数の最大数。 これによりコンカレンシーを制御でき、リソース使用率の管理に役立ちます。 たとえば、多くのシステム リソース (メモリ、CPU、ソケット) を消費する HTTP 関数があった場合、コンカレンシー率が高すぎると問題が発生します。 または、サードパーティのサービスに対して要求を送信する関数があり、その呼び出し速度を制限する必要がある場合です。 このような場合は、調整を適用することができます。
maxOutstandingRequests 無制限 (-1) 特定の時点で保持される未処理の要求の最大数。 この制限には、キューに格納され、まだ実行が開始されていない要求と、処理中の実行が含まれます。 この制限を超える受信要求は、429 "Too Busy" 応答で拒否されます。 これにより、呼び出し元は時間ベースの再試行戦略を採用でき、要求の最大待機時間の制御にも役立ちます。 この設定は、スクリプト ホストの実行パス内で発生するキューのみを制御します。 ASP.NET 要求キューなどの他のキューは引き続き有効であり、この設定の影響を受けません。
routePrefix エーピーアイ すべてのルートに適用されるルート プレフィックス。 既定のプレフィックスを削除するには、空の文字列を使用します。

id

ジョブ ホストの一意の ID。 ダッシュを削除した小文字の GUID を指定できます。 ローカルで実行しているときに必要です。 Azureで実行する場合は、ID 値を設定しないことをお勧めします。 id を省略すると、AZUREで ID が自動的に生成されます。

ストレージ アカウントを複数の関数アプリで共有している場合は、各関数アプリの id がそれぞれ異なることを確認してください。 id プロパティは省略することができます。または、各関数アプリの id を手動でそれぞれ異なる値に設定することもできます。 1 つの関数アプリが複数のインスタンスにスケール アウトする場合、タイマー インスタンスが 1 しか存在しないようにするために、タイマー トリガーではストレージ ロックが使用されます。 2 つの関数アプリが同じ id を共有していて、それぞれタイマー トリガーを使用している場合は、1 つのタイマーのみが実行されます。

{
    "id": "9f4ea53c5136457d883d685e57164f08"
}

ロガー

ILogger オブジェクトまたは context.log によって書き込まれたログのフィルター処理を制御します。

{
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    }
}
プロパティ 既定値 説明
カテゴリフィルター 該当なし カテゴリ別のフィルターを指定します
デフォルトレベル 情報 categoryLevels 配列に指定されていないカテゴリの場合、このレベル以上のログを Application Insights に送信します。
categoryLevels 該当なし 各カテゴリの Application Insights に送信される最小ログ レベルを指定するカテゴリの配列。 ここで指定されるカテゴリは、同じ値で始まるすべてのカテゴリを制御し、長い値の方が優先されます。 前述のサンプル host.json ファイルでは、すべての "Host.Aggregator" で始まるカテゴリが Information レベルでログされます。 "Host.Executor" のように "Host" で始まるすべてのその他のカテゴリは、Error レベルでログに記録されます。

queues

ストレージ キューのトリガーとバインディングに関する構成設定。

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
プロパティ 既定値 説明
最大ポーリング間隔 60000 キューのポーリングの最大間隔 (ミリ秒)。
visibilityTimeout 0 メッセージの処理が失敗したときの再試行間隔。
batchSize 16 Functions ランタイムが同時に取得して並列で処理するキュー メッセージの数。 処理中のメッセージの数が newBatchThreshold まで減少すると、ランタイムは は別のバッチを取得し、そのメッセージの処理を開始します。 そのため、1 つの関数につき同時に処理されるメッセージの最大数は、batchSize に newBatchThreshold を加えた値です。 この制限は、キューによってトリガーされる各関数に個別に適用されます。

1 つのキューで受信した複数のメッセージの並列実行を回避したい場合は、batchSize を 1 に設定します。 ただし、この設定では、関数アプリが単一の仮想マシン (VM) で実行されている限り、コンカレンシーは実現しません。 この関数アプリを複数の VM にスケール アウトすると、各 VM では、キューによってトリガーされる関数ごとに 1 つのインスタンスを実行できます。

最大の batchSize は 32 です。
maxDequeueCount 5 有害キューに移動する前に、メッセージの処理を試行する回数。
newBatchThreshold batchSize/2 同時に処理されているメッセージの数がこの数まで減少すると、ランタイムは別のバッチを取得します。

SendGrid

SendGridの出力バインディングの設定。

{
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    }
}    
プロパティ 既定値 説明
from 該当なし すべての機能での送信者のメールアドレス。

serviceBus

Service Bus トリガーとバインドの構成設定。

{ 
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
プロパティ 既定値 説明
maxConcurrentCalls 16 メッセージポンプが開始すべきコールバックの同時呼び出しの最大数 既定では、Functions ランタイムは、複数のメッセージを同時に処理します。 一度に 1 つのキューまたはトピックのメッセージのみを処理するようにランタイムに指示するには、maxConcurrentCalls を 1 に設定します。
prefetchCount 該当なし 基本の PrefetchCount は、背後にある ServiceBusReceiver によって使用されます。
autoRenewTimeout 00:05:00 メッセージ ロックが自動的に更新される最大間隔。
autoComplete ほんとう true の場合、操作が正常に実行されたときにトリガーがメッセージの処理を自動的に完了します。 false の場合、返す前にメッセージを完了するのは関数の役割です。

singleton

シングルトン ロック動作の構成設定。 詳細については、シングルトンサポートに関するGitHubの問題を参照してください。

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
プロパティ 既定値 説明
ロック期間 00:00:15 関数レベルのロックの取得期間。 ロックは自動で更新されます。
リスナーロック期間 (listenerLockPeriod) 00:01:00 リスナーのロックの取得期間。
listenerLockRecoveryPollingInterval 00:01:00 スタートアップ時にリスナーのロックを獲得できなかった場合に、リスナーのロックの回復に使用される時間間隔。
lockAcquisitionTimeout 00:01:00 ランタイムがロックを獲得しようとする時間の最大値。
lockAcquisitionPollingInterval 該当なし ロック取得の試行の間隔。

トレース

バージョン 1.x

TraceWriter オブジェクトを使用して作成するログの構成設定。 詳細については、[C# のログの記録] を参照してください。

{
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    }
}
プロパティ 既定値 説明
consoleLevel info コンソールログのトレースレベル設定。 オプションは、off、error、warning、info、および verbose です。
fileLoggingMode デバッグ専用 ファイルログのトレースレベル。 オプションは、never、always、debugOnly です。

watchDirectories

変更を監視する共有コード ディレクトリのセット。 このディレクトリ内のコードを変更した場合に、関数によって変更が選択されるようにします。

{
    "watchDirectories": [ "Shared" ]
}

次のステップ