"Referencia host.json dla Azure Functions 1.x"

Plik metadanych host.json zawiera opcje konfiguracji, które mają wpływ na wszystkie funkcje w wystąpieniu aplikacji funkcji. W tym artykule wymieniono ustawienia dostępne dla środowiska uruchomieniowego w wersji 1.x. Schemat JSON znajduje się pod http://json.schemastore.org/host.

Uwaga

Ten artykuł zachowuje host.json odniesienie dla Azure Functions runtime 1.x. Inne informacje historyczne można znaleźć w referencji o dziedzictwie runtime 1.x. Dla aktualnego host.json odniesienia, zobacz host.json odniesienie Azure Functions 2.x i nowszych.

Inne opcje konfiguracji funkcji aplikacji są zarządzane w ustawieniach aplikacji.

Niektóre ustawienia host.json są używane tylko podczas lokalnego wykonywania w pliku local.settings.json.

Przykładowy plik host.json

Następujące przykładowe pliki host.json mają określone wszystkie możliwe opcje.

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

W poniższych sekcjach tego artykułu opisano każdą właściwość najwyższego poziomu. Wszystkie są opcjonalne, chyba że wskazano inaczej.

Agregator

Określa, ile wywołań funkcji jest agregowanych podczas obliczania metryk dla usługi Application Insights.

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    }
}
Własność Domyślny opis
batchSize 1000 Maksymalna liczba żądań do agregowania.
flushTimeout 00:00:30 Maksymalny czas agregowania.

Wywołania funkcji są agregowane, gdy osiągnięto pierwszy z tych dwóch limitów.

Wgląd w aplikacje

Steruje funkcją próbkowania w usłudze Application Insights.

{
        "applicationInsights": {
                "sampling": {
                    "isEnabled": true,
                    "maxTelemetryItemsPerSecond" : 5
                }
        }
}
Własność Domyślny opis
isEnabled prawda Włącza lub wyłącza próbkowanie.
maxTelemetryItemsPerSecond 5 Próg, na którym rozpoczyna się próbkowanie.

DocumentDB

Ustawienia konfiguracji wyzwalacza i powiązań dla Azure Cosmos DB.

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
Własność Domyślny opis
GatewayMode Brama Tryb połączenia używany przez funkcję podczas nawiązywania połączenia z usługą Azure Cosmos DB. Opcje to Direct i Gateway
Protokół Https Protokół połączenia używany przez funkcję podczas nawiązywania połączenia z usługą Azure Cosmos DB. Przeczytaj tutaj, aby uzyskać wyjaśnienie obu trybów
prefiks wynajmu nie dotyczy Prefiks "lease" do stosowania we wszystkich funkcjach aplikacji.

trwałe zadanie

Ustawienia konfiguracji Durable Functions.

W Azure Functions runtime 1.x durableTask sekcja znajduje się u podstawy pliku host.json. Dostępne ustawienia zależą od wersji rozszerzenia Durable Functions. Aktualne odniesienie konfiguracyjne można znaleźć w Durable Functions host.json ustawieniach.

eventHub

Ustawienia konfiguracyjne dla wyzwalaczy i powiązań Event Hub.

— funkcje

Lista funkcji uruchamianych przez hosta zadań. Pusta tablica oznacza uruchomienie wszystkich funkcji. Przeznaczone do użytku tylko w przypadku uruchamiania lokalnego. W aplikacjach funkcji w Azure należy wykonać kroki opisane w Jak wyłączyć funkcje w Azure Functions aby wyłączyć określone funkcje zamiast używać tego ustawienia.

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

functionTimeout

Wskazuje czas trwania limitu czasu dla wszystkich funkcji. W planie użycia bezserwerowego prawidłowy zakres wynosi od 1 sekundy do 10 minut, a wartość domyślna to 5 minut. W planie usługi App Service nie ma ogólnego limitu, a wartość domyślna ma wartość null, co oznacza brak limitu czasu.

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

monitor zdrowia

Ustawienia konfiguracyjne dla monitora stanu zdrowia Host.

{
    "healthMonitor": {
        "enabled": true,
        "healthCheckInterval": "00:00:10",
        "healthCheckWindow": "00:02:00",
        "healthCheckThreshold": 6,
        "counterThreshold": 0.80
    }
}
Własność Domyślny opis
włączony prawda Określa, czy funkcja jest włączona.
interwałSprawdzaniaStanuZdrowia 10 sekund Przedział czasu między okresowymi badaniami stanu zdrowia w tle.
oknoKontroliZdrowia 2 minuty Przesuwane okno czasowe używane z ustawieniem healthCheckThreshold .
prógSprawdzeniaZdrowia 6 Maksymalna liczba niepowodzeń w sprawdzaniu kondycji przed ponownym uruchomieniem hosta.
próg licznika 0.80 Próg, przy którym licznik wydajności zostanie uznany za niezdrowy.

