Özel alanları Event Grid şemaya eşlemeMap custom fields to Event Grid schema

Olay verilerinizi beklenen eşleşmiyorsa Event Grid şema, rota olay aboneler için Event Grid kullanmaya devam edebilirsiniz.If your event data doesn't match the expected Event Grid schema, you can still use Event Grid to route event to subscribers. Bu makalede, şemanızı Event Grid şemaya eşleme açıklar.This article describes how to map your schema to the Event Grid schema.

Önemli

Powershell'den Azure bu özelliği kullanarak gerektirir AzureRM Modülü yüklü.Using this Azure feature from PowerShell requires the AzureRM module installed. Windows PowerShell 5.1 için yeni özellikler artık aldığı yalnızca kullanılabilir daha eski bir modül budur.This is an older module only available for Windows PowerShell 5.1 that no longer receives new features. Az Ve AzureRM modüller değil aynı PowerShell sürümleri için yüklendiğinde uyumlu.The Az and AzureRM modules are not compatible when installed for the same versions of PowerShell. Her iki sürümü ihtiyacınız varsa:If you need both versions:

  1. Az modülünü kaldırmak PowerShell 5.1 oturumundan.Uninstall the Az module from a PowerShell 5.1 session.
  2. AzureRM modülünü yükleme PowerShell 5.1 oturumundan.Install the AzureRM module from a PowerShell 5.1 session.
  3. PowerShell Core yükleyip 6.x veya daha sonra.Download and install PowerShell Core 6.x or later.
  4. Az modül Yükle PowerShell Core oturumunda.Install the Az module in a PowerShell Core session.

Önizleme özelliğini yükleInstall preview feature

Bu özellik önizlemede.This feature is in preview. Bunu kullanmak için bir önizleme uzantısı veya modül yüklemeniz gerekir.To use it, you must install a preview extension or module.

Uzantısı için Azure CLI'yı yüklemeInstall extension for Azure CLI

Azure CLI için gereksinim duyduğunuz Event Grid uzantısı.For Azure CLI, you need the Event Grid extension.

İçinde CloudShell:In CloudShell:

  • Uzantıyı daha önce yüklediyseniz bu güncelleştirme az extension update -n eventgridIf you've installed the extension previously, update it az extension update -n eventgrid
  • Uzantıyı daha önce yüklemediyseniz yükleyin az extension add -n eventgridIf you haven't installed the extension previously, install it az extension add -n eventgrid

Yerel bir yüklemesi için:For a local installation:

  1. Azure CLI yükleme.Install the Azure CLI. İle kontrol ederek son sürüme sahip olduğunuzdan emin olun az --version.Make sure that you have the latest version, by checking with az --version.
  2. Uzantı'nın önceki sürümlerini kaldırma az extension remove -n eventgridUninstall previous versions of the extension az extension remove -n eventgrid
  3. Yükleme eventgrid uzantısıyla az extension add -n eventgridInstall the eventgrid extension with az extension add -n eventgrid

İçin PowerShell modülünü yüklemeInstall module for PowerShell

PowerShell için gereksinim duyduğunuz AzureRM.EventGrid Modülü.For PowerShell, you need the AzureRM.EventGrid module.

İçinde CloudShell:In CloudShell:

  • Modülünü yükleme Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGalleryInstall the module Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

Yerel bir yüklemesi için:For a local installation:

  1. PowerShell konsolunu yönetici olarak açın.Open PowerShell console as administrator
  2. Modülünü yükleme Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGalleryInstall the module Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

Varsa -AllowPrerelease parametresi kullanılamaz, aşağıdaki adımları kullanın:If the -AllowPrerelease parameter isn't available, use the following steps:

  1. Install-Module PowerShellGet -Force öğesini çalıştırınRun Install-Module PowerShellGet -Force
  2. Update-Module PowerShellGet öğesini çalıştırınRun Update-Module PowerShellGet
  3. PowerShell konsolunu kapatınClose the PowerShell console
  4. PowerShell'i yönetici olarak yeniden başlatın.Restart PowerShell as administrator
  5. Modülünü yükleme Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGalleryInstall the module Install-Module -Name AzureRM.EventGrid -AllowPrerelease -Force -Repository PSGallery

Özgün olay şemasıOriginal event schema

Şu biçimde olayları gönderen bir uygulamaya sahip varsayalım:Let's suppose you have an application that sends events in the following format:

[
  {
    "myEventTypeField":"Created",
    "resource":"Users/example/Messages/1000",
    "resourceData":{"someDataField1":"SomeDataFieldValue"}
  }
]

Bu biçim gerekli şema eşleşmiyor olsa da, Event Grid, alanları şemaya eşleme sağlar.Although that format doesn't match the required schema, Event Grid enables you to map your fields to the schema. Veya, özgün şemada değerleri alabilir.Or, you can receive the values in the original schema.

Eşlenen alanlar ile özel konu oluşturmaCreate custom topic with mapped fields

Bir özel konu oluşturma sırasında özgün olay alanlarından event grid şemaya eşleme belirtin.When creating a custom topic, specify how to map fields from your original event to the event grid schema. Eşleme özelleştirmek için kullandığınız üç değer vardır:There are three values you use to customize the mapping:

  • Giriş şemasını şema türü bir değer belirtir.The input schema value specifies the type of schema. Mevcut seçenekler CloudEvents şeması, özel olay Şeması veya Event Grid şema'dir.The available options are CloudEvents schema, custom event schema, or Event Grid schema. Event Grid şema varsayılan değerdir.The default value is Event Grid schema. Özel eşleme şemanızı ve event grid şema arasında oluştururken, özel olay şeması kullanın.When creating custom mapping between your schema and the event grid schema, use custom event schema. Olayları CloudEvents şeması içinde olduğunda Cloudevents şeması kullanma.When events are in the CloudEvents schema, use Cloudevents schema.

  • Varsayılan değerleri eşleme özelliği, Event Grid şemada alanlar için varsayılan değerler belirtir.The mapping default values property specifies default values for fields in the Event Grid schema. Varsayılan değerleri ayarlayabileceğiniz subject, eventtype, ve dataversion.You can set default values for subject, eventtype, and dataversion. Genellikle, bu üç alan birine karşılık gelen bir alan özel şemanızı içermediğinde bu parametreyi kullanın.Typically, you use this parameter when your custom schema doesn't include a field that corresponds to one of those three fields. Örneğin, bu veri sürümü her zaman ayarlanır belirtebilirsiniz 1.0.For example, you can specify that data version is always set to 1.0.

  • Alanlarını eşleme şemanızı alanları için event grid şema değeri eşler.The mapping fields value maps fields from your schema to the event grid schema. Değerler boşlukla ayrılmış bir anahtar/değer çiftlerini belirtin.You specify values in space-separated key/value pairs. Anahtar adı için event grid alanı adını kullanın.For the key name, use the name of the event grid field. Değeri, alan adı kullanın.For the value, use the name of your field. Anahtar adları için kullanabileceğiniz id, topic, eventtime, subject, eventtype, ve dataversion.You can use key names for id, topic, eventtime, subject, eventtype, and dataversion.

Azure CLI ile özel bir konu oluşturmak için kullanın:To create a custom topic with 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 \
  -n demotopic \
  -l eastus2 \
  -g myResourceGroup \
  --input-schema customeventschema \
  --input-mapping-fields eventType=myEventTypeField \
  --input-mapping-default-values subject=DefaultSubject dataVersion=1.0

PowerShell için şunu kullanın: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 myResourceGroup `
  -Name demotopic `
  -Location eastus2 `
  -InputSchema CustomEventSchema `
  -InputMappingField @{eventType="myEventTypeField"} `
  -InputMappingDefaultValue @{subject="DefaultSubject"; dataVersion="1.0" }

Event grid konuya abone olmaSubscribe to event grid topic

Özel konuya abone olurken olayları almak için kullanmak istediğiniz bir şema belirtin.When subscribing to the custom topic, you specify the schema you would like to use for receiving the events. CloudEvents şeması, özel olay Şeması veya Event Grid şema belirtYou specify the CloudEvents schema, custom event schema, or Event Grid schema. Event Grid şema varsayılan değerdir.The default value is Event Grid schema.

Aşağıdaki örnek, bir event grid konuya abone olur ve Event Grid şemayı kullanır.The following example subscribes to an event grid topic and uses the Event Grid schema. Azure CLI için şunu kullanın:For Azure CLI, use:

topicid=$(az eventgrid topic show --name demoTopic -g myResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name eventsub1 \
  --event-delivery-schema eventgridschema \
  --endpoint <endpoint_URL>

Sonraki örnek, olayın giriş şemasını kullanır:The next example uses the input schema of the event:

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name eventsub2 \
  --event-delivery-schema custominputschema \
  --endpoint <endpoint_URL>

Aşağıdaki örnek, bir event grid konuya abone olur ve Event Grid şemayı kullanır.The following example subscribes to an event grid topic and uses the Event Grid schema. PowerShell için şunu kullanın:For PowerShell, use:

$topicid = (Get-AzureRmEventGridTopic -ResourceGroupName myResourceGroup -Name demoTopic).Id

New-AzureRmEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName eventsub1 `
  -EndpointType webhook `
  -Endpoint <endpoint-url> `
  -DeliverySchema EventGridSchema

Sonraki örnek, olayın giriş şemasını kullanır:The next example uses the input schema of the event:

New-AzureRmEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName eventsub2 `
  -EndpointType webhook `
  -Endpoint <endpoint-url> `
  -DeliverySchema CustomInputSchema

Konuya olayı YayımlaPublish event to topic

Özel konuya bir olay göndermek ve eşlemenin sonucunu görmek artık hazırsınız.You're now ready to send an event to the custom topic, and see the result of the mapping. Bir olay göndermek için aşağıdaki betiği örnek şema:The following script to post an event in the example schema:

Azure CLI için şunu kullanın:For Azure CLI, use:

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

event='[ { "myEventTypeField":"Created", "resource":"Users/example/Messages/1000", "resourceData":{"someDataField1":"SomeDataFieldValue"} } ]'

curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

PowerShell için şunu kullanın:For PowerShell, use:

$endpoint = (Get-AzureRmEventGridTopic -ResourceGroupName myResourceGroup -Name demotopic).Endpoint
$keys = Get-AzureRmEventGridTopicKey -ResourceGroupName myResourceGroup -Name demotopic

$htbody = @{
    myEventTypeField="Created"
    resource="Users/example/Messages/1000"
    resourceData= @{
        someDataField1="SomeDataFieldValue"
    }
}

$body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

Şimdi Web kancası uç noktanızı arayın.Now, look at your WebHook endpoint. İki aboneliğin farklı şemalarda olayları teslim.The two subscriptions delivered events in different schemas.

İlk abonelik olay ızgarası şeması kullanılır.The first subscription used event grid schema. Teslim edilen olay biçimdir:The format of the delivered event is:

{
  "id": "aa5b8e2a-1235-4032-be8f-5223395b9eae",
  "eventTime": "2018-11-07T23:59:14.7997564Z",
  "eventType": "Created",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.EventGrid/topics/demotopic",
  "subject": "DefaultSubject",
  "data": {
    "myEventTypeField": "Created",
    "resource": "Users/example/Messages/1000",
    "resourceData": {
      "someDataField1": "SomeDataFieldValue"
    }
  }
}

Bu alanlar özel konu başlığından eşlemeleri içerir.These fields contain the mappings from the custom topic. myEventTypeField eşlenmiş EventType.myEventTypeField is mapped to EventType. İçin varsayılan değerler DataVersion ve konu kullanılır.The default values for DataVersion and Subject are used. Veri nesne özgün olay şema alanları içerir.The Data object contains the original event schema fields.

İkinci abonelik giriş olay şeması kullanılır.The second subscription used the input event schema. Teslim edilen olay biçimdir:The format of the delivered event is:

{
  "myEventTypeField": "Created",
  "resource": "Users/example/Messages/1000",
  "resourceData": {
    "someDataField1": "SomeDataFieldValue"
  }
}

Özgün alanları teslim dikkat edin.Notice that the original fields were delivered.

Sonraki adımlarNext steps