자습서: Azure CLI 및 Event Grid를 사용하여 Azure Relay 하이브리드 연결로 사용자 지정 이벤트 라우팅
Azure Relay 하이브리드 연결은 지원되는 이벤트 처리기 중 하나입니다. 공용 엔드포인트가 없는 애플리케이션에서 이벤트를 처리해야 할 때 하이브리드 연결을 이벤트 처리기로 사용합니다. 이러한 애플리케이션은 회사 엔터프라이즈 네트워크 내에서 작성될 수 있습니다. 이 문서에서는 Azure CLI를 사용하여 사용자 지정 항목을 만들고 사용자 지정 항목을 구독하며 이벤트를 트리거하여 결과를 확인합니다. 이벤트를 하이브리드 연결로 보냅니다.
참고 항목
Azure Event Grid 를 새로 사용하는 경우 이 자습서를 진행하기 전에 서비스에 대한 개요를 보려면 Azure Event Grid 란?을 참조하세요.
필수 조건
- 이 문서에서는 이미 하이브리드 연결 및 수신기 애플리케이션이 있는 것으로 가정합니다. 하이브리드 연결을 시작하려면 Relay 하이브리드 연결 시작 - .NET 또는 Relay 하이브리드 연결 시작 - 노드를 참조하세요.
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell의 Bash에 대한 빠른 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 로그인을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
- 이 문서에는 Azure CLI 버전 2.0.56 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
리소스 그룹 만들기
Event Grid 토픽은 Azure 리소스이며 Azure 리소스 그룹에 배치해야 합니다. 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컬렉션입니다.
az group create 명령을 사용하여 리소스 그룹을 만듭니다.
다음 예제에서는 westus2 위치에 gridResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name gridResourceGroup --location westus2
사용자 지정 토픽 만들기
Event Grid 토픽은 이벤트를 게시하는 사용자 정의 엔드포인트를 제공합니다. 다음 예제에서는 리소스 그룹에 사용자 지정 토픽을 만듭니다. <topic_name>
을 사용자 지정 항목의 고유한 이름으로 바꿉니다. Event Grid 토픽 이름은 DNS(Domain Name System) 토픽으로 표시되므로 고유해야 합니다.
az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup
사용자 지정 항목 구독
Event Grid 항목을 구독하여 Event Grid에 추적하려는 이벤트를 알립니다. 다음 예제에서는 직접 만든 사용자 지정 항목을 구독하고, 엔드포인트에 대한 하이브리드 연결의 리소스 ID를 전달합니다. 하이브리드 연결 ID는 다음과 같은 형식입니다.
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Relay/namespaces/<relay-namespace>/hybridConnections/<hybrid-connection-name>
다음 스크립트는 릴레이 네임스페이스의 리소스 ID를 가져옵니다. 하이브리드 연결의 ID를 생성하고 Event Grid 토픽을 구독합니다. 스크립트는 엔드포인트 형식을 hybridconnection
으로 설정하고 엔드포인트에 대한 하이브리드 연결 ID를 사용합니다.
relaynsname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>
relayid=$(az relay namespace show --resource-group $relayrg --name $relaynsname --query id --output tsv)
hybridid="$relayid/hybridConnections/$hybridname"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint-type hybridconnection \
--endpoint $hybridid \
--expiration-date "<yyyy-mm-dd>"
구독의 만료 날짜가 설정되었습니다.
이벤트를 처리하는 애플리케이션 만들기
하이브리드 연결에서 이벤트를 검색할 수 있는 애플리케이션이 필요합니다. C#용 Microsoft Azure Event Grid 하이브리드 연결 소비자 샘플은 해당 작업을 수행합니다. 필수 구성 요소 단계를 이미 완료했습니다.
Visual Studio 2019 이상이 설치되어 있는지 확인하세요.
로컬 컴퓨터에 리포지토리를 복제합니다.
Visual Studio에서 HybridConnectionConsumer 프로젝트를 로드합니다.
Program.cs에서
<relayConnectionString>
및<hybridConnectionName>
을 만든 릴레이 연결 문자열 및 하이브리드 연결 이름으로 바꿉니다.Visual Studio에서 애플리케이션을 컴파일하고 실행합니다.
Important
연결 문자열 사용하여 자습서를 단순하게 유지하기 위해 Azure Relay 네임스페이스에 인증합니다. 프로덕션 환경에서 Microsoft Entra ID 인증을 사용하는 것이 좋습니다. 애플리케이션을 사용하는 경우 애플리케이션에 대한 관리 ID를 사용하도록 설정하고 릴레이 네임스페이스에서 ID에 적절한 역할(Azure Relay 소유자, Azure Relay 수신기 또는 Azure Relay Sender)을 할당할 수 있습니다. 자세한 내용은 Microsoft Entra ID를 사용하여 관리 ID 인증을 참조 하여 Azure Relay 리소스에 액세스합니다.
토픽에 이벤트 보내기
이벤트를 트리거하여 Event Grid가 메시지를 사용자 엔드포인트에 어떻게 배포하는지 살펴보겠습니다. 이 아티클에서는 Azure CLI를 사용하여 이벤트를 트리거하는 방법을 보여줍니다. 또한 Event Grid 게시자 애플리케이션을 사용할 수 있습니다.
먼저, 사용자 지정 토픽에 대한 URL 및 키를 가져오겠습니다. 다시, <topic_name>
의 사용자 지정 항목 이름을 사용합니다.
endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -g gridResourceGroup --query "key1" --output tsv)
이 문서를 간소화하기 위해 사용자 지정 항목에 보낼 샘플 이벤트 데이터를 사용합니다. 일반적으로 애플리케이션 또는 Azure 서비스는 이벤트 데이터를 보냅니다. CURL은 HTTP 요청을 보내는 유틸리티입니다. 이 문서에서는 CURL을 사용하여 사용자 지정 항목에 이벤트를 보냅니다.
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
수신기 애플리케이션이 이벤트 메시지를 수신해야 합니다.
리소스 정리
이 이벤트로 작업을 계속하려는 경우 이 문서에서 만든 리소스를 정리하지 마세요. 그렇지 않으면 다음 명령을 사용하여 이 문서에서 만든 리소스를 삭제합니다.
az group delete --name gridResourceGroup
다음 단계
토픽 및 이벤트 구독을 만드는 방법을 배웠으므로 어떤 Event Grid가 도움이 되는지 자세히 알아보세요.