Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa guida introduttiva si usa Visual Studio Code per compilare un'app che risponde agli eventi in un contenitore di archiviazione BLOB. Dopo aver testato il codice in locale con un emulatore, è possibile distribuirlo in una nuova app per le funzioni serverless in esecuzione in un piano a Consumo Flessibile in Funzioni di Azure.
Il progetto usa l'estensione dell'interfaccia della riga di comando per sviluppatori di Azure (azd) con Visual Studio Code per semplificare l'inizializzazione e la verifica del codice del progetto in locale, nonché la distribuzione del codice in Azure. Questa distribuzione segue le procedure consigliate correnti per le distribuzioni di Funzioni di Azure sicure e scalabili.
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.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
Visual Studio Code in una delle piattaforme supportate.
Estensione Funzioni di Azure per Visual Studio Code. Questa estensione richiede Azure Functions Core Tools. Quando questo strumento non è disponibile in locale, l'estensione tenta di installarla usando un programma di installazione basato su pacchetti. È anche possibile installare o aggiornare il pacchetto Core Tools eseguendo
Azure Functions: Install or Update Azure Functions Core Toolsdal riquadro comandi. Se nel computer locale non è installato npm o Homebrew, è necessario installare o aggiornare manualmente Core Tools.
Estensione C# per Visual Studio Code.
Java Development Kit, versione 8, 11, 17 o 21 (Linux).
Apache Maven, versione 3.0 o successiva.
-
Node.js 18.x o versione successiva. Usare il comando
node --versionper controllare la versione in uso.
Versioni di Python supportate da Funzioni di Azure. Per altre informazioni, vedere Procedura per installare Python.
Estensione Python per Visual Studio Code.
- Estensione dell'interfaccia della riga di comando per sviluppatori di Azure per Visual Studio Code.
Estensione client REST o uno strumento REST equivalente usato per eseguire in modo sicuro le richieste HTTP.
Inizializzare il progetto
Usare il azd init comando dal riquadro comandi per creare un progetto di codice di Funzioni di Azure locale da un modello.
In Visual Studio Code aprire una cartella o un'area di lavoro in cui si vuole creare il progetto.
Premere F1 per aprire il riquadro comandi, cercare ed eseguire il comando
Azure Developer CLI (azd): Initialize App (init), quindi scegliere Seleziona un modello.Potrebbe verificarsi un lieve ritardo durante
azdl'inizializzazione della cartella o dell'area di lavoro corrente.
Quando richiesto, scegliere Seleziona un modello, quindi cercare e selezionare
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.Quando richiesto nel terminale, immettere un nome di ambiente univoco, ad esempio
blobevents-dotnet.Questo comando esegue il pull dei file di progetto dal repository dei modelli e inizializza il progetto nella cartella o nell'area di lavoro corrente.
Quando richiesto, scegliere Seleziona un modello, quindi cercare e selezionare
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.Quando richiesto nel terminale, immettere un nome di ambiente univoco, ad esempio
blobevents-python.Questo comando esegue il pull dei file di progetto dal repository dei modelli e inizializza il progetto nella cartella o nell'area di lavoro corrente.
Quando richiesto, scegliere Seleziona un modello, quindi cercare e selezionare
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.Quando richiesto, immettere un nome di ambiente univoco, ad esempio
blobevents-typescript.Questo comando esegue il pull dei file di progetto dal repository dei modelli e inizializza il progetto nella cartella o nell'area di lavoro corrente.
Quando richiesto, scegliere Seleziona un modello, quindi cercare e selezionare
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.Quando richiesto, immettere un nome di ambiente univoco, ad esempio
blobevents-java.Questo comando esegue il pull dei file di progetto dal repository dei modelli e inizializza il progetto nella cartella o nell'area di lavoro corrente.
Quando richiesto, scegliere Seleziona un modello, quindi cercare e selezionare
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.Quando richiesto, immettere un nome di ambiente univoco, ad esempio
blobevents-powershell.Questo comando esegue il pull dei file di progetto dal repository dei modelli e inizializza il progetto nella cartella o nell'area di lavoro corrente.
In azdl'ambiente mantiene un contesto di distribuzione univoco per l'app ed è possibile definire più di uno. Fa anche parte del nome del gruppo di risorse creato in Azure.
Aggiungere il file local.settings.json
Funzioni richiede il file local.settings.json per configurare l'host durante l'esecuzione in locale.
Eseguire questo comando per passare alla cartella dell'app
src:cd src
Creare un file denominato local.settings.json nella cartella
srcche contiene questi dati JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Creare un file denominato local.settings.json nella cartella
srcche contiene questi dati JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Creare un file denominato local.settings.json nella cartella
srcche contiene questi dati JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Creare un file denominato local.settings.json nella cartella
srcche contiene questi dati JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Creare un file denominato local.settings.json nella cartella
srcche contiene questi dati JSON:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Creare e attivare un ambiente virtuale
src Nella cartella eseguire questi comandi per creare e attivare un ambiente virtuale denominato .venv:
python3 -m venv .venv
source .venv/bin/activate
Se Python non installa il pacchetto venv nella distribuzione Linux, eseguire il comando seguente:
sudo apt-get install python3-venv
Configurare l'emulatore di archiviazione locale
Usare l'emulatore Azurite per eseguire il progetto di codice in locale prima di creare e usare le risorse di Azure.
Se non è già stato fatto, installare Azurite.
Premere F1. Nel riquadro comandi cercare ed eseguire il comando
Azurite: Startper avviare l'emulatore di archiviazione locale.Nell'area di Azure, espandere Workspace>Attached Storage Accounts>, Emulatore locale (per gli account di archiviazione collegati), fare clic con il pulsante destro del mouse su Contenitori BLOB (Ctrl-clic su Mac), selezionare Crea contenitore BLOB... e creare questi due contenitori di archiviazione BLOB nell'emulatore locale:
-
unprocessed-pdf: contenitore monitorato dal trigger per gli eventi di archiviazione. -
processed-pdf: contenitore in cui la funzione invia BLOB elaborati come output.
-
Espandere Contenitori BLOB, fare clic con il pulsante destro del mouse (CTRL+clic su Mac) su unprocessed-pdf, selezionare Carica file…, premere Invio per accettare la directory radice e caricare i file PDF dalla cartella del progetto
data.
Quando si esegue localmente, è possibile usare REST per attivare la funzione simulando la funzione che riceve un messaggio da una sottoscrizione di eventi.
Eseguire la funzione in locale
Visual Studio Code si integra con gli strumenti di base di Funzioni di Azure per consentire l'esecuzione di questo progetto nel computer di sviluppo locale usando l'emulatore Azurite. La variabile di ambiente PDFProcessorSTORAGE definisce la connessione all'account di archiviazione, che viene inoltre impostata su "UseDevelopmentStorage=true" nel file local.settings.json durante l'esecuzione in locale.
Eseguire questo comando dalla cartella del
srcprogetto in un terminale o nel prompt dei comandi:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startAll'avvio dell'host Funzioni, scrive il nome del trigger e il tipo di trigger nell'output del terminale. In Funzioni la cartella radice del progetto contiene il file host.json.
Con Core Tools ancora in esecuzione nel terminale, apri il file
test.httpnel tuo progetto e seleziona Invia richiesta per attivare la funzioneProcessBlobUploadinviando un evento blob di test al webhook dell'evento blob.Questo passaggio simula la ricezione di un evento da una sottoscrizione di eventi durante l'esecuzione in locale e dovrebbe essere visualizzata la richiesta e le informazioni sui file elaborate scritte nei log. Se non si usa il client REST, è necessario usare un altro strumento REST sicuro per chiamare l'endpoint con il payload in
test.http.Nell'area di lavoro del contenitore BLOB, espandere processed-pdf e verificare che la funzione abbia elaborato il file PDF e lo abbia copiato con un prefisso
processed-.Al termine, premere CTRL+C nella finestra del terminale per arrestare il processo host
func.exe.
Esaminare il codice (facoltativo)
È possibile esaminare il codice che definisce il trigger di blob di Event Grid nel file di progetto ProcessBlobUpload.cs. La funzione illustra come:
- Usare
BlobTriggerconSource = BlobTriggerSource.EventGridper l'elaborazione quasi in tempo reale - Eseguire l'associazione a
BlobClientper il BLOB di origine eBlobContainerClientper la destinazione - Elaborare il contenuto del BLOB e copiarlo in un altro contenitore usando flussi
È possibile esaminare il codice che definisce il Blob Trigger di Event Grid nel file di progetto function_app.py. La funzione illustra come:
- Usare
@app.blob_triggerconsource="EventGrid"per l'elaborazione quasi in tempo reale - Accedere al contenuto del BLOB usando il
InputStreamparametro - Copiare i file elaborati nel contenitore di destinazione usando Azure Storage SDK
È possibile esaminare il codice che definisce il trigger BLOB di Event Grid nel file di progetto processBlobUpload.ts. La funzione illustra come:
- Usare
app.storageBlob()consource: 'EventGrid'per l'elaborazione quasi in tempo reale - Accedere al contenuto del BLOB usando Node.js Azure Storage SDK
- Elaborare e copiare i file nel contenitore di destinazione in modo asincrono
È possibile esaminare il codice che definisce il trigger BLOB di Event Grid nel file di progetto ProcessBlobUpload.java. La funzione illustra come:
- Usare
@BlobTriggerconsource = "EventGrid"per l'elaborazione quasi in tempo reale - Accedere al contenuto del BLOB usando
BlobInputStreamil parametro - Copiare i file elaborati nel contenitore di destinazione usando Azure Storage SDK per Java
È possibile esaminare il codice che definisce il trigger blob di Griglia di eventi nel file di progetto ProcessBlobUpload/run.ps1 e il function.jsoncorrispondente. La funzione illustra come:
- Configurare il trigger BLOB con
"source": "EventGrid"in function.json per l'elaborazione near real-time - Accedere al contenuto blob usando i cmdlet di Archiviazione di Azure di PowerShell
- Elaborare e copiare file nel contenitore di destinazione usando i moduli di Azure PowerShell
Dopo aver esaminato e verificato il codice della funzione in locale, è possibile pubblicare il progetto in Azure.
Creare risorse di Azure e distribuire
Usare il azd up comando per creare l'app per le funzioni in un piano a consumo Flex insieme ad altre risorse di Azure necessarie, inclusa la sottoscrizione di eventi. Dopo aver pronto l'infrastruttura, azd distribuisce anche il codice del progetto nella nuova app per le funzioni in Azure.
In Visual Studio Code premere F1 per aprire il riquadro comandi. Cercare ed eseguire il comando
Azure Developer CLI (azd): Sign In with Azure Developer CLI, quindi accedere usando l'account Azure.Nella radice del progetto premere F1 per aprire il riquadro comandi. Cercare ed eseguire il comando
Azure Developer CLI (azd): Provision and Deploy (up)per creare le risorse di Azure necessarie e distribuire il codice.Quando richiesto nella finestra Terminale, specificare questi parametri di distribuzione obbligatori:
Rapido Description Selezionare una sottoscrizione di Azure da usare Scegliere la sottoscrizione in cui si vogliono creare le risorse. Nome ambiente Un ambiente usato per mantenere un contesto di distribuzione univoco per l'app. Località di Azure Area di Azure in cui creare il gruppo di risorse che contiene le nuove risorse di Azure. Vengono visualizzate solo le aree che attualmente supportano il piano a consumo Flex. Il
azd upcomando usa le risposte a questi prompt con i file di configurazione Bicep per creare e configurare queste risorse di Azure necessarie, seguendo le procedure consigliate più recenti:- Piano a consumo Flex e app per le funzioni
- Account di archiviazione di Azure con contenitori BLOB
- Application Insights (scelta consigliata)
- Criteri di accesso e ruoli per l'account
- Sottoscrizione di Event Grid per gli eventi BLOB
- Connessioni da servizio a servizio tramite identità gestite (anziché stringhe di connessione archiviate)
Al termine del comando, l'app funziona in Azure con una sottoscrizione di eventi configurata per attivare la funzione quando i blob vengono aggiunti al
unprocessed-pdfcontenitore.Prendere nota di
AZURE_STORAGE_ACCOUNT_NAMEeAZURE_FUNCTION_APP_NAMEnell'output. Questi nomi sono univoci rispettivamente per l'account di archiviazione e l'app per le funzioni in Azure.
Verificare la funzione implementata
In Visual Studio Code premere F1. Nel riquadro comandi cercare ed eseguire il comando
Azure Storage: Upload Files.... Accettare la directory radice e, come in precedenza, caricare uno o più file PDF dalla cartella del progettodata.Quando richiesto, selezionare il nome del nuovo account di archiviazione (da
AZURE_STORAGE_ACCOUNT_NAME). Selezionare Contenitori BLOB>unprocessed-pdf.Premere F1. Nel riquadro comandi cercare ed eseguire il comando
Azure Storage: Open in Explorer. Selezionare lo stesso account di archiviazione >Blob Container>processed-pdf, quindi Apri in una nuova finestra.In Esplora file, verifica che i file PDF caricati siano stati elaborati dalla tua funzione. L'output viene scritto nel contenitore
processed-pdfcon il prefissoprocessed-.
Il trigger BLOB dell'Event Grid elabora i file entro pochi secondi dal caricamento. La velocità dell'operazione dimostra le funzionalità near real-time di questo approccio rispetto ai trigger BLOB tradizionali basati sul polling.
Ridistribuire il codice
Eseguire il comando azd up quante volte è necessario per effettuare il provisioning delle risorse di Azure e distribuire gli aggiornamenti del codice nell'app per le funzioni.
Annotazioni
I file di codice distribuiti vengono sempre sovrascritti dal pacchetto di distribuzione più recente.
Le risposte iniziali alle richieste di azd e a tutte le variabili di ambiente generate da azd, vengono archiviate localmente nell'ambiente denominato. Usare il comando azd env get-values per esaminare tutte le variabili nell'ambiente usato durante la creazione di risorse di Azure.
Pulire le risorse
Al termine dell'uso dell'app per le funzioni e delle risorse correlate, usare questo comando per eliminare l'app per le funzioni e le relative risorse da Azure. Questa azione consente di evitare di sostenere ulteriori costi:
azd down --no-prompt
Annotazioni
L'opzione --no-prompt indica a azd di eliminare il gruppo di risorse senza conferma.
Questo comando non influisce sul progetto di codice locale.
Contenuti correlati
- Scenari di Funzioni di Azure
- Piano di consumo flessibile
- Esercitazione: Attivare Funzioni di Azure nei contenitori BLOB usando una sottoscrizione di eventi
- Interfaccia della riga di comando per sviluppatori di Azure (azd)
- azd reference
- Riferimento di Azure Functions Core Tools
- Scrivere codici per Funzioni di Azure e testarle in locale