Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten använder du Visual Studio Code för att skapa en app som svarar på händelser i en Blob Storage-container. När du har testat koden lokalt med hjälp av en emulator distribuerar du den till en ny serverlös funktionsapp som körs i en Flex Consumption-plan i Azure Functions.
Projektet 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.
Den här artikeln stöder version 4 av Node.js programmeringsmodellen för Azure Functions.
Den här artikeln stöder version 2 av Python-programmeringsmodellen för Azure Functions.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
Visual Studio Code på någon av plattformarna som stöds.
Azure Functions-tillägget för Visual Studio Code. Det här tillägget kräver Azure Functions Core Tools. När det här verktyget inte är tillgängligt lokalt försöker tillägget installera det med hjälp av ett paketbaserat installationsprogram. Du kan också installera eller uppdatera Core Tools-paketet genom att köra
Azure Functions: Install or Update Azure Functions Core Toolsfrån kommandopaletten. Om du inte har npm eller Homebrew installerat på den lokala datorn måste du i stället installera eller uppdatera Core Tools manuellt.
C#-tillägg för Visual Studio Code.
Java Development Kit, version 8, 11, 17 eller 21 (Linux).
Apache Maven, version 3.0 eller senare.
-
Node.js 18.x eller senare. Använd kommandot
node --versionför att kontrollera din version.
Python-versioner som stöds av Azure Functions. Mer information finns i Installera Python.
- Azure Developer CLI-tillägget för Visual Studio Code.
REST-klienttillägg eller ett motsvarande REST-verktyg som du använder för att köra HTTP-begäranden på ett säkert sätt.
Initiera projektet
azd init Använd kommandot från kommandopaletten för att skapa ett lokalt Azure Functions-kodprojekt från en mall.
Öppna en mapp eller arbetsyta i Visual Studio Code där du vill skapa projektet.
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
azdinitierar den aktuella mappen eller arbetsytan.
När du uppmanas, välj Välj en mall och sök sedan efter och välj
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.När du uppmanas i terminalen anger du ett unikt miljönamn, till exempel
blobevents-dotnet.Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan.
När du uppmanas, välj Välj en mall och sök sedan efter och välj
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.När du uppmanas i terminalen anger du ett unikt miljönamn, till exempel
blobevents-python.Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan.
När du uppmanas, välj Välj en mall och sök sedan efter och välj
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.När du uppmanas till det anger du ett unikt miljönamn, till exempel
blobevents-typescript.Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan.
När du uppmanas, välj Välj en mall och sök sedan efter och välj
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.När du uppmanas till det anger du ett unikt miljönamn, till exempel
blobevents-java.Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan.
När du uppmanas, välj Välj en mall och sök sedan efter och välj
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.När du uppmanas till det anger du ett unikt miljönamn, till exempel
blobevents-powershell.Det här kommandot hämtar projektfilerna från malllagringsplatsen och initierar projektet i den aktuella mappen eller arbetsytan.
I azdbehåller miljön 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.
Lägg till filen local.settings.json
Funktionen kräver filen local.settings.json för att konfigurera värddatorn när den körs lokalt.
Kör det här kommandot för att gå till appmappen
src:cd src
Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Skapa en fil med namnet local.settings.json i
srcmappen som innehåller dessa JSON-data:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
Skapa och aktivera en virtuell miljö
I mappen src kör du dessa kommandon för att skapa och aktivera en virtuell miljö med namnet .venv:
python3 -m venv .venv
source .venv/bin/activate
Om Python inte installerar venv-paketet på Linux-distributionen kör du följande kommando:
sudo apt-get install python3-venv
Konfigurera lokal lagringsemulator
Använd Azurite-emulatorn för att köra kodprojektet lokalt innan du skapar och använder Azure-resurser.
Om du inte redan har gjort det installerar du Azurite.
Tryck på F1. I kommandopaletten söker du efter och kör kommandot
Azurite: Startför att starta den lokala lagringsemulatorn.I Azure-området expanderar du arbetsytoranslutna lagringskonton, högerklickar (Ctrl-klickar på Mac) på >, väljer Skapa blobcontainer... och skapar de två bloblagringscontainrarna i den lokala emulatorn:
-
unprocessed-pdf: container som utlösaren övervakar för lagringshändelser. -
processed-pdf: container där funktionen skickar bearbetade blobar som utdata.
-
Expandera Blobcontainrar, högerklicka (Ctrl-klicka på Mac) unprocessed-pdf, välj Ladda upp filer..., tryck på Retur för att acceptera rotkatalogen och ladda upp PDF-filerna från projektmappen
data.
När du kör lokalt kan du använda REST för att utlösa funktionen genom att simulera funktionen som tar emot ett meddelande från en händelseprenumeration.
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 med hjälp av Azurite-emulatorn. Miljövariabeln PDFProcessorSTORAGE definierar anslutningen till lagringskontot, som också anges till "UseDevelopmentStorage=true" i local.settings.json-filen när den körs lokalt.
Kör det här kommandot från projektmappen
srci en terminal eller kommandotolk:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startNär Functions host startar skriver den namnet på triggern och typ av trigger till terminalutdata. I Functions innehåller projektrotmappen den host.json filen.
När Core Tools fortfarande körs i Terminal öppnar
test.httpdu filen i projektet och väljer Skicka begäran för att utlösaProcessBlobUploadfunktionen genom att skicka en testblobhändelse till blobhändelsens webhook.Det här steget simulerar mottagandet av en händelse från en händelseprenumeration när den körs lokalt, och du bör se den begärda och bearbetade filinformationen som skrivits i loggarna. Om du inte använder REST-klienten måste du använda ett annat säkert REST-verktyg för att anropa slutpunkten med nyttolasten i
test.http.I området Arbetsyta för blobcontainern expanderar du processed-pdf och kontrollerar att funktionen bearbetade PDF-filen och kopierade den med ett
processed-prefix.När du är klar trycker du på Ctrl+C i terminalfönstret för att stoppa
func.exevärdprocessen.
Granska koden (valfritt)
Du kan granska koden som definierar Event Grid-blobutlösaren i ProcessBlobUpload.cs-projektfilen. Funktionen visar hur du:
- Använd
BlobTriggermedSource = BlobTriggerSource.EventGridför bearbetning i nära realtid - Bind till
BlobClientför källbloben ochBlobContainerClientför målet - Bearbeta blobinnehåll och kopiera det till en annan container med hjälp av strömmar
Du kan granska koden som definierar Event Grid-blobutlösaren i function_app.py-projektfilen. Funktionen visar hur du:
- Använd
@app.blob_triggermedsource="EventGrid"för bearbetning i nära realtid - Få åtkomst till blobinnehåll med hjälp av parametern
InputStream - Kopiera bearbetade filer till målcontainern med hjälp av Azure Storage SDK
Du kan granska koden som definierar Event Grid-blobutlösaren i processBlobUpload.ts-projektfilen. Funktionen visar hur du:
- Använd
app.storageBlob()medsource: 'EventGrid'för bearbetning i nära realtid - Få åtkomst till blobinnehåll med hjälp av Node.js Azure Storage SDK
- Bearbeta och kopiera filer till målcontainern asynkront
Du kan granska koden som definierar Event Grid-blobutlösaren i ProcessBlobUpload.java-projektfilen. Funktionen visar hur du:
- Använd
@BlobTriggermedsource = "EventGrid"för bearbetning i nära realtid - Få åtkomst till blobinnehåll med hjälp av
BlobInputStreamparametern - Kopiera bearbetade filer till målcontainern med Hjälp av Azure Storage SDK för Java
Du kan granska koden som definierar Event Grid-blobutlösaren i projektfilen ProcessBlobUpload/run.ps1 och motsvarande function.json. Funktionen visar hur du:
- Konfigurera blobutlösare med
"source": "EventGrid"i function.json för bearbetning i nära realtid - Få åtkomst till blobinnehåll med PowerShell Azure Storage-cmdletar
- Bearbeta och kopiera filer till målcontainern med hjälp av Azure PowerShell-moduler
När du har granskat och verifierat funktionskoden lokalt är det dags att publicera projektet till Azure.
Skapa Azure-resurser och distribuera
azd up Använd kommandot för att skapa funktionsappen i en Flex Consumption-plan tillsammans med andra nödvändiga Azure-resurser, inklusive händelseprenumerationen. När infrastrukturen är klar azd distribuerar du även projektkoden till den nya funktionsappen i Azure.
I Visual Studio Code trycker du på F1 för att öppna kommandopaletten. Sök efter och kör kommandot
Azure Developer CLI (azd): Sign In with Azure Developer CLIoch logga sedan in med ditt Azure-konto.I projektroten trycker du på F1 för att öppna kommandopaletten. Sök efter och kör kommandot
Azure Developer CLI (azd): Provision and Deploy (up)för att skapa nödvändiga Azure-resurser och distribuera koden.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 skapa dina resurser. Miljönamn En miljö som används för att upprätthålla en unik distributionskontext för din app. Azure-lokalisering 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. Kommandot
azd upanvänder dina svar till 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 Storage-konto med blobcontainrar
- Application Insights (rekommenderas)
- Åtkomstprinciper och roller för ditt konto
- Event Grid-prenumeration för blobhändelser
- Tjänst-till-tjänst-anslutningar med hjälp av hanterade identiteter (i stället för lagrade anslutningssträngar)
När kommandot har slutförts körs appen i Azure med en händelseprenumeration konfigurerad för att utlösa funktionen när blobar läggs till i containern
unprocessed-pdf.Anteckna
AZURE_STORAGE_ACCOUNT_NAMEochAZURE_FUNCTION_APP_NAMEi resultatet. De här namnen är unika för ditt lagringskonto respektive din funktionsapp i Azure.
Verifiera den implementerade funktionen
Tryck på F1 i Visual Studio Code. I kommandopaletten söker du efter och kör kommandot
Azure Storage: Upload Files.... Acceptera rotkatalogen och ladda som tidigare upp en eller flera PDF-filer från projektmappendata.När du uppmanas till det väljer du namnet på ditt nya lagringskonto (från
AZURE_STORAGE_ACCOUNT_NAME). Välj Blob-behållare>unprocessed-pdf.Tryck på F1. I kommandopaletten söker du efter och kör kommandot
Azure Storage: Open in Explorer. Välj samma lagringskonto >blobcontainrar>processed-pdf och sedan Öppna i nytt fönster.I Utforskaren kontrollerar du att PDF-filerna som du laddade upp bearbetades av funktionen. Utdata skrivs till containern
processed-pdfmed ettprocessed-prefix.
Event Grid-blobutlösaren bearbetar filer inom några sekunder efter uppladdningen. Den här hastigheten visar metodens nästan realtidskapabiliteter jämfört med traditionella polling-baserade blobutlösare.
Distribuera om koden
azd up Kör kommandot så många gånger du behöver både etablera dina Azure-resurser och distribuera koduppdateringar till funktionsappen.
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 använder du det här kommandot för att ta bort funktionsappen och dess relaterade resurser från Azure. Den här åtgärden hjälper dig att 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.