次の方法で共有


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

host.json メタデータ ファイルには、関数アプリ インスタンス内のすべての関数に影響する構成オプションが含まれています。 この記事では、バージョン 1.x ランタイムで使用できる設定を示します。 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" ],
}

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

集約者

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

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

2 つの制限のいずれかに最初に達した場合、関数呼び出しが集計されます。

applicationInsights

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

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

DocumentDB

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

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
プロパティ 既定値 説明
ゲートウェイモード ゲートウェイ Azure Cosmos DB サービスに接続する際に関数で使用される接続モード。 オプションは DirectGateway です
プロトコル 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 構成のルートに配置する必要があります。

{
 "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": false,
      "useTablePartitionManagement": 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",
          "Completed",
          "Failed",
          "Terminated"
        ]
      }
    },
    "maxConcurrentActivityFunctions": 10,
    "maxConcurrentOrchestratorFunctions": 10,
    "maxConcurrentEntityFunctions": 10,
    "extendedSessionsEnabled": false,
    "extendedSessionIdleTimeoutInSeconds": 30,
    "useAppLease": true,
    "useGracefulShutdown": false,
    "maxEntityOperationBatchSize": 50,
    "maxOrchestrationActions": 100000,
    "storeInputsInOrchestrationHistory": false
  }
 }
}

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

プロパティ 既定値 説明
ハブ名 TestHubName (Durable Functions 1.x を使用している場合は DurableFunctionsHub) 代替タスク ハブ名を使用すると、複数の Durable Functions アプリケーションが同じストレージ バックエンドを使用している場合でも、これらのアプリケーションを互いに分離できます。
controlQueueBatchSize 32 コントロール キューから一度にプルするメッセージの数。
controlQueueBufferThreshold Python の従量課金プラン: 32
他の言語の従量課金プラン: 128
専用プランまたは Premium プラン: 256
一度にメモリにバッファー処理できる制御キュー メッセージの数。その時点で、ディスパッチャーは、追加のメッセージがデキューされるまで待機します。 状況によっては、この値を小さくすると、メモリ消費量が大幅に削減される場合があります。
パーティション数 4 コントロール キューのパーティション数。 1 から 16 までの正の整数を使用できます。 この値を変更するには、新しいタスク ハブを構成する必要があります。
キューの可視性タイムアウトを制御する 5 分 デキューされたコントロール キュー メッセージの表示タイムアウト。
workItemQueueVisibilityTimeout 5 分 デキューされた作業項目キュー メッセージの表示タイムアウト。
maxConcurrentActivityFunctions 消費プラン: 10
専用プランまたは Premium プラン: 現在のマシンのプロセッサ数の 10 倍
1 つのホスト インスタンスで同時に処理できるアクティビティ関数の最大数。
maxConcurrentOrchestratorFunctions 従量課金プラン: 5
専用プランまたは Premium プラン: 現在のマシンのプロセッサ数の 10 倍
1 つのホスト インスタンスで同時に処理できるオーケストレーター関数の最大数。
maxConcurrentEntityFunctions 従量課金プラン: 5
専用プランまたは Premium プラン: 現在のマシンのプロセッサ数の 10 倍
1 つのホスト インスタンスで同時に処理できるエンティティ関数の最大数。 この設定は、 永続的なタスク スケジューラを使用する場合にのみ適用されます。 それ以外の場合、同時エンティティ実行の最大数は maxConcurrentOrchestratorFunctionsに制限されます。
maxQueuePollingInterval 30 秒 コントロールおよび作業項目キューの最大ポーリング間隔 (hh:mm:ss 形式)。 値が高くなるほどメッセージ処理の待機時間が長くなる可能性があります。 値が低くなるほどストレージ コストが高くなる可能性があります。これは、ストレージ トランザクションが増加するからです。
connectionName (2.7.0 以降)
接続文字列名 (2.x)
azureStorageConnectionStringName (1.x)
AzureWebJobsStorage (AzureのWebジョブストレージ) 基になる Azure Storage リソースへの接続方法を指定するアプリ設定または設定コレクションの名前。 1 つのアプリ設定を指定する場合は、Azure Storage 接続文字列にする必要があります。
trackingStoreConnectionName (2.7.0 以降)
トラッキングストア接続文字列名
履歴およびインスタンス テーブルへの接続方法を指定するアプリ設定または設定コレクションの名前。 1 つのアプリ設定を指定する場合は、Azure Storage 接続文字列にする必要があります。 指定しない場合は、connectionStringName (Durable 2.x) または azureStorageConnectionStringName (Durable 1.x) 接続が使用されます。
trackingStoreNamePrefix trackingStoreConnectionStringName が指定されているときに履歴テーブルとインスタンス テーブルに使用されるプレフィックス。 設定されていない場合、既定のプレフィックス値は DurableTask になります。 trackingStoreConnectionStringName が指定されていない場合、履歴テーブルとインスタンス テーブルは hubName 値をプレフィックスとして使用し、trackingStoreNamePrefix の設定はすべて無視されます。
入力と出力の追跡 虚偽 関数呼び出しの入力と出力をトレースするかどうかを示す値。 関数の実行イベントをトレースした場合の既定の動作では、関数呼び出しのシリアル化された入力および出力のバイト数が記録されます。 この動作により、ログが肥大化することも、機密情報が誤って公開されることもなく、入力および出力に関する最小限の情報が示されます。 このプロパティを true に設定すると、既定の関数ログ記録によって、関数の入力および出力の内容全体がログに記録されます。
traceReplayEvents 虚偽 オーケストレーションの再生イベントを Application Insights に書き込むかどうかを示す値。
イベントグリッドトピックエンドポイント (eventGridTopicEndpoint) Azure Event Grid カスタム トピック エンドポイントの URL。 このプロパティが設定されている場合は、オーケストレーションのライフ サイクル通知イベントがこのエンドポイントに発行されます。 このプロパティは、アプリ設定の解決をサポートします。
イベントグリッドキー設定名 EventGridTopicEndpoint での Azure Event Grid カスタム トピックによる認証に使用されるキーを含むアプリ設定の名前。
eventGridPublishRetryCount 0 Event Grid トピックへの発行が失敗した場合に再試行する回数。
eventGridPublishRetryInterval 5 分 Event Grid の発行を再試行する間隔 (hh:mm:ss 形式)。
イベントグリッド公開イベントタイプ Event Grid に発行するイベントの種類の一覧。 指定されていない場合は、すべてのイベントの種類が発行されます。 指定できる値は、StartedCompletedFailedTerminated です。
ユーズアップリース ほんとう true に設定すると、アプリはタスク ハブ メッセージを処理する前にアプリレベルの BLOB リースを取得する必要があります。 詳細については、ディザスター リカバリーと geo ディストリビューションに関するドキュメントを参照してください。 v2.3.0 以降で利用可能です。
レガシーパーティション管理を使用する 虚偽 false に設定した場合は、スケール アウト時に関数の実行が重複する可能性を抑えるパーティション管理アルゴリズムを使用します。v2.3.0 以降で使用できます。 この値を true に設定することはお勧めしません
テーブルパーティション管理の使用 (useTablePartitionManagement) v3.x 拡張機能バージョンでの true
v2.x 拡張機能バージョンでの false
true に設定すると、Azure Storage V2 アカウントのコストを削減するために設計されたパーティション管理アルゴリズムが使用されます。 WebJobs.Extensions.DurableTask v2.10.0 以降で利用可能です。 マネージド ID でこの設定を使用するには、WebJobs.Extensions.DurableTask v3.x 以降、または v1.2.x 以降のバージョンの Worker.Extensions.DurableTask が必要です。
useGracefulShutdown 虚偽 (プレビュー) 正常なシャットダウンを有効にして、ホストのシャットダウンでインプロセス関数の実行が失敗する可能性を減らします。
maxEntityOperationBatchSize(2.6.1) 消費プラン: 50
専用プランまたは Premium プラン: 5000
バッチとして処理されるエンティティ操作の最大数。 1 に設定すると、バッチ処理は無効になり、各操作メッセージは個別の関数呼び出しによって処理されます。
オーケストレーション履歴に入力を保存する 虚偽 true に設定すると、履歴テーブルにアクティビティ入力を保存するように Durable Task Framework に指示します。 こうすると、オーケストレーション履歴のクエリを実行するときにアクティビティ関数の入力を表示できるようになります。
maxGrpcMessageSizeInBytes(最大GRPCメッセージサイズバイト単位) 4194304 DurableTaskClient の gRPC クライアントが受信できるメッセージの最大サイズ (バイト単位) を設定する整数値。 これは、Durable Functions .NET Isolated と Java に適用されます。
grpcHttpClientTimeout 100 秒 .NET 分離アプリ (.NET 6 以降のバージョン) と Java で現在サポートされている Durable Functions の gRPC クライアントで使用される HTTP クライアントのタイムアウトを設定します。

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

イベントハブ

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

機能

ジョブのホストが実行される関数の一覧。 空の配列は、すべての関数を実行することを示します。 ローカルで実行する場合にのみ使用します。 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
    }
}
プロパティ 既定値 説明
有効 ほんとう 機能が有効かどうかを指定します。
ヘルスチェック間隔 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。 ダッシュを削除した小文字の GUID を指定できます。 ローカルで実行しているときに必要です。 Azure で実行するときは、ID 値を設定しないことをお勧めします。 id を省略すると、ID は Azure で自動的に生成されます。

ストレージ アカウントを複数の関数アプリで共有している場合は、各関数アプリの 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": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
プロパティ 既定値 説明
最大ポーリング間隔 60000 キューのポーリングの最大間隔 (ミリ秒)。
visibilityTimeout 0 メッセージの処理が失敗したときの再試行間隔。
バッチサイズ 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>"
    }
}    
プロパティ 既定値 説明
〜から 該当なし すべての機能での送信者のメールアドレス。

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 の場合、返す前にメッセージを完了するのは関数の役割です。

シングルトン

シングルトン ロック動作の構成設定。 詳細については、「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"
    }
}
プロパティ 既定値 説明
ロック期間 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 インフォ コンソールログのトレースレベル設定。 オプションは、offerrorwarninginfo、および verbose です。
fileLoggingMode デバッグ専用 ファイルログのトレースレベル。 オプションは、neveralwaysdebugOnly です。

watchDirectories

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

{
    "watchDirectories": [ "Shared" ]
}

次のステップ