Share via


Quickstart: Reageren op wijzigingen in Azure SQL Database met behulp van Azure Functions

In deze quickstart gebruikt u Visual Studio Code om een app te bouwen die reageert op wijzigingen in een Azure SQL Database-tabel. Nadat u de code lokaal hebt getest, implementeert u deze in een nieuwe serverloze functie-app die wordt uitgevoerd in een Flex Consumption-abonnement in Azure Functions.

De projectbron maakt gebruik van de Azure Developer CLI-extensie (azd) met Visual Studio Code om het initialiseren en verifiëren van uw projectcode lokaal te vereenvoudigen en uw code in Azure te implementeren. Deze implementatie volgt de huidige aanbevolen procedures voor veilige en schaalbare Azure Functions-implementaties.

Belangrijk

Dit artikel wordt momenteel alleen ondersteund in C#, Python en TypeScript. Als u de quickstart wilt voltooien, selecteert u een van deze ondersteunde talen bovenaan het artikel.

Vereiste voorwaarden

  • Een Azure-account met een actief abonnement. Gratis een account maken

  • Visual Studio Code op een van de ondersteunde platforms.

  • De Azure Functions-extensie voor Visual Studio Code. Voor deze extensie zijn Azure Functions Core Tools vereist. Wanneer dit hulpprogramma niet lokaal beschikbaar is, probeert de extensie het te installeren met behulp van een installatieprogramma op basis van een pakket. U kunt het Core Tools-pakket ook installeren of bijwerken door het opdrachtpalet uit te voeren Azure Functions: Install or Update Azure Functions Core Tools . Als u npm of Homebrew niet op uw lokale computer hebt geïnstalleerd, moet u Core Tools handmatig installeren of bijwerken.

  • Node.js 18.x of hoger. Gebruik de opdracht node --version om uw versie te controleren.

Het project initialiseren

U kunt de azd init opdracht uit het opdrachtpalet gebruiken om een lokaal Azure Functions-codeproject te maken op basis van een sjabloon.

  1. Open in Visual Studio Code een map of werkruimte waarin u uw project wilt maken.

  2. Druk op F1 om het opdrachtenpalet te openen, de opdracht Azure Developer CLI (azd): Initialize App (init)te zoeken en uit te voeren en vervolgens een sjabloon selecteren te kiezen.

  3. Wanneer u hierom wordt gevraagd, zoekt en selecteert u Azure Functions with SQL Triggers and Bindings.

  4. Voer desgevraagd een unieke omgevingsnaam in, zoals sqldbchanges.

Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de huidige map of werkruimte. In azdwordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Het maakt ook deel uit van de naam van de resourcegroep die u in Azure maakt.

Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de huidige map of werkruimte. In azdwordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Het maakt ook deel uit van de naam van de resourcegroep die u in Azure maakt.

Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de huidige map of werkruimte. In azdwordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Het maakt ook deel uit van de naam van de resourcegroep die u in Azure maakt.

Voordat u uw app lokaal kunt uitvoeren, moet u de resources in Azure maken.

Azure-resources maken

Dit project is geconfigureerd voor het gebruik van de opdracht voor het azd provision maken van een functie-app in een Flex Consumption-abonnement, samen met andere vereiste Azure-resources die voldoen aan de huidige aanbevolen procedures.

  1. Druk in Visual Studio Code op F1 om het opdrachtenpalet te openen, de opdracht Azure Developer CLI (azd): Sign In with Azure Developer CLIte zoeken en uit te voeren en meld u aan met uw Azure-account.

  2. Druk op F1 om het opdrachtenpalet te openen, de opdracht Azure Developer CLI (azd): Provision Azure resources (provision) te zoeken en uit te voeren om de vereiste Azure-resources te maken.

  3. Wanneer u hierom wordt gevraagd in het terminalvenster, geeft u de volgende vereiste implementatieparameters op:

    Snel Description
    Selecteer een Azure-abonnement dat u wilt gebruiken Selecteer het abonnement waarin u uw resources wilt maken.
    locatie-implementatieparameter Azure-regio waarin de resourcegroep wordt gemaakt die de nieuwe Azure-resources bevat. Alleen regio's die momenteel ondersteuning bieden voor het Flex Consumption-abonnement, worden weergegeven.
    vnetEnabled-implementatieparameter Hoewel de sjabloon ondersteuning biedt voor het maken van resources in een virtueel netwerk, kiest u Falseom de implementatie en het testen te vereenvoudigen.

De azd provision opdracht gebruikt uw reactie op deze prompts met de Bicep-configuratiebestanden om deze vereiste Azure-resources te maken en te configureren, volgens de meest recente aanbevolen procedures:

  • Flex Consumption-abonnement en functie-app
  • Azure SQL Database (standaardnaam: ToDo)
  • Azure Storage (vereist) en Application Insights (aanbevolen)
  • Toegangsbeleid en rollen voor uw account
  • Service-naar-service-verbindingen met behulp van beheerde identiteiten (in plaats van opgeslagen verbindingsreeks s)

Na inrichting genereren hooks ook het local.settings.json-bestand , dat lokaal moet worden uitgevoerd. Dit bestand bevat de instellingen die nodig zijn om verbinding te maken met uw database in Azure.

De code bekijken (optioneel)

In het voorbeeld worden twee functies gedefinieerd:

Functienaam Codebestand Triggertype Description
httptrigger-sql-output sql_output_http_trigger.cs HTTP-trigger Accepteert een correct opgemaakte JSON-nettolading en gebruikt de SQL-uitvoerbinding om het object in te voegen als een rij in de ToDo tabel.
ToDoTrigger sql_trigger.cs SQL trigger Luistert naar de ToDo tabel voor wijzigingen op rijniveau en retourneert een object dat de gewijzigde rij vertegenwoordigt.

Het ToDoItem type wordt gedefinieerd in ToDoItem.cs.

Functienaam Codebestand Triggertype Description
http_trigger_sql_output function_app.py HTTP-trigger Accepteert een correct opgemaakte JSON-nettolading en gebruikt de SQL-uitvoerbinding om het object in te voegen als een rij in de ToDo tabel.
httptrigger-sql-output sql_trigger_todo SQL trigger Luistert naar de ToDo tabel voor wijzigingen op rijniveau en retourneert een object dat de gewijzigde rij vertegenwoordigt.

Het ToDoItem type wordt gedefinieerd in todo_item.py.

Functienaam Codebestand Triggertype Description
httpTriggerSqlOutput sql_output_http_trigger.ts HTTP-trigger Accepteert een correct opgemaakte JSON-nettolading en gebruikt de SQL-uitvoerbinding om het object in te voegen als een rij in de ToDo tabel.
sqlTriggerToDo sql_trigger.ts SQL-trigger Luistert naar de ToDo tabel voor wijzigingen op rijniveau en retourneert een object dat de gewijzigde rij vertegenwoordigt.

Het ToDoItem type wordt gedefinieerd in ToDoItem.ts.

Beide functies gebruiken de omgevingsvariabelen op app-niveau AZURE_SQL_CONNECTION_STRING_KEY_* die een op identiteit gebaseerde verbinding met het Azure SQL Database-exemplaar definiëren met behulp van Microsoft Entra ID-verificatie. Deze omgevingsvariabelen worden zowel in Azure (functie-app-instellingen) als lokaal (local.settings.json) gemaakt tijdens de azd provision bewerking.

Verbinding maken met de SQL-database

U kunt de SQL Server-extensie (mssql) voor Visual Studio Code gebruiken om verbinding te maken met de nieuwe database. Met deze extensie kunt u updates in de ToDo tabel aanbrengen om de SQL-triggerfunctie uit te voeren.

  1. Druk op F1 en zoek en voer de opdracht MS SQL: Add Connectionuit in het opdrachtenpalet.

  2. Verander in het dialoogvenster Verbinding het invoertype naar Azure bladeren en stel vervolgens de volgende resterende opties in:

    Optie Kies Description
    Server Uw SQL Server-exemplaar Standaard worden alle servers weergegeven die toegankelijk zijn voor uw Azure-account. Gebruik Abonnement, resourcegroep en locatie om de lijst met servers te filteren.
    Database ToDo De database die is gemaakt tijdens het inrichtingsproces.
    Verificatietype Microsoft Entra-id Als u nog niet bent aangemeld, selecteert u Aanmelden en meldt u zich aan bij uw Azure-account.
    Tenant-id De specifieke accounttenant. Als uw account meer dan één tenant heeft, kiest u de juiste tenant voor uw abonnement.
  3. Selecteer Verbinding maken om verbinding te maken met uw database. De verbinding maakt gebruik van uw lokale gebruikersaccount, waaraan beheerdersmachtigingen zijn verleend op de hostingserver en zijn toegewezen aan dbo de database.

  4. In de SQL Server-weergave zoek je Verbinden op en vouw je eerst Verbindingen en daarna de nieuwe server in SQL Server Explorer uit. Vouw Tabellen uit en controleer of de ToDo tabel bestaat. Als deze niet bestaat, moet u mogelijk azd provision opnieuw uitvoeren en controleren op fouten.

De functie lokaal uitvoeren

Visual Studio Code kan worden geïntegreerd met Azure Functions Core-hulpprogramma's waarmee u dit project kunt uitvoeren op uw lokale ontwikkelcomputer voordat u publiceert naar uw nieuwe functie-app in Azure.

  1. Druk op F1 en zoek en voer de opdracht Azurite: Startuit in het opdrachtenpalet.

  2. Als u de functie lokaal wilt starten, drukt u op F5 of het pictogram Uitvoeren en foutopsporing in de activiteitenbalk aan de linkerkant.

    In het terminalvenster wordt de uitvoer van Core Tools weergegeven. Uw app wordt gestart in het terminalvenster en u ziet de naam van de functie die lokaal wordt uitgevoerd.

Wanneer de app wordt uitgevoerd, kunt u beide functietriggers controleren en fouten opsporen.

Controleer de HTTP-triggerfunctie die naar een SQL-uitvoerbinding schrijft:

  1. Kopieer dit JSON-object, dat u ook kunt vinden in het test.http projectbestand:

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

    Deze gegevens vertegenwoordigen een rij die u in uw SQL-database invoegt wanneer u het HTTP-eindpunt aanroept. Met de uitvoerbinding wordt het gegevensobject omgezet in een INSERT bewerking in de database.

  2. Als de app wordt uitgevoerd, vouwt u in de Azure-weergave onder Werkruimte defuncties van het lokale project>uit.

  3. Selecteer met de rechtermuisknop uw HTTP-functie (of Ctrl+klik op macOS), selecteer Nu uitvoeren, plak de gekopieerde JSON-gegevens en druk op Enter.

    De functie verwerkt de HTTP-aanvraag en schrijft het item naar de verbonden SQL-database en retourneert het gemaakte object.

  4. Selecteer in SQL Server Explorer met de rechtermuisknop de ToDo tabel (of Ctrl+klik op macOS) en kies Top 1000 selecteren. Wanneer de query wordt uitgevoerd, wordt de ingevoegde of bijgewerkte rij geretourneerd.

  5. Herhaal stap 3 en verzend hetzelfde gegevensobject opnieuw met dezelfde id. Deze keer voert de uitvoerbinding een UPDATE bewerking uit in plaats van een INSERT en wijzigt de bestaande rij in de database.

Wanneer u klaar bent, typt u Ctrl+C in de terminal om het Core Tools-proces te stoppen.

Implementeren in Azure

U kunt de azd deploy opdracht uitvoeren vanuit Visual Studio Code om de projectcode te implementeren in uw al ingerichte resources in Azure.

  1. Druk op F1 om het opdrachtenpalet te openen, de opdracht Azure Developer CLI (azd): Deploy to Azure (deploy)te zoeken en uit te voeren.

    Met de azd deploy opdracht wordt uw code in de implementatiecontainer verpakt en geïmplementeerd. De app wordt vervolgens gestart en uitgevoerd in het geïmplementeerde pakket.

  2. Nadat de opdracht is voltooid, wordt uw app uitgevoerd in Azure. Noteer de Endpoint waarde, de URL van uw functie-app die wordt uitgevoerd in Azure.

De functie aanroepen in Azure

  1. Druk in Visual Studio Code op F1 en zoek en voer de opdracht Azure: Open in portaluit in het opdrachtenpalet, selecteer Function appen kies uw nieuwe app. Meld u indien nodig aan met uw Azure-account.

  2. Selecteer Logboekstream in het linkerdeelvenster, dat verbinding maakt met de Application Insights-logboeken voor uw app.

  3. Ga terug naar Visual Studio Code om beide functies in Azure uit te voeren.

  1. Druk op F1 om het opdrachtenpalet te openen, de opdracht Azure Functions: Execute Function Now...te zoeken en uit te voeren.

  2. Zoek en selecteer uw externe functie-app in de lijst en selecteer vervolgens de HTTP-triggerfunctie.

  3. Plak, net als voorheen, de JSON-objectgegevens in de payload body van Enter en druk op Enter.

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

    Als u een INSERT in plaats van een UPDATEwilt uitvoeren, vervangt u de id door een nieuwe GUID-waarde.

  4. Ga terug naar het portal en bekijk de uitvoerresultaten in het logboekvenster.

De hulpbronnen opschonen

Wanneer u klaar bent met het werken met uw functie-app en gerelateerde resources, kunt u deze opdracht gebruiken om de functie-app en de bijbehorende resources uit Azure te verwijderen en eventuele verdere kosten te voorkomen:

azd down --no-prompt

Opmerking

Met de --no-prompt optie krijgt u de opdracht azd om uw resourcegroep te verwijderen zonder een bevestiging van u.

Deze opdracht heeft geen invloed op uw lokale codeproject.