Egyéni mezők leképezése Event Grid-sémára
Ha az eseményadatok nem egyeznek meg a várt Event Grid-sémával, az Eseményrács használatával továbbra is átirányíthatja az eseményt az előfizetőknek. Ez a cikk bemutatja, hogyan képezheti le a sémát az Event Grid-sémára.
Eredeti eseményséma
Tegyük fel, hogy van egy olyan alkalmazása, amely a következő formátumban küld eseményeket:
[
{
"myEventTypeField":"Created",
"resource":"Users/example/Messages/1000",
"resourceData":{"someDataField1":"SomeDataFieldValue"}
}
]
Bár ez a formátum nem egyezik meg a szükséges sémával, az Event Grid lehetővé teszi, hogy a mezőket a sémához rendelje. Vagy az eredeti sémában is megkaphatja az értékeket.
Egyéni témakör létrehozása leképezett mezőkkel
Egyéni témakör létrehozásakor adja meg, hogyan képezhet le mezőket az eredeti eseményről az eseményrács sémájára. A leképezés testreszabásához három érték használható:
A bemeneti séma értéke határozza meg a séma típusát. A rendelkezésre álló lehetőségek a CloudEvents-séma, az egyéni eseményséma vagy az Event Grid-séma. Az alapértelmezett érték az Event Grid-séma. Amikor egyéni leképezést hoz létre a séma és az eseményrácsséma között, használjon egyéni eseménysémát. Ha az események CloudEvents formátumban vannak, használja a CloudEvents sémát.
Az alapértelmezett értékek leképezése tulajdonság az Event Grid-séma mezőinek alapértelmezett értékeit adja meg. Az alapértelmezett értékeket a ,
eventtype
ésdataversion
a értékresubject
állíthatja be. Ezt a paramétert általában akkor használja, ha az egyéni séma nem tartalmaz olyan mezőt, amely a három mező egyikének felel meg. Megadhatja például, hogy az adatverzió mindig 1.0 legyen.A leképezési mezők értéke a sémából az eseményrács sémájához rendeli a mezőket. Az értékeket szóközzel elválasztott kulcs/érték párokban adhatja meg. A kulcsnévhez használja az eseményrács mező nevét. Az értékhez használja a mező nevét. Kulcsneveket használhat a ,
topic
,eventtime
,subject
,eventtype
ésdataversion
.id
Ha egyéni témakört szeretne létrehozni az Azure CLI-vel, használja a következőt:
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 esetén használja az alábbi parancsot:
New-AzEventGridTopic `
-ResourceGroupName myResourceGroup `
-Name demotopic `
-Location eastus2 `
-InputSchema CustomEventSchema `
-InputMappingField @{eventType="myEventTypeField"} `
-InputMappingDefaultValue @{subject="DefaultSubject"; dataVersion="1.0" }
Feliratkozás az event grid-témakörre
Amikor feliratkozik az egyéni témakörre, meg kell adnia azt a sémát, amelyet az események fogadásához használni szeretne. Megadhatja a CloudEvents sémát, az egyéni eseménysémát vagy az Event Grid-sémát. Az alapértelmezett érték az Event Grid-séma.
Az alábbi példa előfizet egy eseményrács-témakörre, és az Event Grid-sémát használja. Azure CLI esetén használja az alábbi parancsot:
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>
A következő példa az esemény bemeneti sémáját használja:
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name eventsub2 \
--event-delivery-schema custominputschema \
--endpoint <endpoint_URL>
Az alábbi példa előfizet egy eseményrács-témakörre, és az Event Grid-sémát használja. PowerShell esetén használja az alábbi parancsot:
$topicid = (Get-AzEventGridTopic -ResourceGroupName myResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName eventsub1 `
-EndpointType webhook `
-Endpoint <endpoint-url> `
-DeliverySchema EventGridSchema
A következő példa az esemény bemeneti sémáját használja:
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName eventsub2 `
-EndpointType webhook `
-Endpoint <endpoint-url> `
-DeliverySchema CustomInputSchema
Esemény közzététele a témában
Most már készen áll arra, hogy eseményt küldjön az egyéni témakörbe, és megtekintheti a leképezés eredményét. Az alábbi szkript egy esemény közzétételére a példasémában:
Azure CLI esetén használja az alábbi parancsot:
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 esetén használja az alábbi parancsot:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName myResourceGroup -Name demotopic).Endpoint
$keys = Get-AzEventGridTopicKey -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}
Most tekintse meg a WebHook-végpontot. A két előfizetés különböző sémákban kézbesített eseményeket.
Az első előfizetés eseményrácssémát használt. A kézbesített esemény formátuma a következő:
{
"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"
}
}
}
Ezek a mezők az egyéni témakör leképezéseit tartalmazzák. A myEventTypeFieldeseménytípusra van leképezve. A DataVersion és a Subject alapértelmezett értékeit használja a rendszer. Az Adatobjektum tartalmazza az eredeti eseménysémamezőket.
A második előfizetés a bemeneti eseménysémát használta. A kézbesített esemény formátuma a következő:
{
"myEventTypeField": "Created",
"resource": "Users/example/Messages/1000",
"resourceData": {
"someDataField1": "SomeDataFieldValue"
}
}
Figyelje meg, hogy az eredeti mezők kézbesítése megtörtént.
Következő lépések
- Az eseménykézbesítésről és az újrapróbálkozásról az Event Grid üzenetkézbesítési és újrapróbálkozási útmutatója nyújt tájékoztatást.
- Az Event Grid ismertetése: Az Event Grid bemutatása.
- Az Event Grid használatának gyors megkezdéséhez lásd: Egyéni események létrehozása és irányítása Azure Event Grid.