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

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

注意

この記事は、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 サービスに接続する際に関数で使用される接続モード。 オプションは DirectGateway です
Protocol Https Azure Cosmos DB サービスに接続する際に関数で使用される接続プロトコル。 両方のモードの説明についてはこちらを参照してください
leasePrefix 該当なし アプリ内のすべての関数で使用するプレフィックスをリースします。

durableTask

Durable Functions の構成設定。

注意

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 構成のルートに配置する必要があります。

Durable Functions 2.x

{
 "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,
      "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",
          "Pending",
          "Failed",
          "Terminated"
        ]
      }
    },
    "maxConcurrentActivityFunctions": 10,
    "maxConcurrentOrchestratorFunctions": 10,
    "extendedSessionsEnabled": false,
    "extendedSessionIdleTimeoutInSeconds": 30,
    "useAppLease": true,
    "useGracefulShutdown": false
  }
 }
}

Durable Functions 1.x

{
  "extensions": {
    "durableTask": {
      "hubName": "MyTaskHub",
      "controlQueueBatchSize": 32,
      "partitionCount": 4,
      "controlQueueVisibilityTimeout": "00:05:00",
      "workItemQueueVisibilityTimeout": "00:05:00",
      "maxConcurrentActivityFunctions": 10,
      "maxConcurrentOrchestratorFunctions": 10,
      "maxQueuePollingInterval": "00:00:30",
      "azureStorageConnectionStringName": "AzureWebJobsStorage",
      "trackingStoreConnectionStringName": "TrackingStorage",
      "trackingStoreNamePrefix": "DurableTask",
      "traceInputsAndOutputs": false,
      "logReplayEvents": false,
      "eventGridTopicEndpoint": "https://topic_name.westus2-1.eventgrid.azure.net/api/events",
      "eventGridKeySettingName":  "EventGridKey",
      "eventGridPublishRetryCount": 3,
      "eventGridPublishRetryInterval": "00:00:30",
      "eventGridPublishEventTypes": ["Started", "Completed", "Failed", "Terminated"]
    }
  }
}

タスク ハブの名前は、先頭文字をアルファベットとする必要があります。また、使用できるのはアルファベットと数値だけです。 指定しない場合、関数アプリの既定のタスク ハブ名は DurableFunctionsHub です。 詳細については、タスク ハブに関するページをご覧ください。

プロパティ Default 説明
hubName DurableFunctionsHub 代替タスク ハブ名を使用すると、複数の Durable Functions アプリケーションが同じストレージ バックエンドを使用している場合でも、これらのアプリケーションを互いに分離できます。
controlQueueBatchSize 32 コントロール キューから一度にプルするメッセージの数。
controlQueueBufferThreshold 従量課金プラン: 32
専用プランまたは 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 形式)。 値が高くなるほどメッセージ処理の待機時間が長くなる可能性があります。 値が低くなるほどストレージ コストが高くなる可能性があります。これは、ストレージ トランザクションが増加するからです。
azureStorageConnectionStringName AzureWebJobsStorage 基になる Azure Storage リソースの管理に使用される Azure Storage 接続文字列を含むアプリ設定の名前。
azureStorageConnectionStringName 履歴テーブルとインスタンス テーブルに使用する接続文字列の名前。 指定しない場合は、connectionStringName (Durable 2.x) または azureStorageConnectionStringName (Durable 1.x) 接続が使用されます。
trackingStoreNamePrefix trackingStoreConnectionStringName が指定されているときに履歴テーブルとインスタンス テーブルに使用されるプレフィックス。 設定されていない場合、既定のプレフィックス値は DurableTask になります。 trackingStoreConnectionStringName が指定されていない場合、履歴テーブルとインスタンス テーブルは hubName 値をプレフィックスとして使用し、trackingStoreNamePrefix の設定はすべて無視されます。
traceInputsAndOutputs false 関数呼び出しの入力と出力をトレースするかどうかを示す値。 関数の実行イベントをトレースした場合の既定の動作では、関数呼び出しのシリアル化された入力および出力のバイト数が記録されます。 この動作により、ログが肥大化することも、機密情報が誤って公開されることもなく、入力および出力に関する最小限の情報が示されます。 このプロパティを true に設定すると、既定の関数ログ記録によって、関数の入力および出力の内容全体がログに記録されます。
logReplayEvents 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 に発行するイベントの種類の一覧。 指定されていない場合は、すべてのイベントの種類が発行されます。 指定できる値は、StartedCompletedFailedTerminated です。
useAppLease true true に設定すると、アプリはタスク ハブ メッセージを処理する前にアプリレベルの BLOB リースを取得する必要があります。 詳細については、ディザスター リカバリーと geo ディストリビューションに関するドキュメントを参照してください。 v2.3.0 以降で利用可能です。
useLegacyPartitionManagement false false に設定した場合は、スケールアウト時に関数の実行が重複する可能性を抑えるパーティション管理アルゴリズムを使用します。v2.3.0 以降で利用可能です。
useGracefulShutdown false (プレビュー) 正常なシャットダウンを有効にして、ホストのシャットダウンでインプロセス関数の実行が失敗する可能性を減らします。

これらの設定の多くはパフォーマンスの最適化を目的としています。 詳細については、「パフォーマンスと拡張性」を参照してください。

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 つの関数につき同時に処理されるメッセージの最大数は、batchSizenewBatchThreshold を加えた値です。 この制限は、キューによってトリガーされる各関数に個別に適用されます。

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 該当なし 基になる MessageReceiver に使用される既定の 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 コンソール ログのトレース レベル。 オプションは、offerrorwarninginfo、および verbose です。
fileLoggingMode debugOnly ファイルのログ記録のトレース レベル。 オプションは、neveralwaysdebugOnly です。

watchDirectories

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

{
    "watchDirectories": [ "Shared" ]
}

次のステップ