Azure Functions 트리거 및 바인딩 개념

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

트리거는 함수가 실행되도록 합니다. 트리거는 함수가 호출되는 방식을 정의합니다. 하나의 함수는 하나의 트리거만 가져야 합니다. 트리거에는 관련 데이터가 있으며, 일반적으로 함수의 페이로드로 제공됩니다.

함수에 바인딩하는 것은 함수에 다른 리소스를 선언적으로 연결하는 한 가지 방법입니다. 바인딩은 ‘입력 바인딩’ 또는 ‘출력 바인딩’으로서 연결될 수도 있고 두 가지로서 연결될 수도 있습니다. 바인딩의 데이터는 함수에 매개 변수로 제공됩니다.

필요에 맞게 다른 바인딩과 혼합하고 일치시킬 수 있습니다. 바인딩은 선택 사항이며 함수는 여러 개의 입력 및 출력 바인딩을 가질 수 있습니다.

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

여러 함수를 구현하는 다음과 같은 예제를 살펴보세요.

예제 시나리오 트리거 입력 바인딩 출력 바인딩
메시지를 다른 큐에 쓰는 함수를 실행하는 새 큐 메시지가 도착합니다. * 없음 *
예약된 작업이 Blob Storage 콘텐츠를 읽고 새 Cosmos DB 문서를 만듭니다. 타이머 Blob Storage Cosmos DB
Blob Storage에서 이미지를 읽고 Cosmos DB에서 문서를 읽어서 메일을 보내는 데 Event Grid가 사용됩니다. Event Grid Blob Storage와 Cosmos DB SendGrid
Microsoft Graph를 사용하여 Excel 시트를 업데이트하는 웹후크. HTTP 없음 Microsoft Graph

* 서로 다른 큐임

위에는 몇 가지 예제만 나와 있지만 이를 통해 트리거와 바인딩을 함께 사용하는 방법을 알아볼 수 있습니다.

트리거 및 바인딩 정의

트리거와 바인딩은 개발 언어에 따라 다르게 정의됩니다.

언어 트리거와 바인딩이 구성되는 방식
C# 클래스 라이브러리      메서드 및 매개 변수에 C# 특성 사용
Java      메서드 및 매개 변수에 Java 주석 사용
JavaScript/PowerShell/Python/TypeScript      function.json(스키마) 업데이트

function.json을 사용하는 언어의 경우, 포털에서 통합 탭에 바인딩을 추가하기 위한 UI가 제공됩니다. 함수의 코드 + 테스트 탭에서도 포털에서 직접 파일을 편집할 수 있습니다. Visual Studio Code를 사용하면 편리한 프롬프트에 따라 쉽게 function.json 파일에 바인딩을 추가할 수 있습니다.

.NET 및 Java에서는 매개 변수 유형이 입력 데이터의 데이터 형식을 정의합니다. 예를 들어, 큐 트리거의 텍스트, 이진으로 읽을 바이트 배열, 개체에 대해 역직렬화할 사용자 지정 형식을 바인딩하려면 string을 사용합니다. .NET 클래스 라이브러리 함수와 Java 함수는 정의 바인딩을 위해 function.json을 사용하지 않으므로 포털에서 만들고 편집할 수 없습니다. C# 포털 편집은 특성 대신 function.json을 사용하는 C# 스크립트를 기반으로 합니다.

기존 함수에 바인딩을 추가하는 방법을 자세히 알아보려면 바인딩을 사용하여 Azure 서비스에 함수 연결을 참조하세요.

JavaScript와 같은 동적으로 형식화되는 언어의 경우 function.json 파일의 dataType 속성을 사용합니다. 예를 들어 이진 형식의 HTTP 요청 내용을 읽으려면 dataTypebinary로 설정합니다.

{
    "dataType": "binary",
    "type": "httpTrigger",
    "name": "req",
    "direction": "in"
}

dataType에 대한 다른 옵션은 streamstring입니다.

바인딩 방향

모든 트리거와 바인딩은 function.json 파일에 direction 속성이 있습니다.

  • 트리거의 경우 방향은 언제나 in입니다
  • 입력 및 출력 바인딩은 inout을 사용합니다
  • 일부 바인딩은 특수 방향인 inout을 사용합니다. inout을 사용하는 경우 포털의 통합 탭을 통해 고급 편집기만 사용할 수 있습니다.

클래스 라이브러리의 특성을 사용하여 트리거 및 바인딩을 구성하는 경우 방향은 특성 생성자에서 제공되거나 매개 변수 형식에서 유추됩니다.

함수에 바인딩 추가

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

지원되는 바인딩

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

유형 1.x 2.x 이상1 트리거 입력 출력
Blob Storage
Azure Cosmos DB
Azure SQL(미리 보기)
Dapr3
Event Grid
Event Hubs
HTTP 및 웹후크
IoT Hub
Kafka2
Mobile Apps
Notification Hubs
Queue Storage
RabbitMQ2
SendGrid
Service Bus
SignalR
Table Storage
타이머
Twilio

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

2 트리거는 소비 계획에서 지원되지 않습니다. 런타임 기반 트리거가 필요합니다.

3 Kubernetes, IoT Edge 및 기타 자체 호스팅 모드에서만 지원됩니다.

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

바인딩 코드 예제

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

서비스 샘플
Blob 스토리지 트리거
Input
출력
링크
Azure Cosmos DB 트리거
Input
출력
링크
Azure SQL(미리 보기) Input
출력
링크
Event Grid 트리거
출력
링크
Event Hubs 트리거
출력
IoT Hub 트리거
출력
HTTP 트리거 링크
Queue Storage 트리거
출력
링크
RabbitMQ 트리거
출력
SendGrid 출력
Service Bus 트리거
출력
링크
SignalR 트리거
Input
출력
Table Storage Input
출력
타이머 트리거 링크
Twilio 출력 링크

사용자 지정 바인딩

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

리소스

다음 단계