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

이 문서의 다음 섹션에서는 각 최상위 속성에 대해 설명합니다. 달리 명시되지 않을 경우 모두 선택 사항입니다.

aggregator

Application Insights에 대한 메트릭을 계산할 때 집계되는 함수 호출 수를 지정합니다.

{
    "aggregator": {
        "batchSize": 1000,
        "flushTimeout": "00:00:30"
    }
}
속성 기본값 Description
batchSize 1000 집계할 최대 요청 수입니다.
flushTimeout 00:00:30 집계할 최대 기간입니다.

함수 호출은 두 개의 한도 중 첫 번째 한에 도달할 때 집계됩니다.

applicationInsights

Application Insights에서 샘플링 기능을 제어합니다.

{
    "applicationInsights": {
        "sampling": {
          "isEnabled": true,
          "maxTelemetryItemsPerSecond" : 5
        }
    }
}
속성 기본값 Description
isEnabled true 샘플링을 사용 여부를 설정합니다.
maxTelemetryItemsPerSecond 5 샘플링이 시작되는 임계값입니다.

DocumentDB

Azure Cosmos DB 트리거 및 바인딩에 대한 구성 설정.

{
    "documentDB": {
        "connectionMode": "Gateway",
        "protocol": "Https",
        "leaseOptions": {
            "leasePrefix": "prefix1"
        }
    }
}
속성 기본값 Description
GatewayMode 게이트웨이 Azure Cosmos DB 서비스에 연결할 때 해당 함수에 의해 사용되는 연결 모드입니다. 옵션은 DirectGateway입니다.
프로토콜 Https Azure Cosmos DB 서비스에 연결할 때 해당 함수에 의해 사용되는 연결 프로토콜입니다. 두 모드에 대한 설명은 여기를 참조하세요.
leasePrefix 해당 없음 앱의 모든 함수에서 사용할 접두사를 임대합니다.

durableTask

지속형 함수에 대한 구성 설정입니다.

참고

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": 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,
    "maxEntityOperationBatchSize": 50
  }
 }
}

작업 허브 이름은 문자로 시작하고 문자와 숫자로만 구성되어야 합니다. 지정되지 않은 경우 함수 앱의 기본 작업 허브 이름은 DurableFunctionsHub입니다. 자세한 내용은 작업 허브를 참조하세요.

속성 기본값 Description
hubName DurableFunctionsHub 여러 Durable Functions 애플리케이션이 동일한 스토리지 백 엔드를 사용하더라도 대체 작업 허브 이름을 사용하면 이러한 애플리케이션을 서로 구분할 수 있습니다.
controlQueueBatchSize 32 제어 큐에서 한 번에 끌어올 메시지의 수입니다.
controlQueueBufferThreshold Python의 사용량 플랜: 32
JavaScript 및 C#의 사용량 플랜: 128
전용/프리미엄 계획: 256
메모리에 한 번에 버퍼링할 수 있는 컨트롤 큐 메시지의 수입니다. 이 시점에 디스패처는 추가 메시지를 큐에서 제거할 때까지 대기합니다.
partitionCount 4 제어 큐에 대한 파티션 수입니다. 1에서 16 사이의 양의 정수일 수 있습니다.
controlQueueVisibilityTimeout 5분 큐에서 제거된 제어 큐 메시지의 표시 여부 시간 제한입니다.
workItemQueueVisibilityTimeout 5분 큐에서 제거된 작업 항목 큐 메시지의 표시 여부 시간 제한입니다.
maxConcurrentActivityFunctions 사용 플랜: 10
전용/프리미엄 계획: 현재 머신의 프로세서 수의 10배
단일 호스트 인스턴스에서 동시에 처리할 수 있는 작업 함수는 최대 수입니다.
maxConcurrentOrchestratorFunctions 사용 플랜: 5
전용/프리미엄 계획: 현재 머신의 프로세서 수의 10배
단일 호스트 인스턴스에서 동시에 처리할 수 있는 오케스트레이터 함수의 최대 개수입니다.
maxQueuePollingInterval 30초 최대 제어 및 작업 항목 큐 폴링 간격(hh:mm:ss 형식)입니다. 값이 높을수록 메시지 처리 대기 시간이 길어질 수 있습니다. 값이 낮을수록 스토리지 트랜잭션이 증가하기 때문에 스토리지 비용이 높아질 수 있습니다.
connectionName(2.7.0 이상)
connectionStringName(2.x)
azureStorageConnectionStringName(1.x)
AzureWebJobsStorage 기본 Azure Storage 리소스에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 단일 앱 설정이 제공되는 경우 Azure Storage 연결 문자열이어야 합니다.
trackingStoreConnectionName(2.7.0 이상)
trackingStoreConnectionStringName
기록 및 인스턴스 테이블에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 단일 앱 설정이 제공되는 경우 Azure Storage 연결 문자열이어야 합니다. 지정하지 않으면, connectionStringName(Durable 2.x) 또는 azureStorageConnectionStringName(Durable 1.x) 연결이 사용됩니다.
trackingStoreNamePrefix trackingStoreConnectionStringName이 지정된 경우 기록 및 인스턴스 테이블에 사용할 접두사입니다. 설정하지 않는 경우 기본 접두사 값은 DurableTask입니다. trackingStoreConnectionStringName을 지정하지 않으면 기록 및 인스턴스 테이블은 hubName 값을 접두사로 사용하고 trackingStoreNamePrefix에 대한 설정은 무시됩니다.
traceInputsAndOutputs false 함수 호출의 입출력을 추적할지 여부를 나타내는 값입니다. 함수 실행 이벤트를 추적할 때의 기본 동작은 함수 호출에 대한 직렬화된 입출력에 바이트 수를 포함하는 것입니다. 이 동작은 로그를 부풀리거나 실수로 중요한 정보를 노출하지 않으면서 입력 및 출력이 어떻게 보일지에 대한 최소한의 정보를 제공합니다. 이 속성을 true로 설정하면 기본 함수 로깅이 함수 입출력의 전체 내용을 기록하게 됩니다.
traceReplayEvents false Application Insights에 이벤트를 재생하는 오케스트레이션을 작성할 것인지 여부를 나타내는 값입니다.
eventGridTopicEndpoint Azure Event Grid 사용자 지정 항목 엔드포인트의 URL입니다. 이 속성이 설정되면 오케스트레이션 수명 주기 알림 이벤트가 이 엔드포인트에 게시됩니다. 이 속성은 앱 설정 해결을 지원합니다.
eventGridKeySettingName EventGridTopicEndpoint에서 Azure Event Grid 사용자 지정 항목으로 인증하는 데 사용되는 키를 포함하는 앱 설정의 이름입니다.
eventGridPublishRetryCount 0 Event Grid 항목에 게시가 실패하는 경우 다시 시도 횟수입니다.
eventGridPublishRetryInterval 5분 hh:mm:ss 형식의 Event Grid 게시 재시도 간격입니다.
eventGridPublishEventTypes Event Grid에 게시할 이벤트 유형 목록입니다. 지정하지 않으면 모든 이벤트 유형이 게시됩니다. 허용되는 값에는 Started, Completed, Failed, Terminated가 포함됩니다.
useAppLease true true로 설정하면, 앱은 작업 허브 메시지를 처리하기 전에 앱 수준 Blob 임대를 확보해야 합니다. 자세한 내용은 재해 복구 및 지역 배포 설명서를 참조하세요. v2.3.0부터 사용할 수 있습니다.
useLegacyPartitionManagement false false로 설정하면, 확장 시 중복 함수 실행 가능성을 줄이는 파티션 관리 알고리즘을 사용합니다. v2.3.0부터 사용할 수 있습니다.
useGracefulShutdown false (미리 보기) 정상적인 종료를 사용하도록 설정하여 호스트 종료가 in-process 함수 실행에 실패할 가능성을 줄입니다.
maxEntityOperationBatchSize(2.6.1) 소비 계획: 50
전용/프리미엄 플랜: 5000
일괄 처리로 처리되는 항목 작업의 최대 수입니다. 1로 설정하면 일괄 처리가 사용하지 않도록 설정되고 각 작업 메시지는 별도의 함수 호출로 처리됩니다.

이러한 설정의 대부분은 성능 최적화를 위한 것입니다. 자세한 내용은 성능 및 크기 조정을 참조하세요.

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
    }
}
속성 기본값 Description
사용 true 기능의 사용 여부를 지정합니다.
healthCheckInterval 10초 정기적인 백그라운드 상태 검사 사이의 간격
healthCheckWindow 2분 healthCheckThreshold 설정과 함께 사용되는 슬라이딩 시간 범위
healthCheckThreshold 6 호스트 재생이 시작되기 전에 상태 검사 실패가 용인되는 최대 횟수
counterThreshold 0.80 성능 카운터가 비정상으로 간주되는 임계값

http

http 트리거 및 바인딩에 대한 구성 설정입니다.

{
    "http": {
        "routePrefix": "api",
        "maxOutstandingRequests": 200,
        "maxConcurrentRequests": 100,
        "dynamicThrottlesEnabled": true
    }
}
속성 기본값 Description
dynamicThrottlesEnabled false 사용 설정되면, 이 설정은 요청 처리 파이프라인에서 주기적으로 시스템 성능 카운터(연결/스레드/프로세스/메모리/cpu/등)를 확인하고 해당 카운터 중 하나가 기본 제공 임계값(80%)을 초과하는 경우, 요청은 카운터가 일반 수준으로 반환될 때까지 429 "작업 초과" 응답을 표시하여 거부됩니다.
maxConcurrentRequests unbounded(-1) 병렬로 실행될 HTTP 함수의 최대 수입니다. 그러면 리소스 사용률을 관리하는 데 도움이 되는 동시성을 제어할 수 있습니다. 예를 들어 많은 시스템 리소스(메모리/cpu/소켓)를 사용하는 HTTP 함수가 있으면 동시성이 너무 높은 문제가 발생할 수 있습니다. 또는 타사 서비스에 아웃바운드 요청을 하는 함수가 있는 경우 해당 호출의 속도가 제한되어야 합니다. 이러한 경우 여기에서 제한을 적용하는 것이 좋습니다.
maxOutstandingRequests unbounded(-1) 지정된 시간에 보유할 미해결 요청의 최대 수입니다. 이 제한에는 대기 중이지만 실행이 시작되지 않은 요청과 진행 중인 모든 실행이 포함됩니다. 이 한도를 초과하여 들어오는 요청이 있으면 429 "Too Busy" 응답으로 거부됩니다. 그러면 호출자가 시간 기반 다시 시도 전략을 사용할 수 있고 최대 요청 대기 시간을 제어할 수 있습니다. 이 옵션은 스크립트 호스트 실행 경로 내에서 발생하는 큐만을 제어합니다. ASP.NET 요청 큐와 같은 다른 큐는 여전히 적용되며 이 설정의 영향을 받지 않습니다.
routePrefix api 모든 경로에 적용되는 경로 접두사입니다. 기본 접두사를 제거하려면 빈 문자열을 사용하십시오.

id

작업 호스트의 고유 ID입니다. 대시가 제거된 소문자 GUID일 수 있습니다. 로컬에서 실행될 때 필요합니다. Azure에서 실행할 때는 ID 값을 설정하지 않는 것이 좋습니다. id를 생략하면 ID가 Azure에서 자동으로 생성됩니다.

여러 함수 앱에서 Storage 계정을 공유하는 경우 각 함수 앱의 id가 다른지 확인합니다. id 속성을 생략하거나 수동으로 각 함수 앱의 id를 다른 값으로 설정할 수 있습니다. 타이머 트리거는 함수 앱이 여러 인스턴스로 확장되는 경우 스토리지 잠금을 사용하여 하나의 타이머 인스턴스만이 존재하도록 합니다. 두 개의 함수 앱이 동일한 id를 공유하고 각각 타이머 트리거를 사용하는 경우 하나의 타이머만이 실행됩니다.

{
    "id": "9f4ea53c5136457d883d685e57164f08"
}

logger

ILogger 개체 또는 context.log에 의해 기록된 로그 필터링을 제어합니다.

{
    "logger": {
        "categoryFilter": {
            "defaultLevel": "Information",
            "categoryLevels": {
                "Host": "Error",
                "Function": "Error",
                "Host.Aggregator": "Information"
            }
        }
    }
}
속성 기본값 Description
categoryFilter 해당 없음 범주별 필터링을 지정합니다.
defaultLevel 정보 categoryLevels 배열에 지정되지 않은 범주가 있으면 이 수준 이상의 로그를 Application Insights로 보내십시오.
categoryLevels 해당 없음 각 범주에 대해 Application Insight에 보낼 최소 로그 수준을 지정하는 범주 배열입니다. 여기에 지정된 범주는 동일한 값으로 시작하는 모든 범주를 제어하며 긴 값이 우선합니다. 앞의 샘플 host.json 파일에서 "Host.Aggregator"로 시작하는 모든 범주는 Information 수준으로 기록됩니다. "Host.Executor"와 같이 "Host"로 시작하는 다른 모든 범주는 Error 수준으로 기록됩니다.

queues

스토리지 큐 트리거 및 바인딩에 대한 구성 설정입니다.

{
    "queues": {
      "maxPollingInterval": 2000,
      "visibilityTimeout" : "00:00:30",
      "batchSize": 16,
      "maxDequeueCount": 5,
      "newBatchThreshold": 8
    }
}
속성 기본값 Description
maxPollingInterval 60000 큐 폴링 사이 최대 간격(밀리초)입니다.
visibilityTimeout 0 메시지 처리가 실패하는 경우 재시도 사이의 간격입니다.
batchSize 16 함수 런타임이 동시에 검색하고 병렬로 처리하는 큐 메시지 수입니다. 처리되는 개수가 newBatchThreshold로 감소하면 런타임은 다른 일괄 처리를 가져와 해당 메시지의 처리를 시작합니다. 따라서 함수당 처리되는 최대 동시 메시지 수는 batchSize + newBatchThreshold입니다. 이 제한은 큐 트리거 함수에 개별적으로 적용됩니다.

하나의 큐에 수신된 메시지에 대해 병렬 실행을 방지하려면 batchSize을 1로 설정합니다. 그러나 이 설정은 함수 앱이 단일 VM(가상 머신)에서 실행되는 동안에만 동시성을 제거합니다. 함수 앱이 여러 VM에 확장되면 각 VM은 각 큐 트리거 함수의 인스턴스 하나를 실행할 수 있습니다.

최대 batchSize은 32입니다.
maxDequeueCount 5 포이즌 큐로 이동하기 전에 메시지 처리를 시도할 횟수입니다.
newBatchThreshold batchSize/2 동시에 처리되는 메시지의 수가 이 숫자로 내려갈 때마다 런타임은 다른 일괄 처리를 검색합니다.

SendGrid

SendGrind 출력 바인딩에 대한 구성 설정

{
    "sendGrid": {
        "from": "Contoso Group <admin@contoso.com>"
    }
}    
속성 기본값 Description
원본 해당 없음 모든 함수에서 보낸 사람의 이메일 주소입니다.

serviceBus

Service Bus 트리거 및 바인딩에 대한 구성 설정입니다.

{
    "serviceBus": {
      "maxConcurrentCalls": 16,
      "prefetchCount": 100,
      "autoRenewTimeout": "00:05:00",
      "autoComplete": true
    }
}
속성 기본값 Description
maxConcurrentCalls 16 메시지 펌프가 시작되어야 하는 콜백에 대한 최대 동시 호출 수입니다. 기본적으로 함수 런타임은 여러 개의 메시지를 동시에 처리합니다. 런타임이 큐 또는 토픽 메시지를 한 번에 하나만 처리하도록 하려면, maxConcurrentCalls를 1로 설정합니다.
prefetchCount 해당 없음 기본 MessageReceiver에서 사용할 기본 PrefetchCount입니다.
autoRenewTimeout 00:05:00 메시지 잠금이 자동으로 갱신되는 최대 기간입니다.
autoComplete true true인 경우 작업을 성공적으로 실행했을 때 트리거가 자동으로 메시지 처리를 완료합니다. false인 경우 반환하기 전에 메시지를 완료하는 작업을 해당 함수에서 담당합니다.

singleton

Singleton 잠금 동작에 대한 구성 설정입니다. 자세한 내용은 singleton 지원에 대한 GitHub 문제를 참조하세요.

{
    "singleton": {
      "lockPeriod": "00:00:15",
      "listenerLockPeriod": "00:01:00",
      "listenerLockRecoveryPollingInterval": "00:01:00",
      "lockAcquisitionTimeout": "00:01:00",
      "lockAcquisitionPollingInterval": "00:00:03"
    }
}
속성 기본값 Description
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"
    }
}
속성 기본값 Description
consoleLevel 정보 콘솔 로깅의 추적 수준입니다. 옵션은 off, error, warning, infoverbose입니다.
fileLoggingMode debugOnly 파일 로깅에 대한 추적 수준입니다. 옵션은 never, always, debugOnly입니다.

watchDirectories

변경 내용을 모니터링해야 하는 공유 코드 디렉터리 집합입니다. 이 디렉터리의 코드가 변경되면 변경 내용이 함수에 의해 선택되도록 합니다.

{
    "watchDirectories": [ "Shared" ]
}

다음 단계