Azure Functions HTTP 트리거Azure Functions HTTP trigger

HTTP 트리거를 사용하면 HTTP 요청으로 함수를 호출할 수 있습니다.The HTTP trigger lets you invoke a function with an HTTP request. HTTP 트리거를 사용하여 서버리스 API를 만들고 웹후크에 응답할 수 있습니다.You can use an HTTP trigger to build serverless APIs and respond to webhooks.

HTTP 트리거 함수의 기본 반환 값은 다음과 같습니다.The default return value for an HTTP-triggered function is:

  • Functions 2.x 이상에서 빈 본문이 있는 HTTP 204 No ContentHTTP 204 No Content with an empty body in Functions 2.x and higher
  • Functions 1.x에서 빈 본문이 있는 HTTP 200 OKHTTP 200 OK with an empty body in Functions 1.x

HTTP 응답을 수정하려면 출력 바인딩을 구성합니다.To modify the HTTP response, configure an output binding.

HTTP 바인딩에 대한 자세한 내용은 개요출력 바인딩 참조를 참조하세요.For more information about HTTP bindings, see the overview and output binding reference.

HTTP 또는 WebHook를 사용할 계획인 경우 HttpClient의 부적절한 인스턴스화로 인해 발생할 수 있는 포트 소모를 피하도록 계획합니다.If you plan to use the HTTP or WebHook bindings, plan to avoid port exhaustion that can be caused by improper instantiation of HttpClient. 자세한 내용은 Azure Functions에서 연결을 관리하는 방법을 참조하세요.For more information, see How to manage connections in Azure Functions.

예제Example

다음 예제는 쿼리 문자열이나 HTTP 요청의 본문에서 name 매개 변수를 찾는 C# 함수를 보여 줍니다.The following example shows a C# function that looks for a name parameter either in the query string or the body of the HTTP request. 반환 값은 출력 바인딩에 사용되지만, 반환 값 특성은 필요 없습니다.Notice that the return value is used for the output binding, but a return value attribute isn't required.

[FunctionName("HttpTriggerCSharp")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
    HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];
    
    string requestBody = String.Empty;
    using (StreamReader streamReader =  new  StreamReader(req.Body))
    {
        requestBody = await streamReader.ReadToEndAsync();
    }
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;
    
    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

특성 및 주석Attributes and annotations

C# 클래스 라이브러리 및 Java에서는 함수를 구성하는 데 HttpTrigger 특성을 사용할 수 있습니다.In C# class libraries and Java, the HttpTrigger attribute is available to configure the function.

특성 생성자 매개 변수, 웹후크 유형 및 경로 템플릿에 권한 부여 수준 및 허용되는 HTTP 메서드를 설정할 수 있습니다.You can set the authorization level and allowable HTTP methods in attribute constructor parameters, webhook type, and a route template. 이러한 구성 설정에 대한 자세한 내용은 구성을 참조하세요.For more information about these settings, see configuration.

이 예제에서는 HttpTrigger 특성을 사용하는 방법을 보여 줍니다.This example demonstrates how to use the HttpTrigger attribute.

[FunctionName("HttpTriggerCSharp")]
public static Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequest req)
{
    ...
}

전체 예제는 트리거 예제를 참조하세요.For a complete example, see the trigger example.

구성Configuration

다음 표에서는 function.json 파일 및 HttpTrigger 특성에 설정된 바인딩 구성 속성을 설명합니다.The following table explains the binding configuration properties that you set in the function.json file and the HttpTrigger attribute.

function.json 속성function.json property 특성 속성Attribute property DescriptionDescription
typetype 해당 없음n/a 필수 - httpTrigger으로 설정해야 합니다.Required - must be set to httpTrigger.
directiondirection 해당 없음n/a 필수 - in으로 설정해야 합니다.Required - must be set to in.
namename 해당 없음n/a 필수 - 요청 또는 요청 본문의 함수 코드에 사용되는 변수 이름입니다.Required - the variable name used in function code for the request or request body.
authLevelauthLevel AuthLevelAuthLevel 키가 있는 경우 함수를 호출하기 위해 요청에 포함되어야 하는 키를 결정합니다.Determines what keys, if any, need to be present on the request in order to invoke the function. 권한 부여 수준은 다음 값 중 하나일 수 있습니다.The authorization level can be one of the following values:
  • anonymous—: API 키가 필요하지 않습니다.anonymous—No API key is required.
  • function—: 함수 전용 API 키가 필요합니다.function—A function-specific API key is required. authLevel 속성 값을 제공하지 않을 경우 기본값입니다.This is the default value if none is provided.
  • admin—: 마스터 키가 필요합니다.admin—The master key is required.
자세한 내용은 권한 부여 키에 대한 섹션을 참조하세요.For more information, see the section about authorization keys.
methodsmethods 메서드Methods 함수에서 응답할 HTTP 메서드의 배열입니다.An array of the HTTP methods to which the function responds. 이 속성을 지정하지 않으면 함수에서 모든 HTTP 메서드에 응답합니다.If not specified, the function responds to all HTTP methods. HTTP 엔드포인트 사용자 지정을 참조하세요.See customize the HTTP endpoint.
routeroute RouteRoute 경로 템플릿을 정의하여 함수에서 응답할 요청 URL을 제어합니다.Defines the route template, controlling to which request URLs your function responds. 값을 제공하지 않을 경우 기본값은 <functionname>입니다.The default value if none is provided is <functionname>. 자세한 내용은 HTTP 엔드포인트 사용자 지정을 참조하세요.For more information, see customize the HTTP endpoint.
webHookTypewebHookType WebHookTypeWebHookType 버전 1.x 런타임에서만 지원됩니다.Supported only for the version 1.x runtime.

HTTP 트리거가 지정된 공급자의 웹후크 수신기(receiver)로 작동하도록 구성합니다.Configures the HTTP trigger to act as a webhook receiver for the specified provider. 이 속성을 설정하면 methods 속성을 설정하지 마십시오.Don't set the methods property if you set this property. 웹후크 형식은 다음 값 중 하나일 수 있습니다.The webhook type can be one of the following values:
  • genericJson—특정 공급자를 위한 논리가 없는 범용 webhook 엔드포인트입니다.genericJson—A general-purpose webhook endpoint without logic for a specific provider. 이 설정은 HTTP POST 및 application/json 콘텐츠 형식을 사용하는 요청으로만 제한됩니다.This setting restricts requests to only those using HTTP POST and with the application/json content type.
  • github—이 함수는 GitHub 웹후크에 응답합니다.github—The function responds to GitHub webhooks. GitHub 웹후크에는 authLevel 속성을 사용하지 마십시오.Do not use the authLevel property with GitHub webhooks. 자세한 내용은 이 문서의 뒷부분에서 GitHub 웹후크 섹션을 참조하세요.For more information, see the GitHub webhooks section later in this article.
  • slack—이 함수는 Slack 웹후크에 응답합니다.slack—The function responds to Slack webhooks. Slack 웹후크에는 authLevel 속성을 사용하지 마십시오.Do not use the authLevel property with Slack webhooks. 자세한 내용은 이 문서의 뒷부분에서 Slack 웹후크 섹션을 참조하세요.For more information, see the Slack webhooks section later in this article.

페이로드Payload

트리거 입력 형식은 HttpRequest 또는 사용자 지정 형식으로 선언됩니다.The trigger input type is declared as either HttpRequest or a custom type. HttpRequest를 선택하면 요청 개체에 대한 모든 권한을 갖게 됩니다.If you choose HttpRequest, you get full access to the request object. 사용자 지정 형식의 경우 런타임은 JSON 요청 본문의 구문을 분석하여 개체 속성을 설정하려고 합니다.For a custom type, the runtime tries to parse the JSON request body to set the object properties.

HTTP 엔드포인트 사용자 지정Customize the HTTP endpoint

기본적으로 HTTP 트리거용 함수를 만드는 경우 폼의 경로를 사용하여 이 함수의 주소를 지정할 수 있습니다.By default when you create a function for an HTTP trigger, the function is addressable with a route of the form:

http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>

HTTP 트리거의 입력 바인딩에서 선택적 route 속성을 사용하여 이 경로를 사용자 지정할 수 있습니다.You can customize this route using the optional route property on the HTTP trigger's input binding. 예를 들어 다음 function.json 파일은 HTTP 트리거에 대한 route 속성을 정의합니다.As an example, the following function.json file defines a route property for an HTTP trigger:

{
    "bindings": [
    {
        "type": "httpTrigger",
        "name": "req",
        "direction": "in",
        "methods": [ "get" ],
        "route": "products/{category:alpha}/{id:int?}"
    },
    {
        "type": "http",
        "name": "res",
        "direction": "out"
    }
    ]
}

이 구성을 사용하면 원래 경로 대신 다음 경로를 사용하여 함수의 주소를 지정할 수 있습니다.Using this configuration, the function is now addressable with the following route instead of the original route.

http://<APP_NAME>.azurewebsites.net/api/products/electronics/357

이 구성으로 함수 코드에서 주소의 두 매개 변수, categoryid 를 지원할 수 있습니다.This configuration allows the function code to support two parameters in the address, category and id.

매개 변수에서 웹 API 경로 제약 조건을 사용할 수 있습니다.You can use any Web API Route Constraint with your parameters. 다음 C# 함수 코드는 두 매개 변수를 모두 사용합니다.The following C# function code makes use of both parameters.

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;

public static IActionResult Run(HttpRequest req, string category, int? id, ILogger log)
{
    var message = String.Format($"Category: {category}, ID: {id}");
    return (ActionResult)new OkObjectResult(message);
}

기본적으로 모든 함수 경로에는 api 접두사가 붙습니다.By default, all function routes are prefixed with api. host.json 파일에서 extensions.http.routePrefix 속성을 사용하여 접두사를 사용자 지정하거나 제거할 수도 있습니다.You can also customize or remove the prefix using the extensions.http.routePrefix property in your host.json file. 다음 예제에서는 host.json 파일에서 빈 문자열을 접두사로 사용하여 api 경로 접두사를 제거합니다.The following example removes the api route prefix by using an empty string for the prefix in the host.json file.

{
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    }
}

경로 매개 변수 사용Using route parameters

함수의 route 패턴을 정의하는 경로 매개 변수는 각 바인딩에 사용할 수 있습니다.Route parameters that defined a function's route pattern are available to each binding. 예를 들어 "route": "products/{id}"로 정의된 경로가 있는 경우 테이블 스토리지 바인딩은 바인딩 구성에서 {id} 매개 변수의 값을 사용할 수 있습니다.For example, if you have a route defined as "route": "products/{id}" then a table storage binding can use the value of the {id} parameter in the binding configuration.

다음 구성에서는 {id} 매개 변수가 바인딩의 rowKey로 전달되는 방법을 보여 줍니다.The following configuration shows how the {id} parameter is passed to the binding's rowKey.

{
    "type": "table",
    "direction": "in",
    "name": "product",
    "partitionKey": "products",
    "tableName": "products",
    "rowKey": "{id}"
}

경로 매개 변수를 사용 하는 경우 invoke_URL_template 함수에 대해가 자동으로 만들어집니다.When you use route parameters, an invoke_URL_template is automatically created for your function. 클라이언트는 url을 사용 하 여 함수를 호출할 때 url 템플릿을 사용 하 여 url에 전달 해야 하는 매개 변수를 이해할 수 있습니다.Your clients can use the URL template to understand the parameters they need to pass in the URL when calling your function using its URL. Azure Portal 에서 HTTP 트리거 함수 중 하나로 이동 하 고 함수 URL 가져오기 를 선택 합니다.Navigate to one of your HTTP-triggered functions in the Azure portal and select Get function URL.

invoke_URL_template 목록 함수 또는 Get 함수에 Azure Resource Manager api를 사용 하 여 프로그래밍 방식으로에 액세스할 수 있습니다.You can programmatically access the invoke_URL_template by using the Azure Resource Manager APIs for List Functions or Get Function.

클라이언트 ID 사용Working with client identities

함수 앱이 App Service 인증 / 권한 부여를 사용하는 경우 코드에서 인증된 클라이언트에 대한 정보를 볼 수 있습니다.If your function app is using App Service Authentication / Authorization, you can view information about authenticated clients from your code. 이 정보는 플랫폼에 의해 삽입된 요청 헤더로서 사용할 수 있습니다.This information is available as request headers injected by the platform.

데이터 바인딩에서 이 정보를 읽을 수도 있습니다.You can also read this information from binding data. 이 기능은 2.x 이상의 Functions 런타임에서만 사용할 수 있습니다.This capability is only available to the Functions runtime in 2.x and higher. 또한 이 기능은 현재 .NET 언어에 대해서만 사용할 수 있습니다.It is also currently only available for .NET languages.

인증된 클라이언트에 대한 정보는 ClaimsPrincipal로 제공됩니다.Information regarding authenticated clients is available as a ClaimsPrincipal. 다음 예제에 표시된 대로 ClaimsPrincipal을 요청 컨텍스트의 일부로 사용할 수 있습니다.The ClaimsPrincipal is available as part of the request context as shown in the following example:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;

public static IActionResult Run(HttpRequest req, ILogger log)
{
    ClaimsPrincipal identities = req.HttpContext.User;
    // ...
    return new OkObjectResult();
}

또는 ClaimsPrincipal은 함수 시그니처에 단순히 추가 매개 변수로 포함될 수 있습니다.Alternatively, the ClaimsPrincipal can simply be included as an additional parameter in the function signature:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
using Newtonsoft.Json.Linq;

public static void Run(JObject input, ClaimsPrincipal principal, ILogger log)
{
    // ...
    return;
}

함수 액세스 키Function access keys

함수에서는 키를 사용해 개발 중에 HTTP 함수 엔드포인트 액세스를 더 어렵게 만들 수 있습니다.Functions lets you use keys to make it harder to access your HTTP function endpoints during development. HTTP 트리거 함수의 HTTP 액세스 수준이 anonymous로 설정되지 않는 경우 요청에는 API 액세스 키가 포함되어야 합니다.Unless the HTTP access level on an HTTP triggered function is set to anonymous, requests must include an API access key in the request.

키가 기본 보안 메커니즘을 제공 하는 반면, 프로덕션 환경에서 HTTP 끝점을 보호 하기 위한 추가 옵션을 고려해 야 할 수 있습니다.While keys provide a default security mechanism, you may want to consider additional options to secure an HTTP endpoint in production. 예를 들어 공용 앱에 공유 암호를 배포 하는 것은 일반적이 지 않습니다.For example, it's generally not a good practice to distribute shared secret in public apps. Public 클라이언트에서 함수를 호출 하는 경우 다른 보안 메커니즘을 구현 하는 것을 고려해 볼 수 있습니다.If your function is being called from a public client, you may want to consider implementing another security mechanism. 자세히 알아보려면 프로덕션 환경에서 HTTP 엔드포인트 보호를 참조하세요.To learn more, see Secure an HTTP endpoint in production.

함수 키 값을 갱신 하는 경우 함수를 호출 하는 모든 클라이언트에 업데이트 된 키 값을 수동으로 다시 배포 해야 합니다.When you renew your function key values, you must manually redistribute the updated key values to all clients that call your function.

권한 부여 범위(함수 수준)Authorization scopes (function-level)

함수 수준 키에는 두 가지 액세스 범위가 있습니다.There are two access scopes for function-level keys:

  • 함수: 정의된 특정 함수에만 적용됩니다.Function: These keys apply only to the specific functions under which they are defined. API 키로 사용되면 이 키를 통해 해당 함수에만 액세스할 수 있습니다.When used as an API key, these only allow access to that function.

  • 호스트: 호스트 범위가 있는 키를 사용하여 함수 앱 내의 모든 함수에 액세스할 수 있습니다.Host: Keys with a host scope can be used to access all functions within the function app. API 키로 사용되면 이 키를 통해 함수 앱 내의 모든 함수에 액세스할 수 있습니다.When used as an API key, these allow access to any function within the function app.

각 키의 이름은 참조될 수 있도록 지정되며 함수 및 호스트 수준에서는 "default"라는 기본 키가 있습니다.Each key is named for reference, and there is a default key (named "default") at the function and host level. function 키는 호스트 키보다 우선합니다.Function keys take precedence over host keys. 두 키가 동일한 이름으로 정의되면 항상 함수 키가 사용됩니다.When two keys are defined with the same name, the function key is always used.

마스터 키(관리자 수준)Master key (admin-level)

각 함수 앱에는 _master라는 관리자 수준 호스트 키도 있습니다.Each function app also has an admin-level host key named _master. 마스터 키는 앱의 모든 함수에 대한 호스트 수준 액세스를 제공할 뿐만 아니라 런타임 REST API에 대한 관리 액세스도 제공합니다.In addition to providing host-level access to all functions in the app, the master key also provides administrative access to the runtime REST APIs. 이 키를 취소할 수 없습니다.This key cannot be revoked. 액세스 수준을 admin으로 설정하면 요청에서 마스터 키를 사용해야 하며, 다른 키를 사용하면 액세스가 실패합니다.When you set an access level of admin, requests must use the master key; any other key results in access failure.

주의

함수 앱에서는 마스터 키를 통해 높은 권한이 부여되므로, 이 키를 제3자와 공유하거나 네이티브 클라이언트 애플리케이션에 배포해서는 안 됩니다.Due to the elevated permissions in your function app granted by the master key, you should not share this key with third parties or distribute it in native client applications. 따라서 관리자 액세스 수준을 선택하는 경우 주의해야 합니다.Use caution when choosing the admin access level.

키 확보Obtaining keys

키는 Azure에 함수 앱의 일부로 저장되며 나머지는 암호화되어 있습니다.Keys are stored as part of your function app in Azure and are encrypted at rest. 키를 보거나, 새 키를 만들거나, 키를 새 값으로 롤오버 하려면 Azure Portal 에서 HTTP 트리거 함수 중 하나로 이동 하 여 기능 키 를 선택 합니다.To view your keys, create new ones, or roll keys to new values, navigate to one of your HTTP-triggered functions in the Azure portal and select Function Keys.

호스트 키를 관리할 수도 있습니다.You can also manage host keys. Azure Portal 의 함수 앱으로 이동 하 고 앱 키 를 선택 합니다.Navigate to the function app in the Azure portal and select App keys.

Azure Resource Manager Api를 사용 하 여 프로그래밍 방식으로 함수 및 호스트 키를 가져올 수 있습니다.You can obtain function and host keys programmatically by using the Azure Resource Manager APIs. 기능 키를 나열 하 고 호스트 키를 나열 하는 api가 있으며 배포 슬롯을 사용 하는 경우 해당 Api에는 함수 키 슬롯목록 호스트 키 슬롯이나열 됩니다.There are APIs to List Function Keys and List Host Keys, and when using deployment slots the equivalent APIs are List Function Keys Slot and List Host Keys Slot.

함수 비밀만들기 또는 업데이트, 함수 비밀 슬롯 만들기또는 업데이트, 호스트 비밀 만들기 또는 업데이트, 호스트 비밀 슬롯 api 만들기 또는 업데이트를 사용 하 여 프로그래밍 방식으로 새 함수 및 호스트 키를 만들 수도 있습니다.You can also create new function and host keys programmatically by using the Create Or Update Function Secret, Create Or Update Function Secret Slot, Create Or Update Host Secret and Create Or Update Host Secret Slot APIs.

함수 및 호스트 키는 Delete 함수 비밀, Delete 함수 비밀 슬롯삭제, 호스트 암호삭제 및 호스트 비밀 슬롯 삭제 api를 사용 하 여 프로그래밍 방식으로 삭제할 수 있습니다.Function and host keys can be deleted programmatically by using the Delete Function Secret, Delete Function Secret Slot, Delete Host Secret, and Delete Host Secret Slot APIs.

레거시 키 관리 api를 사용 하 여 함수 키를 가져올수도 있지만 대신 Azure Resource Manager api를 사용 하는 것이 좋습니다.You can also use the legacy key management APIs to obtain function keys, but using the Azure Resource Manager APIs is recommended instead.

API 키 권한 부여API key authorization

대다수 HTTP 트리거 템플릿을 사용할 때는 요청에 API 키가 필요합니다.Most HTTP trigger templates require an API key in the request. 따라서 HTTP 요청은 일반적으로 다음 URL과 같습니다.So your HTTP request normally looks like the following URL:

https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?code=<API_KEY>

위에 나와 있는 것처럼 쿼리 문자열 변수 code에 키를 포함할 수 있습니다.The key can be included in a query string variable named code, as above. x-functions-key HTTP 헤더에 키를 포함할 수도 있습니다.It can also be included in an x-functions-key HTTP header. 키 값은 함수에 대해 정의된 모든 function 키 또는 모든 호스트 키일 수 있습니다.The value of the key can be any function key defined for the function, or any host key.

키를 요구하지 않는 익명 요청을 허용할 수 있습니다.You can allow anonymous requests, which do not require keys. 마스터 키를 사용하도록 요구할 수도 있습니다.You can also require that the master key is used. 바인딩 JSON에서 authLevel 속성을 사용하여 기본 권한 수준을 변경합니다.You change the default authorization level by using the authLevel property in the binding JSON. 자세한 내용은 트리거 - 구성을 참조하세요.For more information, see Trigger - configuration.

참고

함수를 로컬로 실행할 때는 지정된 권한 부여 수준 설정에 관계없이 권한 부여가 사용하지 않도록 설정됩니다.When running functions locally, authorization is disabled regardless of the specified authorization level setting. Azure에 게시하고 나면 트리거의 authLevel 설정이 적용됩니다.After publishing to Azure, the authLevel setting in your trigger is enforced. 컨테이너에서 로컬로 실행하는 경우에도 키가 필요합니다.Keys are still required when running locally in a container.

프로덕션 환경에서 HTTP 엔드포인트 보호Secure an HTTP endpoint in production

프로덕션 환경에서 함수 엔드포인트를 완벽하게 보호하려면 다음의 함수 앱 수준 보안 옵션 중 하나를 구현해야 합니다.To fully secure your function endpoints in production, you should consider implementing one of the following function app-level security options. 이러한 함수 앱 수준 보안 방법 중 하나를 사용할 때는 HTTP 트리거 함수 인증 수준을 anonymous로 설정해야 합니다.When using one of these function app-level security methods, you should set the HTTP-triggered function authorization level to anonymous.

App Service 인증/권한 부여를 사용하도록 설정Enable App Service Authentication/Authorization

App Service 플랫폼에서는 AAD(Azure Active Directory) 및 기타 여러 타사 ID 공급자를 사용하여 클라이언트를 인증할 수 있습니다.The App Service platform lets you use Azure Active Directory (AAD) and several third-party identity providers to authenticate clients. 이 전략을 사용하여 함수용 사용자 지정 권한 부여 규칙을 구현할 수 있으며, 함수 코드에서 사용자 정보를 사용할 수 있습니다.You can use this strategy to implement custom authorization rules for your functions, and you can work with user information from your function code. 자세히 알아보려면 Azure App Service에서 인증 및 권한 부여클라이언트 ID 사용을 참조하세요.To learn more, see Authentication and authorization in Azure App Service and Working with client identities.

Azure APIM(API Management)를 사용하여 요청 인증Use Azure API Management (APIM) to authenticate requests

APIM은 수신 요청에 사용할 수 있는 여러 가지 API 보안 옵션을 제공합니다.APIM provides a variety of API security options for incoming requests. 자세히 알아보려면 API Management 인증 정책을 참조하세요.To learn more, see API Management authentication policies. APIM을 적용하면 APIM 인스턴스의 IP 주소에서 보내는 요청만 수락하도록 함수 앱을 구성할 수 있습니다.With APIM in place, you can configure your function app to accept requests only from the IP address of your APIM instance. 자세히 알아보려면 IP 주소 제한을 참조하세요.To learn more, see IP address restrictions.

격리로 함수 앱 배포Deploy your function app in isolation

ASE(Azure App Service Environment)는 함수를 실행할 전용 호스팅 환경을 제공합니다.Azure App Service Environment (ASE) provides a dedicated hosting environment in which to run your functions. ASE 사용 시에는 모든 수신 요청을 인증하는 데 사용할 수 있는 단일 프런트 엔드 게이트웨이를 구성할 수 있습니다.ASE lets you configure a single front-end gateway that you can use to authenticate all incoming requests. 자세한 내용은 App Service Environment용 WAF(웹 애플리케이션 방화벽) 구성을 참조하세요.For more information, see Configuring a Web Application Firewall (WAF) for App Service Environment.

WebhookWebhooks

참고

웹후크 모드는 Functions 런타임의 버전 1.x에서만 사용 가능합니다.Webhook mode is only available for version 1.x of the Functions runtime. 버전 2.x 이상에서 HTTP 트리거의 성능 향상을 위해 이렇게 변경되었습니다.This change was made to improve the performance of HTTP triggers in version 2.x and higher.

버전 1.x에서 웹후크 템플릿은 웹후크 페이로드용으로 추가 유효성 검사를 제공합니다.In version 1.x, webhook templates provide additional validation for webhook payloads. 버전 2.x 이상의 경우 기본 HTTP 트리거가 계속 작동하며, 웹후크에는 이 방식을 사용하는 것이 좋습니다.In version 2.x and higher, the base HTTP trigger still works and is the recommended approach for webhooks.

GitHub 웹후크GitHub webhooks

GitHub 웹후크에 응답하려면 먼저 HTTP 트리거를 사용하여 함수를 만들고 webHookType 속성을 github로 설정합니다.To respond to GitHub webhooks, first create your function with an HTTP Trigger, and set the webHookType property to github. 그런 다음 URL 및 API 키를 GitHub 리포지토리의 웹후크 추가 페이지에 복사합니다.Then copy its URL and API key into the Add webhook page of your GitHub repository.

함수에 대 한 webhook를 추가 하는 방법을 보여 주는 스크린샷

Slack 웹후크Slack webhooks

Slack webhook은 함수 전용 키를 지정하는 대신 사용자를 위한 토큰을 생성하므로 Slack의 토큰을 사용하여 함수 전용 키를 구성해야 합니다.The Slack webhook generates a token for you instead of letting you specify it, so you must configure a function-specific key with the token from Slack. 권한 부여 키를 참조하세요.See Authorization keys.

웹후크 및 키Webhooks and keys

웹후크 인증은 HTTP 트리거의 일부로 웹후크 수신기 구성 요소에서 처리하며 메커니즘은 웹후크 유형에 따라 다릅니다.Webhook authorization is handled by the webhook receiver component, part of the HTTP trigger, and the mechanism varies based on the webhook type. 각 메커니즘은 키를 사용합니다.Each mechanism does rely on a key. 기본적으로 "default"라는 함수 키가 사용됩니다.By default, the function key named "default" is used. 다른 키를 사용하려면 다음 중 한 가지 방법으로 요청과 함께 키 이름을 보내도록 웹후크 공급자를 구성합니다.To use a different key, configure the webhook provider to send the key name with the request in one of the following ways:

  • 쿼리 문자열: 공급자에서 clientid 쿼리 문자열 매개 변수에 키 이름을 전달합니다(예: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>).Query string: The provider passes the key name in the clientid query string parameter, such as https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>.
  • 요청 헤더: 공급자에서 x-functions-clientid 헤더에 키 이름을 전달합니다.Request header: The provider passes the key name in the x-functions-clientid header.

내용 유형Content types

비 C # 함수에 이진 및 폼 데이터를 전달 하려면 적절 한 content-type 헤더를 사용 해야 합니다.Passing binary and form data to a non-C# function requires that you use the appropriate content-type header. 지원 되는 콘텐츠 형식은 octet-stream 이진 데이터 및 다중 파트 형식에 포함 됩니다.Supported content types include octet-stream for binary data and multipart types.

알려진 문제Known issues

비 C # 함수에서 content-type을 사용 하 여 전송 된 요청 image/jpegstring 함수에 전달 된 값을 반환 합니다.In non-C# functions, requests sent with the content-type image/jpeg results in a string value passed to the function. 이와 같은 경우에는 string 값을 바이트 배열로 수동으로 변환 하 여 원시 이진 데이터에 액세스할 수 있습니다.In cases like these, you can manually convert the string value to a byte array to access the raw binary data.

제한Limits

HTTP 요청 길이는 100MB(104,857,600바이트)로 제한되고 URL 길이는 4KB(4,096바이트)로 제한됩니다.The HTTP request length is limited to 100 MB (104,857,600 bytes), and the URL length is limited to 4 KB (4,096 bytes). 이러한 제한은 런타임의 Web.config 파일httpRuntime 요소에 의해 지정됩니다.These limits are specified by the httpRuntime element of the runtime's Web.config file.

HTTP 트리거를 사용하는 함수가 약 230초 안에 완료되지 않으면 Azure Load Balancer가 시간 제한을 적용하고 HTTP 502 오류를 반환합니다.If a function that uses the HTTP trigger doesn't complete within 230 seconds, the Azure Load Balancer will time out and return an HTTP 502 error. 함수는 계속 실행되지만 HTTP 응답은 반환할 수 없습니다.The function will continue running but will be unable to return an HTTP response. 장기 실행 함수의 경우 비동기 패턴을 따르고 요청 상태를 ping할 수 있는 위치를 반환하는 것이 좋습니다.For long-running functions, we recommend that you follow async patterns and return a location where you can ping the status of the request. 함수 실행 시간에 대한 정보는 크기 조정 및 호스팅 - 소비 계획을 참조하세요.For information about how long a function can run, see Scale and hosting - Consumption plan.

다음 단계Next steps