Share via


Recapitare eventi a Hub eventi di Azure usando argomenti dello spazio dei nomi - Interfaccia della riga di comando di Azure

L'articolo fornisce istruzioni dettagliate su come pubblicare eventi in Griglia di eventi di Azure in formato JSON CloudEvents e recapitarli usando il modello di recapito push. Nello specifico, si usano l'interfaccia della riga di comando di Azure e Curl per pubblicare eventi in Griglia di eventi ed eseguirne il push da una sottoscrizione di eventi a una destinazione del gestore di Hub eventi. Per altre informazioni sul modello di recapito push, vedere Panoramica del recapito push.

Nota

L'estensione Griglia di eventi dell'interfaccia della riga di comando di Azure non supporta ancora gli spazi dei nomi né le risorse contenute. Si userà la risorsa dell'interfaccia della riga di comando di Azure per creare risorse di Griglia di eventi.

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

Prerequisiti

Abilitare il provider di risorse di Griglia di eventi

  1. Se Griglia di eventi non è stato usato in precedenza 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.

Ecco la procedura generale per usare Cloud Shell per eseguire i comandi:

  • Selezionare Aprire Cloud Shell per visualizzare una finestra di Azure Cloud Shell nel riquadro destro.
  • Copiare e incollare il comando 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 il valore desiderato.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Crea un gruppo di risorse. Modificare la posizione in base alle proprie esigenze.

    az group create --name $resource_group --location $location
    

Creare uno spazio dei nomi

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

  • Deve avere una lunghezza compresa tra 3 e 50 caratteri.
  • Deve essere univoco a livello di area.
  • I caratteri validi 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 il valore desiderato.

    namespace="<your-namespace-name>"
    
  2. Creare uno spazio dei nomi. Può essere necessario modificare la posizione di distribuzione.

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

Creare un argomento dello spazio dei nomi

Creare un argomento volto a contenere tutti gli eventi pubblicati nell'endpoint dello spazio dei nomi.

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

    topic="<your-topic-name>"
    
  2. Creare l'argomento dello 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 usata come destinazione del gestore per la sottoscrizione del recapito push dell'argomento dello spazio dei nomi.

  1. Dichiarare una variabile per contenere il nome dello spazio dei nomi di Hub eventi.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Creare lo spazio dei nomi di 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 eventi nello spazio dei nomi.

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

Recapitare eventi a Hub eventi usando l'identità gestita

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

  1. Abilitare l'identità gestita assegnata dal sistema o dall'utente: spazi dei nomi. 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 dei dati di Hub eventi di Azure nello spazio dei nomi di Hub eventi. Continuare a leggere la sezione successiva per scoprire come aggiungere l'assegnazione di 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 usa un hub eventi come endpoint per usare l'identità gestita assegnata dal sistema o dall'utente.

Abilitare l'identità gestita nello spazio dei nomi di Griglia di eventi

Abilitare l'identità gestita assegnata dal sistema nello spazio dei nomi di Griglia di eventi.

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

Aggiungere un'assegnazione di ruolo in Hub eventi per l'identità gestita di Griglia di eventi

  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 in Hub eventi per l'identità gestita dal sistema di Griglia di eventi.

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

Creare una sottoscrizione di eventi

Creare una nuova sottoscrizione di eventi con recapito 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\"}}}}}}"

Inviare eventi all'argomento

A questo punto, inviare un evento di esempio all'argomento dello spazio dei nomi seguendo la procedura descritta in questa sezione.

Elencare le chiavi di accesso dello spazio dei nomi

  1. Ottenere le chiavi di accesso associate allo spazio dei nomi creato. Si userà una delle chiavi per eseguire l'autenticazione al momento della pubblicazione di eventi. Per elencare le chiavi è necessario prima di tutto l'ID della risorsa dello spazio dei nomi completo. Per ottenerlo, eseguire 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à usato 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 dell'API 2023-06-01-preview.

    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 evento di esempio 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 ulteriori informazioni sulle proprietà, note anche come attributi di contesto, che è possibile includere in un evento, vedere le specifiche di CloudEvents.

  3. Usare 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 Spazio dei nomi di Hub eventi 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 indica 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: