Dela via


Snabbstart: Svara på Ändringar i Azure SQL Database med Hjälp av Azure Functions

I den här snabbstarten använder du Visual Studio Code för att skapa en app som svarar på ändringar i en Azure SQL Database-tabell. När du har testat koden lokalt distribuerar du den till en ny serverlös funktionsapp som körs i en Flex Consumption-plan i Azure Functions.

Projektkällan använder Azure Developer CLI-tillägget (azd) med Visual Studio Code för att förenkla initieringen och verifieringen av projektkoden lokalt och för att distribuera koden till Azure. Den här distributionen följer aktuella metodtips för säkra och skalbara Azure Functions-distributioner.

Viktigt!

Den här artikeln stöds för närvarande endast i C#, Python och TypeScript. Slutför snabbstarten genom att välja något av de språk som stöds överst i artikeln.

Förutsättningar

  • Node.js 18.x eller senare. Använd kommandot node --version för att kontrollera din version.

Initiera projektet

Du kan använda azd init kommandot från kommandopaletten för att skapa ett lokalt Azure Functions-kodprojekt från en mall.

  1. I Visual Studio Code öppnar du en mapp eller arbetsyta där du vill skapa projektet.

  2. Tryck på F1 för att öppna kommandopaletten, sök efter och kör kommandot Azure Developer CLI (azd): Initialize App (init)och välj sedan Välj en mall.

  3. När du uppmanas till det söker du efter och väljer Azure Functions with SQL Triggers and Bindings.

  4. När du uppmanas till det anger du ett unikt miljönamn, till exempel sqldbchanges.

Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan. I azdanvänds miljön för att upprätthålla en unik distributionskontext för din app och du kan definiera mer än en. Det är också en del av namnet på den resursgrupp som du skapar i Azure.

Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan. I azdanvänds miljön för att upprätthålla en unik distributionskontext för din app och du kan definiera mer än en. Det är också en del av namnet på den resursgrupp som du skapar i Azure.

Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan. I azdanvänds miljön för att upprätthålla en unik distributionskontext för din app och du kan definiera mer än en. Det är också en del av namnet på den resursgrupp som du skapar i Azure.

Innan du kan köra appen lokalt måste du skapa resurserna i Azure.

Skapa Azure-resurser

Det här projektet är konfigurerat för att använda azd provision kommandot för att skapa en funktionsapp i en Flex Consumption-plan, tillsammans med andra nödvändiga Azure-resurser som följer aktuella metodtips.

  1. I Visual Studio Code trycker du på F1 för att öppna kommandopaletten, söker efter och kör kommandot Azure Developer CLI (azd): Sign In with Azure Developer CLIoch loggar sedan in med ditt Azure-konto.

  2. Tryck på F1 för att öppna kommandopaletten, sök efter och kör kommandot Azure Developer CLI (azd): Provision Azure resources (provision) för att skapa nödvändiga Azure-resurser.

  3. När du uppmanas att göra det i terminalfönstret anger du följande nödvändiga distributionsparametrar:

    Omedelbar Description
    Välj en Azure-prenumeration som ska användas Välj den prenumeration där du vill att dina resurser ska skapas.
    platsdistributionsparameter Azure-region där du kan skapa resursgruppen som innehåller de nya Azure-resurserna. Endast regioner som för närvarande stöder Flex Consumption-planen visas.
    vnetEnabled-distributionsparameter Mallen har stöd för att skapa resurser i ett virtuellt nätverk, men för att förenkla distributionen och testningen väljer du False.

Kommandot azd provision använder ditt svar på dessa frågor med Bicep-konfigurationsfilerna för att skapa och konfigurera de nödvändiga Azure-resurserna enligt de senaste metodtipsen:

  • Flex Consumption-plan och funktionsapp
  • Azure SQL Database (standardnamn: ToDo)
  • Azure Storage (krävs) och Application Insights (rekommenderas)
  • Åtkomstprinciper och roller för ditt konto
  • Tjänst-till-tjänst-anslutningar med hanterade identiteter (i stället för lagrade anslutningssträng)

Post-provision hooks genererar också local.settings.json-filen, som krävs för att köras lokalt. Den här filen innehåller de inställningar som krävs för att ansluta till databasen i Azure.

Granska koden (valfritt)

Exemplet definierar två funktioner:

Funktionsnamn Kodfil Utlösartyp Description
httptrigger-sql-output sql_output_http_trigger.cs HTTP-utlösare Accepterar en korrekt formaterad JSON-nyttolast och använder SQL-utdatabindningen för att infoga objektet som en rad i ToDo tabellen.
ToDoTrigger sql_trigger.cs SQL-utlösare Lyssnar på tabellen ToDo efter ändringar på radnivå och returnerar ett objekt som representerar den ändrade raden.

Typen ToDoItem definieras i ToDoItem.cs.

Funktionsnamn Kodfil Utlösartyp Description
http_trigger_sql_output function_app.py HTTP-utlösare Accepterar en korrekt formaterad JSON-nyttolast och använder SQL-utdatabindningen för att infoga objektet som en rad i ToDo tabellen.
httptrigger-sql-output sql_trigger_todo SQL-utlösare Lyssnar på tabellen ToDo efter ändringar på radnivå och returnerar ett objekt som representerar den ändrade raden.

Typen ToDoItem definieras i todo_item.py.

Funktionsnamn Kodfil Utlösartyp Description
httpTriggerSqlOutput sql_output_http_trigger.ts HTTP-utlösare Accepterar en korrekt formaterad JSON-nyttolast och använder SQL-utdatabindningen för att infoga objektet som en rad i ToDo tabellen.
sqlTriggerToDo sql_trigger.ts SQL-utlösare Lyssnar på tabellen ToDo efter ändringar på radnivå och returnerar ett objekt som representerar den ändrade raden.

Typen ToDoItem definieras i ToDoItem.ts.

Båda funktionerna använder miljövariablerna på appnivå AZURE_SQL_CONNECTION_STRING_KEY_* som definierar en identitetsbaserad anslutning till Azure SQL Database-instansen med hjälp av Microsoft Entra-ID-autentisering. Dessa miljövariabler skapas åt dig både i Azure (funktionsappinställningar) och lokalt (local.settings.json) under åtgärden azd provision .

Ansluta till SQL-databasen

Du kan använda SQL Server-tillägget (mssql) för Visual Studio Code för att ansluta till den nya databasen. Det här tillägget hjälper dig att göra uppdateringar i ToDo tabellen för att köra SQL-utlösarfunktionen.

  1. Tryck på F1 och sök efter och kör kommandot MS SQL: Add Connectioni kommandopaletten.

  2. I dialogrutan Anslutning ändrar du Indatatyp till Bläddra i Azure och anger sedan följande återstående alternativ:

    Option Välja Description
    Server Din SQL Server-instans Som standard visas alla servrar som är tillgängliga för ditt Azure-konto. Använd Prenumeration, Resursgrupp och Plats för att filtrera listan över servrar.
    Databas ToDo Databasen som skapades under etableringsprocessen.
    Autentiseringstyp Microsoft Entra-ID Om du inte redan är inloggad väljer du Logga in och logga in på ditt Azure-konto.
    Hyresgäst-ID Den specifika kontohyresgästen. Om ditt konto har fler än en hyresgäst, välj rätt hyresgäst för din prenumeration.
  3. Välj Anslut för att ansluta till databasen. Anslutningen använder ditt lokala användarkonto, som beviljas administratörsbehörigheter på värdservern och mappas till dbo i databasen.

  4. I SQL Server-vyn letar du upp och expanderar Anslutningar och sedan din nya server i SQL Server Explorer. Expandera Tabeller och kontrollera att tabellen ToDo finns. Om den inte finns kan du behöva köra azd provision igen och söka efter fel.

Kör funktionen lokalt

Visual Studio Code integreras med Azure Functions Core-verktyg så att du kan köra det här projektet på din lokala utvecklingsdator innan du publicerar till din nya funktionsapp i Azure.

  1. Tryck på F1 och sök efter och kör kommandot Azurite: Starti kommandopaletten.

  2. Starta funktionen lokalt genom att trycka på F5 eller ikonen Kör och felsöka i aktivitetsfältet till vänster.

    Terminalpanelen visar utdata från Core Tools. Appen startar i terminalpanelen och du kan se namnet på den funktion som körs lokalt.

När appen körs kan du verifiera och felsöka båda funktionsutlösarna.

Så här verifierar du http-utlösarfunktionen som skriver till en SQL-utdatabindning:

  1. Kopiera det här JSON-objektet, som du också hittar i test.http projektfilen:

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

    Dessa data representerar en rad som du infogar i SQL-databasen när du anropar HTTP-slutpunkten. Utdatabindningen översätter dataobjektet till en INSERT åtgärd i databasen.

  2. När appen körs, i Azure-vyn, under Arbetsyta, expanderar du Lokalt projekt>Funktioner.

  3. Högerklicka på HTTP-funktionen (eller Ctrl+klicka på macOS), välj Kör funktion nu, klistra in de kopierade JSON-data och tryck på Retur.

    Funktionen hanterar HTTP-begäran och skriver objektet till den anslutna SQL-databasen och returnerar det skapade objektet.

  4. I SQL Server-utforskaren högerklickar du på ToDo tabellen (eller Ctrl+klickar på macOS) och väljer Välj översta 1000. När frågan körs returneras den infogade eller uppdaterade raden.

  5. Upprepa steg 3 och skicka samma dataobjekt igen med samma ID. Den här gången utför utdatabindningen en UPDATE åtgärd i stället för en INSERT och ändrar den befintliga raden i databasen.

När du är klar skriver du Ctrl+C i terminalen för att stoppa Core Tools-processen.

Distribuera till Azure

Du kan köra azd deploy kommandot från Visual Studio Code för att distribuera projektkoden till dina redan etablerade resurser i Azure.

  1. Tryck på F1 för att öppna kommandopaletten, sök efter och kör kommandot Azure Developer CLI (azd): Deploy to Azure (deploy).

    azd deploy-kommandot paketerar och distribuerar din kod till distributionscontainern. Appen startas sedan och körs i det distribuerade paketet.

  2. När kommandot har slutförts körs appen i Azure. Anteckna värdet Endpoint , som är URL:en för din funktionsapp som körs i Azure.

Anropa funktionen på Azure

  1. I Visual Studio Code trycker du på F1 och i kommandopaletten söker du efter och kör kommandot Azure: Open in portal, väljer Function appoch väljer din nya app. Logga in med ditt Azure-konto om det behövs.

  2. Välj Loggström i det vänstra fönstret, som ansluter till Application Insights-loggarna för din app.

  3. Gå tillbaka till Visual Studio Code för att köra båda funktionerna i Azure.

  1. Tryck på F1 för att öppna kommandopaletten, sök efter och kör kommandot Azure Functions: Execute Function Now....

  2. Sök efter och välj fjärrfunktionsappen i listan och välj sedan funktionen HTTP-utlösare.

  3. Som tidigare klistrar du in dina JSON-objektdata i Ange nyttolasttext och trycker på Retur.

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

    Om du vill utföra en INSERT i stället för en UPDATEersätter du id med ett nytt GUID-värde.

  4. Gå tillbaka till portalen och granska körningsutdata i loggfönstret.

Rensa resurser

När du är klar med funktionsappen och relaterade resurser kan du använda det här kommandot för att ta bort funktionsappen och dess relaterade resurser från Azure och undvika ytterligare kostnader:

azd down --no-prompt

Anmärkning

Alternativet --no-prompt instruerar azd dig att ta bort resursgruppen utan någon bekräftelse från dig.

Det här kommandot påverkar inte ditt lokala kodprojekt.