Event Grid에서 CloudEvents v 1.0 스키마 사용Use CloudEvents v1.0 schema with Event Grid

기본 이벤트 스키마외에도 Azure Event Grid는 CloudEvents v 1.0HTTP 프로토콜 바인딩의JSON 구현에서 이벤트를 기본적으로 지원 합니다.In addition to its default event schema, Azure Event Grid natively supports events in the JSON implementation of CloudEvents v1.0 and HTTP protocol binding. CloudEvents는 이벤트 데이터를 설명하는 공개 사양입니다.CloudEvents is an open specification for describing event data.

CloudEvents는 클라우드 기반 이벤트를 게시 및 사용하기 위한 일반적인 이벤트 스키마를 제공하여 상호 운용성을 간소화합니다.CloudEvents simplifies interoperability by providing a common event schema for publishing, and consuming cloud based events. 이 스키마를 통해 균일한 도구, 이벤트를 라우팅 및 처리하는 표준 방법, 외부 이벤트 스키마를 역직렬화하는 유니버설 방법이 가능해집니다.This schema allows for uniform tooling, standard ways of routing & handling events, and universal ways of deserializing the outer event schema. 공통 스키마를 통해 여러 플랫폼에서 작업을 보다 쉽게 통합할 수 있습니다.With a common schema, you can more easily integrate work across platforms.

CloudEvents는 Cloud Native Computing Foundation을 통해 Microsoft를 포함한 여러 협력자가 작성하고 있습니다.CloudEvents is being built by several collaborators, including Microsoft, through the Cloud Native Computing Foundation. 현재 버전 1.0로 사용할 수 있습니다.It's currently available as version 1.0.

이 문서에서는 Event Grid에서 CloudEvents 스키마를 사용하는 방법을 설명합니다.This article describes how to use the CloudEvents schema with Event Grid.

중요

PowerShell에서 이 Azure 기능을 사용하려면 AzureRM 모듈이 설치되어 있어야 합니다.Using this Azure feature from PowerShell requires the AzureRM module installed. 이 모듈은 Windows PowerShell 5.1에만 사용할 수 있는 이전 모듈로, 새로운 기능은 더 이상 받지 않습니다.This is an older module only available for Windows PowerShell 5.1 that no longer receives new features. PowerShell의 동일한 버전에 대해 설치된 경우 AzAzureRM 모듈은 호환되지 않습니다.The Az and AzureRM modules are not compatible when installed for the same versions of PowerShell. 두 버전이 모두 필요한 경우:If you need both versions:

  1. PowerShell 5.1 세션에서 Az 모듈을 제거합니다.Uninstall the Az module from a PowerShell 5.1 session.
  2. PowerShell 5.1 세션에서 AzureRM 모듈을 설치합니다.Install the AzureRM module from a PowerShell 5.1 session.
  3. PowerShell Core 6.x 이상을 다운로드하고 설치합니다.Download and install PowerShell Core 6.x or later.
  4. PowerShell Core 세션에서 Az 모듈을 설치합니다.Install the Az module in a PowerShell Core session.

미리 보기 기능 설치Install preview feature

이 기능은 미리 보기 상태입니다.This feature is in preview. 이 기능을 사용하려면 미리 보기 확장 또는 모듈을 설치해야 합니다.To use it, you must install a preview extension or module.

Azure CLI 확장 설치Install extension for Azure CLI

Azure CLI의 경우 Event Grid 확장이 필요합니다.For Azure CLI, you need the Event Grid extension.

CloudShell에서:In CloudShell:

  • 이전에 확장을 설치한 경우 az extension update -n eventgrid로 업데이트합니다.If you've installed the extension previously, update it az extension update -n eventgrid
  • 이전에 확장을 설치하지 않은 경우 az extension add -n eventgrid로 업데이트합니다.If you haven't installed the extension previously, install it az extension add -n eventgrid

로컬 설치의 경우:For a local installation:

  1. Azure CLI를 설치합니다.Install the Azure CLI. 확인 하 여 최신 버전으로 있는지 확인 az --version합니다.Make sure that you have the latest version, by checking with az --version.
  2. 이전 버전의 확장 az extension remove -n eventgrid를 제거합니다.Uninstall previous versions of the extension az extension remove -n eventgrid
  3. 설치는 eventgrid 확장과 az extension add -n eventgridInstall the eventgrid extension with az extension add -n eventgrid

