Guida introduttiva: Instradare eventi personalizzati all'archiviazione code di Azure tramite Griglia di eventi tramite l'interfaccia della riga di comando di Azure

Griglia di eventi di Azure è un gestore eventi serverless e altamente scalabile che è possibile usare per integrare le applicazioni tramite eventi. Griglia di eventi offre eventi ai gestori eventi supportati e l'archiviazione code di Azure è una di esse. In questo articolo si usa l'interfaccia della riga di comando di Azure per la procedura seguente:

  1. Creare un argomento personalizzato di Griglia di eventi.
  2. Creare una sottoscrizione della coda di Azure per l'argomento personalizzato.
  3. Inviare eventi di esempio all'argomento personalizzato.
  4. Verificare che tali eventi vengano recapitati all'archiviazione code di Azure.

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

Creare un gruppo di risorse

Gli argomenti della griglia di eventi sono risorse di Azure e devono essere inseriti in un gruppo di risorse di Azure. Il gruppo di risorse è una raccolta logica in cui vengono distribuite e gestite le risorse di Azure.

Creare un gruppo di risorse con il comando az group create. L'esempio seguente crea un gruppo di risorse denominato gridResourceGroup nella località westus2.

Nota

Selezionare Prova accanto all'esempio dell'interfaccia della riga di comando per avviare Cloud Shell nel riquadro destro. Selezionare il pulsante Copia per copiare il comando, incollarlo nella finestra di Cloud Shell e quindi premere INVIO per eseguire il comando.

az group create --name gridResourceGroup --location westus2

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. Per controllare lo stato, eseguire il comando seguente:

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

    Quando registrationState è Registered, è possibile continuare.

Creare un argomento personalizzato

Un argomento di Griglia di eventi fornisce un endpoint definito dall'utente a cui si pubblicano gli eventi. Nell'esempio seguente viene creato l'argomento personalizzato nel gruppo di risorse. Sostituire <topic_name> con un nome univoco per l'argomento personalizzato. Il nome dell'argomento di Griglia di eventi deve essere univoco perché è rappresentato da una voce DNS (Domain Name System).

  1. Specificare un nome per l'argomento.

    topicname="<TOPIC NAME>"
    
  2. Eseguire il comando seguente per creare l'argomento.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Creare l'archivio code

Prima di sottoscrivere l'argomento personalizzato, creare l'endpoint per il messaggio dell'evento. Si crea un archivio code per la raccolta degli eventi.

  1. Specificare un nome univoco per l'account Archiviazione di Azure.

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Eseguire i comandi seguenti per creare un account Archiviazione di Azure e una coda (denominata eventqueue) nella risorsa di archiviazione.

    queuename="eventqueue"
    
    az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
    key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)"    
    az storage queue create --name $queuename --account-name $storagename --account-key $key
    

Sottoscrivere un argomento personalizzato

L'esempio seguente sottoscrive l'argomento personalizzato creato e passa l'ID risorsa dell'archivio code per l'endpoint. Con l'interfaccia della riga di comando di Azure, passare l'ID dell'archivio code come endpoint. L'endpoint è nel formato:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

Lo script seguente ottiene l'ID risorsa dell'account di archiviazione per la coda. Costruisce l'ID per l'archiviazione code e sottoscrive un argomento di Griglia di eventi. Imposta il tipo di endpoint su storagequeue e usa l'ID coda per l'endpoint.

Importante

Sostituire il segnaposto data di scadenza (<yyyy-mm-dd>) con un valore effettivo. Ad esempio: 2022-11-17 prima di eseguire il comando.

storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name mystoragequeuesubscription \
  --endpoint-type storagequeue \
  --endpoint $queueid \
  --expiration-date "<yyyy-mm-dd>"

L'account che crea la sottoscrizione dell'evento deve avere accesso in scrittura all'archivio code. Si noti che per la sottoscrizione è impostata una data di scadenza.

Se si usa l'API REST per creare la sottoscrizione, passare l'ID dell'account di archiviazione e il nome della coda come parametro separato.

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

Inviare un evento all'argomento personalizzato

Attivare un evento per vedere come la Griglia di eventi distribuisce il messaggio nell'endpoint. Ottenere prima di tutto l'URL e la chiave per l'argomento personalizzato.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Per semplificare questo articolo, si useranno dati di evento di esempio da inviare all'argomento personalizzato. In genere, i dati dell'evento vengono inviati da un'applicazione o un servizio di Azure. CURL è un'utilità che invia richieste HTTP. In questo articolo si usa CURL per inviare l'evento all'argomento personalizzato. L'esempio seguente invia tre eventi all'argomento griglia di eventi:

for i in 1 2 3
do
   event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
   curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

Passare all'archivio code nel portale e notare che Griglia di eventi ha inviato i tre eventi alla coda.

Screenshot showing the list of messages in the queue that are received from Event Grid.

Pulire le risorse

Se si intende continuare a usare questo evento, non è necessario pulire le risorse create con questo articolo. In caso contrario, usare il comando seguente per eliminare le risorse create con questo articolo.

az group delete --name gridResourceGroup

Passaggi successivi

Ora che si è appreso come creare argomenti e sottoscrizioni di eventi, è possibile approfondire le operazioni possibili con la griglia di eventi:

Vedere gli esempi seguenti per informazioni sulla pubblicazione di eventi in e sull'utilizzo di eventi da Griglia di eventi usando linguaggi di programmazione diversi.