다음을 통해 공유


빠른 시작: Event Grid 및 Azure CLI를 사용하여 사용자 지정 이벤트를 이벤트 허브로 라우팅

Azure Event Grid는 이벤트를 통해 애플리케이션을 통합하는 데 사용할 수 있는 확장성이 뛰어난 서버리스 이벤트 브로커입니다. Event Grid는 지원되는 이벤트 처리기에 이벤트를 배달하며 Azure Event Hubs는 그중 하나입니다.

이 빠른 시작에서는 Azure CLI를 사용하여 Event Grid 사용자 지정 항목과 해당 항목에 대한 Event Hubs 구독을 만듭니다. 그런 다음 샘플 이벤트를 사용자 지정 항목으로 보내고 해당 이벤트가 이벤트 허브에 배달되는지 확인합니다.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

리소스 그룹 만들기

Event Grid 토픽은 Azure 리소스이며 Azure 리소스 그룹에 배치해야 합니다. 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컬렉션입니다.

az group create 명령을 사용하여 리소스 그룹을 만듭니다. 다음 예제에서는 westus2 위치에 gridResourceGroup이라는 리소스 그룹을 만듭니다.

Cloud Shell 열기를 선택하여 오른쪽 창에서 Azure Cloud Shell을 엽니다. 복사 단추를 선택하여 명령을 복사하고 Cloud Shell에 붙여넣은 다음 Enter 키를 선택하여 명령을 실행합니다.

az group create --name gridResourceGroup --location westus2

Event Grid 리소스 공급자 사용

  1. 이전에 Azure 구독에서 Event Grid를 사용하지 않은 경우 Event Grid 리소스 공급자를 등록해야 할 수 있습니다. 공급자를 등록하는 다음 명령을 실행합니다.

    az provider register --namespace Microsoft.EventGrid
    
  2. 등록을 완료하는 데 잠시 시간이 걸릴 수 있습니다. 상태를 확인하려면 다음 명령을 실행합니다.

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    registrationStateRegistered이면 진행할 준비가 된 것입니다.

사용자 지정 토픽 만들기

Event Grid 토픽은 이벤트를 게시하는 사용자 정의 엔드포인트를 제공합니다. 다음 예제에서는 리소스 그룹에 사용자 지정 토픽을 만듭니다.

<TOPIC NAME>을 사용자 지정 항목의 고유한 이름으로 바꿉니다. Event Grid 토픽 이름은 DNS(Domain Name System) 항목이 나타내기 때문에 고유해야 합니다.

  1. 토픽의 이름을 지정합니다.

    topicname="<TOPIC NAME>"
    
  2. 다음 명령을 실행하여 토픽을 만듭니다.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

이벤트 허브 만들기

사용자 지정 항목을 구독하기 전에 이벤트 메시지에 대한 엔드포인트를 만듭니다. 이벤트를 수집하기 위한 Event Hub를 만듭니다.

  1. Event Hubs 네임스페이스의 고유한 이름을 지정합니다.

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. 다음 명령을 실행하여 Event Hubs 네임스페이스와 해당 네임스페이스에 demohub라는 이벤트 허브를 만듭니다.

    hubname=demohub
    
    az eventhubs namespace create --name $namespace --resource-group gridResourceGroup
    az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
    

사용자 지정 항목 구독

Event Grid 항목을 구독하여 Event Grid에 추적하려는 이벤트를 알립니다. 다음 예에서는 만든 사용자 지정 항목을 구독하고 엔드포인트에 대한 이벤트 허브의 리소스 ID를 전달합니다. 엔드포인트의 형식은 다음과 같습니다.

/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>

다음 스크립트는 이벤트 허브에 대한 리소스 ID를 가져오고 Event Grid 토픽을 구독합니다. 엔드포인트 형식을 eventhub로 설정하고 엔드포인트에 대한 Event Hub ID를 사용합니다.

hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name subtoeventhub \
  --endpoint-type eventhub \
  --endpoint $hubid

이벤트 구독을 만드는 계정에는 이벤트 허브에 대한 쓰기 권한이 있어야 합니다.

사용자 지정 항목에 이벤트 보내기

이벤트를 트리거하여 Event Grid에서 엔드포인트에 메시지를 배포하는 방법을 확인합니다. 먼저 사용자 지정 항목의 URL 및 키를 가져옵니다.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

이 문서에서는 단순화를 위해 샘플 이벤트 데이터를 사용하여 사용자 지정 토픽으로 보냅니다. 일반적으로 애플리케이션 또는 Azure 서비스는 이벤트 데이터를 보냅니다.

cURL 도구는 HTTP 요청을 보냅니다. 이 문서에서는 cURL을 사용하여 이벤트를 사용자 지정 토픽으로 보냅니다. 다음 예제는 세 개의 이벤트를 Event Grid 토픽으로 보냅니다.

for i in 1 2 3
do
   event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
   curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

Azure Portal의 Event Hubs 네임스페이스에 대한 개요 페이지에서 Event Grid가 이러한 세 가지 이벤트를 이벤트 허브로 보냈는지 확인합니다. demohub Event Hubs 인스턴스의 개요 페이지에 동일한 차트가 표시됩니다.

들어오는 메시지 수가 3개인 포털 페이지를 보여 주는 스크린샷.

일반적으로 이벤트 허브에서 이벤트 메시지를 검색하는 애플리케이션을 만듭니다. 자세한 내용은 다음을 참조하세요.

리소스 정리

이 이벤트를 계속 사용하려는 경우 이 문서에서 만든 리소스를 정리하지 마세요. 그렇지 않으면 다음 명령을 사용하여 리소스를 삭제합니다.

az group delete --name gridResourceGroup

토픽 및 이벤트 구독을 만드는 방법을 배웠으므로 어떤 Event Grid가 도움이 되는지 자세히 알아보세요.

다양한 프로그래밍 언어를 사용하여 Event Grid에서 이벤트를 게시하고 이벤트를 사용하는 방법을 알아보려면 다음 샘플을 참조하세요.