Azure Functions 1.x の host.json のリファレンス
host.json メタデータ ファイルには、関数アプリ インスタンス内のすべての関数に影響する構成オプションが含まれています。 この記事では、バージョン 1.x ランタイムで使用できる設定を示します。 JSON スキーマは、 http://json.schemastore.org/host にあります。
Note
この記事は、Azure Functions 1.x を対象としています。 Functions 2.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" ],
}
この記事の次のセクションでは、最上位レベルの各プロパティについて説明します。 特記がない場合は、いずれも省略可能です。
aggregator
Application Insights のメトリックを計算するときに集計される関数呼び出しの数を指定します。
{
"aggregator": {
"batchSize": 1000,
"flushTimeout": "00:00:30"
}
}
プロパティ | Default | 説明 |
---|---|---|
batchSize | 1000 | 集計する要求の最大数。 |
flushTimeout | 00:00:30 | 集計する最長期間。 |
2 つの制限のいずれかに最初に達した場合、関数呼び出しが集計されます。
applicationInsights
Application Insights のサンプリング機能を制御します。
{
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 5
}
}
}
プロパティ | Default | 説明 |
---|---|---|
isEnabled | true | サンプリングを有効または無効にします。 |
maxTelemetryItemsPerSecond | 5 | サンプリングが開始されるしきい値。 |
DocumentDB
Azure Cosmos DB のトリガーとバインドの構成設定。
{
"documentDB": {
"connectionMode": "Gateway",
"protocol": "Https",
"leaseOptions": {
"leasePrefix": "prefix1"
}
}
}
プロパティ | Default | 説明 |
---|---|---|
GatewayMode | Gateway | Azure Cosmos DB サービスに接続する際に関数で使用される接続モード。 オプションは Direct と Gateway です |
Protocol | Https | Azure Cosmos DB サービスに接続する際に関数で使用される接続プロトコル。 両方のモードの説明についてはこちらを参照してください |
leasePrefix | 該当なし | アプリ内のすべての関数で使用するプレフィックスをリースします。 |
durableTask
Durable Functions の構成設定。
Note
Durable Functions のすべてのメジャー バージョンは、Azure Functions ランタイムのすべてのバージョンでサポートされています。 ただし、host.json 構成のスキーマは、Azure Functions ランタイムのバージョンと使用する Durable Functions 拡張機能のバージョンによって若干異なります。 次の例は、Azure Functions 2.0 および3.0 で使用するためのものです。 どちらの例でも、Azure Functions 1.0 を使用している場合、使用可能な設定は同じですが、host.json の "durableTask" セクションは、"extensions" の下のフィールドとしてではなく、host.json 構成のルートに配置する必要があります。
{
"extensions": {
"durableTask": {
"hubName": "MyTaskHub",
"storageProvider": {
"connectionStringName": "AzureWebJobsStorage",
"controlQueueBatchSize": 32,
"controlQueueBufferThreshold": 256,
"controlQueueVisibilityTimeout": "00:05:00",
"maxQueuePollingInterval": "00:00:30",
"partitionCount": 4,
"trackingStoreConnectionStringName": "TrackingStorage",
"trackingStoreNamePrefix": "DurableTask",
"useLegacyPartitionManagement": true,
"useTablePartitionManagement": false,
"workItemQueueVisibilityTimeout": "00:05:00",
},
"tracing": {
"traceInputsAndOutputs": false,
"traceReplayEvents": false,
},
"notifications": {
"eventGrid": {
"topicEndpoint": "https://topic_name.westus2-1.eventgrid.azure.net/api/events",
"keySettingName": "EventGridKey",
"publishRetryCount": 3,
"publishRetryInterval": "00:00:30",
"publishEventTypes": [
"Started",
"Completed",
"Failed",
"Terminated"
]
}
},
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 10,
"extendedSessionsEnabled": false,
"extendedSessionIdleTimeoutInSeconds": 30,
"useAppLease": true,
"useGracefulShutdown": false,
"maxEntityOperationBatchSize": 50,
"storeInputsInOrchestrationHistory": false
}
}
}
タスク ハブの名前は、先頭文字をアルファベットとする必要があります。また、使用できるのはアルファベットと数値だけです。 指定しない場合、関数アプリのデフォルト タスク ハブ名は TestHubName です。 詳細については、タスク ハブに関するページをご覧ください。
プロパティ | Default | 説明 |
---|---|---|
hubName | TestHubName (Durable Functions 1.x を使用している場合は DurableFunctionsHub) | 代替タスク ハブ名を使用すると、複数の Durable Functions アプリケーションが同じストレージ バックエンドを使用している場合でも、これらのアプリケーションを互いに分離できます。 |
controlQueueBatchSize | 32 | コントロール キューから一度にプルするメッセージの数。 |
controlQueueBufferThreshold | Python の従量課金プラン: 32 JavaScript および C# の従量課金プラン: 128 専用プランまたは Premium プラン: 256 |
一度にメモリにバッファー処理できる制御キュー メッセージの数。その時点で、ディスパッチャーは、追加のメッセージがデキューされるまで待機します。 |
partitionCount | 4 | コントロール キューのパーティション数。 1 から 16 までの正の整数を使用できます。 |
controlQueueVisibilityTimeout | 5 分 | デキューされたコントロール キュー メッセージの表示タイムアウト。 |
workItemQueueVisibilityTimeout | 5 分 | デキューされた作業項目キュー メッセージの表示タイムアウト。 |
maxConcurrentActivityFunctions | 従量課金プラン: 10 専用プランまたは Premium プラン: 現在のマシンのプロセッサ数の 10 倍 |
1 つのホスト インスタンスで同時に処理できるアクティビティ関数の最大数。 |
maxConcurrentOrchestratorFunctions | 従量課金プラン: 5 専用プランまたは Premium プラン: 現在のマシンのプロセッサ数の 10 倍 |
1 つのホスト インスタンスで同時に処理できるオーケストレーター関数の最大数。 |
maxQueuePollingInterval | 30 秒 | コントロールおよび作業項目キューの最大ポーリング間隔 (hh:mm:ss 形式)。 値が高くなるほどメッセージ処理の待機時間が長くなる可能性があります。 値が低くなるほどストレージ コストが高くなる可能性があります。これは、ストレージ トランザクションが増加するからです。 |
connectionName (2.7.0 以降) connectionStringName (2.x) azureStorageConnectionStringName (1.x) |
AzureWebJobsStorage | 基になる Azure Storage リソースへの接続方法を指定するアプリ設定または設定コレクションの名前。 1 つのアプリ設定を指定する場合は、Azure Storage 接続文字列にする必要があります。 |
trackingStoreConnectionName (2.7.0 以降) azureStorageConnectionStringName |
履歴およびインスタンス テーブルへの接続方法を指定するアプリ設定または設定コレクションの名前。 1 つのアプリ設定を指定する場合は、Azure Storage 接続文字列にする必要があります。 指定しない場合は、connectionStringName (Durable 2.x) または azureStorageConnectionStringName (Durable 1.x) 接続が使用されます。 |
|
trackingStoreNamePrefix | trackingStoreConnectionStringName が指定されているときに履歴テーブルとインスタンス テーブルに使用されるプレフィックス。 設定されていない場合、既定のプレフィックス値は DurableTask になります。 trackingStoreConnectionStringName が指定されていない場合、履歴テーブルとインスタンス テーブルは hubName 値をプレフィックスとして使用し、trackingStoreNamePrefix の設定はすべて無視されます。 |
|
traceInputsAndOutputs | false | 関数呼び出しの入力と出力をトレースするかどうかを示す値。 関数の実行イベントをトレースした場合の既定の動作では、関数呼び出しのシリアル化された入力および出力のバイト数が記録されます。 この動作により、ログが肥大化することも、機密情報が誤って公開されることもなく、入力および出力に関する最小限の情報が示されます。 このプロパティを true に設定すると、既定の関数ログ記録によって、関数の入力および出力の内容全体がログに記録されます。 |
traceReplayEvents | false | オーケストレーションの再生イベントを Application Insights に書き込むかどうかを示す値。 |
eventGridTopicEndpoint | Azure Event Grid カスタム トピック エンドポイントの URL。 このプロパティが設定されている場合は、オーケストレーションのライフ サイクル通知イベントがこのエンドポイントに発行されます。 このプロパティは、アプリ設定の解決をサポートします。 | |
eventGridKeySettingName | EventGridTopicEndpoint での Azure Event Grid カスタム トピックによる認証に使用されるキーを含むアプリ設定の名前。 |
|
eventGridPublishRetryCount | 0 | Event Grid トピックへの発行が失敗した場合に再試行する回数。 |
eventGridPublishRetryInterval | 5 分 | Event Grid の発行を再試行する間隔 (hh:mm:ss 形式)。 |
eventGridPublishEventTypes | Event Grid に発行するイベントの種類の一覧。 指定されていない場合は、すべてのイベントの種類が発行されます。 指定できる値は、Started 、Completed 、Failed 、Terminated です。 |
|
useAppLease | true | true に設定すると、アプリはタスク ハブ メッセージを処理する前にアプリレベルの BLOB リースを取得する必要があります。 詳細については、ディザスター リカバリーと geo ディストリビューションに関するドキュメントを参照してください。 v2.3.0 以降で利用可能です。 |
useLegacyPartitionManagement | false | false に設定した場合は、スケール アウト時に関数の実行が重複する可能性を抑えるパーティション管理アルゴリズムを使用します。v2.3.0 以降で使用できます。 |
useTablePartitionManagement | false | true に設定すると、Azure Storage V2 アカウントのコストを削減するために設計されたパーティション管理アルゴリズムが使用されます。 v2.10.0 以降で利用可能です。 この機能は現在プレビュー段階であり、まだ従量課金プランとの互換性はありません。 |
useGracefulShutdown | false | (プレビュー) 正常なシャットダウンを有効にして、ホストのシャットダウンでインプロセス関数の実行が失敗する可能性を減らします。 |
maxEntityOperationBatchSize(2.6.1) | 従量課金プラン: 50 専用プランまたは Premium プラン: 5000 |
バッチとして処理されるエンティティ操作の最大数。 1 に設定すると、バッチ処理は無効になり、各操作メッセージは個別の関数呼び出しによって処理されます。 |
storeInputsInOrchestrationHistory | false | true に設定すると、履歴テーブルにアクティビティ入力を保存するように Durable Task Framework に指示します。 こうすると、オーケストレーション履歴のクエリを実行するときにアクティビティ関数の入力を表示できるようになります。 |
これらの設定の多くはパフォーマンスの最適化を目的としています。 詳細については、「パフォーマンスと拡張性」を参照してください。
eventHub
Event Hub トリガーとバインディングの構成設定。
functions
ジョブのホストが実行される関数の一覧。 空の配列は、すべての関数を実行することを示します。 ローカルで実行する場合にのみ使用します。 Azure の関数アプリでは、この設定を使用する代わりに、「Azure Functions で関数を無効にする方法」の手順に従って、特定の関数を無効にする必要があります。
{
"functions": [ "QueueProcessor", "GitHubWebHook" ]
}
functionTimeout
すべての関数のタイムアウト期間を示します。 サーバーレス従量課金プランの有効な範囲は 1 秒から 10 分であり、既定値は 5 分です。 App Service プランに全体的な制限はありません。既定は null です (タイムアウトなしを示します)。
{
"functionTimeout": "00:05:00"
}
healthMonitor
ホストの正常性監視を行うための構成設定です。
{
"healthMonitor": {
"enabled": true,
"healthCheckInterval": "00:00:10",
"healthCheckWindow": "00:02:00",
"healthCheckThreshold": 6,
"counterThreshold": 0.80
}
}
プロパティ | Default | 説明 |
---|---|---|
enabled | true | 機能が有効かどうかを指定します。 |
healthCheckInterval | 10 秒 | 定期的なバック グラウンドでの正常性チェックの間隔。 |
healthCheckWindow | 2 分 | healthCheckThreshold 設定で使用されるスライド時間枠。 |
healthCheckThreshold | 6 | 正常性チェックの最大失敗回数。この回数を超えると、ホスト リサイクルが開始されます。 |
counterThreshold | 0.80 | パフォーマンス カウンターが異常とみなされるしきい値。 |
http
http トリガーとバインディングの構成設定。
{
"http": {
"routePrefix": "api",
"maxOutstandingRequests": 200,
"maxConcurrentRequests": 100,
"dynamicThrottlesEnabled": true
}
}
プロパティ | Default | 説明 |
---|---|---|
dynamicThrottlesEnabled | false | この設定を有効にすると、要求処理パイプラインが、システム パフォーマンス カウンター (接続、スレッド、プロセス、メモリ、CPU など) を定期的にチェックし、カウンターのいずれかが組み込まれた上限閾値 (80%) を超えた場合は、カウンターが正常なレベルに戻るまで要求は 429 "Too Busy" 応答で拒否されます。 |
maxConcurrentRequests | unbounded (-1 ) |
並列で実行される HTTP 関数の最大数。 これによりコンカレンシーを制御でき、リソース使用率の管理に役立ちます。 たとえば、多くのシステム リソース (メモリ、CPU、ソケット) を消費する HTTP 関数があった場合、コンカレンシー率が高すぎると問題が発生します。 または、サードパーティのサービスに対して要求を送信する関数があり、その呼び出し速度を制限する必要がある場合です。 このような場合は、調整を適用することができます。 |
maxOutstandingRequests | unbounded (-1 ) |
特定の時点で保持される未処理の要求の最大数。 この制限には、キューに格納され、まだ実行が開始されていない要求と、処理中の実行が含まれます。 この制限を超える受信要求は、429 "Too Busy" 応答で拒否されます。 これにより、呼び出し元は時間ベースの再試行戦略を採用でき、要求の最大待機時間の制御にも役立ちます。 この設定は、スクリプト ホストの実行パス内で発生するキューのみを制御します。 ASP.NET 要求キューなどの他のキューは有効なままで、この設定の影響を受けません。 |
routePrefix | api | すべてのルートに適用されるルート プレフィックス。 既定のプレフィックスを削除するには、空の文字列を使用します。 |
id
ジョブ ホストの一意の ID。 ダッシュを削除した小文字の GUID を指定できます。 ローカルで実行しているときに必要です。 Azure で実行するときは、ID 値を設定しないことをお勧めします。 id
を省略すると、ID は Azure で自動的に生成されます。
ストレージ アカウントを複数の関数アプリで共有している場合は、各関数アプリの id
がそれぞれ異なることを確認してください。 id
プロパティは省略することができます。または、各関数アプリの id
を手動でそれぞれ異なる値に設定することもできます。 1 つの関数アプリが複数のインスタンスにスケール アウトする場合、タイマー インスタンスが 1 しか存在しないようにするために、タイマー トリガーではストレージ ロックが使用されます。 2 つの関数アプリが同じ id
を共有していて、それぞれタイマー トリガーを使用している場合は、1 つのタイマーのみが実行されます。
{
"id": "9f4ea53c5136457d883d685e57164f08"
}
logger
ILogger オブジェクトまたは context.log によって書き込まれたログのフィルター処理を制御します。
{
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
}
プロパティ | Default | 説明 |
---|---|---|
categoryFilter | 該当なし | カテゴリ別のフィルターを指定します |
defaultLevel | Information | categoryLevels 配列に指定されていないカテゴリの場合、このレベル以上のログを Application Insights に送信します。 |
categoryLevels | 該当なし | 各カテゴリの Application Insights に送信される最小ログ レベルを指定するカテゴリの配列。 ここで指定されるカテゴリは、同じ値で始まるすべてのカテゴリを制御し、長い値の方が優先されます。 前述のサンプル host.json ファイルでは、Information レベルの "Host.Aggregator" で始まるすべてのカテゴリ。 Error レベルのログである、"Host.Executor" など "Host" で始まるその他すべてのカテゴリ。 |
queues
Storage キュー トリガーとバインディングの構成設定。
{
"queues": {
"maxPollingInterval": 2000,
"visibilityTimeout" : "00:00:30",
"batchSize": 16,
"maxDequeueCount": 5,
"newBatchThreshold": 8
}
}
プロパティ | Default | 説明 |
---|---|---|
maxPollingInterval | 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
SendGrind 出力バインドの構成設定
{
"sendGrid": {
"from": "Contoso Group <admin@contoso.com>"
}
}
プロパティ | Default | 説明 |
---|---|---|
from | 該当なし | すべての関数の送信者の電子メール アドレス。 |
serviceBus
Service Bus トリガーとバインディングの構成設定。
{
"serviceBus": {
"maxConcurrentCalls": 16,
"prefetchCount": 100,
"autoRenewTimeout": "00:05:00",
"autoComplete": true
}
}
プロパティ | Default | 説明 |
---|---|---|
maxConcurrentCalls | 16 | メッセージ ポンプが開始する必要があるコールバックの同時呼び出しの最大数 既定では、Functions ランタイムは、複数のメッセージを同時に処理します。 一度に 1 つのキューまたはトピックのメッセージのみを処理するようにランタイムに指示するには、maxConcurrentCalls を 1 に設定します。 |
prefetchCount | 該当なし | 基になる ServiceBusReceiver に使用される既定の PrefetchCount。 |
autoRenewTimeout | 00:05:00 | メッセージ ロックが自動的に更新される最大間隔。 |
autoComplete | true | true の場合、操作が正常に実行されたときにトリガーがメッセージの処理を自動的に完了します。 false の場合、返す前にメッセージを完了するのは関数の役割です。 |
singleton
シングルトン ロック動作の構成設定。 詳細については、「GitHub issue about singleton support」(シングルトンのサポートに関する GitHub の問題) を参照してください。
{
"singleton": {
"lockPeriod": "00:00:15",
"listenerLockPeriod": "00:01:00",
"listenerLockRecoveryPollingInterval": "00:01:00",
"lockAcquisitionTimeout": "00:01:00",
"lockAcquisitionPollingInterval": "00:00:03"
}
}
プロパティ | Default | 説明 |
---|---|---|
lockPeriod | 00:00:15 | 関数レベルのロックの取得期間。 ロックの自動更新。 |
listenerLockPeriod | 00:01:00 | リスナーのロックの取得期間。 |
listenerLockRecoveryPollingInterval | 00:01:00 | スタートアップ時にリスナーのロックを獲得できなかった場合に、リスナーのロックの回復に使用される時間間隔。 |
lockAcquisitionTimeout | 00:01:00 | ランタイムがロックの獲得を試行する最長時間。 |
lockAcquisitionPollingInterval | 該当なし | ロックの獲得の試行間隔。 |
tracing
バージョン 1.x
TraceWriter
オブジェクトを使用して作成するログの構成設定。 詳細については、[C# のログの記録] を参照してください。
{
"tracing": {
"consoleLevel": "verbose",
"fileLoggingMode": "debugOnly"
}
}
プロパティ | Default | 説明 |
---|---|---|
consoleLevel | info | コンソール ログのトレース レベル。 オプションは、off 、error 、warning 、info 、および verbose です。 |
fileLoggingMode | debugOnly | ファイルのログ記録のトレース レベル。 オプションは、never 、always 、debugOnly です。 |
watchDirectories
変更を監視する共有コード ディレクトリのセット。 これらのディレクトリ内のコードを変更した場合に、関数によって変更を選択するようにします。
{
"watchDirectories": [ "Shared" ]
}