Informazioni di riferimento su host.json per Funzioni di Azure 1.x

Il file di metadati host.json contiene opzioni di configurazione che influiscono su tutte le funzioni in un'istanza dell'app per le funzioni. Questo articolo elenca le impostazioni disponibili per il runtime 1.x. Lo schema JSON è disponibile all'indirizzo http://json.schemastore.org/host.

Nota

Questo articolo riguarda Funzioni di Azure 1.x. Per informazioni di riferimento su host.json in Funzioni 2.x e versioni successive, vedere informazioni di riferimento su host.json per Funzioni di Azure 2.x.

Altre opzioni di configurazione di app per le funzioni sono gestite nelle impostazioni dell'app.

Alcune impostazioni host.json vengono usate solo l'esecuzione in locale nel file local.settings.json.

File di esempio host.json

I file di esempio host.json seguenti hanno tutte le possibili opzioni specificate.

{
    "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" ],
}

Le sezioni seguenti di questo articolo illustrano ogni proprietà di livello superiore. Tutte sono facoltative se non diversamente specificato.

aggregator

Specifica il numero di chiamate di funzione che vengono aggregate quando si esegue il calcolo della metrica per Application Insights.

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    }
}
Proprietà Predefinito Descrizione
batchSize 1000 Numero massimo di richieste da aggregare.
flushTimeout 00:00:30 Intervallo massimo da aggregare.

Le chiamate di funzione vengono aggregate quando il primo dei due limiti viene raggiunto.

applicationInsights

Controlla le funzionalità di campionamento in Application Insights.

{
    "applicationInsights": {
        "sampling": {
          "isEnabled": true,
          "maxTelemetryItemsPerSecond" : 5
        }
    }
}
Proprietà Predefinito Descrizione
isEnabled true Abilita o disabilita il campionamento.
maxTelemetryItemsPerSecond 5 La soglia oltre la quale viene avviato il campionamento.

DocumentDB

Impostazioni di configurazione per i trigger e le associazioni di Azure Cosmos DB.

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
Proprietà Predefinito Descrizione
GatewayMode Gateway La modalità di connessione usata dalla funzione durante la connessione al servizio di Azure Cosmos DB. Le opzioni sono Direct e Gateway
Protocollo Https Il protocollo di connessione usato dalla funzione durante la connessione al servizio di Azure Cosmos DB. Leggere qui per una spiegazione di entrambe le modalità
leasePrefix n/d Prefisso di lease da usare in tutte le funzioni in un'app.

durableTask

Impostazioni di configurazione per Funzioni permanenti.

Nota

Tutte le versioni principali di Durable Functions sono supportate in tutte le versioni del runtime di Funzioni di Azure. Tuttavia, lo schema della configurazione host.json è leggermente diverso a seconda della versione del runtime di Funzioni di Azure e della versione dell'estensione Durable Functions in uso. Gli esempi seguenti riguardano Funzioni di Azure 2.0 e 3.0. In entrambi gli esempi se si usa Funzioni di Azure 1.0, le impostazioni disponibili sono le stesse, ma la sezione "durableTask" del file host.json deve trovarsi nella radice della configurazione host.json invece che in un campo sotto "extension".

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

I nomi degli hub attività devono iniziare con una lettera e contenere solo lettere e numeri. Se non specificato, il nome predefinito dell'hub attività per un'app per le funzioni è TestHubName. Per altre informazioni, vedere Hub attività.

Proprietà Predefinito Descrizione
hubName TestHubName (DurableFunctionsHub se si usa Durable Functions 1.x) I nomi alternativi dell'hub attività possono essere usati per separare le applicazioni di Durable Functions, anche se usano lo stesso back-end di archiviazione.
controlQueueBatchSize 32 Numero di messaggi di cui eseguire il pull dalla coda di controllo contemporaneamente.
controlQueueBufferThreshold Piano a consumo per Python: 32
Piano a consumo per JavaScript e C#: 128
Piano Dedicato/Premium: 256
Numero di messaggi della coda di controllo che possono essere memorizzati nel buffer in memoria contemporaneamente. Dopo tale soglia il dispatcher attenderà prima di rimuovere dalla coda eventuali altri messaggi.
partitionCount 4 Numero di partizioni per la coda di controllo. Può essere un numero intero positivo compreso tra 1 e 16.
controlQueueVisibilityTimeout 5 minuti Timeout di visibilità dei messaggi rimossi dalla coda di controllo.
workItemQueueVisibilityTimeout 5 minuti Timeout di visibilità dei messaggi rimossi dalla coda degli elementi di lavoro.
maxConcurrentActivityFunctions Piano a consumo: 10
Piano Dedicato/Premium: 10X il numero di processori nel computer corrente
Numero massimo di funzioni di attività che possono essere elaborate contemporaneamente in una singola istanza host.
maxConcurrentOrchestratorFunctions Piano a consumo: 5
Piano Dedicato/Premium: 10X il numero di processori nel computer corrente
Numero massimo di funzioni dell'agente di orchestrazione che possono essere elaborate contemporaneamente in una singola istanza host.
maxQueuePollingInterval 30 secondi Intervallo massimo di polling della coda di controllo e degli elementi di lavoro nel formato hh:mm:ss. Valori più elevati possono comportare un incremento della latenza nell'elaborazione dei messaggi. Valori inferiori possono comportare un incremento dei costi di archiviazione a causa dell'aumento del numero di transazione di archiviazione.
connectionName (2.7.0 e versioni successive)
connectionStringName (2.x)
azure ArchiviazioneConnessione ionStringName (1.x)
AzureWebJobsStorage Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi alle risorse Archiviazione di Azure sottostanti. Quando viene specificata una singola impostazione dell'app, deve essere un Archiviazione di Azure stringa di connessione.
trackingStore Connessione ionName (2.7.0 e versioni successive)
trackingStoreConnectionStringName
Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi alle tabelle Cronologia e Istanze. Quando viene specificata una singola impostazione dell'app, deve essere un Archiviazione di Azure stringa di connessione. Se non è specificato, viene usata la connessione connectionStringName (Durable 2.x) o azureStorageConnectionStringName (Durable 1.x).
trackingStoreNamePrefix Prefisso da usare per le tabelle Cronologia e Istanze quando si specifica trackingStoreConnectionStringName. Se non è impostato, il valore predefinito del prefisso sarà DurableTask. Se trackingStoreConnectionStringName non è specificato, come prefisso delle tabelle Cronologia e Istanze verrà usato il valore hubName ed eventuali impostazioni di trackingStoreNamePrefix verranno ignorate.
traceInputsAndOutputs false Valore che indica se tenere traccia degli input e degli output di chiamate di funzione. Quando si tiene traccia degli eventi di esecuzione delle funzioni, il comportamento predefinito prevede di includere il numero di byte degli input e output serializzati per le chiamate di funzione. Con questo comportamento vengono offerte informazioni minime sull'aspetto di input e output senza aumentare il numero di log o esporre inavvertitamente informazioni riservate. Se questa proprietà viene impostata su true, per impostazione predefinita viene registrato l'intero contenuto degli input e output della funzione.
traceReplayEvents false Un valore che indica se scrivere eventi di riproduzione di orchestrazione in Application Insights.
eventGridTopicEndpoint URL di un endpoint di un argomento personalizzato di Griglia di eventi di Azure. Se questa proprietà è impostata, gli eventi di notifica del ciclo di vita dell'orchestrazione vengono pubblicati in questo endpoint. Questa proprietà supporta la risoluzione delle impostazioni dell'app.
eventGridKeySettingName Nome dell'impostazione dell'app che contiene la chiave usata per l'autenticazione con l'argomento personalizzato di Griglia di eventi di Azure in EventGridTopicEndpoint.
eventGridPublishRetryCount 0 Il numero di tentativi se la pubblicazione nell'argomento di Griglia di eventi ha esito negativo.
eventGridPublishRetryInterval 5 minuti Intervallo fra i tentativi di pubblicazione in Griglia di eventi nel formato hh:mm:ss.
eventGridPublishEventTypes Elenco dei tipi di evento da pubblicare in Griglia di eventi. Se non è specificato, verranno pubblicati tutti i tipi di evento. I valori consentiti includono Started, Completed, Failed, Terminated.
useAppLease true Se è impostato su true, le app richiederanno l'acquisizione di un lease di BLOB a livello di app prima di elaborare i messaggi dell'hub attività. Per altre informazioni vedere la documentazione su ripristino di emergenza e distribuzione geografica. Disponibile a partire dalla versione v2.3.0.
useLegacyPartitionManagement false Se impostato su false, usa un algoritmo di gestione delle partizioni che riduce la possibilità di esecuzione di funzioni duplicate durante l'aumento del numero di istanze. Disponibile a partire dalla versione 2.3.0.
useTablePartitionManagement false Se impostato su true, usa un algoritmo di gestione delle partizioni progettato per ridurre i costi per gli account Archiviazione di Azure V2. Disponibile a partire dalla versione 2.10.0. Questa funzionalità è attualmente in anteprima e non è ancora compatibile con il piano a consumo.
useGracefulShutdown false (Anteprima) Abilita l'arresto in modalità normale per ridurre la possibilità di arresti dell'host che non riescono a completare le esecuzioni di funzioni in-process.
maxEntityOperationBatchSize(2.6.1) Piano a consumo: 50
Piano Dedicato/Premium: 5000
Numero massimo di operazioni di entità elaborate come batch. Se impostato su 1, l'invio in batch è disabilitato e ogni messaggio dell'operazione viene elaborato da una chiamata di funzione separata.
storeInputsInOrchestrationHistory false Se impostato su true, indica a Durable Task Framework di salvare gli input dell'attività nella tabella della cronologia. In questo modo è possibile visualizzare gli input della funzione di attività durante l'esecuzione di query sulla cronologia dell'orchestrazione.

