Azure Functions HTTP 트리거 및 바인딩 개요

HTTP 요청을 통해 Azure Functions를 호출하여 서버리스 API를 빌드하고 웹후크에 응답할 수 있습니다.

작업 유형
HTTP 요청에서 함수 실행 트리거
함수에서 HTTP 응답 반환 출력 바인딩

확장 설치

설치하는 확장 NuGet 패키지는 함수 앱에서 사용 중인 C# 모드에 따라 다릅니다.

Functions는 격리된 C# 작업자 프로세스에서 실행됩니다. 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요.

확장 기능의 기능은 확장 버전에 따라 다릅니다.

NuGet 패키지, 버전 3.x를 설치하여 프로젝트에 확장을 추가합니다.

참고

.NET 격리의 ASP.NET Core 통합을 위해서는 추가 확장 패키지가 필요합니다.

번들 설치

Functions 버전 2.x부터 HTTP 확장은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. 자세한 내용은 확장 번들을 참조하세요.

이 버전의 확장은 확장 번들 버전 2.x가 있는 함수 앱에서 이미 사용할 수 있어야 합니다.

host.json 설정

이 섹션에서는 버전 2.x 이상에서 이 바인딩에 사용할 수 있는 구성 설정에 대해 설명합니다. host.json 파일의 설정은 함수 앱 인스턴스의 모든 함수에 적용됩니다. 아래 예제 host.json 파일에는 이 바인딩에 대한 버전 2.x+ 설정만 포함되어 있습니다. 버전 2.x 이상 버전의 함수 앱 구성 설정에 대한 자세한 내용은 Azure Functions용 host.json 참조를 참조하세요.

참고

Functions 1.x에서 host.json의 참조는 Azure Functions 1.x에 대한 host.json 참조를 참조하세요.

{
    "extensions": {
        "http": {
            "routePrefix": "api",
            "maxOutstandingRequests": 200,
            "maxConcurrentRequests": 100,
            "dynamicThrottlesEnabled": true,
            "hsts": {
                "isEnabled": true,
                "maxAge": "10"
            },
            "customHeaders": {
                "X-Content-Type-Options": "nosniff"
            }
        }
    }
}
속성 기본값 설명
customHeaders 없음 HTTP 응답에서 사용자 지정 헤더를 설정할 수 있습니다. 이전 예제는 콘텐츠 형식 검색을 방지하기 위해 응답에 X-Content-Type-Options 헤더를 추가합니다. 이 사용자 지정 헤더는 함수 앱의 모든 HTTP 트리거 함수에 적용됩니다.
dynamicThrottlesEnabled true* 사용으로 설정되면, 이 설정은 요청 처리 파이프라인에서 주기적으로 시스템 성능 카운터(예: connections/threads/processes/memory/cpu/etc)를 확인하고 해당 카운터 중 하나가 기본 제공 임계값(80%)을 초과하는 경우, 요청은 카운터가 일반 수준으로 반환될 때까지 429 "Too Busy" 응답을 표시하여 거부됩니다.
*사용량 플랜의 기본값은 true입니다. 전용 플랜의 기본값은 false입니다.
hsts 사용 안 함 isEnabledtrue로 설정되면 HstsOptions 클래스에 정의된 대로 .NET Core의 HSTS(HTTP Strict Transport Security) 동작이 적용됩니다. 위의 예제에서는 maxAge 속성도 10일로 설정합니다. hsts의 지원되는 속성은 다음과 같습니다.
속성설명
excludedHostsHSTS 헤더가 추가되지 않은 호스트 이름의 문자열 배열입니다.
includeSubDomainsStrict-Transport-Security 헤더의 includeSubDomain 매개 변수가 사용되었는지를 나타내는 부울 값입니다.
maxAgeStrict-Transport-Security 헤더의 max-age 매개 변수를 정의하는 문자열입니다.
preloadStrict-Transport-Security 헤더의 preload 매개 변수가 사용되었는지를 나타내는 부울입니다.
maxConcurrentRequests 100* 병렬로 실행될 HTTP 함수의 최대 수입니다. 이 값을 사용하면 리소스 사용률을 관리하는 데 도움이 되는 동시성을 제어할 수 있습니다. 예를 들어 많은 시스템 리소스(메모리/cpu/소켓)를 사용하는 HTTP 함수가 있으면 동시성이 너무 높은 문제가 발생할 수 있습니다. 또는 타사 서비스에 아웃바운드 요청을 하는 함수가 있는 경우 해당 호출의 속도가 제한되어야 합니다. 이러한 경우 여기에서 제한을 적용하는 것이 좋습니다.
*사용량 플랜의 기본값은 100입니다. 전용 플랜의 기본값은 바인딩되지 않습니다(-1).
maxOutstandingRequests 200* 지정된 시간에 보유할 미해결 요청의 최대 수입니다. 이 제한에는 대기 중이지만 실행이 시작되지 않은 요청과 진행 중인 모든 실행이 포함됩니다. 이 한도를 초과하여 들어오는 요청이 있으면 429 "Too Busy" 응답으로 거부됩니다. 그러면 호출자가 시간 기반 다시 시도 전략을 사용할 수 있고 최대 요청 대기 시간을 제어할 수 있습니다. 이 옵션은 스크립트 호스트 실행 경로 내에서 발생하는 큐만을 제어합니다. ASP.NET 요청 큐와 같은 다른 큐는 여전히 적용되며 이 설정의 영향을 받지 않습니다.
*사용량 플랜의 기본값은 200입니다. 전용 플랜의 기본값은 바인딩되지 않습니다(-1).
routePrefix api 모든 경로에 적용되는 경로 접두사입니다. 기본 접두사를 제거하려면 빈 문자열을 사용하십시오.

다음 단계