Condividi tramite


Recapitare eventi ai webhook usando gli argomenti dello spazio dei nomi - Interfaccia della riga di comando di Azure (anteprima)

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 webhook. 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 un endpoint del messaggio

Prima di sottoscrivere l'argomento dello spazio dei nomi, creare l'endpoint per il messaggio dell'evento. L'endpoint richiede in genere azioni basate sui dati degli eventi. Per semplificare questo avvio rapido, si distribuisce un'app Web preesistente che visualizza i messaggi di evento. La soluzione distribuita include un piano di servizio app, un'app Web del servizio app e codice sorgente da GitHub.

  1. Copiare il comando seguente, specificare un nome per l'app Web (campione di Visualizzatore Griglia di eventi) e premere INVIO per eseguire il comando. Sostituire <your-site-name> con un nome univoco per l'app Web. Il nome dell'app Web deve essere univoco perché fa parte della voce DNS.

    sitename="<your-site-name>"
    
  2. Eseguire az deployment group create per distribuire l'app Web usando un modello di Azure Resource Manager.

    az deployment group create \
      --resource-group $resource_group \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

Il completamento della distribuzione può richiedere alcuni minuti. Dopo il completamento della distribuzione, visualizzare l'app Web per assicurarsi che sia in esecuzione. In un Web browser passare a: https://<your-site-name>.azurewebsites.net Il sito dovrebbe essere visibile senza messaggi attualmente visualizzati.

Recapitare eventi al webhook visualizzatore griglia di eventi di Azure

Creare una sottoscrizione di eventi di recapito push allo spazio dei nomi usando il webhook per il Visualizzatore Griglia di eventi di Azure.

  1. Definire una variabile per includere il nome della sottoscrizione di eventi.

    event_subscription="<your_event_subscription_name>"
    
  2. Sostituire EVENTGRIDWEBSITENAME con il nome del sito Web visualizzatore griglia di eventi. Ad esempio: contosoegridviewer.

    az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
    

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
    

Verificare che il Visualizzatore Griglia di eventi di Azure abbia ricevuto l'evento

Verificare che l'app Web Visualizzatore Griglia di eventi di Azure mostri gli eventi ricevuti da Griglia di eventi.

Screenshot che mostra il Visualizzatore Griglia di eventi di Azure con un evento ricevuto di esempio.

In questa guida introduttiva è stato usato un webhook come gestore eventi. Per una guida introduttiva che usa un hub eventi di Azure come gestore eventi, vedere Distribuire eventi a Hub eventi di Azure usando gli argomenti dello spazio dei nomi.