Molte di queste impostazioni vengono usate per ottimizzare le prestazioni. Per altre informazioni, vedere Prestazioni e scalabilità.

eventHub

Impostazioni di configurazione per i trigger e le associazioni di Hub eventi.

functions

Un elenco di funzioni eseguite dall'host di processo. Una matrice vuota indica l’esecuzione di tutte le funzioni. Deve essere utilizzato solo in caso di esecuzione in locale. In app per le funzioni in Azure è necessario invece seguire i passaggi descritti in Come disabilitare le funzioni in Funzioni di Azure per disabilitare le funzioni specifiche invece di usare questa impostazione.

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

functionTimeout

Indica la durata del timeout per tutte le funzioni. In un piano di consumo serverless l'intervallo valido va da 1 secondo a 10 minuti e il valore predefinito è 5 minuti. In un piano di servizio app non esiste alcun limite complessivo e il valore predefinito è Null, che indica che non esiste alcun timeout.

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

healthMonitor

Impostazioni di configurazione per il monitoraggio integrità host.

{
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    }
}
Proprietà Predefinito Descrizione
Enabled true Indica se la funzionalità è abilitata.
healthCheckInterval 10 secondi Intervallo di tempo tra i controlli dell'integrità periodici in background.
healthCheckWindow 2 minuti Intervallo temporale scorrevole utilizzato con l'impostazione healthCheckThreshold .
healthCheckThreshold 6 Numero massimo di volte in cui il controllo dell'integrità può non riuscire prima che venga avviato un riciclo host.
counterThreshold 0.80 Soglia a partire dalla quale un contatore delle prestazioni verrà considerato non integro.

http

Impostazione di configurazione per i trigger e le associazioni http.

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
Proprietà Predefinito Descrizione
dynamicThrottlesEnabled false Se abilitata, questa impostazione fa sì che la pipeline di elaborazione delle richieste controlli periodicamente contatori delle prestazioni del sistema come connessioni/thread/processi/memoria/cpu/ecc. e se uno di questi contatori supera una soglia elevata predefinita (80%), le richieste vengono rifiutate con una risposta "Troppo occupato" 429 fino a quando i contatori non tornano a livelli normali.
maxConcurrentRequests non associato (-1) Numero massimo di funzioni HTTP che verranno eseguite in parallelo. Ciò consente di controllare la concorrenza e pertanto di semplificare la gestione dell'uso delle risorse. Ad esempio, si potrebbe avere una funzione HTTP che usa molte risorse di sistema (memoria/cpu/sockets) in modo che causi problemi quando la concorrenza è troppo elevata. Oppure potrebbe essere presente una funzione che invia richieste a un servizio di terze parti e tali chiamate devono essere a frequenza limitata. In questi casi potrebbe risultare utile l'applicazione di una limitazione.
maxOutstandingRequests non associato (-1) Il numero massimo di richieste in sospeso che verrà mantenuto in un determinato intervallo. Questo limite include le richieste accodate ma non sono state avviate e le esecuzioni in corso. Le richieste in arrivo che superano questo limite vengono rifiutate con la risposta 429 "Occupato". Ciò consente ai chiamanti di usare strategie di ripetizione dei tentativi basate sul tempo e di controllare la latenza massima delle richieste. Questa impostazione controlla solo l'accodamento che si verifica all'interno del percorso di esecuzione dell'host dello script. Altre code, ad esempio la coda di richieste ASP.NET, saranno valide e non interessate da questa impostazione.
routePrefix api Il prefisso della route che si applica a tutte le route. Utilizzare una stringa vuota per rimuovere il prefisso predefinito.

ID

ID univoco per l'host di processo. Può essere una GUID con lettera minuscola con trattini rimossi. Necessaria durante l'esecuzione locale. Durante l'esecuzione in Azure, è consigliabile non impostare un valore ID. Un ID viene generato automaticamente in Azure quando viene omesso id.

Se si condivide un account di archiviazione tra più app per le funzioni, assicurarsi che ogni app abbia un valore diverso per id. È possibile omettere la proprietà id o impostare manualmente la proprietà id di ogni app per le funzioni su un valore diverso. Il trigger timer usa un blocco dell'archiviazione per garantire che vi sia una sola istanza del timer quando un'app per le funzioni viene scalata orizzontalmente a più istanze. Se due app per le funzioni condividono lo stesso id e ognuna usa un trigger timer, viene eseguito un solo timer.

{
    "id": "9f4ea53c5136457d883d685e57164f08"
}

logger

Controlla le operazioni di filtro per i log scritti da un oggetto ILogger o context.log.

{
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    }
}
Proprietà Predefinito Descrizione
categoryFilter n/d Specifica il filtro per categoria
defaultLevel Informazioni Per tutte le categorie non è state specificate nella matrice categoryLevels, inviare i log a questo livello e oltre per Application Insights.
categoryLevels n/d Una matrice di categorie che specifica il livello di log minimo per l'invio ad Application Insights per ogni categoria. La categoria specificata qui controlla tutte le categorie che iniziano con lo stesso valore, e i valori più lunghi hanno la precedenza. Nel file di esempio precedente host.json, tutte le categorie che iniziano "Host.Aggregator" eseguono il log al livello Information. Tutte le altre categorie che iniziano con "Host", ad esempio "Host.Executor", eseguono il log al livello Error.

code

Impostazione di configurazione per i trigger e le associazioni per code di archiviazione.

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
Proprietà Predefinito Descrizione
maxPollingInterval 60000 L'intervallo massimo, in millisecondi, tra i polling di coda.
visibilityTimeout 0 L'intervallo di tempo tra i tentativi se l'elaborazione di un messaggio ha esito negativo.
batchSize 16 Il numero di messaggi in coda che il runtime di Funzioni recupera simultaneamente e di processi in parallelo. Quando il numero elaborato viene ridotto a newBatchThreshold, il runtime ottiene un altro batch e inizia l'elaborazione dei messaggi. Di conseguenza, il numero massimo di messaggi simultanei elaborati per ogni funzione è batchSize più newBatchThreshold. Questo limite si applica separatamente a ogni funzione attivata dalla coda.

