Condividi tramite


Esercitazione: Attivare Funzioni di Azure nei contenitori BLOB usando una sottoscrizione di eventi

Le versioni precedenti del trigger di archiviazione BLOB Funzioni di Azure eseguano il polling del contenitore di archiviazione per le modifiche. La versione più recente dell'estensione di archiviazione BLOB (5.x+) usa invece una sottoscrizione di eventi di Griglia di eventi nel contenitore. Questa sottoscrizione di eventi riduce la latenza attivando immediatamente la funzione quando si verificano modifiche nel contenitore sottoscritto.

Questo articolo illustra come creare una funzione eseguita in base agli eventi generati quando un BLOB viene aggiunto a un contenitore. Si usa Visual Studio Code per lo sviluppo locale e per convalidare il codice prima di distribuire il progetto in Azure.

  • Creare una funzione attivata da Archiviazione BLOB basata su eventi in un nuovo progetto.
  • Convalidare localmente in Visual Studio Code usando l'emulatore Azurite.
  • Creare un contenitore di archiviazione BLOB in un nuovo account di archiviazione in Azure.
  • Creare un'app per le funzioni nel piano a consumo Flex (anteprima).
  • Creare una sottoscrizione di eventi al nuovo contenitore BLOB.
  • Distribuire e convalidare il codice della funzione in Azure.

Questo articolo supporta la versione 4 del modello di programmazione Node.js per Funzioni di Azure.

Questo articolo supporta la versione 2 del modello di programmazione Python per Funzioni di Azure.

Questo articolo crea un'app C# eseguita in modalità di lavoro isolata, che supporta .NET 8.0.

Importante

Questa esercitazione include l'uso del piano Flex Consumption, attualmente disponibile in anteprima. Il piano Flex Consumption supporta solo la versione basata su eventi del trigger di archiviazione BLOB. È possibile completare questa esercitazione usando qualsiasi altro piano di hosting per l'app per le funzioni.

Prerequisiti

Nota

L'estensione Archiviazione di Azure per Visual Studio Code è attualmente in anteprima.

Creare una funzione attivata dal BLOB

Quando si crea una funzione trigger di archiviazione BLOB usando Visual Studio Code, si crea anche un nuovo progetto. È necessario modificare la funzione per utilizzare una sottoscrizione di eventi come origine, anziché usare il normale contenitore sottoposto a polling.

  1. In Visual Studio Code aprire l'app per le funzioni.

  2. Premere F1 per aprire il riquadro comandi, immettere Azure Functions: Create Function...e selezionare Crea nuovo progetto.

  3. Per l'area di lavoro del progetto, selezionare il percorso della directory. Assicurarsi di creare una nuova cartella o di scegliere una cartella vuota per l'area di lavoro del progetto.

    Non scegliere una cartella di progetto che fa già parte di un'area di lavoro.

  4. Alle richieste specificare le informazioni seguenti:

    Richiesta Azione
    Selezionare una lingua Selezionare C#.
    Selezionare un runtime .NET Selezionare .NET 8.0 Isolated LTS.
    Selezionare un modello per la prima funzione del progetto Selezionare Azure Blob Storage trigger (using Event Grid).
    Specificare un nome di funzione Immetti BlobTriggerEventGrid.
    Specificare uno spazio dei nomi Immetti My.Functions.
    Selezionare l'impostazione da "local.settings.json" Selezionare Create new local app setting.
    Selezionare la sottoscrizione Selezionare la propria sottoscrizione.
    Selezionare un account di archiviazione Usare l'emulatore Azurite per l'archiviazione locale.
    Questo è il percorso all'interno dell'account di archiviazione che il trigger monitorerà Accettare il valore samples-workitemspredefinito .
    Selezionare la modalità di apertura del progetto Selezionare Open in current window.
    Richiesta Azione
    Selezionare una lingua Selezionare Python.
    Selezionare un interprete Python per creare un ambiente virtuale Selezionare l'interprete Python preferito. Se non viene visualizzata un'opzione, immettere il percorso completo del file binario Python.
    Selezionare un modello per la prima funzione del progetto Selezionare Azure Blob Storage trigger (using Event Grid).
    Specificare un nome di funzione Immetti BlobTriggerEventGrid.
    Selezionare l'impostazione da "local.settings.json" Selezionare Create new local app setting.
    Selezionare la sottoscrizione Selezionare la propria sottoscrizione.
    Selezionare un account di archiviazione Usare l'emulatore Azurite per l'archiviazione locale.
    Questo è il percorso all'interno dell'account di archiviazione che il trigger monitorerà Accettare il valore samples-workitemspredefinito .
    Selezionare la modalità di apertura del progetto Selezionare Open in current window.
    Richiesta Azione
    Selezionare una lingua Selezionare Java.
    Selezionare una versione di Java Selezionare Java 11 o Java 8, la versione Java in cui vengono eseguite le funzioni in Azure e che sono state verificate in locale.
    Specificare un ID gruppo Selezionare com.function.
    Specificare un ID artefatto Selezionare BlobTriggerEventGrid.
    Specificare una versione Selezionare 1.0-SNAPSHOT.
    Specificare un nome di pacchetto Selezionare com.function.
    Specificare un nome dell'app Accettare il nome generato a partire da BlobTriggerEventGrid.
    Selezionare lo strumento di compilazione per il progetto Java Selezionare Maven.
    Selezionare la modalità di apertura del progetto Selezionare Open in current window.
    Richiesta Azione
    Selezionare un linguaggio per il progetto di funzione Selezionare TypeScript.
    Selezionare un modello di programmazione TypeScript Selezionare Model V4.
    Selezionare un modello per la prima funzione del progetto Selezionare Azure Blob Storage trigger (using Event Grid).
    Specificare un nome di funzione Immetti BlobTriggerEventGrid.
    Selezionare l'impostazione da "local.settings.json" Selezionare Create new local app setting.
    Selezionare la sottoscrizione Selezionare la propria sottoscrizione.
    Selezionare un account di archiviazione Usare l'emulatore Azurite per l'archiviazione locale.
    Questo è il percorso all'interno dell'account di archiviazione che il trigger monitorerà Accettare il valore samples-workitemspredefinito .
    Selezionare la modalità di apertura del progetto Selezionare Open in current window.
    Richiesta Azione
    Selezionare un linguaggio per il progetto di funzione Selezionare JavaScript.
    Selezionare un modello di programmazione JavaScript Selezionare Model V4.
    Selezionare un modello per la prima funzione del progetto Selezionare Azure Blob Storage trigger (using Event Grid).
    Specificare un nome di funzione Immetti BlobTriggerEventGrid.
    Selezionare l'impostazione da "local.settings.json" Selezionare Create new local app setting.
    Selezionare la sottoscrizione Selezionare la propria sottoscrizione.
    Selezionare un account di archiviazione Usare l'emulatore Azurite per l'archiviazione locale.
    Questo è il percorso all'interno dell'account di archiviazione che il trigger monitorerà Accettare il valore samples-workitemspredefinito .
    Selezionare la modalità di apertura del progetto Selezionare Open in current window.
    Richiesta Azione
    Selezionare un linguaggio per il progetto di funzione Selezionare PowerShell.
    Selezionare un modello per la prima funzione del progetto Selezionare Azure Blob Storage trigger (using Event Grid).
    Specificare un nome di funzione Immetti BlobTriggerEventGrid.
    Selezionare l'impostazione da "local.settings.json" Selezionare Create new local app setting.
    Selezionare la sottoscrizione Selezionare la propria sottoscrizione.
    Selezionare un account di archiviazione Usare l'emulatore Azurite per l'archiviazione locale.
    Questo è il percorso all'interno dell'account di archiviazione che il trigger monitorerà Accettare il valore samples-workitemspredefinito .
    Selezionare la modalità di apertura del progetto Selezionare Open in current window.

Aggiornare l'estensione di archiviazione

Per usare il trigger di archiviazione BLOB basato su Griglia di eventi, è necessario avere almeno la versione 5.x dell'estensione di archiviazione Funzioni di Azure.

Per aggiornare il progetto con la versione dell'estensione richiesta, nella finestra Terminale eseguire questo dotnet add package comando:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 
  1. Aprire il file di progetto host.json ed esaminare l'elemento extensionBundle .

  2. Se extensionBundle.version non è almeno 3.3.0 , sostituire l'elemento extensionBundle con questa versione:

    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
    

Preparare l'emulazione dell'archiviazione locale

Visual Studio Code usa Azurite per emulare Archiviazione di Azure servizi durante l'esecuzione in locale. Si usa Azurite per emulare il servizio Archiviazione BLOB di Azure durante lo sviluppo e i test locali.

  1. Se non è già stato fatto, installare l'estensione Azurite v3 per Visual Studio Code.

  2. Verificare che il file di local.settings.json sia "UseDevelopmentStorage=true" impostato per AzureWebJobsStorage, che indica a Core Tools di usare Azurite invece di una connessione reale all'account di archiviazione durante l'esecuzione in locale.

  3. Premere F1 per aprire il riquadro comandi, digitare Azurite: Start Blob Servicee premere INVIO, che avvia l'emulatore del servizio Di archiviazione BLOB di Azure.

  4. Selezionare l'icona di Azure nella barra attività, espandere Emulatore>locale Account di archiviazione> collegati all'area di lavoro, fare clic con il pulsante destro del mouse su Contenitori BLOB, selezionare Crea contenitore BLOB, immettere il nome samples-workitemse premere INVIO.

    Screenshot che mostra come selezionare Crea contenitore BLOB nell'emulazione locale in Visual Studio Code.

  5. Espandere Esempi di contenitori>BLOB- elementi di lavoro e selezionare Carica file....

    Screenshot che mostra come selezionare Carica file nel contenitore samples-workitems nell'emulazione locale in Visual Studio Code.

  6. Scegliere un file da caricare nel contenitore emulato in locale. Questo file viene elaborato in un secondo momento dalla funzione per verificare ed eseguire il debug del codice della funzione. Un file di testo potrebbe funzionare meglio con il codice del modello di trigger BLOB.

Eseguire la funzione in locale

Con un file nell'archiviazione emulata, è possibile eseguire la funzione per simulare un evento generato da una sottoscrizione di Griglia di eventi. Le informazioni sull'evento passate al trigger dipendono dal file aggiunto al contenitore locale.

  1. Impostare eventuali punti di interruzione e premere F5 per avviare il progetto per il debug locale. Funzioni di Azure Core Tools deve essere in esecuzione nella finestra del terminale.

  2. Nell'area di Azure espandere Funzioni progetto>locale dell'area>di lavoro, fare clic con il pulsante destro del mouse sulla funzione e selezionare Esegui funzione ora....

    Screenshot che mostra come selezionare il pulsante Esegui funzione dalla funzione nell'area di lavoro del progetto locale in Visual Studio Code.

  3. Nella finestra di dialogo corpo della richiesta digitare samples-workitems/<TEST_FILE_NAME>, sostituendo <TEST_FILE_NAME> con il nome del file caricato nell'emulatore di archiviazione locale.

  4. Premere INVIO per eseguire la funzione. Il valore specificato è il percorso del BLOB nell'emulatore locale. Questa stringa viene passata al trigger nel payload della richiesta, che simula il payload quando una sottoscrizione di eventi chiama la funzione per segnalare l'aggiunta di un BLOB al contenitore.

  5. Esaminare l'output di questa esecuzione della funzione. Nell'output verrà visualizzato il nome del file e il relativo contenuto registrati. Se si impostano punti di interruzione, potrebbe essere necessario continuare l'esecuzione.

Dopo aver convalidato correttamente il codice della funzione in locale, è possibile pubblicare il progetto in una nuova app per le funzioni in Azure.

Preparare l'account Archiviazione di Azure

Le sottoscrizioni di eventi a Archiviazione di Azure richiedono un account di archiviazione per utilizzo generico v2. È possibile usare l'estensione Archiviazione di Azure per Visual Studio Code per creare questo account di archiviazione.

  1. In Visual Studio Code premere di nuovo F1 per aprire il riquadro comandi e immettere Azure Storage: Create Storage Account.... Specificare queste informazioni quando richiesto:

    Richiesta Azione
    Immettere il nome del nuovo account di archiviazione Specificare un nome globalmente univoco. I nomi degli account di archiviazione devono contenere da 3 a 24 caratteri con solo lettere minuscole e numeri. Per semplificare l'identificazione, viene usato lo stesso nome per il gruppo di risorse e il nome dell'app per le funzioni.
    Selezionare un percorso per le nuove risorse per prestazioni ottimali, scegliere un'area vicina.

    L'estensione crea un account di archiviazione per utilizzo generico v2 con il nome specificato. Lo stesso nome viene usato anche per il gruppo di risorse che contiene l'account di archiviazione. Il trigger di archiviazione BLOB basato su Griglia di eventi richiede un account di archiviazione per utilizzo generico v2.

  2. Premere di nuovo F1 e nel riquadro comandi immettere Azure Storage: Create Blob Container.... Specificare queste informazioni quando richiesto:

    Richiesta Azione
    Selezionare una risorsa Selezionare l'account di archiviazione per utilizzo generico v2 creato.
    Immettere un nome per il nuovo contenitore BLOB Immettere samples-workitems, ovvero il nome del contenitore a cui si fa riferimento nel progetto di codice.

Per eseguire l'app per le funzioni è necessario anche un account di archiviazione. Per semplicità, questa esercitazione usa lo stesso account di archiviazione per il trigger BLOB e l'app per le funzioni. Nell'ambiente di produzione, tuttavia, potrebbe essere necessario usare un account di archiviazione separato con l'app per le funzioni. Per altre informazioni, vedere Considerazioni sull'archiviazione per Funzioni di Azure.

Creare l'app per le funzioni

Usare questi passaggi per creare un'app per le funzioni nel piano Flex Consumption. Quando l'app è ospitata in un piano a consumo flessibile, i trigger di archiviazione BLOB devono usare sottoscrizioni di eventi.

  1. Nel pallet dei comandi immettere Funzioni di Azure: Creare un'app per le funzioni in Azure... (Avanzate).

  2. Seguendo le istruzioni, specificare queste informazioni:

    Richiesta Selezione
    Immettere un nome univoco globale per la nuova app per le funzioni. Digitare un nome univoco globale che identifichi la nuova app per le funzioni e quindi selezionare INVIO. I caratteri validi per un nome di app per le funzioni sono a-z, 0-9 e -.
    Selezionare un piano di hosting. Scegliere A consumo Flex (Anteprima).
    Selezionare uno stack di runtime. Scegliere lo stack di linguaggio e la versione in cui è stato eseguito localmente.
    Selezionare un gruppo di risorse per le nuove risorse. Scegliere il gruppo di risorse esistente in cui è stato creato l'account di archiviazione.
    Selezionare un percorso per le nuove risorse. Selezionare una località in un'area supportata nelle vicinanze o nelle vicinanze di altri servizi a cui accedono le funzioni. Le aree non supportate non vengono visualizzate. Per altre informazioni, vedere Visualizzare le aree attualmente supportate.
    Selezionare un account di archiviazione. Scegliere il nome dell'account di archiviazione creato.
    Selezionare una risorsa di Application Insights per l'app. Scegliere Crea nuova risorsa di Application Insights e al prompt specificare il nome dell'istanza usata per archiviare i dati di runtime dalle funzioni.

    Una notifica viene visualizzata dopo la creazione dell'app per le funzioni. Selezionare Visualizza output in questa notifica per visualizzare i risultati della creazione, incluse le risorse di Azure create.

Distribuire il codice di funzione

Importante

La distribuzione in un'app per le funzioni esistente sovrascrive sempre il contenuto di tale app in Azure.

  1. Nel riquadro comandi cercare ed eseguire il comando Azure Functions: Deploy to Function App....

  2. Selezionare l'app per le funzioni appena creata. Quando viene richiesto di sovrascrivere le distribuzioni precedenti, selezionare Distribuisci per distribuire il codice della funzione nella nuova risorsa dell'app per le funzioni.

  3. Al termine della distribuzione, selezionare Visualizza output per visualizzare i risultati della creazione e della distribuzione, incluse le risorse di Azure create. Se non si riesce a visualizzare la notifica, selezionare l'icona della campana nell'angolo in basso a destra per visualizzarla di nuovo.

    Screenshot della finestra Visualizza output.

Aggiornare le impostazioni dell'applicazione

Poiché le impostazioni dell'applicazione necessarie dal local.settings.json file non vengono pubblicate automaticamente, è necessario caricarle nell'app per le funzioni in modo che la funzione venga eseguita correttamente in Azure.

  1. Nel pallet dei comandi immettere Azure Functions: Download Remote Settings...e nel prompt Selezionare una risorsa scegliere il nome dell'app per le funzioni.

  2. Quando viene richiesto che l'impostazione AzureWebJobsStorage esista già, selezionare per sovrascrivere l'impostazione dell'emulatore locale con l'account di archiviazione effettivo stringa di connessione da Azure.

  3. local.settings.json Nel file sostituire l'impostazione dell'emulatore locale con lo stesso stringa di connessione usato perAzureWebJobsStorage.

  4. Rimuovere la FUNCTIONS_WORKER_RUNTIME voce, che non è supportata in un piano Flex Consumption.

  5. Nel pallet dei comandi immettere Azure Functions: Upload Local Settings...e nel prompt Selezionare una risorsa scegliere il nome dell'app per le funzioni.

Ora sia l'host funzioni che il trigger condividono lo stesso account di archiviazione.

Compilare l'URL dell'endpoint

Per creare una sottoscrizione di eventi, è necessario fornire a Griglia di eventi l'URL dell'endpoint specifico per segnalare gli eventi di archiviazione BLOB. Questo URL dell'estensione BLOB è costituito da queste parti:

In parte Esempio
URL dell'app per le funzioni di base https://<FUNCTION_APP_NAME>.azurewebsites.net
Percorso specifico del BLOB /runtime/webhooks/blobs
Stringa di query della funzione ?functionName=Host.Functions.BlobTriggerEventGrid
Chiave di accesso dell'estensione BLOB &code=<BLOB_EXTENSION_KEY>

La chiave di accesso all'estensione BLOB è progettata per rendere più difficile per altri utenti accedere all'endpoint dell'estensione BLOB. Per determinare la chiave di accesso dell'estensione BLOB:

  1. In Visual Studio Code scegliere l'icona di Azure nella barra attività. In Risorse espandere la sottoscrizione, espandere App per le funzioni, fare clic con il pulsante destro del mouse sull'app per le funzioni creata e selezionare Apri nel portale.

  2. In Funzioni nel menu a sinistra selezionare Chiavi dell'app.

  3. In Chiavi di sistema selezionare la chiave denominata blobs_extension e copiare la chiave Valore.

    Questo valore viene incluso nella stringa di query del nuovo URL dell'endpoint.

  4. Creare un nuovo URL dell'endpoint per il trigger di archiviazione BLOB in base all'esempio seguente:

    https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>
    

    In questo esempio sostituire <FUNCTION_APP_NAME> con il nome dell'app per le funzioni e sostituire <BLOB_EXTENSION_KEY> con il valore ottenuto dal portale. Se è stato usato un nome diverso per la funzione, sarà anche necessario modificare il valore della stringa di query con il functionName nome della funzione.

È ora possibile usare questo URL dell'endpoint per creare una sottoscrizione di eventi.

Creare la sottoscrizione di eventi

Una sottoscrizione di eventi, basata su Griglia di eventi di Azure, genera eventi in base alle modifiche nel contenitore BLOB sottoscritto. Questo evento viene quindi inviato all'endpoint dell'estensione BLOB per la funzione. Dopo aver creato una sottoscrizione di eventi, non è possibile aggiornare l'URL dell'endpoint.

  1. In Visual Studio Code scegliere l'icona di Azure nella barra attività. In Risorse espandere la sottoscrizione, espandere Account di archiviazione, fare clic con il pulsante destro del mouse sull'account di archiviazione creato in precedenza e selezionare Apri nel portale.

  2. Accedere al portale di Azure e prendere nota del gruppo di risorse per l'account di archiviazione. Le altre risorse vengono create nello stesso gruppo per semplificare la pulizia delle risorse al termine.

  3. selezionare l'opzione Eventi dal menu a sinistra.

    Aggiungere un evento dell'account di archiviazione

  4. Nella finestra Eventi selezionare il pulsante + Sottoscrizione eventi e specificare i valori della tabella seguente nella scheda Basic:

    Impostazione Valore suggerito Description
    Nome myBlobEventSub Nome che identifica la sottoscrizione di eventi. È possibile usare il nome per trovare rapidamente la sottoscrizione di eventi.
    Schema di eventi Schema griglia di eventi Usare lo schema predefinito per gli eventi.
    Nome dell'argomento del sistema samples-workitems-blobs Nome per l'argomento, che rappresenta il contenitore. L'argomento viene creato con la prima sottoscrizione e verrà usato per le sottoscrizioni di eventi future.
    Filtrare in base ai tipi di evento Blob created (BLOB creato)
    Tipo di endpoint Web Hook Il trigger di archiviazione BLOB usa un endpoint web hook.
    Endpoint Endpoint DELL'URL basato su Azure Usare l'endpoint URL creato, che include il valore della chiave.
  5. Selezionare Conferma selezione per convalidare l'URL dell'endpoint.

  6. Selezionare Crea per creare la sottoscrizione di eventi.

Caricare un file nel contenitore

È possibile caricare un file dal computer nel contenitore di archiviazione BLOB usando Visual Studio Code.

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi e digitare Azure Storage: Upload Files....

  2. Nella finestra di dialogo Apri scegliere un file, preferibilmente un file di testo e selezionare Carica .

  3. Quando richiesto, immettere le informazioni seguenti:

    Impostazione Valore suggerito Descrizione
    Immettere la directory di destinazione del caricamento impostazione predefinita Accettare solo il valore predefinito di /, ovvero la radice del contenitore.
    Selezionare una risorsa Nome account di archiviazione Scegliere il nome dell'account di archiviazione creato in un passaggio precedente.
    Selezionare un tipo di risorsa Contenitori BLOB Si sta caricando in un contenitore BLOB.
    Selezionare il contenitore BLOB samples-workitems Questo valore è il nome del contenitore creato in un passaggio precedente.

Esplorare il file system locale per trovare un file da caricare e quindi selezionare il pulsante Carica per caricare il file.

Verificare la funzione in Azure

Ora che è stato caricato un file nel contenitore samples-workitems , la funzione deve essere attivata. È possibile verificare controllando quanto segue nel portale di Azure:

  1. Nell'account di archiviazione passare alla pagina Eventi , selezionare Sottoscrizioni eventi e si noterà che è stato recapitato un evento. Potrebbe verificarsi un ritardo di cinque minuti per l'evento da visualizzare nel grafico.

  2. Tornare alla pagina dell'app per le funzioni nel portale, in Funzioni trovare la funzione e selezionare Chiamate e altro ancora. Verranno visualizzate tracce scritte dall'esecuzione corretta della funzione.

Pulire le risorse

Per continuare con il passaggio successivo e aggiungere alla funzione un'associazione alla coda di Archiviazione di Azure, sarà necessario mantenere tutte le risorse esistenti per poterle riutilizzare.

In caso contrario, seguire questa procedura per eliminare l'app per le funzioni e le risorse correlate per evitare l'addebito di costi aggiuntivi.

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi. Nel riquadro comandi cercare e selezionare Azure: Open in portal.

  2. Scegliere l'app per le funzioni e premere INVIO. La pagina dell'app per le funzioni viene aperta nel portale di Azure.

  3. Nella scheda Panoramica selezionare il collegamento accanto a Gruppo di risorse.

    Screenshot della selezione del gruppo di risorse da eliminare dalla pagina dell'app per le funzioni.

  4. Nella pagina Gruppo di risorse esaminare l'elenco delle risorse incluse e verificare che siano quelle da eliminare.

  5. Selezionare Elimina gruppo di risorse e seguire le istruzioni.

    L'eliminazione potrebbe richiedere alcuni minuti. Al termine, viene visualizzata una notifica per pochi secondi. È anche possibile selezionare l'icona a forma di campana nella parte superiore della pagina per visualizzare la notifica.

Per altre informazioni sui costi delle funzioni, vedere Stima dei costi del piano a consumo.

Passaggi successivi