Események továbbítása az Azure Event Hubsba névtértémák használatával – Azure CLI
A cikk részletes útmutatást nyújt az események CloudEvents JSON formátumban történő közzétételéhez az Azure Event Gridben, és ezeket az eseményeket a leküldéses kézbesítési modell használatával kézbesítheti. Konkrétan az Azure CLI és a Curl használatával teheti közzé az eseményeket az Event Grid névtértémakörében, és leküldheti az eseményeket egy esemény-előfizetésből egy Event Hubs-kezelő célhelyre. A leküldéses kézbesítési modellről további információt a leküldéses kézbesítés áttekintésében talál.
Feljegyzés
Az Azure CLI Event Grid-bővítmény még nem támogatja a névtereket és a benne található erőforrásokat. Az Azure CLI-erőforrást fogjuk használni Event Grid-erőforrások létrehozásához.
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be a
az login
parancs használatával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Ez a cikk az Azure CLI 2.0.70-es vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
Az Event Grid-erőforrás-szolgáltató engedélyezése
Ha korábban nem használta az Event Gridet az Azure-előfizetésében, előfordulhat, hogy regisztrálnia kell az Event Grid-erőforrás-szolgáltatót. A szolgáltató regisztrálásához futtassa az alábbi parancsot:
az provider register --namespace Microsoft.EventGrid
Eltarthat egy ideig, amíg a regisztráció befejeződik. Az állapot ellenőrzéséhez futtassa a következő parancsot:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Ha a
registrationState
Registered
értékű, készen áll a folytatásra.
Erőforráscsoport létrehozása
Hozzon létre egy Azure-erőforráscsoportot az az group create paranccsal. Ez az erőforráscsoport a cikkben létrehozott összes erőforrást tartalmazza.
A Cloud Shell parancsok futtatásának általános lépései a következők:
- Válassza a Cloud Shell megnyitása lehetőséget egy Azure Cloud Shell-ablak megtekintéséhez a jobb oldali panelen.
- Másolja ki a parancsot, és illessze be az Azure Cloud Shell ablakába.
- A parancs futtatásához nyomja le az ENTER billentyűt.
Deklaráljon egy változót egy Azure-erőforráscsoport nevének tárolásához. Adja meg az erőforráscsoport nevét egy tetszés szerinti értékre cserélve
<your-resource-group-name>
.resource_group="<your-resource-group-name>"
location="<your-resource-group-location>"
Hozzon létre egy erőforráscsoportot. Módosítsa a helyet a megfelelőnek látja.
az group create --name $resource_group --location $location
Névtér létrehozása
Az Event Grid-névtér egy felhasználó által definiált végpontot biztosít, amelyre az eseményeket közzéteheti. Az alábbi példa létrehoz egy névteret az erőforráscsoportban a Bash használatával az Azure Cloud Shellben. A névtér nevének egyedinek kell lennie, mert egy DNS-bejegyzés része. A névtérnévnek meg kell felelnie a következő szabályoknak:
- 3–50 karakter hosszúságúnak kell lennie.
- Regionálisan egyedinek kell lennie.
- Csak az engedélyezett karakterek a-z, A-Z, 0-9 és -
- Nem szabad olyan fenntartott kulcsszavas előtagokkal kezdeni, mint a
Microsoft
,System
vagyEventGrid
.
Deklaráljon egy változót az Event Grid-névtér nevének tárolásához. Adja meg a névtér nevét egy tetszés szerinti értékre cserélve
<your-namespace-name>
.namespace="<your-namespace-name>"
Hozzon létre egy névteret. Előfordulhat, hogy módosítani szeretné azt a helyet, ahol az üzembe lett helyezve.
az eventgrid namespace create -g $resource_group -n $namespace -l $location
Névtértéma létrehozása
Hozzon létre egy témakört, amely a névtérvégponton közzétett összes esemény tárolására szolgál.
Deklaráljon egy változót a névtértéma nevének tárolásához. Adja meg a névtér témakörének nevét egy tetszés szerinti értékre cserélve
<your-topic-name>
.topic="<your-topic-name>"
A névtér témakörének létrehozása:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Új Event Hubs-erőforrás létrehozása
Hozzon létre egy Event Hubs-erőforrást, amely a névtér témakör leküldéses kézbesítési előfizetésének kezelőhelyeként szolgál.
Deklaráljon egy változót az Event Hubs névtér nevének tárolásához.
eventHubsNamespace="<your-event-hubs-namespace-name>"
Event Hubs-névtér létrehozása.
az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location
Deklaráljon egy változót az eseményközpont nevének tárolásához.
eventHubsEventHub="<your-event-hub-name>"
Futtassa a következő parancsot egy eseményközpont létrehozásához a névtérben.
az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub
Események továbbítása az Event Hubsba felügyelt identitás használatával
Ha felügyelt identitással szeretne eseményeket továbbítani az Event Hubs-névtér eseményközpontjaiba, kövesse az alábbi lépéseket:
- A rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitás engedélyezése: névterek. Olvassa el a következő szakaszt, amelyből megtudhatja, hogyan engedélyezheti a felügyelt identitást az Azure CLI használatával.
- Adja hozzá az identitást az Azure Event Hubs-adatküldő szerepkörhöz az Event Hubs-névtéren, és olvassa tovább a következő szakaszt a szerepkör-hozzárendelés hozzáadásának módjához.
- Engedélyezze a megbízható Microsoft-szolgáltatások engedélyezését, hogy megkerülje ezt a tűzfalbeállítást az Event Hubs-névtéren.
- Konfigurálja az eseményközpontot végpontként használó esemény-előfizetést a rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitás használatára.
Felügyelt identitás engedélyezése az Event Grid-névtérben
A rendszer által hozzárendelt felügyelt identitás engedélyezése az Event Grid-névtérben.
az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}
Szerepkör-hozzárendelés hozzáadása az Event Hubsban a felügyelt Event Grid-identitáshoz
Az Event Grid névtérrendszer felügyelt identitásnév-azonosítóját kérje le.
principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
Az Event Hubs eseményközpont erőforrás-azonosítóját kéri le.
eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
Szerepkör-hozzárendelés hozzáadása az Event Hubsban az Event Grid rendszer által felügyelt identitáshoz.
az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
Esemény-előfizetés létrehozása
Hozzon létre egy új leküldéses kézbesítési esemény-előfizetést.
event_subscription="<your_event_subscription_name>"
az resource create --api-version 2023-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventHubResourceId\"}}}}}}"
Események küldése a témakörbe
Most küldjön egy mintaeseményt a névtér témakörébe az ebben a szakaszban ismertetett lépések végrehajtásával.
Névtér hozzáférési kulcsok listázása
Kérje le a létrehozott névtérhez társított hozzáférési kulcsokat. Az egyik használatával hitelesítheti magát az események közzétételekor. A kulcsok listázásához először a teljes névtér erőforrás-azonosítóját kell megadnia. A lekéréshez futtassa a következő parancsot:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Kérje le az első kulcsot a névtérből:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Esemény közzététele
Kérje le a névtér állomásnevét. A névtér HTTP-végpontjának megírására használja, amelybe az eseményeket küldi. A következő műveletek először az API-verzióval
2023-06-01-preview
voltak elérhetők.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
Hozzon létre egy CloudEvents-kompatibilis mintaeseményt:
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"}} '
Az
data
elem az esemény hasznos adatai. Bármilyen, megfelelően formált JSON megadható ebben a mezőben. Az eseményben használható tulajdonságokról (más néven környezetattribútumokról) a CloudEvents specifikációiban talál további információt.A CURL használatával küldje el az eseményt a témakörnek. A CURL egy olyan segédprogram, amely HTTP-kéréseket küld.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Lépjen az Event Hubs Névtér lapjára az Azure Portalon, frissítse a lapot, és ellenőrizze, hogy a diagram bejövő üzenetszámlálója azt jelzi-e, hogy egy esemény érkezett.
Következő lépések
Ebben a cikkben létrehozta és konfigurálta az Event Grid-névteret és az Event Hubs-erőforrásokat. Az események eseményközpontból való fogadására vonatkozó részletes útmutatásért tekintse meg az alábbi oktatóanyagokat: