Dela via


Snabbstart: Svara på databasändringar i Azure Cosmos DB 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å databasändringar i en No SQL-databas i Azure Cosmos DB. När du har testat koden lokalt distribuerar du den till en ny serverlös funktionsapp som du skapar 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 samt 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.

    Det kan uppstå en liten fördröjning medan azd initierar den aktuella mappen eller arbetsytan.

  1. När du uppmanas, välj Välj en mall och sök sedan efter och välj Azure Functions with Cosmos DB Bindings (.NET).

  2. När du uppmanas till det anger du ett unikt miljönamn, till exempel cosmosdbchanges-dotnet.

    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.

  1. När du uppmanas väljer du Välj en mall, söker sedan efter och väljer Azure Functions TypeScript CosmosDB trigger.

  2. När du uppmanas till det anger du ett unikt miljönamn, till exempel cosmosdbchanges-ts.

    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.

  1. När du blir ombedd väljer du Välj en mall och söker sedan efter och väljer Azure Functions Python with CosmosDB triggers and bindings....

  2. När du uppmanas till det anger du ett unikt miljönamn, till exempel cosmosdbchanges-py.

    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.

  1. Kör det här kommandot, beroende på ditt lokala operativsystem, för att ge konfigurationsskript de behörigheter som krävs:

    Kör det här kommandot med tillräcklig behörighet:

    chmod +x ./infra/scripts/*.sh
    

Innan du kan köra appen lokalt måste du skapa resurserna i Azure. Det här projektet använder inte lokal emulering för Azure Cosmos DB.

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 gällande 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 Cosmos DB-konto
    • 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)

    Postprovision-krokar genererar också den local.settings.json-fil som krävs när den körs lokalt. Den här filen innehåller också de inställningar som krävs för att ansluta till din Azure Cosmos DB-databas i Azure.

    Tips/Råd

    Om några steg misslyckas under provisioneringen azd provision kan du köra kommandot igen efter att du löst eventuella problem.

    När kommandot har slutförts kan du köra projektkoden lokalt och utlösa på Azure Cosmos DB-databasen i Azure.

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.

    Om du har problem med att köra windows kontrollerar du att standardterminalen för Visual Studio Code inte är inställd på WSL Bash.

  3. Med Core Tools som fortfarande körs i Terminal trycker du på F1 och i kommandopaletten söker du efter och kör kommandot NoSQL: Create Item... och väljer både document-db databasen och containern documents .

  4. Ersätt innehållet i filen New Item.json med dessa JSON-data och välj Spara:

    {
        "id": "doc1", 
        "title": "Sample document", 
        "content": "This is a sample document for testing my Azure Cosmos DB trigger in Azure Functions."
    } 
    

    När du har valt Spara ser du körningen av funktionen i terminalen och det lokala dokumentet uppdateras för att inkludera metadata som lagts till av tjänsten.

  5. När du är klar trycker du på Ctrl+C i terminalfönstret för att stoppa func.exe värdprocessen.

Granska koden (valfritt)

Funktionen utlöses baserat på ändringsflödet i en Azure Cosmos DB NoSQL-databas. Dessa miljövariabler konfigurerar hur utlösaren övervakar ändringsflödet:

  • COSMOS_CONNECTION__accountEndpoint: Cosmos DB-kontoslutpunkten
  • COSMOS_DATABASE_NAME: Namnet på databasen som ska övervakas
  • COSMOS_CONTAINER_NAME: Namnet på containern som ska övervakas

Dessa miljövariabler skapas åt dig både i Azure (funktionsappinställningar) och lokalt (local.settings.json) under åtgärden azd provision .

Du kan granska koden som definierar Azure Cosmos DB-utlösaren i CosmosTrigger.cs-projektfilen.

Du kan granska koden som definierar Azure Cosmos DB-utlösaren i cosmos_trigger.ts-projektfilen.

Du kan granska koden som definierar Azure Cosmos DB-utlösaren i function_app.py-projektfilen.

När du har granskat och verifierat funktionskoden lokalt är det dags att publicera projektet till Azure.

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.

  • 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.

    När kommandot har slutförts körs appen 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.

    Det här kommandot öppnar din nya funktionsapp i Azure-portalen.

  2. På fliken Översikt på huvudsidan väljer du funktionsappens namn och sedan fliken Loggar .

  3. NoSQL: Create Item Använd kommandot i Visual Studio Code för att lägga till ett dokument i containern igen som tidigare.

  4. Kontrollera igen att funktionen utlöses av en uppdatering i den övervakade containern.

Distribuera om koden

Du kan köra kommandot så många gånger som du behöver distribuera koduppdateringar till funktionsappen azd deploy .

Anmärkning

Distribuerade kodfiler skrivs alltid över av det senaste distributionspaketet.

Dina första svar på azd frågor och eventuella miljövariabler som genereras av azd lagras lokalt i din namngivna miljö. azd env get-values Använd kommandot för att granska alla variabler i din miljö som användes när du skapade Azure-resurser.

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.