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 參考,請參見 host.json Azure Functions 2.x 及以後版本的參考資料。

其他函數應用程式設定選項的管理是在應用程式設定中進行。

有些 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 要彙總的最長期間。

當達到兩個限制中的第一個時,功能呼叫會被彙總。

applicationInsights

控制 Application Insights 中的取樣功能。

{
        "applicationInsights": {
                "sampling": {
                    "isEnabled": true,
                    "maxTelemetryItemsPerSecond" : 5
                }
        }
}
屬性 預設 描述
isEnabled 是 啟用或停用取樣。
maxTelemetryItemsPerSecond 5 取樣的開始臨界值。

DocumentDB

Azure Cosmos DB 觸發器及綁定 的設定。

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
屬性 預設 描述
GatewayMode 閘道 該函式連接 Azure Cosmos DB 服務時所使用的連線模式。 選項為 Direct 和 Gateway
通訊協定 Https 函式連接 Azure Cosmos DB 服務時所使用的連線協定。 請參閱此處以了解這兩種模式
leasePrefix n/a 要在應用程式的所有函式上使用的租用前置詞。

durableTask

Durable Functions 的設定設定。

在執行Azure Functions 1.x 版本中,該durableTask區段位於 host.json 檔案的根節點。 可用的設定依據 Durable Functions 擴充功能的版本而定。 關於目前的設定參考,請參見Durable Functions host.json設定。

eventHub

事件中樞觸發程序和繫結 (部分內容可能是機器或 AI 翻譯) 的組態設定。

函式

工作主機所執行的函式清單。 空陣列表示已執行所有函式。 預定只能在本機執行時使用。 在 Azure 的功能應用程式中,你應該按照如何在 Azure Functions步驟來關閉特定功能,而不是用這個設定。

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

functionTimeout

指出所有函式的逾時持續期間。 在無伺服器的使用情況方案中,有效範圍是從 1 秒到 10 分鐘,而預設值是 5 分鐘。 在 App Service 方案中沒有整體限制,而且預設值為 Null,這表示沒有逾時。

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

健康監視器

Host 健康監控器 的設定設定。

{
    "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「忙碌」的回應,直到計數器回到正常水平。
maxConcurrentRequests 無限制 (-1) 將會以平行方式執行 HTTP 函式的數目上限。 這可讓您控制並行作業,幫助您管理資源使用率。 例如,您可能會有使用大量系統資源 (記憶體/CPU/通訊端) 的 HTTP 函式,以致於並行率太高時造成問題。 或者,如果函式對第三方服務發出傳出要求,則需要限制這些呼叫的速率。 在這些情況下,套用節流會有所幫助。
maxOutstandingRequests 無限制 (-1) 在任何指定時間保留的未完成要求數目上限。 此限制包括已排入佇列但尚未開始執行的要求,以及任何進行中的執行。 會以 429「太忙碌」回應來拒絕任何超過此限制的連入要求。 這樣可讓呼叫者採用以時間為基礎的重試策略,並且也協助您控制要求延遲的上限。 此動作只會控制在指令碼主機執行路徑內發生的佇列處理。 其他佇列如 ASP.NET 請求佇列仍會生效,且不受此設定影響。
routePrefix api 適用於所有路徑的路由前綴。 若要移除預設前置詞,請使用空字串。

id

作業主機的唯一識別碼。 可以是已移除虛線的小寫 GUID。 在本機執行時為必要項目。 在 Azure 執行時,我們建議不要設定 ID 值。 當省略 id 時,Azure 會自動產生一個 ID。

如果您在多個函數應用程式中共用儲存體帳戶,請確定每個函數應用程式具有不同的 id。 您可以省略 id 屬性或將每個函數應用程式的 id 手動設定為不同的值。 計時器觸發程序會使用儲存體鎖定,以確保當函數應用程式相應放大至多個執行個體時,只會有一個計時器執行個體。 如果兩個函數應用程式共用相同的 id,且每個應用程式都使用計時器觸發器,則只有一個計時器會執行。

{
    "id": "9f4ea53c5136457d883d685e57164f08"
}

記錄器

控制篩選由 ILogger 物件或 context.log 所寫入的記錄。

{
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    }
}
屬性 預設 描述
分類篩選器 n/a 指定依類別的篩選
預設等級 資訊 針對 categoryLevels 陣列中未指定的任何類別,會將這個層級和以上層級的記錄傳送至 Application Insights。
categoryLevels n/a 一個類別陣列,指定針對每個類別傳送至 Application Insights 的最小記錄層級。 這裡指定的類別控制所有開頭為相同值的類別,但會優先使用較長的值。 在上述範例 host.json 檔案中,所有開頭為 "Host.Aggregator" 的類別都會記錄在 Information 層級。 所有以 "Host" 開頭的其他類別(例如 "Host.Executor"),都會在 Error 層級進行記錄。

queues

儲存體佇列觸發程序和繫結的組態設定。

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
屬性 預設 描述
最大輪詢間隔 60000 佇列輪詢之間的間隔上限 (毫秒)。
visibilityTimeout 0 處理訊息失敗時,重試之間的時間間隔。
批次大小 16 Functions 執行階段會同時擷取,並以平行方式處理的佇列訊息數目。 當要處理的數目減少到 newBatchThreshold 時,執行階段就會取得另一個批次,並開始處理那些訊息。 因此,每個函式並行處理之訊息的上限為 batchSize 加上 newBatchThreshold。 這項限制個別套用至每個佇列觸發的函式。

如果您需要避免平行執行在單一佇列上收到的訊息,可以將 batchSize 設定為 1。 不過,只要您的函式應用程式在單一虛擬機器 (VM) 上執行,這項設定就只會將並行排除。 如果函數應用程式擴增為多部 VM,則每部 VM 可以執行每個佇列觸發之函式的單一執行個體。

最大值 batchSize 為 32。
maxDequeueCount 5 將訊息移至有害佇列之前,嘗試處理訊息的次數。
newBatchThreshold batchSize/2 每當要同時處理的訊息數目下降至這個數字時,執行階段就會擷取另一個批次。

SendGrid

SendGrid 輸出綁定的設定設定。

{
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    }
}    
屬性 預設 描述
從 n/a 所有函式的寄件者電子郵件地址。

serviceBus

服務匯流排觸發程序和繫結的組態設定。

{ 
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
屬性 預設 描述
最大同時呼叫數 16 訊息幫浦應該起始之回呼的並行呼叫數上限。 Functions 執行階段預設會並行處理多個訊息。 若要指示執行階段一次只處理一個佇列或主題訊息,請將 maxConcurrentCalls 設定為 1。
prefetchCount n/a 基礎 ServiceBusReceiver 將使用的預設 PrefetchCount。
autoRenewTimeout 00:05:00 將自動更新訊息鎖定的最大持續時間。
autoComplete 是 若為真,觸發程序會在作業成功執行時,自動完成訊息處理。 若為 false,則在傳回之前,函式必須負責完成訊息。

singleton

Singleton 鎖定行為的組態設定。 欲了解更多資訊,請參閱 GitHub 關於單例支援的議題。

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
屬性 預設 描述
lockPeriod 00:00:15 取得函式層級鎖定的期間。 鎖定會自動更新。
listenerLockPeriod 00:01:00 接聽程式鎖定所需的期間。
listenerLockRecoveryPollingInterval 00:01:00 啟動時無法取得接聽程式鎖定時,用於接聽程式鎖定復原的時間間隔。
lockAcquisitionTimeout 00:01:00 執行階段將嘗試取得鎖定的時間上限。
lockAcquisitionPollingInterval n/a 鎖定取得嘗試之間的間隔。

追蹤

1.x 版

使用 TraceWriter 物件所建立記錄的組態設定。 若要深入了解,請參閱 [C# 日誌]。

{
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    }
}
屬性 預設 描述
consoleLevel 資訊 主控台記錄的追蹤層級。 選項為:off、error、warning、info 和 verbose。
fileLoggingMode debugOnly 檔案記錄的追蹤層級。 選項為 never、always、debugOnly。

watchDirectories

應該監視其變更的一組共用程式碼目錄 (部分內容可能是機器或 AI 翻譯)。 請確定,這些目錄中的程式碼變更時,函式會反映變更。

{
    "watchDirectories": [ "Shared" ]
}

下一步