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
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure usando il comando
az login
. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Questo articolo richiede la versione 2.0.70 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Abilitare il provider di risorse di Griglia di eventi
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
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.
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>"
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
,System
oEventGrid
.
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>"
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.
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>"
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.
Dichiarare una variabile per contenere il nome dello spazio dei nomi di Hub eventi.
eventHubsNamespace="<your-event-hubs-namespace-name>"
Creare lo spazio dei nomi di Hub eventi.
az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location
Dichiarare una variabile per contenere il nome dell'hub eventi.
eventHubsEventHub="<your-event-hub-name>"
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:
- 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.
- 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.
- Abilitare l'impostazione Consentire ai servizi Microsoft attendibili di ignorare il firewall nello spazio dei nomi di Hub eventi.
- 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
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)
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)
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
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)
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
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
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.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.
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: