다음을 통해 공유


API Management에서 Event Grid로 이벤트 보내기

적용 대상: 사용량 | 개발자 | 기본 | 표준 | 프리미엄

API Management는 이벤트 알림을 다른 서비스로 보내고 다운스트림 프로세스를 트리거할 수 있도록 Azure Event Grid와 통합됩니다. Event Grid는 게시-구독 모델을 사용하는 완전 관리형 이벤트 라우팅 서비스입니다. Event Grid에는 Azure FunctionsAzure Logic Apps 같은 Azure 서비스에 대한 기본 제공 지원이 있어 웹후크를 사용하여 Azure가 아닌 서비스에 이벤트 경고를 제공할 수 있습니다.

예를 들어 Event Grid와의 통합을 사용하여 데이터베이스를 업데이트하고, 청구 계정을 만들고, 사용자가 API Management 인스턴스에 추가될 때마다 이메일 알림을 보내는 애플리케이션을 빌드할 수 있습니다.

이 문서에서는 API Management 인스턴스의 Event Grid 이벤트를 구독하고, 이벤트를 트리거하고, 데이터를 처리하는 엔드포인트로 이벤트를 보냅니다. 간단하게 유지하려면 메시지를 수집하고 표시하는 샘플 웹앱에 이벤트를 보냅니다.

Event Grid 뷰어의 API Management 이벤트

필수 조건

이벤트 엔드포인트 만들기

이 섹션에서는 Resource Manager 템플릿을 사용하여 Azure App Service에 미리 작성된 샘플 웹 애플리케이션을 배포합니다. 나중에 API Management 인스턴스의 Event Grid 이벤트를 구독하고 이벤트가 전송되는 엔드포인트로 이 앱을 지정합니다.

샘플 앱을 배포하려면 Azure CLI, Azure PowerShell 또는 Azure Portal을 사용하면 됩니다. 다음 예제에서는 Azure CLI에서 az deployment group create 명령을 사용합니다.

  • RESOURCE_GROUP_NAME을 기존 리소스 그룹의 이름으로 설정합니다.

  • SITE_NAME을 웹앱에 대한 고유한 이름으로 설정합니다.

    사이트 이름은 웹앱의 FQDN(정규화된 도메인 이름)의 일부를 형성하기 때문에 Azure 내에서 고유해야 합니다. 이후 섹션에서 이벤트를 보려면 웹 브라우저에서 앱의 FQDN으로 이동합니다.

RESOURCE_GROUP_NAME=<your-resource-group-name>
SITE_NAME=<your-site-name>

az deployment group create \
    --resource-group $RESOURCE_GROUP_NAME \
    --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
    --parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan

배포에 성공하면(몇 분 정도 걸릴 수 있음) 브라우저를 열고 웹앱으로 이동하여 실행 중인지 확인합니다.

https://<your-site-name>.azurewebsites.net

이벤트 메시지가 표시되지 않고 렌더링된 샘플 앱이 표시되어야 합니다.

Event Grid 리소스 공급자 등록

이전에 Event Grid를 사용하지 않은 경우 Event Grid 리소스 공급자를 등록해야 합니다. 이전에 Event Grid 사용한 경우 다음 섹션으로 건너뜁니다.

Azure Portal에서 다음 단계를 수행합니다.

  1. 왼쪽 메뉴에서 구독을 선택합니다.

  2. 구독 목록에서 Event Grid에 사용할 구독을 선택합니다.

  3. 구독 페이지의 왼쪽 메뉴에 있는 설정에서 리소스 공급자를 선택합니다.

  4. Microsoft.EventGrid를 검색하고 상태등록되지 않음인지 확인합니다.

  5. 공급자 목록에서 Microsoft.EventGrid를 선택합니다.

  6. 명령 모음에서 등록을 선택합니다.

    Azure 구독에의 Microsoft.EventGrid 공급자 등록을 보여 주는 이미지

  7. 새로 고침하여 Microsoft.EventGrid의 상태가 Registered로 변경되었는지 확인합니다.

    Azure 구독에의 성공적인 Microsoft.EventGrid 공급자 등록을 보여 주는 이미지

API Management 이벤트 구독

Event Grid에서 항목을 구독하여 추적하려는 이벤트와 이벤트를 보낼 위치를 알립니다. 여기에서 API Management 인스턴스의 이벤트에 대한 구독을 만듭니다.

  1. Azure Portal에서 API Management 인스턴스로 이동합니다.

  2. 이벤트 > + 이벤트 구독을 선택합니다.

  3. 기본 탭에서

    • 이벤트 구독에 대한 설명이 포함된 이름을 입력합니다.
    • 이벤트 유형에서 하나 이상의 API Management 이벤트 유형을 선택하여 Event Grid에 보냅니다. 이 문서의 예제에서는 최소한 Microsoft.APIManagement.ProductCreated를 선택합니다.
    • 엔드포인트 세부 정보에서 Web Hook 이벤트 유형을 선택하고 엔드포인트 선택을 클릭한 다음, 웹앱 URL과 api/updates를 차례로 입력합니다. 예: https://myapp.azurewebsites.net/api/updates
    • 선택 확인을 선택합니다.
  4. 나머지 탭의 설정을 해당 기본값으로 그대로 두고 만들기를 선택합니다.

    Azure Portal에서 이벤트 구독 만들기

트리거 및 뷰 이벤트

샘플 앱이 작동 중이고 Event Grid를 사용하여 API Management 인스턴스를 구독했으므로 이제 이벤트를 생성할 수 있습니다.

예를 들어 API Management 인스턴스에서 제품을 만듭니다. 이벤트 구독에 Microsoft.APIManagement.ProductCreated 이벤트가 포함된 경우 제품을 만들면 웹앱 엔드포인트로 푸시되는 이벤트가 트리거됩니다.

Event Grid 뷰어 웹앱으로 이동하면 ProductCreated 이벤트가 표시되어야 합니다. 이벤트 옆의 단추를 선택하여 세부 정보를 표시합니다.

Event Grid 뷰어의 제품 만들기 이벤트

Event Grid 이벤트 스키마

API Management 이벤트 데이터에는 이벤트를 트리거한 API Management 리소스를 식별하는 resourceUri가 포함됩니다. API Management 이벤트 메시지 스키마에 대한 자세한 내용은 Event Grid 설명서를 참조하세요.

API Management에 대한 Azure Event Grid 이벤트 스키마

다음 단계