PowerShell 모듈 설치Install module for PowerShell

PowerShell의 경우 AzureRM.EventGrid 모듈이 필요합니다.For PowerShell, you need the AzureRM.EventGrid module.

CloudShell에서:In CloudShell:

  • 모듈 설치 Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGalleryInstall the module Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

로컬 설치의 경우:For a local installation:

  1. PowerShell 콘솔을 관리자로 열기Open PowerShell console as administrator
  2. 모듈 설치 Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGalleryInstall the module Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

-AllowPrerelease 매개 변수를 사용할 수 없는 경우 다음 단계를 사용합니다.If the -AllowPrerelease parameter isn't available, use the following steps:

  1. Install-Module PowerShellGet -Force 실행Run Install-Module PowerShellGet -Force
  2. Update-Module PowerShellGet 실행Run Update-Module PowerShellGet
  3. PowerShell 콘솔 닫기Close the PowerShell console
  4. PowerShell을 관리자로 다시 시작Restart PowerShell as administrator
  5. 모듈 설치 Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGalleryInstall the module Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

CloudEvent 스키마CloudEvent schema

CloudEvents 형식의 Azure Blob Storage 이벤트의 예는 다음과 같습니다.Here is an example of an Azure Blob Storage event in CloudEvents format:

{
    "specversion": "1.0",
    "type": "Microsoft.Storage.BlobCreated",  
    "source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-account}",
    "id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
    "time": "2019-11-18T15:13:39.4589254Z",
    "subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",
    "dataschema": "#",
    "data": {
        "api": "PutBlockList",
        "clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
        "requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
        "eTag": "0x8D76C39E4407333",
        "contentType": "image/png",
        "contentLength": 30699,
        "blobType": "BlockBlob",
        "url": "https://gridtesting.blob.core.windows.net/testcontainer/{new-file}",
        "sequencer": "000000000000000000000000000099240000000000c41c18",
        "storageDiagnostics": {
            "batchId": "681fe319-3006-00a8-0022-9e7cde000000"
        }
    }
}

사용 가능한 필드, 해당 형식 및 CloudEvents v 0.1의 정의에 대 한 자세한 설명은 여기에서 사용할 수있습니다.A detailed description of the available fields, their types, and definitions in CloudEvents v0.1 is available here.

content-type을 제외하고 CloudEvents 스키마 및 Event Grid 스키마에 배달된 이벤트에 대한 헤더 값은 동일합니다.The headers values for events delivered in the CloudEvents schema and the Event Grid schema are the same except for content-type. CloudEvents 스키마의 경우 헤더 값은 "content-type":"application/cloudevents+json; charset=utf-8"입니다.For CloudEvents schema, that header value is "content-type":"application/cloudevents+json; charset=utf-8". Event Grid 스키마의 경우 헤더 값은 "content-type":"application/json; charset=utf-8"입니다.For Event Grid schema, that header value is "content-type":"application/json; charset=utf-8".

CloudEvents에 대한 Event Grid 구성Configure Event Grid for CloudEvents

CloudEvents 스키마에서 이벤트의 입출력 둘 다에 Event Grid를 사용할 수 있습니다.You can use Event Grid for both input and output of events in CloudEvents schema. Blob Storage 이벤트 및 IoT Hub 이벤트와 같은 시스템 이벤트와 사용자 지정 이벤트에 CloudEvents를 사용할 수 있습니다.You can use CloudEvents for system events, like Blob Storage events and IoT Hub events, and custom events. 또한 온라인 상태에서 이러한 이벤트를 변환할 수도 있습니다.It can also transform those events on the wire back and forth.

입력 스키마Input schema 출력 스키마입니다.Output schema
CloudEvents 형식CloudEvents format CloudEvents 형식CloudEvents format
Event Grid 형식Event Grid format CloudEvents 형식CloudEvents format
CloudEvents 형식CloudEvents format Event Grid 형식Event Grid format
Event Grid 형식Event Grid format Event Grid 형식Event Grid format

모든 이벤트 스키마에 대해, Event Grid는 Event Grid 토픽에 게시할 때와 이벤트 구독을 만들 때 유효성 검사를 요구합니다.For all event schemas, Event Grid requires validation when publishing to an event grid topic and when creating an event subscription. 자세한 내용은 Event Grid 보안 및 인증을 참조하세요.For more information, see Event Grid security and authentication.

입력 스키마Input schema

사용자 지정 토픽을 만들 때 해당 사용자 지정 토픽의 입력 스키마를 설정합니다.You set the input schema for a custom topic when you create the custom topic.

Azure CLI의 경우For Azure CLI, use:

# If you have not already installed the extension, do it now.
# This extension is required for preview features.
az extension add --name eventgrid

az eventgrid topic create \
  --name <topic_name> \
  -l westcentralus \
  -g gridResourceGroup \
  --input-schema cloudeventschemav1_0

PowerShell의 경우 다음을 사용합니다.For PowerShell, use:

# If you have not already installed the module, do it now.
# This module is required for preview features.
Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

New-AzureRmEventGridTopic `
  -ResourceGroupName gridResourceGroup `
  -Location westcentralus `
  -Name <topic_name> `
  -InputSchema CloudEventSchemaV1_0

현재 버전의 CloudEvents는 이벤트의 일괄 처리를 지원하지 않습니다.The current version of CloudEvents doesn't support batching of events. CloudEvent 스키마를 갖는 이벤트를 토픽에 게시하려면 각 이벤트를 개별적으로 게시합니다.To publish events with CloudEvent schema to a topic, publish each event individually.

출력 스키마입니다.Output schema

이벤트 구독을 만들 때 출력 스키마를 설정합니다.You set the output schema when you create the event subscription.

Azure CLI의 경우For Azure CLI, use:

topicID=$(az eventgrid topic show --name <topic-name> -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --name <event_subscription_name> \
  --source-resource-id $topicID \
  --endpoint <endpoint_URL> \
  --event-delivery-schema cloudeventschemav1_0

PowerShell의 경우 다음을 사용합니다.For PowerShell, use:

$topicid = (Get-AzureRmEventGridTopic -ResourceGroupName gridResourceGroup -Name <topic-name>).Id

New-AzureRmEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -DeliverySchema CloudEventSchemaV1_0

현재는, 이벤트가 CloudEvents 스키마에 전달되는 경우 Azure Functions 앱에 Event Grid 트리거를 사용할 수 없습니다.Currently, you can't use an Event Grid trigger for an Azure Functions app when the event is delivered in the CloudEvents schema. HTTP 트리거를 사용합니다.Use an HTTP trigger. CloudEvents 스키마에서 이벤트를 수신하는 HTTP 트리거를 구현하는 예제는 HTTP 트리거를 Event Grid 트리거로 사용을 참조하세요.For examples of implementing an HTTP trigger that receives events in the CloudEvents schema, see Use an HTTP trigger as an Event Grid trigger.

CloudEvents v 1.0을 사용 하는 끝점 유효성 검사Endpoint Validation with CloudEvents v1.0

Event Grid에 대해 잘 알고 있는 경우 남용 방지를 위한 Event Grid의 끝점 유효성 검사 핸드셰이크를 알고 있을 수 있습니다.If you are already familiar with Event Grid, you may be aware of Event Grid's endpoint validation handshake for preventing abuse. CloudEvents v 1.0은 HTTP OPTIONS 메서드를 사용 하 여 자체 불건전 보호 의미 체계 를 구현 합니다.CloudEvents v1.0 implements its own abuse protection semantics using the HTTP OPTIONS method. 해당 서비스에 대한 자세한 내용은 여기에서 확인할 수 있습니다.You can read more about it here. 출력에 CloudEvents 스키마를 사용 하는 경우 Event Grid는 Event Grid 유효성 검사 이벤트 메커니즘 대신 CloudEvents v1.0 남용 보호와 함께를 사용 합니다.When using the CloudEvents schema for output, Event Grid uses with the CloudEvents v1.0 abuse protection in place of the Event Grid validation event mechanism.

다음 단계Next steps