http

Ustawienia konfiguracji wyzwalaczy i wiązań HTTP.

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
Własność Domyślny opis
dynamiczneOgraniczeniaAktywne fałsz Po włączeniu tego ustawienia to ustawienie powoduje, że potok przetwarzania żądań okresowo sprawdza liczniki wydajności systemu, takie jak połączenia/wątki/procesy/pamięć/procesor/itp., a jeśli którykolwiek z tych liczników przekracza wbudowany wysoki próg (80%), żądania są odrzucane z odpowiedzią 429 "Zbyt zajęta", dopóki liczniki nie powrócą do normalnych poziomów.
maksymalnaLiczbaRównoczesnychŻądań nieograniczony (-1) Maksymalna liczba funkcji HTTP, które będą wykonywane równolegle. Pozwala to kontrolować współbieżność, co może pomóc w zarządzaniu wykorzystaniem zasobów. Na przykład może istnieć funkcja HTTP, która używa dużej ilości zasobów systemowych (pamięci/procesora/gniazd), tak aby powodowała problemy, gdy współbieżność jest zbyt wysoka. Możesz też mieć funkcję, która wysyła żądania wychodzące do usługi innej firmy, i te wywołania muszą być z ograniczeniami prędkości. W takich przypadkach może pomóc zastosowanie ograniczania przepustowości.
MaxLiczbaOtwartychŻądań nieograniczony (-1) Maksymalna liczba zaległych żądań, które są przechowywane w danym momencie. Limit ten obejmuje żądania, które są kolejkowane, ale nie zostały uruchomione, oraz wszelkie trwające wykonania. Wszystkie żądania przychodzące powyżej tego limitu są odrzucane z odpowiedzią 429 "Zbyt zajęta". Dzięki temu osoby wywołujące mogą używać strategii ponawiania prób opartych na czasie, a także pomaga kontrolować maksymalne opóźnienia żądań. To kontroluje tylko kolejkowanie, które ma miejsce w ścieżce wykonywania hosta skryptu. Inne kolejki, takie jak kolejka żądań ASP.NET, będą nadal obowiązywać i nie będą miały wpływu na to ustawienie.
PrefiksTrasy API (Interfejs Programowania Aplikacji) Prefiks trasy, który ma zastosowanie do wszystkich tras. Użyj pustego ciągu, aby usunąć prefiks domyślny.

identyfikator

Unikalny identyfikator hosta zadań. Może być zapisany małymi literami identyfikator GUID z usuniętymi kreskami. Wymagane przy uruchamianiu lokalnym. Podczas uruchamiania w Azure zalecamy, aby nie ustawiać wartości identyfikatora. Identyfikator jest generowany automatycznie w Azure, gdy pominięto id.

Jeśli udostępniasz konto usługi Storage w wielu aplikacjach funkcjonalnych, upewnij się, że każda aplikacja ma inny id. Możesz pominąć właściwość id lub ręcznie ustawić dla każdej aplikacji funkcjonalnej id inną wartość. Wyzwalacz czasomierza używa blokady magazynowej, aby upewnić się, że będzie tylko jedno wystąpienie czasomierza, gdy aplikacja funkcji zostanie rozproszona na wiele instancji. Jeśli dwie aplikacje funkcji współdzielą tę samą id i każda z nich używa wyzwalacza czasowego, uruchamia się tylko jeden czasomierz.

{
    "id": "9f4ea53c5136457d883d685e57164f08"
}

rejestrator

Steruje filtrowaniem dzienników napisanych przez obiekt ILogger lub context.log.

{
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    }
}
Własność Domyślny opis
Filtr kategorii nie dotyczy Określa filtrowanie według kategorii
domyślny poziom Informacja W przypadku wszystkich kategorii, które nie zostały określone w tablicy categoryLevels , wyślij dzienniki na tym poziomie i powyżej do usługi Application Insights.
poziomyKategorii nie dotyczy Tablica kategorii, która określa minimalny poziom dziennika do wysłania do usługi Application Insights dla każdej kategorii. Kategoria określona tutaj steruje wszystkimi kategoriami, które zaczynają się od tej samej wartości, a dłuższe wartości mają pierwszeństwo. W poprzednim przykładowym pliku host.json wszystkie kategorie rozpoczynające się od "Host.Aggregator" logują na poziomie Information. Wszystkie inne kategorie rozpoczynające się od "Host", takie jak "Host.Executor", rejestrują się na Error poziomie.

kolejki

