Azure Functions의 트리거 및 바인딩 작업 방법 알아보기
Azure Functions는 트리거 및 바인딩을 사용하여 Azure Event Grid와의 기본 제공 통합을 제공합니다. 이 문서에서는 Event Grid 트리거 및 바인딩을 구성하고 로컬로 평가하는 방법을 보여 줍니다. Event Grid 트리거 및 출력 바인딩 정의와 예제에 대한 자세한 내용은 다음 참조 문서 중 하나를 참조하세요.
- Azure Event Grid 바인딩 개요
- Azure Functions의 Azure Event Grid 트리거
- Azure Functions에 대한 Azure 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 웹후크에 한정된 권한 부여 키로, Event Grid 트리거에 대한 엔드포인트 URL에 대한 요청에 포함되어야 합니다. 다음 섹션에서는 시스템 키를 가져오는 방법을 설명합니다.
포털의 Functions>앱 키에서 함수 앱의 마스터 키를 가져올 수도 있습니다.
주의
마스터 키는 함수 앱에 대한 관리자 액세스를 제공합니다. 이 키를 타사와 공유하거나 네이티브 클라이언트 애플리케이션에 배포하지 마십시오.
자세한 내용은 Azure Functions에서 액세스 키 작업을 참조하세요.
다음 관리자 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}"
}
]
}
구독 만들기
이벤트 구독은 Azure Portal 또는 Azure CLI를 사용하여 만들 수 있습니다.
Event Grid 트리거를 사용하여 Azure Portal에서 개발하는 함수의 경우 통합을 선택하고, Event Grid 트리거를 차례로 선택한 다음, Event Grid 구독 만들기를 선택합니다.
이 링크를 선택하면 포털에서 현재 트리거 엔드포인트가 이미 정의된 이벤트 구독 만들기 페이지가 열립니다.
Azure Portal을 사용하여 구독을 만드는 방법에 대한 자세한 내용은 Event Grid 설명서에서 사용자 지정 이벤트 만들기 - Azure Portal을 참조하세요.
구독을 만드는 방법에 대한 자세한 내용은 Blob Storage 빠른 시작 또는 다른 Event Grid 빠른 시작을 참조하세요.
뷰어 웹앱을 사용한 로컬 테스트
Event Grid 트리거를 로컬로 테스트하려면 클라우드의 원본에서 로컬 컴퓨터로 전달된 Event Grid HTTP 요청을 가져와야 합니다. 이 작업을 수행하는 한 가지 방법은 온라인으로 요청을 캡처하고 로컬 컴퓨터에서 수동으로 다시 전송하는 것입니다.
- 이벤트 메시지를 캡처하는 뷰어 웹앱을 만듭니다.
- 뷰어 앱에 이벤트를 보내는 Event Grid 구독을 만듭니다.
- 요청을 생성하고 뷰어 앱에서 요청 본문을 복사합니다.
- Event Grid 트리거 함수의 localhost URL에 요청을 수동으로 게시합니다.
HTTP 게시 요청을 보내려면 HTTP 테스트 도구가 필요합니다. 데이터를 안전하게 유지하는 도구를 선택해야 합니다. 자세한 내용은 HTTP 테스트 도구를 참조 하세요.
테스트가 완료되면 엔드포인트를 업데이트하여 프로덕션 환경에도 동일한 구독을 사용할 수 있습니다. az eventgrid event-subscription update
Azure CLI 명령을 사용합니다.
뷰어 웹앱 만들기
이벤트 메시지 캡처를 간소화하기 위해 이벤트 메시지를 표시하는, 미리 작성된 웹앱을 배포할 수 있습니다. 배포된 솔루션은 App Service 계획, App Service 웹앱 및 GitHub의 소스 코드를 포함합니다.
Azure에 배포를 선택하여 구독에 솔루션을 배포합니다. Azure Portal에서 매개 변수에 대한 값을 제공합니다.
배포가 완료될 때까지 몇 분 정도 걸릴 수 있습니다. 배포가 성공된 후 실행하는지 확인하려면 웹앱을 봅니다. 웹 브라우저에서 https://<your-site-name>.azurewebsites.net
으로 이동합니다.
참조하는 사이트에 이벤트가 아직 게시되지 않았습니다.
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을 업로드하거나 삭제합니다. 웹앱에 요청이 표시되면 요청 본문을 복사합니다.
구독 유효성 검사 요청이 먼저 수신됩니다. 유효성 검사 요청은 모두 무시하고 이벤트 요청을 복사합니다.
수동으로 요청 게시
Event Grid 함수를 로컬로 실행합니다. Content-Type
및 aeg-event-type
헤더는 수동으로 설정해야 하며, 다른 모든 값은 기본값으로 남겨둘 수 있습니다.
HTTP 테스트 도구를 사용하여 HTTP POST 요청을 만듭니다.
Content-Type: application/json
헤더를 설정합니다.aeg-event-type: Notification
헤더를 설정합니다.요청 본문에 RequestBin 데이터를 붙여 넣습니다.
Event Grid 트리거를 수동으로 시작하는 엔드포인트에 HTTP POST 요청을 보냅니다.
functionName
매개 변수는 FunctionName
특성에 지정된 이름이어야 합니다.
Event Grid 트리거 함수가 실행되고, 다음 예제와 비슷한 결과를 표시합니다.
다음 단계
Functions에서의 Event Grid에 대해 자세히 알아보려면 다음 문서를 참조하세요.