Condividi tramite


Inoltrare eventi a Azure Event Hubs utilizzando i topic del namespace - Azure CLI

L'articolo fornisce istruzioni dettagliate per pubblicare eventi in Griglia di eventi di Azure nel formato JSON CloudEvents e recapitarli usando il modello di recapito push. Per essere specifici, usate l'interfaccia della riga di comando di Azure e Curl per pubblicare eventi in un argomento dello spazio dei nomi in Event Grid ed eseguire il push di tali eventi da una sottoscrizione di eventi a una destinazione del gestore di Event Hubs. Per altre informazioni sul modello di recapito push, vedere Panoramica del recapito push.

Annotazioni

L'estensione CLI Event Grid di Azure non supporta ancora i namespaces né le risorse che contiene. Si userà la risorsa dell'interfaccia della riga di comando di Azure per creare risorse di Griglia di eventi.

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Prerequisiti

Abilitare il provider di risorse di Griglia di eventi

  1. Se è la prima volta che si usa Griglia di eventi nella sottoscrizione di Azure, potrebbe essere necessario registrare il provider di risorse di Griglia di eventi. Eseguire il comando seguente per registrare il provider:

    az provider register --namespace Microsoft.EventGrid
    
  2. La registrazione può richiedere qualche secondo. Eseguire il comando seguente per verificare lo stato:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Quando registrationState è Registered, è possibile continuare.

Creare un gruppo di risorse

Creare un gruppo di risorse di Azure con il comando az group create. Questo gruppo di risorse viene usato per contenere tutte le risorse create in questo articolo.

I passaggi generali per usare Cloud Shell per eseguire i comandi sono:

  • Selezionare Apri Cloud Shell per visualizzare una finestra di Azure Cloud Shell nel riquadro destro.
  • Copiare il comando e incollarlo nella finestra di Azure Cloud Shell.
  • Premere INVIO per eseguire il comando.
  1. Dichiarare una variabile per contenere il nome di un gruppo di risorse di Azure. Specificare un nome per il gruppo di risorse sostituendo <your-resource-group-name> con un valore desiderato.

    resource_group="<your-resource-group-name>"
    
    ___location="<your-resource-group-___location>"
    
  2. Creare un gruppo di risorse. Modificare la posizione nel modo desiderato.

    az group create --name $resource_group --___location $___location
    

Creare uno spazio dei nomi

Uno spazio dei nomi di Event Grid fornisce un endpoint definito dall'utente a cui si inviano gli eventi. L'esempio seguente crea uno spazio dei nomi nel gruppo di risorse utilizzando Bash in Azure Cloud Shell. Il nome dello spazio dei nomi deve essere univoco perché fa parte di una voce DNS (Domain Name System). Un nome dello spazio dei nomi deve soddisfare le regole seguenti:

  • Deve essere compreso tra 3 e 50 caratteri.
  • Deve essere univoco a livello di area.
  • Solo i caratteri consentiti sono a-z, A-Z, 0-9 e -
  • Non deve iniziare con prefissi di parole chiave riservate come Microsoft, Systemo EventGrid.
  1. Dichiarare una variabile per contenere il nome per lo spazio dei nomi di Griglia di eventi. Specificare un nome per lo spazio dei nomi sostituendo <your-namespace-name> con un valore desiderato.

    namespace="<your-namespace-name>"
    
  2. Creare uno spazio dei nomi. Potrebbe essere necessario modificare il percorso in cui è distribuito.

    az eventgrid namespace create -g $resource_group -n $namespace -l $___location
    

Creare un argomento per lo spazio dei nomi

Crea un argomento da utilizzare per raccogliere tutti gli eventi pubblicati verso l'endpoint namespace.

  1. Dichiara una variabile destinata a contenere il nome del tuo argomento dello spazio dei nomi. Specificare un nome per l'argomento dello spazio dei nomi sostituendo <your-topic-name> con un valore desiderato.

    topic="<your-topic-name>"
    
  2. Creare il proprio argomento per lo spazio dei nomi:

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Creare una nuova risorsa di Hub eventi

