Condividi tramite


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

Creare una funzione

  1. Aprire Visual Studio Code.

  2. Sulla barra sinistra selezionare Azure.

  3. Nel riquadro sinistro, nella sezione AREA DI LAVORO, selezionare il pulsante Funzioni di Azure sulla barra dei comandi, quindi scegliere Crea funzione.

    Screenshot che mostra la scheda Azure di Visual Studio Code con il comando di menu per la creazione di una funzione.

  4. Selezionare una cartella in cui salvare il codice della funzione.

  5. Per il comando Crea nuovo progetto, selezionare C# in Linguaggio e quindi premere INVIO.

    Screenshot che mostra la selezione di C# per linguaggio usato per lo sviluppo della la funzione di Azure.

  6. Per Runtime .NET, selezionare .NET 8.0 Isolated LTS e quindi premere INVIO.

  7. Per il modello per la funzione, selezionare Trigger Griglia di eventi di Azure e premere INVIO.

  8. Per Nome funzione, immettere un nome per la funzione e premere INVIO.

  9. Per Spazio dei nomi, immettere un nome per lo spazio dei nomi della funzione e premere INVIO.

  10. Aprire il progetto nella finestra corrente o in una nuova oppure aggiungerlo a un'area di lavoro.

  11. Attendere che la funzione venga creata. Lo stato della creazione della funzione viene visualizzato nell'angolo in basso a destra.

    Screenshot che mostra lo stato della creazione della funzione.

  12. 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

  1. Selezionare il pulsante Azure sulla barra sinistra, se non è già aperto.

  2. Passare il puntatore del mouse sul progetto e selezionare il pulsante Distribuisci in Azure.

    Screenshot che mostra il pulsante per la distribuzione in Azure.

  3. Nell'elenco a discesa del riquadro comandi selezionare + Crea nuova app per le funzioni e premere INVIO.

  4. Per Nome, immettere un nome univoco a livello globale per la nuova app per le funzioni e premere INVIO.

  5. Per Stack di runtime, selezionare .NET 8 Isolated.

  6. Per Località per le risorse di Azure, selezionare un'area nelle vicinanze.

  7. 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.

  8. 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.

  9. Fare clic con il pulsante destro del mouse sulla funzione e scegliere Apri nel portale.

    Screenshot che mostra le selezioni per l'apertura di una funzione nel portale.

  10. Accedere ad Azure, se necessario, e verificare che venga visualizzata la pagina App per le funzioni.

  11. Nel riquadro inferiore selezionare la funzione.

    Screenshot che mostra la selezione di una funzione di Azure nella pagina App per le funzioni.

  12. 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.

    Screenshot che mostra la scheda Log per una funzione nel portale di Azure.

Creare un argomento personalizzato

Un argomento di Griglia di eventi fornisce un endpoint definito dall'utente in cui vengono pubblicati gli eventi.

  1. In una nuova scheda della finestra del browser accedere al portale di Azure.

  2. Nella barra di ricerca dell'argomento cercare Argomenti di Griglia di eventi e quindi selezionare Argomenti di Griglia di eventi.

    Screenshot che mostra la selezione di argomenti di Griglia di eventi.

  3. Nella pagina Argomenti selezionare + Crea sulla barra dei comandi.

    Screenshot che mostra il pulsante per creare un argomento di Griglia di eventi.

  4. Nel riquadro Crea argomento procedere come segue:

    1. Per Sottoscrizione selezionare la sottoscrizione di Azure.

    2. Per Gruppo di risorse, selezionare lo stesso gruppo di risorse dei passaggi precedenti.

    3. 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 (-).

    4. Per Area, selezionare una località per l'argomento di Griglia di eventi.

    5. Selezionare Rivedi e crea.

      Screenshot che mostra il riquadro per la creazione di un argomento.

    6. Nella scheda Rivedi e crea rivedere le impostazioni e selezionare Crea.

  5. Dopo aver creato l'argomento personalizzato, selezionare il collegamento Vai alla risorsa per aprire la pagina Argomento di Griglia di eventi corrispondente.

    Screenshot che mostra la pagina per un argomento personalizzato di Griglia di eventi.

Sottoscrivere un argomento personalizzato

Si sottoscrive un argomento di Griglia di eventi per indicare quali monitorare e dove inviarli.

  1. Nella pagina Argomento di Griglia di eventi relativa all'argomento personalizzato selezionare + Sottoscrizione di eventi sulla barra degli strumenti.

    Screenshot che mostra il pulsante per l'aggiunta di una sottoscrizione di eventi sulla barra degli strumenti.

  2. Nel riquadro Crea sottoscrizione di eventi procedere come segue:

    1. Per Nome, immettere un nome per la sottoscrizione di eventi.

    2. Per Schema evento, selezionare Schema evento cloud v1.0.

    3. Per Tipo di endpoint, selezionare Funzione di Azure.

    4. Selezionare Configura un endpoint.

      Screenshot che mostra i valori per la sottoscrizione di eventi.

    5. Nel riquadro Seleziona funzione di Azure procedere come segue:

      1. Per Sottoscrizione, selezionare la sottoscrizione di Azure che contiene la funzione.

      2. Per Gruppo di risorse, selezionare il gruppo di risorse che contiene la funzione.

      3. Per App per le funzioni, selezionare l'app per le funzioni.

      4. Per Funzione, selezionare la funzione nell'app per le funzioni.

      5. Selezionare Confermare la selezione.

        Screenshot che mostra il riquadro per la selezione di una funzione di Azure creata in precedenza.

    6. 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.

      Screenshot che mostra le dimensioni di invio in batch per una sottoscrizione di eventi.

    7. 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

  1. Nel portale di Azure selezionare Cloud Shell. Se si è in modalità Azure PowerShell selezionare Passa a Bash.

    Screenshot che mostra la finestra Bash in Azure Cloud Shell.

  2. Impostare le variabili topicname e resourcegroupname 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"
    
  3. 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)
    
  4. 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)
    
  5. 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"} ]'
    
  6. Eseguire il comando cURL seguente per pubblicare l'evento:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. Verificare che il messaggio della funzione venga visualizzato nella scheda Log relativa alla funzione nel portale di Azure.

    Screenshot che mostra la scheda Log per una funzione di Azure.

Azure PowerShell

Il secondo esempio usa Azure PowerShell per eseguire passaggi simili.

  1. 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.

  2. 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"
    
  3. 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
    
  4. 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)+"]"
    
  5. Usare il cmdlet Invoke-WebRequest per inviare l'evento:

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    
  6. Verificare che il messaggio della funzione venga visualizzato nella scheda Log relativa alla funzione nel portale di Azure.

    Screenshot che mostra la scheda Log per una funzione.

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.

  1. Nella pagina Monitoraggio per la funzione individuare una chiamata.

    Screenshot che mostra la scheda Chiamate nella pagina Monitoraggio.

  2. Selezionare la chiamata per visualizzare i dettagli.

    Screenshot che mostra i dettagli della chiamata.

    È anche possibile usare la scheda Log nel riquadro destro per visualizzare i messaggi registrati quando si pubblicano eventi per l'endpoint dell'argomento.

    Screenshot che mostra la visualizzazione Monitoraggio di una funzione con un log.

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.

  1. Nel menu sinistro selezionare Gruppi di risorse.

    Screenshot che mostra la pagina dei gruppi di risorse

    In alternativa, selezionare Tutti i servizi nel menu sinistro e quindi selezionare Gruppi di risorse.

  2. Selezionare il gruppo di risorse per aprire il riquadro con i relativi dettagli.

  3. Sulla barra degli strumenti selezionare Elimina gruppo di risorse.

  4. 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.

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

Per informazioni sulla pubblicazione e l'utilizzo di eventi in Griglia di eventi usando vari linguaggi di programmazione, vedere gli esempi seguenti: