다음을 통해 공유


이벤트 도메인을 사용하여 토픽을 관리하고 이벤트를 게시하는 방법

이 문서는 다음 방법을 안내합니다.

  • Event Grid 도메인 만들기
  • Event Grid 토픽 구독
  • 키 나열
  • 도메인에 이벤트 게시

이벤트 도메인에 대해 알아보려면 Event Grid 토픽을 관리하는 이벤트 도메인 이해를 참조하세요.

이벤트 도메인 만들기

대규모 토픽 집합을 관리하려면 이벤트 도메인을 만듭니다.

az eventgrid domain create \
  -g <my-resource-group> \
  --name <my-domain-name> \
  -l <location>

성공적으로 만들어지면 다음 값이 반환됩니다.

{
  "endpoint": "https://<my-domain-name>.westus2-1.eventgrid.azure.net/api/events",
  "id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>",
  "inputSchema": "EventGridSchema",
  "inputSchemaMapping": null,
  "location": "westus2",
  "name": "<my-domain-name>",
  "provisioningState": "Succeeded",
  "resourceGroup": "<my-resource-group>",
  "tags": null,
  "type": "Microsoft.EventGrid/domains"
}

endpointid를 기록해 둡니다. 도메인을 관리하고 이벤트를 게시하는 데 필요합니다.

토픽에 대한 액세스 관리

토픽에 대한 액세스 관리는 역할 할당을 통해 수행됩니다. 역할 할당은 Azure 역할 기반 액세스 제어를 사용하여 Azure 리소스에 대한 작업을 특정 범위에서 권한이 부여된 사용자로 제한합니다.

Event Grid는 도메인 내 다양한 토픽에 대한 특정 사용자 액세스를 할당하는 데 사용할 수 있는 두 가지 기본 제공 역할을 제공합니다. 이러한 역할은 구독을 만들고 삭제할 수 있는 EventGrid EventSubscription Contributor (Preview) 및 이벤트 구독을 나열하는 것만 가능한 EventGrid EventSubscription Reader (Preview)입니다.

다음 Azure CLI 명령은 demotopic1 토픽에만 이벤트 구독을 만들고 삭제하도록 alice@contoso.com을 제한합니다.

az role assignment create \
  --assignee alice@contoso.com \
  --role "EventGrid EventSubscription Contributor (Preview)" \
  --scope /subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1

Event Grid 작업에 대한 액세스를 관리하는 방법에 대한 자세한 내용은 Event Grid 보안 및 인증을 참조하세요.

토픽 및 구독 만들기

Event Grid 서비스는 도메인 토픽에 대한 이벤트 구독 만들기 호출에 따라 자동으로 도메인에 해당 토픽을 만들고 관리합니다. 도메인에 토픽을 만드는 별도의 단계가 없습니다. 마찬가지로, 토픽의 마지막 이벤트 구독을 삭제하면 토픽도 삭제됩니다.

도메인에서 토픽을 구독하는 방법은 다른 Azure 리소스를 구독하는 방법과 동일합니다. 원본 리소스 ID의 경우 이전에 도메인을 만들 때 반환된 이벤트 도메인 ID를 지정합니다. 구독할 토픽을 지정하려면 원본 리소스 ID의 끝에 /topics/<my-topic>을 추가합니다. 도메인의 모든 이벤트를 수신하는 도메인 범위 이벤트 구독을 만들려면 모든 토픽을 지정하지 않고 이벤트 도메인 ID를 지정합니다.

일반적으로 이전 섹션에서 액세스 권한을 부여한 사용자가 구독을 만듭니다. 이 문서를 간소화하기 위해 구독을 만듭니다.

az eventgrid event-subscription create \
  --name <event-subscription> \
  --source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1" \
  --endpoint https://contoso.azurewebsites.net/api/updates

이벤트를 구독할 테스트 엔드포인트가 필요한 경우 들어오는 이벤트를 표시하는 미리 빌드된 웹앱을 언제든지 배포할 수 있습니다. https://<your-site-name>.azurewebsites.net/api/updates에서 테스트 웹 사이트에 이벤트를 보낼 수 있습니다.

Button to deploy the Resource Manager template to Azure.

토픽에 대해 설정되고 Microsoft Entra ID에 저장된 권한은 명시적으로 삭제해야 합니다. 구독이 토픽에 대한 쓰기 권한을 갖고 있는 경우 이벤트 구독을 삭제해도 이벤트 구독을 만드는 사용자 액세스 권한이 철회되지 않습니다.

Event Grid 도메인에 이벤트 게시

도메인에 이벤트를 게시하는 방법은 사용자 지정 토픽에 게시하는 방법과 동일합니다. 그러나 사용자 지정 항목에 게시하는 대신 모든 이벤트를 도메인 엔드포인트에 게시합니다. JSON 이벤트 데이터에서 이벤트를 이동할 항목을 지정합니다. 다음 이벤트 배열을 게시하면 "id": "1111"인 이벤트는 demotopic1 토픽으로 전송되고 "id": "2222"인 이벤트는 demotopic2 토픽으로 전송됩니다.

[{
  "topic": "demotopic1",
  "id": "1111",
  "eventType": "maintenanceRequested",
  "subject": "myapp/vehicles/diggers",
  "eventTime": "2018-10-30T21:03:07+00:00",
  "data": {
    "make": "Contoso",
    "model": "Small Digger"
  },
  "dataVersion": "1.0"
},
{
  "topic": "demotopic2",
  "id": "2222",
  "eventType": "maintenanceCompleted",
  "subject": "myapp/vehicles/tractors",
  "eventTime": "2018-10-30T21:04:12+00:00",
  "data": {
    "make": "Contoso",
    "model": "Big Tractor"
  },
  "dataVersion": "1.0"
}]

Azure CLI로 도메인 엔드포인트를 가져오려면 다음을 사용합니다.

az eventgrid domain show \
  -g <my-resource-group> \
  -n <my-domain>

도메인에 사용할 키를 가져오려면 다음을 사용합니다.

az eventgrid domain key list \
  -g <my-resource-group> \
  -n <my-domain>

그런 다음, 선호하는 방법으로 HTTP POST를 만들어서 Event Grid 도메인에 이벤트를 게시합니다.

참고 항목

프로그래밍 언어 SDK를 사용하여 Event Grid 도메인에 이벤트를 게시하는 샘플의 경우 다음 링크를 사용합니다.

토픽 또는 구독의 검색 목록

Event Grid API는 많은 수의 토픽 또는 구독을 검색하고 관리하기 위해 나열 및 페이지 매김을 지원합니다.

CLI 사용

예를 들어 다음 명령은 이름에 mytopic이 포함된 모든 토픽을 나열합니다.

az eventgrid topic list --odata-query "contains(name, 'mytopic')"

이 명령에 대한 자세한 내용은 az eventgrid topic list을 참조하세요.

다음 단계