Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per ulteriori informazioni, vedere Guida introduttiva per Bash in Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. Se si esegue 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 i passaggi visualizzati nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare 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 è 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.EventGridLa 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.
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>"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,SystemoEventGrid.
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>"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.
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>"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.
Dichiarare una variabile per contenere il nome del namespace di Event Hubs.
eventHubsNamespace="<your-event-hubs-namespace-name>"Creare lo spazio dei nomi per Hub eventi.
az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --___location $___locationDichiarare una variabile per contenere il nome dell'hub eventi.
eventHubsEventHub="<your-event-hub-name>"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:
- 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.
- 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.
- 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 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
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 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
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)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à 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-previewCreare 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 .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_uriPassare 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.
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: