Azure Functions의 트리거 및 바인딩 작업 방법 알아보기

Azure Functions는 트리거 및 바인딩을 사용하여 Azure Event Grid와의 기본 제공 통합을 제공합니다. 이 문서에서는 Event Grid 트리거 및 바인딩을 구성하고 로컬로 평가하는 방법을 보여 줍니다. Event Grid 트리거 및 출력 바인딩 정의와 예제에 대한 자세한 내용은 다음 참조 문서 중 하나를 참조하세요.

이벤트 구독

Event Grid HTTP 요청 수신을 시작하려면 Event Grid에서 발생하는 이벤트에 대한 구독이 필요합니다. 이벤트 구독은 함수를 호출하는 엔드포인트 URL을 지정합니다. Azure Portal에 있는 함수의 통합 탭에서 이벤트 구독을 만들면 URL이 제공됩니다. 이벤트 구독을 프로그래밍 방식으로 만들거나 Event Grid에서 이벤트 구독을 만드는 경우 엔드포인트를 제공해야 합니다. 엔드포인트 URL에는 Functions 관리자 REST API에서 가져와야 하는 시스템 키가 포함되어 있습니다.

웹후크 엔드포인트 URL

Event Grid 트리거 함수의 URL 엔드포인트는 Functions 런타임 버전에 따라 달라집니다. 다음 예제에서는 버전별 URL 패턴을 보여줍니다.

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

참고 항목

이벤트 구독도 사용하는 Blob Storage 트리거 버전이 있습니다. 이러한 종류의 Blob Storage 트리거에 대한 엔드포인트 URL에는 경로 /runtime/webhooks/blobs가 있는 반면 Event Grid 트리거의 경로는 다음과 같습니다 /runtime/webhooks/EventGrid. Blob 처리를 위한 옵션 비교는 Blob 컨테이너의 트리거를 참조 하세요.

시스템 키

생성하는 URL 엔드포인트에는 시스템 키 값이 포함됩니다. 시스템 키는 Event Grid 트리거에 대한 엔드포인트 URL에 포함되어야 하는 인증 키입니다. 다음 섹션에서는 시스템 키를 가져오는 방법을 설명합니다.

다음 API(HTTP GET)를 사용하여 시스템 키를 가져올 수 있습니다.

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

이 REST API는 관리자 API로, 사용자의 함수 앱 마스터 키를 입력해야 합니다. 시스템 키(Event Grid 트리거 함수 호출용)와 마스터 키(함수 앱의 관리 작업 수행용)를 혼동하지 마세요. Event Grid 토픽을 구독할 때는 시스템 키를 사용해야 합니다.

시스템 키를 제공하는 응답 예제는 다음과 같습니다.

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

포털의 함수 앱 설정 탭에서 함수 앱에 대한 마스터 키를 가져올 수 있습니다.

Important

마스터 키는 함수 앱에 대한 관리자 액세스를 제공합니다. 이 키를 타사와 공유하거나 네이티브 클라이언트 애플리케이션에 배포하지 마십시오.

자세한 내용은 HTTP 트리거 참조 문서에서 인증 키를 참조하세요.

이벤트 구독 만들기

이벤트 구독은 Azure Portal 또는 Azure CLI를 사용하여 만들 수 있습니다.

Event Grid 트리거를 사용하여 Azure Portal에서 개발하는 함수의 경우 통합을 선택하고, Event Grid 트리거를 차례로 선택한 다음, Event Grid 구독 만들기를 선택합니다.

Screenshot of connecting to a new event subscription to trigger in the portal.

이 링크를 선택하면 포털에서 현재 트리거 엔드포인트가 이미 정의된 이벤트 구독 만들기 페이지가 열립니다.

Screenshot of creating an event subscription with the function endpoint already defined.

Azure Portal을 사용하여 구독을 만드는 방법에 대한 자세한 내용은 Event Grid 설명서에서 사용자 지정 이벤트 만들기 - Azure Portal을 참조하세요.

구독을 만드는 방법에 대한 자세한 내용은 Blob Storage 빠른 시작 또는 다른 Event Grid 빠른 시작을 참조하세요.

뷰어 웹앱을 사용한 로컬 테스트

Event Grid 트리거를 로컬로 테스트하려면 클라우드의 원본에서 로컬 컴퓨터로 전달된 Event Grid HTTP 요청을 가져와야 합니다. 이 작업을 수행하는 한 가지 방법은 온라인으로 요청을 캡처하고 로컬 컴퓨터에서 수동으로 다시 전송하는 것입니다.

  1. 이벤트 메시지를 캡처하는 뷰어 웹앱을 만듭니다.
  2. 뷰어 앱에 이벤트를 보내는 Event Grid 구독을 만듭니다.
  3. 요청을 생성하고 뷰어 앱에서 요청 본문을 복사합니다.
  4. Event Grid 트리거 함수의 localhost URL에 요청을 수동으로 게시합니다.

테스트가 완료되면 엔드포인트를 업데이트하여 프로덕션 환경에도 동일한 구독을 사용할 수 있습니다. az eventgrid event-subscription update Azure CLI 명령을 사용합니다.

또한 ngrok 유틸리티를 사용하여 원격 요청을 로컬로 실행되는 함수에 전달할 수 있습니다. 자세한 내용은 이 가이드를 참조하세요.

뷰어 웹앱 만들기

이벤트 메시지 캡처를 간소화하기 위해 이벤트 메시지를 표시하는, 미리 작성된 웹앱을 배포할 수 있습니다. 배포된 솔루션은 App Service 계획, App Service 웹앱 및 GitHub의 소스 코드를 포함합니다.

Azure에 배포를 선택하여 구독에 솔루션을 배포합니다. Azure Portal에서 매개 변수에 대한 값을 제공합니다.

Button to deploy the Resource Manager template to Azure.

배포가 완료될 때까지 몇 분 정도 걸릴 수 있습니다. 배포가 성공된 후 실행하는지 확인하려면 웹앱을 봅니다. 웹 브라우저에서 https://<your-site-name>.azurewebsites.net으로 이동합니다.

참조하는 사이트에 이벤트가 아직 게시되지 않았습니다.

View new site

Event Grid 구독 만들기

테스트할 유형의 Event Grid 구독을 만들고 이벤트 알림의 엔드포인트로 웹앱의 URL을 지정합니다. 웹앱에 대한 엔드포인트는 접미사 /api/updates/를 포함해야 합니다. 따라서 전체 URL은 https://<your-site-name>.azurewebsites.net/api/updates입니다.

Azure Portal을 사용하여 구독을 만드는 방법에 대한 자세한 내용은 Event Grid 문서에서 사용자 지정 이벤트 만들기 - Azure Portal을 참조하세요.

요청 생성

웹앱 엔드포인트에 대한 HTTP 트래픽을 생성하는 이벤트를 트리거합니다. 예를 들어, Blob Storage 구독을 만든 경우 Blob을 업로드하거나 삭제합니다. 웹앱에 요청이 표시되면 요청 본문을 복사합니다.

구독 유효성 검사 요청이 먼저 수신됩니다. 유효성 검사 요청은 모두 무시하고 이벤트 요청을 복사합니다.

Copy request body from web app

수동으로 요청 게시

Event Grid 함수를 로컬로 실행합니다. Content-Typeaeg-event-type 헤더는 수동으로 설정해야 하며, 다른 모든 값은 기본값으로 남겨둘 수 있습니다.

Postman 또는 curl과 같은 도구를 사용하여 HTTP POST 요청을 만듭니다.

  • Content-Type: application/json 헤더를 설정합니다.

  • aeg-event-type: Notification 헤더를 설정합니다.

  • 요청 본문에 RequestBin 데이터를 붙여 넣습니다.

  • Event Grid 트리거 함수의 URL에 게시합니다.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

functionName 매개 변수는 FunctionName 특성에 지정된 이름이어야 합니다.

다음 스크린샷에서는 Postman의 헤더 및 요청 본문을 보여 줍니다.

Headers in Postman

Request body in Postman

Event Grid 트리거 함수가 실행되고, 다음 예제와 비슷한 결과를 표시합니다.

Sample Event Grid trigger function logs

다음 단계

Functions에서의 Event Grid에 대해 자세히 알아보려면 다음 문서를 참조하세요.