Avvio rapido: Indirizzare eventi personalizzati a una funzione di Azure con Griglia di eventi
Griglia di eventi di Azure è un servizio di routing di eventi per il cloud. Funzioni di Azure è uno dei gestori eventi supportati.
In questa guida di avvio rapido viene usato il portale di Azure per creare un argomento personalizzato, sottoscriverlo e attivare l'evento per visualizzare il risultato. Gli eventi vengono inviati a una funzione di Azure.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Creare una funzione con un trigger di Griglia di eventi usando Visual Studio Code
In questa sezione si usa Visual Studio Code per creare una funzione con un trigger di Griglia di eventi.
Prerequisiti
- Visual Studio Code installato in una delle piattaforme supportate
- Estensione Funzioni di Azure
Creare una funzione
Aprire Visual Studio Code.
Sulla barra sinistra selezionare Azure.
Nel riquadro sinistro, nella sezione AREA DI LAVORO, selezionare il pulsante Funzioni di Azure sulla barra dei comandi, quindi scegliere Crea funzione.
Selezionare una cartella in cui salvare il codice della funzione.
Per il comando Crea nuovo progetto, selezionare C# in Linguaggio e quindi premere INVIO.
Per Runtime .NET, selezionare .NET 8.0 Isolated LTS e quindi premere INVIO.
Per il modello per la funzione, selezionare Trigger Griglia di eventi di Azure e premere INVIO.
Per Nome funzione, immettere un nome per la funzione e premere INVIO.
Per Spazio dei nomi, immettere un nome per lo spazio dei nomi della funzione e premere INVIO.
Aprire il progetto nella finestra corrente o in una nuova oppure aggiungerlo a un'area di lavoro.
Attendere che la funzione venga creata. Lo stato della creazione della funzione viene visualizzato nell'angolo in basso a destra.
Visualizzare il codice nel file YourFunctionName.cs, in particolare il metodo
Run
. Stampa le informazioni usando un logger.[Function(nameof(MyEventGridTriggerFunc))] public void Run([EventGridTrigger] CloudEvent cloudEvent) { _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject); }
Distribuire la funzione in Azure
Selezionare il pulsante Azure sulla barra sinistra, se non è già aperto.
Passare il puntatore del mouse sul progetto e selezionare il pulsante Distribuisci in Azure.
Nell'elenco a discesa del riquadro comandi selezionare + Crea nuova app per le funzioni e premere INVIO.
Per Nome, immettere un nome univoco a livello globale per la nuova app per le funzioni e premere INVIO.
Per Stack di runtime, selezionare .NET 8 Isolated.
Per Località per le risorse di Azure, selezionare un'area nelle vicinanze.
Lo stato della creazione dell'app per le funzioni viene visualizzato nella scheda AZURE del riquadro inferiore. Dopo aver creato l'app per le funzioni, viene visualizzato lo stato della distribuzione della funzione creata in locale nell'app per le funzioni.
Al termine della distribuzione, espandere il messaggio Creazione dell'app per le funzioni riuscita e selezionare Fare clic per visualizzare la risorsa. Verificare che la funzione sia selezionata nella sezione RISORSE del riquadro sinistro.
Fare clic con il pulsante destro del mouse sulla funzione e scegliere Apri nel portale.
Accedere ad Azure, se necessario, e verificare che venga visualizzata la pagina App per le funzioni.
Nel riquadro inferiore selezionare la funzione.
Passare alla scheda Log. Tenere aperta questa scheda in modo da visualizzare i messaggi registrati quando si invia un evento a un argomento di Griglia di eventi più avanti in questa esercitazione.
Creare un argomento personalizzato
Un argomento di Griglia di eventi fornisce un endpoint definito dall'utente in cui vengono pubblicati gli eventi.
In una nuova scheda della finestra del browser accedere al portale di Azure.
Nella barra di ricerca dell'argomento cercare Argomenti di Griglia di eventi e quindi selezionare Argomenti di Griglia di eventi.
Nella pagina Argomenti selezionare + Crea sulla barra dei comandi.
Nel riquadro Crea argomento procedere come segue:
Per Sottoscrizione selezionare la sottoscrizione di Azure.
Per Gruppo di risorse, selezionare lo stesso gruppo di risorse dei passaggi precedenti.
Per Nome, specificare un nome univoco per l'argomento personalizzato. Il nome dell'argomento deve essere univoco perché è rappresentato da una voce di Domain Name System (DNS).
Non usare il nome mostrato nell'immagine di esempio. ma crearne uno personalizzato. Deve essere composto da 3-50 caratteri e può contenere solo valori compresi tra a e z, A e Z, 0 e 9 e un trattino (
-
).Per Area, selezionare una località per l'argomento di Griglia di eventi.
Selezionare Rivedi e crea.
Nella scheda Rivedi e crea rivedere le impostazioni e selezionare Crea.
Dopo aver creato l'argomento personalizzato, selezionare il collegamento Vai alla risorsa per aprire la pagina Argomento di Griglia di eventi corrispondente.
Sottoscrivere un argomento personalizzato
Si sottoscrive un argomento di Griglia di eventi per indicare quali monitorare e dove inviarli.
Nella pagina Argomento di Griglia di eventi relativa all'argomento personalizzato selezionare + Sottoscrizione di eventi sulla barra degli strumenti.
Nel riquadro Crea sottoscrizione di eventi procedere come segue:
Per Nome, immettere un nome per la sottoscrizione di eventi.
Per Schema evento, selezionare Schema evento cloud v1.0.
Per Tipo di endpoint, selezionare Funzione di Azure.
Selezionare Configura un endpoint.
Nel riquadro Seleziona funzione di Azure procedere come segue:
Per Sottoscrizione, selezionare la sottoscrizione di Azure che contiene la funzione.
Per Gruppo di risorse, selezionare il gruppo di risorse che contiene la funzione.
Per App per le funzioni, selezionare l'app per le funzioni.
Per Funzione, selezionare la funzione nell'app per le funzioni.
Selezionare Confermare la selezione.
Questo passaggio è facoltativo, ma consigliato per scenari di produzione. Nel riquadro Crea sottoscrizione di eventi passare alla scheda Funzionalità aggiuntive e impostare i valori per Numero massimo di eventi per batch e Dimensioni batch preferite in KB.
L'invio in batch può fornire una velocità effettiva elevata. Per Numero massimo di eventi per batch impostare il numero massimo di eventi che una sottoscrizione includerà in un batch. L'opzione Dimensioni batch preferite in KB consente di impostare il limite superiore preferito per le dimensioni dei batch, ma questo valore può essere superato se le dimensioni di un singolo evento sono superiori a questa soglia.
Nel riquadro Crea sottoscrizione di eventi selezionare Crea.
Inviare un evento all'argomento
Attivare ora un evento per vedere come Griglia di eventi distribuisce il messaggio nell'endpoint. Usare l'interfaccia della riga di comando di Azure o Azure PowerShell per inviare un evento di test all'argomento personalizzato. In genere, i dati dell'evento vengono inviati da un'applicazione o un servizio di Azure.
Il primo esempio usa l'interfaccia della riga di comando di Azure. Ottiene l'URL e la chiave per l'argomento personalizzato e i dati dell'evento di esempio. Usare il nome dell'argomento personalizzato per topicname
. Verranno creati i dati dell'evento di esempio.
L'elemento data
del JSON è il payload dell'evento. Questo campo accetta qualsiasi JSON ben formato. È anche possibile usare il campo oggetto per il filtro e il routing avanzato.
Lo strumento cURL invia richieste HTTP. In questo articolo viene usato cURL per inviare l'evento all'argomento personalizzato.
Interfaccia della riga di comando di Azure
Nel portale di Azure selezionare Cloud Shell. Se si è in modalità Azure PowerShell selezionare Passa a Bash.
Impostare le variabili
topicname
eresourcegroupname
usate nei comandi.Sostituire
TOPICNAME
con il nome dell'argomento di Griglia di eventi.topicname="TOPICNAME"
Sostituire
RESOURCEGROUPNAME
con il nome del gruppo di risorse di Azure che contiene l'argomento di Griglia di eventi.resourcegroupname="RESOURCEGROUPNAME"
Eseguire il comando seguente per ottenere l'endpoint per l'argomento. Dopo aver copiato e incollato il comando, aggiornare il nome dell'argomento e il nome del gruppo di risorse prima di eseguirlo.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
Eseguire il comando seguente per ottenere la chiave per l'argomento personalizzato. Dopo aver copiato e incollato il comando, aggiornare il nome dell'argomento e il nome del gruppo di risorse prima di eseguirlo.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
Copiare l'istruzione seguente con la definizione di evento, quindi premere INVIO.
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"} ]'
Eseguire il comando cURL seguente per pubblicare l'evento:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Verificare che il messaggio della funzione venga visualizzato nella scheda Log relativa alla funzione nel portale di Azure.
Azure PowerShell
Il secondo esempio usa Azure PowerShell per eseguire passaggi simili.
Nel portale di Azure selezionare Cloud Shell oppure passare alla pagina Azure Cloud Shell. Nell'angolo in alto a sinistra della finestra Cloud Shell selezionare Passa a PowerShell.
Impostare le variabili seguenti. Dopo aver copiato e incollato ogni comando, aggiornare il nome dell'argomento e il nome del gruppo di risorse prima di eseguirlo.
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
Eseguire i comandi seguenti per ottenere l'endpoint e le chiavi per l'argomento:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
Preparare l'evento. Copiare ed eseguire queste istruzioni nella finestra Cloud Shell:
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct the body by using a hash table $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert the event body from a hash table to a JSON object #Append square brackets to the converted JSON payload because they're expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
Usare il cmdlet
Invoke-WebRequest
per inviare l'evento:Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Verificare che il messaggio della funzione venga visualizzato nella scheda Log relativa alla funzione nel portale di Azure.
Verificare che la funzione abbia ricevuto l'evento
È stato attivato l'evento e Griglia di eventi ha inviato il messaggio all'endpoint configurato al momento della sottoscrizione. È ora possibile verificare se la funzione l'ha ricevuto.
Nella pagina Monitoraggio per la funzione individuare una chiamata.
Selezionare la chiamata per visualizzare i dettagli.
È anche possibile usare la scheda Log nel riquadro destro per visualizzare i messaggi registrati quando si pubblicano eventi per l'endpoint dell'argomento.
Pulire le risorse
Se si intende continuare a usare questo evento, non pulire le risorse create con questo articolo. In caso contrario, eliminare le risorse create in questo articolo.
Nel menu sinistro selezionare Gruppi di risorse.
In alternativa, selezionare Tutti i servizi nel menu sinistro e quindi selezionare Gruppi di risorse.
Selezionare il gruppo di risorse per aprire il riquadro con i relativi dettagli.
Sulla barra degli strumenti selezionare Elimina gruppo di risorse.
Confermare l'eliminazione immettendo il nome del gruppo di risorse, quindi selezionare Elimina.
La pagina Gruppi di risorse contiene la finestra Cloud Shell creata e l'altro gruppo di risorse. Eliminare questo gruppo di risorse se non si prevede di usare la finestra Cloud Shell in seguito.
Contenuto correlato
Ora che si è appreso come creare argomenti e sottoscrizioni di eventi, è possibile approfondire le operazioni possibili con la griglia di eventi:
- Informazioni sulla griglia di eventi
- Indirizzare gli eventi di Archiviazione BLOB di Azure a un endpoint Web personalizzato
- Monitorare le modifiche alla macchina virtuale con la griglia di eventi di Azure e le app per la logica
- Trasmettere Big Data a un data warehouse
Per informazioni sulla pubblicazione e l'utilizzo di eventi in Griglia di eventi usando vari linguaggi di programmazione, vedere gli esempi seguenti: