네임스페이스 항목을 사용하여 웹후크에 이벤트 배달 - Azure CLI(미리 보기)
이 문서에서는 CloudEvents JSON 형식으로 이벤트를 Azure Event Grid에 게시하고 푸시 배달 모델을 사용하여 해당 이벤트를 배달하는 단계별 지침을 제공합니다. 구체적으로 말하면 Azure CLI 및 Curl을 사용하여 Event Grid의 네임스페이스 토픽에 이벤트를 게시하고 이벤트 구독에서 웹후크 처리기 대상으로 해당 이벤트를 푸시합니다. 푸시 배달 모델에 대한 자세한 내용은 푸시 배달 개요를 참조하세요.
참고 항목
Azure CLI Event Grid 확장은 네임스페이스 및 네임스페이스에 포함된 리소스를 아직 지원하지 않습니다. Azure CLI 리소스를 사용하여 Event Grid 리소스를 만듭니다.
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
사전 요구 사항
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.70 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
Event Grid 리소스 공급자 사용
이전에 Azure 구독에서 Event Grid를 사용하지 않은 경우 Event Grid 리소스 공급자를 등록해야 할 수 있습니다. 공급자를 등록하는 다음 명령을 실행합니다.
az provider register --namespace Microsoft.EventGrid
등록을 완료하는 데 잠시 시간이 걸릴 수 있습니다. 상태를 확인하려면 다음 명령을 실행합니다.
az provider show --namespace Microsoft.EventGrid --query "registrationState"
registrationState
가Registered
이면 진행할 준비가 된 것입니다.
리소스 그룹 만들기
az group create 명령을 사용하여 Azure 리소스 그룹을 만듭니다. 이 리소스 그룹을 사용하여 이 문서에서 만든 모든 리소스를 포함할 수 있습니다.
Cloud Shell을 사용하여 명령을 실행하는 일반적인 단계는 다음과 같습니다.
- 오른쪽 창에서 Azure Cloud Shell 창을 보려면 Cloud Shell 열기를 선택합니다.
- 명령을 복사하여 Azure Cloud Shell 창에 붙여넣습니다.
- Enter 키를 눌러 명령을 실행 합니다.
Azure 리소스 그룹의 이름을 저장할 변수를 선언합니다.
<your-resource-group-name>
을 원하는 값으로 바꿔 리소스 그룹의 이름을 지정합니다.resource_group="<your-resource-group-name>"
location="<your-resource-group-location>"
리소스 그룹을 만듭니다. 원하는 대로 위치를 변경합니다.
az group create --name $resource_group --location $location
네임스페이스 만들기
Event Grid 네임스페이스는 이벤트를 게시할 사용자 정의 엔드포인트를 제공합니다. 다음 예제에서는 Azure Cloud Shell의 Bash를 사용하여 리소스 그룹에 네임스페이스를 만듭니다. 네임스페이스 이름은 DNS(Domain Name System) 항목의 일부이므로 고유해야 합니다. 네임스페이스 이름은 다음 규칙을 충족해야 합니다.
- 3~50자 사이여야 합니다.
- 지역별로 고유해야 합니다.
- 허용되는 문자는 a-z, A-Z, 0-9 및 -입니다
- 예약된 키워드 접두사(예:
Microsoft
,System
또는EventGrid
)로 시작해서는 안 됩니다.
Event Grid 네임스페이스의 이름을 저장할 변수를 선언합니다.
<your-namespace-name>
을 원하는 값으로 바꿔 네임스페이스의 이름을 지정합니다.namespace="<your-namespace-name>"
네임스페이스를 만듭니다. 배포되는 위치를 변경할 수 있습니다.
az eventgrid namespace create -g $resource_group -n $namespace -l $location
네임스페이스 토픽 만들기
네임스페이스 엔드포인트에 게시된 모든 이벤트를 저장하는 데 사용되는 토픽을 만듭니다.
네임스페이스 토픽의 이름을 저장할 변수를 선언합니다.
<your-topic-name>
을 원하는 값으로 바꿔 네임스페이스 토픽의 이름을 지정합니다.topic="<your-topic-name>"
네임스페이스 토픽 만들기:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
메시지 엔드포인트 만들기
네임스페이스 항목을 구독하기 전에 이벤트 메시지에 대한 엔드포인트를 만들어 보겠습니다. 일반적으로 엔드포인트는 이벤트 데이터를 기반으로 작업을 수행합니다. 이 빠른 시작을 간소화하기 위해 이벤트 메시지를 표시하는 미리 작성된 웹앱을 배포합니다. 배포된 솔루션은 App Service 계획, App Service 웹앱 및 GitHub의 소스 코드를 포함합니다.
다음 명령을 복사하고 웹앱의 이름(Event Grid 뷰어 샘플)을 지정한 다음, Enter 키를 눌러 명령을 실행합니다.
<your-site-name>
을 웹앱의 고유한 이름으로 바꿉니다. 웹앱 이름은 DNS 항목의 일부이므로 고유해야 합니다.sitename="<your-site-name>"
Azure Resource Manager 템플릿을 통해
az deployment group create
를 실행하여 웹앱을 배포합니다.az deployment group create \ --resource-group $resource_group \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
배포를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 배포가 성공된 후 실행하는지 확인하려면 웹앱을 봅니다. 웹 브라우저에서 https://<your-site-name>.azurewebsites.net
으로 이동합니다. 현재 표시된 메시지가 없는 사이트가 표시되어야 합니다.
Azure Event Grid Viewer 웹후크에 이벤트 배달
Azure Event Grid Viewer용 웹후크를 사용하여 네임스페이스에 대한 푸시 배달 이벤트 구독을 만듭니다.
이벤트 구독의 이름을 저장할 변수를 정의합니다.
event_subscription="<your_event_subscription_name>"
EVENTGRIDWEBSITENAME
을 Event Grid Viewer 웹 사이트의 이름으로 바꿉니다. 예:contosoegridviewer
az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
토픽에 이벤트 보내기
이제 이 섹션의 단계에 따라 네임스페이스 토픽에 샘플 이벤트를 보냅니다.
네임스페이스 액세스 키 나열
만든 네임스페이스와 연결된 액세스 키를 가져옵니다. 이 중 하나를 사용하여 이벤트를 게시할 때 인증합니다. 키를 나열하려면 먼저 전체 네임스페이스 리소스 ID가 필요합니다. 다음 명령을 실행하여 가져옵니다.
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
네임스페이스에서 첫 번째 키를 가져옵니다.
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
이벤트 게시
네임스페이스 호스트 이름을 검색합니다. 이벤트를 보낼 네임스페이스 HTTP 엔드포인트를 구성하는 데 사용합니다. 다음 작업은 API 버전
2023-06-01-preview
에서 처음 사용할 수 있었습니다.publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
샘플 CloudEvents 규격 이벤트를 만듭니다.
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
data
요소는 이벤트의 페이로드입니다. 모든 잘 구성된(Well-Formed) JSON은 이 필드에 배치될 수 있습니다. 이벤트에 참가할 수 있는 속성(컨텍스트 특성이라고도 함)에 대한 자세한 내용은 CloudEvents 사양을 참조하세요.CURL을 사용하여 토픽에 이벤트를 보냅니다. CURL은 HTTP 요청을 보내는 유틸리티입니다.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Azure Event Grid 뷰어가 이벤트를 수신했는지 확인
Azure Event Grid Viewer 웹앱이 Event Grid에서 받은 이벤트를 표시하는지 확인합니다.
관련 콘텐츠
이 빠른 시작에서는 웹후크를 이벤트 처리기로 사용했습니다. Azure Event Hubs를 이벤트 처리기로 사용하는 빠른 시작은 네임스페이스 항목을 사용하여 Azure Event Hubs에 이벤트 배달을 참조하세요.