Se si vuole evitare l'esecuzione in parallelo per i messaggi ricevuti su una coda, è possibile impostare batchSize su 1. Tuttavia, questa impostazione elimina solo la concorrenza se l'app per le funzioni viene eseguita su una singola macchina virtuale (VM). Se l'app per le funzioni scala orizzontalmente più macchine virtuali, ogni macchina virtuale potrebbe eseguire un'istanza di ogni funzione attivata dalla coda.

Il valore massimo per batchSize è 32.
maxDequeueCount 5 Il numero di volte per provare l'elaborazione di un messaggio prima di essere spostato nella coda non elaborabile.
newBatchThreshold batchSize/2 Ogni volta che il numero di messaggi elaborati simultaneamente viene ridotto a questo numero, il runtime recupera un altro batch.

SendGrid

Impostazione di configurazione per l'associazione di output SendGrind

{
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    }
}    
Proprietà Predefinito Descrizione
da n/d Indirizzo di posta elettronica del mittente in tutte le funzioni.

serviceBus

Impostazione di configurazione per i trigger e le associazioni dei bus di servizio.

{ 
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
Proprietà Predefinito Descrizione
maxConcurrentCalls 16 Il numero massimo di chiamate simultanee al callback che il message pump deve avviare. Per impostazione predefinita, il runtime di Funzioni elabora più messaggi contemporaneamente. Per fare in modo che il runtime elabori un solo messaggio della coda o dell'argomento alla volta, impostare maxConcurrentCalls su 1.
prefetchCount n/d PrefetchCount predefinito che verrà usato dal ServiceBusReceiver sottostante.
autoRenewTimeout 00:05:00 La durata massima entro il quale il blocco del messaggio verrà rinnovato automaticamente.
autoComplete true Se true, il trigger completa automaticamente l'elaborazione del messaggio al completamento dell'esecuzione dell'operazione. Se false, è responsabilità della funzione completare il messaggio prima della restituzione.

singleton

Impostazioni di configurazione per il comportamento di blocco Singleton. Per ulteriori informazioni, vedere il problema GitHub sul supporto singleton.

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
Proprietà Predefinito Descrizione
lockPeriod 00:00:15 Il periodo per cui vengono eseguiti blocchi a livello di funzione. I blocchi si rinnovano automaticamente.
listenerLockPeriod 00:01:00 Il periodo per cui vengono acquisiti blocchi di listener.
listenerLockRecoveryPollingInterval 00:01:00 L'intervallo di tempo utilizzato per il ripristino di blocco listener se non è stato possibile acquisire un blocco di listener all'avvio.
lockAcquisitionTimeout 00:01:00 Periodo massimo di tempo durante il quale il runtime tenta di acquisire un blocco.
lockAcquisitionPollingInterval n/d L'intervallo tra i tentativi di acquisizione di un blocco.

tracing

Versione 1.x

Le impostazioni di configurazione per i log creati usando un oggetto TraceWriter. Per altre informazioni, vedere [Registrazione C#].

{
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    }
}
Proprietà Predefinito Descrizione
consoleLevel info Il livello di traccia per la registrazione della console. Le opzioni sono: off, error, warning, info e verbose.
fileLoggingMode debugOnly Il livello di traccia per la registrazione di file. Le opzioni sono never, always, debugOnly.

watchDirectories

Un set di directory codice condivise da monitorare per le modifiche. Assicura che quando viene modificato il codice in tali directory, le modifiche vengono prelevate dalle funzioni.

{
    "watchDirectories": [ "Shared" ]
}

Passaggi successivi