Creare una risorsa di Hub eventi da utilizzare come destinazione del gestore per la sottoscrizione del recapito push dell'argomento dello spazio dei nomi.

  1. Dichiarare una variabile per contenere il nome del namespace di Event Hubs.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Creare lo spazio dei nomi per Hub eventi.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --___location $___location  
    
  3. Dichiarare una variabile per contenere il nome dell'hub eventi.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Eseguire il comando seguente per creare un hub di eventi nello spazio dei nomi.

    az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub 
    

Recapitare gli eventi a Hub eventi tramite l'identità gestita

Per recapitare eventi agli hub eventi nello spazio dei nomi di Hub eventi tramite l'identità gestita, seguire questa procedura:

  1. Abilita l'identità gestita assegnata dal sistema o dall'utente: namespaces. Continuare a leggere la sezione successiva per informazioni su come abilitare l'identità gestita usando l'interfaccia della riga di comando di Azure.
  2. Aggiungere l'identità al ruolo Mittente dati di Azure Event Hubs nell'ambito dello spazio dei nomi di Event Hubs, continuare a leggere la sezione successiva per sapere come aggiungere l'assegnazione del ruolo.
  3. Abilitare l'impostazione Consentire ai servizi Microsoft attendibili di ignorare il firewall nello spazio dei nomi di Hub eventi.
  4. Configurare la sottoscrizione di eventi che utilizza un hub di eventi come endpoint per impiegare l'identità gestita assegnata dal sistema o dall'utente.

Abilitare l'identità gestita nello spazio dei nomi di Event Grid

Abilitare l'identità gestita assegnata dal sistema nel namespace della griglia degli eventi.

az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}

Aggiungere un'assegnazione di ruolo in Event Hubs per l'identità gestita di Event Grid

  1. Ottenere l'ID entità di sicurezza dell'identità gestita dal sistema dello spazio dei nomi di Griglia di eventi.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Ottenere l'ID risorsa dell'hub eventi di Hub eventi.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Aggiungere un'assegnazione di ruolo negli Event Hubs per l'identità gestita del sistema Event Grid.

    az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
    

Creare un abbonamento all'evento

Creare una nuova sottoscrizione per eventi push.

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\"}}}}}}"

Invia eventi al tuo tema

Inviare ora un evento di esempio all'argomento dello spazio dei nomi seguendo la procedura descritta in questa sezione.

Elenca le chiavi di accesso dello spazio dei nomi

  1. Ottenere le chiavi di accesso associate allo spazio dei nomi creato. Uno di essi viene usato per eseguire l'autenticazione durante la pubblicazione di eventi. Per elencare le chiavi, è necessario prima di tutto l'ID risorsa dello spazio dei nomi completo. Ottienilo eseguendo il comando seguente:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Ottenere la prima chiave dallo spazio dei nomi:

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Pubblicare un evento

  1. Recuperare il nome host dello spazio dei nomi. Verrà utilizzato per comporre l'endpoint HTTP dello spazio dei nomi a cui inviare gli eventi. Le operazioni seguenti sono state disponibili per la prima volta con la versione 2023-06-01-previewdell'API .

    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
    
  2. Creare un esempio di evento conforme a CloudEvents:

    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"}} '
    

    L'elemento data è il payload dell'evento. Questo campo accetta qualsiasi JSON ben formato. Per altre informazioni sulle proprietà (note anche come attributi di contesto) che possono essere eseguite in un evento, vedere le specifiche di CloudEvents .

  3. Utilizzare CURL per inviare l'evento all'argomento. CURL è un'utilità che invia richieste HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

    Passare alla pagina Event Hubs Namespace nel portale di Azure, aggiornare la Pagina e verificare che il contatore dei messaggi in arrivo nel grafico indichi che è stato ricevuto un evento.

    Screenshot che mostra la pagina hub eventi con il grafico che mostra che è stato ricevuto un evento.

Passaggi successivi

In questo articolo sono stati creati e configurati lo spazio dei nomi di Griglia di eventi e le risorse di Hub eventi. Per istruzioni dettagliate su come ricevere eventi da un hub eventi, vedere queste esercitazioni: