다음을 통해 공유


Azure Functions 트리거 및 바인딩

이 문서에서는 함수에 대한 트리거 및 바인딩을 둘러싼 개략적인 개념을 알아봅니다.

트리거는 함수가 실행되도록 합니다. 트리거는 함수가 호출되는 방법을 정의하며 함수에는 정확히 하나의 트리거가 있어야 합니다. 트리거는 메서드 호출과 마찬가지로 함수에 데이터를 전달할 수도 있습니다.

함수에 바인딩하는 것은 함수를 다른 리소스에 선언적으로 연결하는 방법입니다. 바인딩은 함수(입력 바인딩)에 데이터를 전달하거나 바인딩 매개 변수를 사용하여 함수(출력 바인딩)에서 데이터를 쓸 수 있도록 합니다. 함수 트리거는 기본적으로 특수한 유형의 입력 바인딩입니다.

함수의 특정 시나리오에 맞게 바인딩을 혼합하고 일치시킬 수 있습니다. 바인딩은 선택 사항이며 함수에 하나 이상의 입력 및/또는 출력 바인딩이 있을 수 있습니다.

트리거와 바인딩을 사용하면 다른 서비스에 대한 액세스를 하드 코딩하는 것을 방지할 수 있습니다. 함수는 함수 매개 변수에서 데이터를 수신합니다(예: 큐 메시지의 콘텐츠). 함수의 반환 값을 사용하여 데이터를 보냅니다(예를 들어 큐 메시지를 만들기 위해).

함수를 구현하는 방법에 대한 다음 예제를 고려합니다.

예제 시나리오 트리거 입력 바인딩 출력 바인딩
다른 큐에 쓰는 함수를 실행하는 새 큐 메시지가 도착합니다. * 없음 *
예약된 작업은 Azure Blob Storage 콘텐츠를 읽고 새 Azure Cosmos DB 문서를 만듭니다. Timer 블롭 저장소 Azure Cosmos DB (애저 코스모스 DB)
Azure Event Grid는 Blob Storage에서 이미지를 읽고 Azure Cosmos DB에서 전자 메일을 보내는 문서를 읽는 데 사용됩니다. 이벤트 그리드 (Event Grid) Blob Storage 및 Azure Cosmos DB SendGrid

* 다른 큐를 나타냅니다.

이러한 예제는 완전하지는 않지만 트리거와 바인딩을 함께 사용하는 방법을 보여 줍니다. 보다 포괄적인 시나리오 집합은 Azure Functions 시나리오를 참조하세요.

Azure Functions에서는 입력 및 출력 바인딩을 사용하여 Azure 서비스에 연결할 필요가 없습니다. 항상 코드에서 Azure SDK 클라이언트를 만들고 데이터 전송에 대신 사용할 수 있습니다. 자세한 내용은 서비스에 연결을 참조하세요.

트리거 및 바인딩 정의

다음 예제에서는 Azure Storage 큐에 메시지를 쓰는 출력 바인딩이 있는 HTTP 트리거 함수를 보여 줍니다.

C# 클래스 라이브러리 함수의 경우 C# 특성을 사용하여 메서드 및 매개 변수를 데코레이팅하여 트리거 및 바인딩을 구성합니다. 적용하는 특정 특성은 C# 런타임 모델에 따라 달라질 수 있습니다.

HTTP 트리거(HttpTrigger)는 MultiResponse 개체를 반환하는 HttpExample(이)라는 함수의 Run 메서드에 정의됩니다.

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
    FunctionContext executionContext)
{

이 예제에서는 개체 정의를 보여줍니다 MultiResponse . 개체 정의는 HttpResponse를 HTTP 요청에 반환하고, QueueOutput 바인딩을 사용하여 메시지를 스토리지 큐에 씁니다.

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

자세한 내용은 격리된 작업자 모델에 대한 C# 가이드를 참조하세요.

레거시 C# 스크립트 함수는 정의 파일을 사용합니다 function.json . 자세한 내용은 Azure Functions C# 스크립트(.csx) 개발자 참조를 참조하세요.

Java 함수의 경우 특정 메서드 및 매개 변수에 주석을 추가하여 트리거 및 바인딩을 구성합니다. 이 HTTP 트리거(@HttpTrigger)는 명명run된 함수의 HttpTriggerQueueOutput 메서드에 정의됩니다. 이 함수는 @QueueOutput 주석이 message 매개 변수에 정의한 스토리지 큐에 씁니다.

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

자세한 내용은 Java 개발자 가이드를 참조하세요.

Node.js 함수에 대한 트리거 및 바인딩을 정의하는 방법은 Azure Functions에 대한 특정 버전의 Node.js 따라 달라집니다.

Node.js for Azure Functions 버전 4에서, @azure/functions 모듈에서 내보낸 개체를 사용하여 트리거 및 바인딩을 구성합니다. 자세한 내용은 Node.js 개발자 가이드를 참조하세요.

내보낸 http 개체의 메서드는 app HTTP 트리거를 정의합니다. storageQueue 메서드는 output의 이 트리거에 출력 바인딩을 정의합니다.

const { app, output } = require('@azure/functions');

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: async (request, context) => {
        const body = await request.text();
        context.extraOutputs.set(queueOutput, body);
        return { body: 'Created queue item.' };
    },
});

내보낸 http 개체의 메서드는 app HTTP 트리거를 정의합니다. storageQueue 메서드에 있는 output는 이 트리거에 대한 출력 바인딩을 정의합니다.

import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const body = await request.text();
    context.extraOutputs.set(queueOutput, body);
    return { body: 'Created queue item.' };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: httpTrigger1,
});

이 예제 function.json 파일은 함수를 정의합니다.

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

자세한 내용은 PowerShell 개발자 가이드를 참조하세요.

함수가 정의되는 방법은 Azure Functions용 Python 버전에 따라 달라집니다.

Azure Functions용 Python 버전 2에서는 데코레이터를 사용하여 코드에서 함수를 직접 정의합니다.

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

바인딩 고려 사항

  • 모든 서비스가 입력 및 출력 바인딩을 모두 지원하는 것은 아닙니다. 바인딩용 특정 코드 예제는 해당 바인딩 확장을 참조하세요.

  • 트리거와 바인딩은 개발 언어에 따라 다르게 정의됩니다. 이 문서의 맨 위에 있는 언어를 선택해야 합니다.

  • 트리거 및 바인딩 이름은 영숫자 문자 및 _밑줄로 제한됩니다.

함수에 바인딩을 추가하는 작업

입력 또는 출력 바인딩을 사용하여 함수를 다른 서비스에 연결할 수 있습니다. 함수에 특정 정의를 추가하여 바인딩을 추가합니다. 방법을 알아보려면 바인딩을 사용하여 Azure 서비스에 함수 연결을 참조하세요.

Azure Functions는 여러 바인딩을 지원하며, 이를 올바르게 구성해야 합니다. 예를 들어, 함수는 큐에서 데이터를 읽고(입력 바인딩) 동시에 데이터베이스에 데이터를 쓸 수 있습니다(출력 바인딩).

지원되는 바인딩

이 표는 Azure Functions 런타임의 주요 버전에서 지원되는 바인딩을 보여 줍니다.

유형 1.x1 2.x 이상2 트리거 입력 출력
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dap4
Event Grid
이벤트 허브
HTTP 및 웹후크
IoT Hub
Kafka3
Mobile Apps
모델 컨텍스트 프로토콜
Notification Hubs
대기열 저장소
레디스
RabbitMQ3
SendGrid
Service Bus
Azure SignalR Service
Table Storage
타이머
Twilio

12026년 9월 14일에 Azure Functions 런타임 버전 1.x에 대한 지원이 종료됩니다. 완전한 지원을 받으려면 앱을 버전 4.x로 마이그레이션하는 것이 좋습니다.

2 버전 2.x 런타임부터는 HTTP 및 Timer를 제외한 모든 바인딩이 등록되어야 합니다. Azure Functions 바인딩 확장 등록을 참조하세요.

3 트리거는 사용량 플랜에서 지원되지 않습니다. 이 바인딩 형식에는 런타임 기반 트리거가 필요합니다.

4 이 바인딩 형식은 Kubernetes, Azure IoT Edge 및 기타 자체 호스팅 모드에서만 지원됩니다.

미리 보기 상태 바인딩 또는 프로덕션 용도로 승인된 바인딩에 대한 자세한 내용은 지원되는 언어를 참조하세요.

바인딩 확장의 특정 버전은 기본 서비스 SDK가 지원되는 동안에만 지원됩니다. 기본 서비스 SDK 버전의 지원에 대한 변경 내용은 소비 확장에 대한 지원에 영향을 미칩니다.

바인딩에 대한 코드 예제

다음 표를 사용하여 함수에서 바인딩을 사용하는 방법을 보여 주는 특정 바인딩 형식의 더 많은 예제를 찾을 수 있습니다. 먼저 작업 중인 프로젝트에 해당하는 언어 탭을 선택하세요.

C#용 바인딩 코드는 특정 프로세스 모델에 따라 다릅니다.

서비스 예제 샘플
블롭 저장소 트리거
Input
출력
링크
Azure Cosmos DB (애저 코스모스 DB) 트리거
Input
출력
링크
Azure Data Explorer(아주르 데이터 탐색기) Input
출력
링크
Azure SQL 트리거
Input
출력
링크
이벤트 그리드 (Event Grid) 트리거
출력
링크
이벤트 허브 (Event Hubs) 트리거
출력
IoT 허브 트리거
출력
HTTP 트리거 링크
Queue Storage 트리거
출력
링크
RabbitMQ 트리거
출력
SendGrid 출력
서비스버스 트리거
출력
링크
Azure SignalR 서비스 트리거
Input
출력
Table Storage Input
출력
Timer 트리거 링크
Twilio 출력 링크
서비스 예제 샘플
블롭 저장소 트리거
Input
출력
링크
Azure Cosmos DB (애저 코스모스 DB) 트리거
Input
출력
링크
Azure Data Explorer(아주르 데이터 탐색기) Input
출력
링크
Azure SQL 트리거
Input
출력
이벤트 그리드 (Event Grid) 트리거
출력
링크
이벤트 허브 (Event Hubs) 트리거
출력
IoT 허브 트리거
출력
HTTP 트리거 링크
Queue Storage 트리거
출력
링크
RabbitMQ 트리거
출력
SendGrid 출력
서비스버스 트리거
출력
링크
Azure SignalR 서비스 트리거
Input
출력
Table Storage Input
출력
Timer 트리거 링크
Twilio 출력 링크
서비스 예제 샘플
블롭 저장소 트리거
Input
출력
링크
Azure Cosmos DB (애저 코스모스 DB) 트리거
Input
출력
링크
Azure Data Explorer(아주르 데이터 탐색기) Input
출력
Azure SQL 트리거
Input
출력
링크
이벤트 그리드 (Event Grid) 트리거
출력
링크
이벤트 허브 (Event Hubs) 트리거
출력
IoT 허브 트리거
출력
HTTP 트리거 링크
Queue Storage 트리거
출력
링크
RabbitMQ 트리거
출력
SendGrid 출력
서비스버스 트리거
출력
링크
Azure SignalR 서비스 트리거
Input
출력
Table Storage Input
출력
Timer 트리거 링크
Twilio 출력 링크
서비스 예제 샘플
블롭 저장소 트리거
Input
출력
링크
Azure Cosmos DB (애저 코스모스 DB) 트리거
Input
출력
링크
Azure SQL 트리거
Input
출력
이벤트 그리드 (Event Grid) 트리거
출력
링크
이벤트 허브 (Event Hubs) 트리거
출력
IoT 허브 트리거
출력
HTTP 트리거 링크
Queue Storage 트리거
출력
링크
RabbitMQ 트리거
출력
SendGrid 출력
서비스버스 트리거
출력
링크
Azure SignalR 서비스 트리거
Input
출력
Table Storage Input
출력
Timer 트리거 링크
Twilio 출력 링크

Python용 바인딩 코드는 Python 모델 버전에 따라 다릅니다.

서비스 예제 샘플
블롭 저장소 트리거
Input
출력
링크
Azure Cosmos DB (애저 코스모스 DB) 트리거
Input
출력
링크
Azure Data Explorer(아주르 데이터 탐색기) Input
출력
Azure SQL 트리거
Input
출력
링크
이벤트 그리드 (Event Grid) 트리거
출력
링크
이벤트 허브 (Event Hubs) 트리거
출력
IoT 허브 트리거
출력
HTTP 트리거 링크
Queue Storage 트리거
출력
링크
RabbitMQ 트리거
출력
SendGrid 출력
서비스버스 트리거
출력
링크
Azure SignalR 서비스 트리거
Input
출력
Table Storage Input
출력
Timer 트리거 링크
Twilio 출력 링크

사용자 지정 바인딩

사용자 지정 입력 및 출력 바인딩을 만들 수 있습니다. 바인딩은 .NET에서 작성해야 하지만 지원되는 모든 언어에서 사용할 수 있습니다. 사용자 지정 바인딩을 만드는 방법은 Creating custom input and output bindings(사용자 지정 입력 및 출력 바인딩 만들기)를 참조하세요.