Ustawienia dla wyzwalaczy i powiązań kolejki Storage.

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
Własność Domyślny opis
maksymalny interwał sondowania 60000 Maksymalny interwał w milisekundach między odpytywaniami kolejki.
visibilityTimeout (limit czasu widoczności) 0 Interwał czasu między ponowną próbą w przypadku niepowodzenia przetwarzania komunikatu.
batchSize (rozmiar wsadu) 16 Liczba komunikatów kolejki jednocześnie pobieranych i przetwarzanych równolegle przez środowisko uruchomieniowe usługi Functions. Gdy przetwarzana liczba zmniejsza się do newBatchThreshold, środowisko wykonawcze otrzymuje kolejną partię i rozpoczyna przetwarzanie tych komunikatów. Dlatego maksymalna liczba przetwarzanych współbieżnych komunikatów na funkcję to batchSize plus newBatchThreshold. Ograniczenie to ma zastosowanie oddzielnie do każdej funkcji wyzwalanej przez kolejkę.

Jeśli chcesz uniknąć równoległego wykonywania komunikatów odebranych w jednej kolejce, możesz ustawić wartość batchSize 1. Jednak to ustawienie eliminuje współbieżność tylko tak długo, jak aplikacja funkcji działa na jednej maszynie wirtualnej. Jeśli aplikacja funkcji rozszerza się do wielu maszyn wirtualnych, każda maszyna wirtualna może uruchomić jedno wystąpienie każdej funkcji wyzwalanej przez kolejkę.

Maksymalna wartość batchSize to 32.
maxDequeueCount 5 Liczba prób przetworzenia komunikatu przed przeniesieniem go do kolejki trucizny.
newBatchThreshold batchSize/2 Za każdym razem, gdy liczba przetwarzanych jednocześnie komunikatów spadnie do tej liczby, środowisko uruchomieniowe pobiera kolejną partię.

SendGrid

Ustawienie konfiguracji wiązania wyjścia SendGrid.

{
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    }
}    
Własność Domyślny opis
z nie dotyczy Adres e-mail nadawcy używany we wszystkich funkcjach.

serviceBus

Ustawienia konfiguracji dla wyzwalaczy i wiązań Service Bus.

{ 
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
Własność Domyślny opis
maksymalna liczba równoczesnych połączeń 16 Maksymalna liczba współbieżnych wywołań zwrotnych, które powinna zainicjować pompa wiadomości. Domyślnie środowisko uruchomieniowe usługi Functions przetwarza wiele komunikatów jednocześnie. Aby skierować środowisko uruchomieniowe do przetwarzania tylko pojedynczej wiadomości z kolejki lub tematu w danym momencie, ustaw wartość maxConcurrentCalls na 1.
prefetchCount nie dotyczy Domyślny parametr PrefetchCount, który będzie używany przez podstawowy odbiornik ServiceBusReceiver.
autoRenewTimeout 00:05:00 Maksymalny czas trwania, w którym blokada komunikatu zostanie odnowiona automatycznie.
autouzupełnianie prawda Gdy wartość true, wyzwalacz automatycznie ukończy przetwarzanie komunikatów po pomyślnym wykonaniu operacji. W przypadku wartości false funkcja ma obowiązek ukończenia komunikatu przed zwróceniem.

pojedyncze

Ustawienia konfiguracji zachowania blokady Singleton. Aby uzyskać więcej informacji, zobacz GitHub issue dotyczący obsługi singletonów.

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
Własność Domyślny opis
okres blokady 00:00:15 Okres, przez który są utrzymywane blokady poziomu funkcji. Zamki są automatycznie odnawiane.
Okres blokady słuchacza 00:01:00 Okres, na jaki zakładane są blokady odbiornika.
Interwał sondowania odzyskiwania blokady słuchacza 00:01:00 Interwał czasu używany do odzyskiwania blokady odbiornika, jeśli nie można uzyskać blokady odbiornika podczas uruchamiania.
limit czasu na przejęcie blokady 00:01:00 Maksymalny czas, przez jaki środowisko uruchomieniowe próbuje uzyskać blokadę.
lockAcquisitionPollingInterval nie dotyczy Interwał między próbami uzyskania blokady.

śledzenie

Wersja 1.x

Ustawienia konfiguracji dzienników tworzonych przy użyciu TraceWriter obiektu. Aby dowiedzieć się więcej, zobacz [Rejestrowanie w języku C#].

{
    "tracing": {
      "consoleLevel": "verbose",
      "fileLoggingMode": "debugOnly"
    }
}
Własność Domyślny opis
poziom konsoli informacje Poziom śledzenia dla logowania konsoli. Opcje to: off, error, warning, info i verbose.
trybLogowaniaPlików debugonly Poziom śledzenia logowania plików. Opcje to never, always, debugOnly.

monitorujKatalogi

Zestaw udostępnionych katalogów kodu, które powinny być monitorowane pod kątem zmian. Gwarantuje, że po zmianie kodu w tych katalogach zmiany są wykrywane przez funkcje.

{
    "watchDirectories": [ "Shared" ]
}

Następne kroki