Condividi tramite


Guida introduttiva: Rispondere alle modifiche al database SQL di Azure con Funzioni di Azure

In questa guida introduttiva si usa Visual Studio Code per compilare un'app che risponde alle modifiche in una tabella del database SQL di Azure. Dopo aver testato il codice in locale, lo distribuisci a una nuova app per funzioni serverless in esecuzione in un piano di consumo Flex in Azure Functions.

L'origine del progetto usa l'estensione azd (Azure Developer CLI) con Visual Studio Code per semplificare l'inizializzazione e la verifica del codice del progetto in locale e la distribuzione del codice in Azure. Questa distribuzione segue le procedure consigliate correnti per le distribuzioni di Funzioni di Azure sicure e scalabili.

Importante

Anche se la risposta alle modifiche in un database SQL di Azure è supportata per tutti i linguaggi, questo scenario di avvio rapido include attualmente solo esempi per C#, Python e TypeScript. Per completare questa guida introduttiva, selezionare una di queste lingue supportate nella parte superiore dell'articolo.

Prerequisiti

  • Node.js 18.x o versione successiva. Usare il comando node --version per controllare la versione in uso.

Inizializzare il progetto

È possibile usare il azd init comando dal riquadro comandi per creare un progetto di codice di Funzioni di Azure locale da un modello.

  1. In Visual Studio Code aprire una cartella o un'area di lavoro in cui si vuole creare il progetto.

  2. Premere F1 per aprire il riquadro comandi, cercare ed eseguire il comando Azure Developer CLI (azd): Initialize App (init)e quindi scegliere Seleziona un modello.

  3. Quando richiesto, cercare e selezionare Azure Functions with SQL Triggers and Bindings.

  4. Quando richiesto, immettere un nome di ambiente univoco, ad esempio sqldbchanges.

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 azd, l'ambiente viene usato per mantenere un contesto di distribuzione univoco per l'app ed è possibile definirne più di uno. Fa anche parte del nome del gruppo di risorse creato in Azure.

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 azd, l'ambiente viene usato per mantenere un contesto di distribuzione univoco per l'app ed è possibile definirne più di uno. Fa anche parte del nome del gruppo di risorse creato in Azure.

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 azd, l'ambiente viene usato per mantenere un contesto di distribuzione univoco per l'app ed è possibile definirne più di uno. Fa anche parte del nome del gruppo di risorse creato in Azure.

Prima di poter eseguire l'app in locale, è necessario creare le risorse in Azure.

Creare risorse di Azure

Questo progetto è configurato per l'uso del azd provision comando per creare un'app per le funzioni in un piano Flex Consumption, insieme ad altre risorse di Azure necessarie che seguono le procedure consigliate correnti.

  1. 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 CLIe quindi accedere usando l'account Azure.

  2. Premere F1 per aprire il riquadro comandi, cercare ed eseguire il comando Azure Developer CLI (azd): Provision Azure resources (provision) per creare le risorse di Azure necessarie.

  3. Quando richiesto nella finestra Terminale, specificare questi parametri di distribuzione obbligatori:

    Rapido Description
    Selezionare una sottoscrizione di Azure da usare Selezionare la sottoscrizione in cui si desidera creare le risorse.
    parametro di distribuzione per la località 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.
    Parametro di distribuzione vnetEnabled Mentre il modello supporta la creazione di risorse all'interno di una rete virtuale, per semplificare la distribuzione e i test, scegliere False.

Il azd provision comando usa la risposta 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
  • Database SQL di Azure (nome predefinito: ToDo)
  • Archiviazione di Azure (richiesta) e Application Insights (scelta consigliata)
  • Criteri di accesso e ruoli per l'account
  • Connessioni da servizio a servizio che usano identità gestite (anziché stringhe di connessione archiviate)

Gli hook di post-provisioning generano anche il file local.settings.json, necessario per l'esecuzione locale. Questo file contiene le impostazioni necessarie per connettersi al database in Azure.

Esaminare il codice (facoltativo)

L'esempio definisce due funzioni:

Nome della funzione File di codice Tipo di innesco Description
httptrigger-sql-output sql_output_http_trigger.cs Trigger HTTP Accetta un payload JSON formattato correttamente e usa l'associazione di output SQL per inserire l'oggetto come riga nella ToDo tabella.
ToDoTrigger sql_trigger.cs Trigger SQL Monitorizza la tabella ToDo per le modifiche delle righe e restituisce un oggetto che rappresenta le righe modificate.

Il ToDoItem tipo è definito in ToDoItem.cs.

Nome della funzione File di codice Tipo di innesco Description
http_trigger_sql_output function_app.py Trigger HTTP Accetta un payload JSON formattato correttamente e usa l'associazione di output SQL per inserire l'oggetto come riga nella ToDo tabella.
httptrigger-sql-output sql_trigger_todo Trigger SQL Monitorizza la tabella ToDo per le modifiche delle righe e restituisce un oggetto che rappresenta le righe modificate.

Il ToDoItem tipo è definito in todo_item.py.

Nome della funzione File di codice Tipo di innesco Description
httpTriggerSqlOutput sql_output_http_trigger.ts Trigger HTTP Accetta un payload JSON formattato correttamente e usa l'associazione di output SQL per inserire l'oggetto come riga nella ToDo tabella.
sqlTriggerToDo sql_trigger.ts Trigger SQL Monitorizza la tabella ToDo per le modifiche delle righe e restituisce un oggetto che rappresenta le righe modificate.

Il ToDoItem tipo è definito in ToDoItem.ts.

Entrambe le funzioni usano le variabili di ambiente a livello AZURE_SQL_CONNECTION_STRING_KEY_* di app che definiscono una connessione basata sull'identità all'istanza del database SQL di Azure usando l'autenticazione dell'ID Microsoft Entra. Queste variabili di ambiente vengono create sia in Azure (impostazioni dell'app per le funzioni) che in locale (local.settings.json) durante l'operazione azd provision .

Connettersi al database SQL

È possibile usare l'estensione SQL Server (mssql) per Visual Studio Code per connettersi al nuovo database. Questa estensione consente di apportare aggiornamenti nella ToDo tabella per eseguire la funzione trigger SQL.

  1. Premere F1 e nel riquadro comandi cercare ed eseguire il comando MS SQL: Add Connection.

  2. Nella finestra di dialogo Connessione modificare Tipo di input in Sfoglia Azure e quindi impostare queste opzioni rimanenti:

    Opzione Choose Description
    Server Istanza di SQL Server Per impostazione predefinita, vengono visualizzati tutti i server accessibili all'account Azure. Usare Sottoscrizione, Gruppo di risorse e Località per filtrare l'elenco dei server.
    Banca dati ToDo Database creato durante il processo di provisioning.
    Tipo di autenticazione Microsoft Entra ID Se non è già stato eseguito l'accesso, selezionare Accedi e accedere all'account Azure.
    ID tenant Tenant dell'account specifico. Se l'account ha più tenant, scegliere i tenant corretti per la propria sottoscrizione.
  3. Selezionare Connetti per connettersi al database. La connessione utilizza l'account utente locale, che riceve i permessi amministrativi nel server di hosting ed è mappato come dbo nel database.

  4. Nella visualizzazione SQL Server individuare ed espandere Connessioni e quindi il nuovo server in Esplora SQL Server. Espandere Tabelle e verificare che la ToDo tabella esista. Se non esiste, potrebbe essere necessario eseguire azd provision di nuovo e verificare la presenza di errori.

Eseguire la funzione in locale

Visual Studio Code si integra con gli strumenti di base di Funzioni di Azure per consentire di eseguire questo progetto nel computer di sviluppo locale prima di pubblicare nella nuova app per le funzioni in Azure.

  1. Premere F1 e nel riquadro comandi cercare ed eseguire il comando Azurite: Start.

  2. Per avviare la funzione in locale, premere F5 o l'icona Esegui e debug nella barra attività sul lato sinistro.

    Il pannello Terminale visualizza l'output di Core Tools. L'app viene avviata nel pannello Terminale ed è possibile visualizzare il nome della funzione in esecuzione in locale.

Con l'app in esecuzione, è possibile verificare ed eseguire il debug di entrambi i trigger di funzione.

Per verificare la funzione trigger HTTP che scrive su un binding di output SQL:

  1. Copiare questo oggetto JSON, disponibile anche nel file di test.http progetto:

    {
      "id": "11111111-1111-1111-1111-111111111111",
      "order": 1,
      "title": "Test Todo Item",
      "url": "https://example.com",
      "completed": false
    }
    

    Questi dati rappresentano una riga inserita nel database SQL quando si chiama l'endpoint HTTP. L'associazione di output trasforma l'oggetto dati in un'operazione INSERT nel database.

  2. Con l'app in esecuzione, nella visualizzazione Azure sotto Area di lavoro espandi Progetto locale>Funzioni.

  3. Selezionare con il pulsante destro del mouse la funzione HTTP (o CTRL+clic su macOS), selezionare Esegui funzione ora, incollare i dati JSON copiati e premere INVIO.

    La funzione gestisce la richiesta HTTP e scrive l'elemento nel database SQL connesso e restituisce l'oggetto creato.

  4. Tornare in Esplora SQL Server, selezionare con il pulsante destro del mouse la ToDo tabella (o CTRL+clic su macOS) e scegliere Seleziona primi 1000. Quando la query viene eseguita, restituisce la riga inserita o aggiornata.

  5. Ripetere il passaggio 3 e inviare nuovamente lo stesso oggetto dati con lo stesso ID. Questa volta, l'associazione di output esegue un'operazione UPDATE anziché INSERT e modifica la riga esistente nel database.

Al termine, digitare CTRL+C nel terminale per arrestare il processo Core Tools.

Distribuzione su Azure

Puoi eseguire il comando azd deploy da Visual Studio Code per distribuire il codice del progetto alle risorse in Azure già configurate.

  1. Premere F1 per aprire il riquadro comandi, cercare ed eseguire il comando Azure Developer CLI (azd): Deploy to Azure (deploy).

    Il azd deploy comando crea pacchetti e distribuisce il codice nel contenitore di distribuzione. L'app viene quindi avviata ed eseguita nel pacchetto distribuito.

  2. Al termine del comando, l'app viene eseguita in Azure. Prendi nota del valore Endpoint, ovvero l'URL dell'applicazione delle funzioni in esecuzione in Azure.

Richiamare la funzione in Azure

  1. In Visual Studio Code premere F1 e nel riquadro comandi cercare ed eseguire il comando Azure: Open in portal, selezionare Function appe scegliere la nuova app. Se necessario, accedere con l'account Azure.

  2. Selezionare Flusso di log nel pannello a sinistra, che si connette ai log di Application Insights per l'app.

  3. Tornare a Visual Studio Code per eseguire entrambe le funzioni in Azure.

  1. Premere F1 per aprire il riquadro comandi, cercare ed eseguire il comando Azure Functions: Execute Function Now....

  2. Cercare e selezionare la funzione app remota dall'elenco, quindi selezionare la funzione trigger HTTP.

  3. Come in precedenza, incollare i dati dell'oggetto JSON nel corpo del payload e premere INVIO.

    {
      "id": "11111111-1111-1111-1111-111111111111",
      "order": 1,
      "title": "Test Todo Item",
      "url": "https://example.com",
      "completed": false
    }
    

    Per eseguire un INSERT invece di un UPDATE, sostituire id con un nuovo valore GUID.

  4. Tornare al portale e visualizzare l'output di esecuzione nella finestra del log.

Pulire le risorse

Al termine dell'uso dell'app per le funzioni e delle risorse correlate, è possibile usare questo comando per eliminare l'app per le funzioni e le relative risorse da Azure ed 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.