Självstudie: Ladda upp och analysera en fil med Azure Functions och Blob Storage

I den här självstudien får du lära dig hur du laddar upp en bild för att Azure Blob Storage och bearbeta den med hjälp av Azure Functions och Visuellt innehåll. Du får också lära dig hur du implementerar Azure Function-utlösare och bindningar som en del av den här processen. Tillsammans analyserar dessa tjänster en uppladdad bild som innehåller text, extraherar texten ur den och lagrar sedan texten på en databasrad för senare analys eller andra syften.

Azure Blob Storage är Microsofts enormt skalbara objektlagringslösning för molnet. Blob Storage är utformat för att lagra bilder och dokument, strömma mediefiler, hantera säkerhetskopierings- och arkivdata och mycket mer. Du kan läsa mer om Blob Storage på översiktssidan.

Azure Functions är en serverlös datorlösning som gör att du kan skriva och köra små kodblock som mycket skalbara, serverlösa, händelsedrivna funktioner. Du kan läsa mer om Azure Functions på översiktssidan.

I den här självstudien får du lära dig hur man:

  • Ladda upp bilder och filer till Blob Storage
  • Använda en Azure-funktionshändelseutlösare för att bearbeta data som laddats upp till Blob Storage
  • Använda Azure AI-tjänster för att analysera en bild
  • Skriva data till Table Storage med azure-funktionsutdatabindningar

Förutsättningar

Skapa lagringskontot och containern

Det första steget är att skapa lagringskontot som ska innehålla de uppladdade blobdata, som i det här scenariot blir bilder som innehåller text. Ett lagringskonto erbjuder flera olika tjänster, men i den här självstudien används Blob Storage och Table Storage.

Logga in på Azure-portalen.

  1. I sökfältet överst i portalen söker du efter Lagring och väljer resultatet med etiketten Lagringskonton.

  2. På sidan Lagringskonton väljer du + Skapa längst upp till vänster.

  3. På sidan Skapa ett lagringskonto anger du följande värden:

    • Prenumeration: Välj önskad prenumeration.
    • Resursgrupp: Välj Skapa ny och ange ett namn på msdocs-storage-functionoch välj sedan OK.
    • Lagringskontonamn: Ange värdet msdocsstoragefunction. Lagringskontonamnet måste vara unikt i Azure, så du kan behöva lägga till siffror efter namnet, till exempel msdocsstoragefunction123.
    • Region: Välj den region som är närmast dig.
    • Prestanda: Välj Standard.
    • Redundans: Låt standardvärdet vara markerat.

    En skärmbild som visar hur du skapar ett lagringskonto i Azure.

  4. Välj Granska + Skapa längst ned så validerar Azure den information som du angav. När inställningarna har verifierats väljer du Skapa så börjar Azure etablera lagringskontot, vilket kan ta en stund.

Skapa containern

  1. När lagringskontot har etablerats väljer du Gå till Resurs. Nästa steg är att skapa en lagringscontainer inuti kontot för att lagra uppladdade bilder för analys.

  2. I navigeringspanelen väljer du Containrar.

  3. På sidan Containrar väljer du + Container överst. I den utskjutande panelen anger du ett Namnimageanalysis och kontrollerar att den offentliga åtkomstnivån är inställd på Blob (endast anonym läsåtkomst för blobar). Välj sedan Skapa.

    En skärmbild som visar hur du skapar en ny lagringscontainer.

Du bör se att den nya containern visas i listan över containrar.

Hämta anslutningssträngen

Det sista steget är att hämta vår anslutningssträng för lagringskontot.

  1. I den vänstra navigeringspanelen väljer du Åtkomstnycklar.

  2. sidan Åtkomstnycklar väljer du Visa nycklar. Kopiera värdet för anslutningssträngen under avsnittet key1 och klistra in det här någonstans att använda för senare. Du vill också anteckna lagringskontots namn msdocsstoragefunction för senare.

    En skärmbild som visar hur du kommer åt lagringscontainern.

Dessa värden är nödvändiga när vi behöver ansluta vår Azure-funktion till det här lagringskontot.

Skapa Visuellt innehåll-tjänsten

Skapa sedan det Visuellt innehåll tjänstkonto som ska bearbeta våra uppladdade filer. Visuellt innehåll ingår i Azure AI-tjänster och erbjuder en mängd olika funktioner för att extrahera data från bilder. Du kan läsa mer om Visuellt innehåll på översiktssidan.

  1. I sökfältet överst i portalen söker du efter Dator och väljer resultatet visuellt innehåll.

  2. På sidan Visuellt innehåll väljer du + Skapa.

  3. På sidan Skapa Visuellt innehåll anger du följande värden:

    • Prenumeration: Välj önskad prenumeration.
    • Resursgrupp: Använd den msdocs-storage-function resursgrupp som du skapade tidigare.
    • Region: Välj den region som är närmast dig.
    • Namn: Ange i namnet msdocscomputervision.
    • Prisnivå: Välj Kostnadsfri om den är tillgänglig, annars väljer du Standard S1.
    • Markera rutan Ansvarig AI-meddelande om du godkänner villkoren

    En skärmbild som visar hur du skapar en ny Visuellt innehåll tjänst.

  4. Välj Granska + Skapa längst ned. Det tar en stund för Azure att verifiera den information som du angav. När inställningarna har verifierats väljer du Skapa så börjar Azure etablera Visuellt innehåll-tjänsten, vilket kan ta en stund.

  5. När åtgärden har slutförts väljer du Gå till Resurs.

Hämta nycklarna

Därefter måste vi hitta den hemliga nyckeln och slutpunkts-URL:en för Visuellt innehåll-tjänsten som ska användas i vår Azure-funktionsapp.

  1. Visuellt innehåll översiktssida väljer du Nycklar och slutpunkt.

  2. På sidan Nycklar och Slutpunkt kopierar du värdet Key 1 och EndPoint-värdena och klistrar in dem någonstans att använda för senare.

    En skärmbild som visar hur du hämtar nycklar och URL-slutpunkt för en Visuellt innehåll tjänst.

Ladda ned och konfigurera exempelprojektet

Koden för Azure-funktionen som används i den här självstudien finns på den här GitHub-lagringsplatsen. Du kan också klona projektet med hjälp av kommandot nedan.

git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet

Exempelprojektkoden utför följande uppgifter:

  • Hämtar miljövariabler för att ansluta till lagringskontot och Visuellt innehåll-tjänsten
  • Accepterar den uppladdade filen som en blobparameter
  • Analyserar bloben med hjälp av Visuellt innehåll-tjänsten
  • Skickar den analyserade bildtexten till en ny tabellrad med hjälp av utdatabindningar

När du har laddat ned och öppnat projektet finns det några viktiga begrepp att förstå i huvudmetoden Run som visas nedan. Azure-funktionen använder bindningar för utlösare och utdata, som tillämpas med hjälp av attribut för metodsignaturen Run .

Attributet Table använder två parametrar. Den första parametern anger namnet på tabellen för att skriva det tolkade bildtextvärdet som returneras av funktionen. Den andra Connection parametern hämtar en anslutningssträng för Table Storage från miljövariablerna så att vår Azure-funktion har åtkomst till den.

Attributet BlobTrigger används för att binda vår funktion till uppladdningshändelsen i Blob Storage och tillhandahåller den uppladdade bloben Run till funktionen. Blobutlösaren har två egna parametrar – en för namnet på blobcontainern som ska övervakas för uppladdningar och en för anslutningssträngen för vårt lagringskonto igen.

// Azure Function name and output Binding to Table Storage
[FunctionName("ProcessImageUpload")]
[return: Table("ImageText", Connection = "StorageConnection")]
// Trigger binding runs when an image is uploaded to the blob container below
public async Task<ImageContent> Run([BlobTrigger("imageanalysis/{name}", 
        Connection = "StorageConnection")]Stream myBlob, string name, ILogger log)
{
    // Get connection configurations
    string subscriptionKey = Environment.GetEnvironmentVariable("ComputerVisionKey");
    string endpoint = Environment.GetEnvironmentVariable("ComputerVisionEndpoint");
    string imgUrl = $"https://{ Environment.GetEnvironmentVariable("StorageAccountName")}
                        .blob.core.windows.net/imageanalysis/{name}";

    ComputerVisionClient client = new ComputerVisionClient(
        new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = endpoint };

    // Get the analyzed image contents
    var textContext = await AnalyzeImageContent(client, imgUrl);

    return new ImageContent { 
        PartitionKey = "Images",
        RowKey = Guid.NewGuid().ToString(), Text = textContext 
    };
}

public class ImageContent
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}

Den här koden hämtar även viktiga konfigurationsvärden från miljövariabler, till exempel anslutningssträngen för lagringskontot och Visuellt innehåll nyckeln. Vi lägger till dessa miljövariabler i vår Azure-funktionsmiljö när den har distribuerats.

Funktionen ProcessImage använder också en andra metod med namnet AnalyzeImage, som visas nedan. Den här koden använder URL-slutpunkten och nyckeln för vårt Visuellt innehåll-konto för att skicka en begäran till servern om att bearbeta avbildningen. Begäran returnerar all text som identifieras i bilden, som sedan skrivs till Table Storage med hjälp av utdatabindningen för Run metoden.

static async Task<string> ReadFileUrl(ComputerVisionClient client, string urlFile)
{
    // Analyze the file using Computer Vision Client
    var textHeaders = await client.ReadAsync(urlFile);
    string operationLocation = textHeaders.OperationLocation;
    Thread.Sleep(2000);
    
    // Complete code omitted for brevity, view in sample project
    
    return text.ToString();
}

Körs lokalt

Om du vill köra projektet lokalt kan du fylla i miljövariablerna med hjälp av filen local.settings.json. I den här filen fyller du i platshållarvärdena med de värden som du sparade tidigare när du skapade Azure-resurserna.

Även om Azure-funktionskoden körs lokalt ansluter den fortfarande till livetjänsterna i Azure i stället för att använda några lokala emulatorer.

{
    "IsEncrypted": false,
    "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "FUNCTIONS_WORKER_RUNTIME": "dotnet",
      "StorageConnection": "your-storage-account-connection-string",
      "StorageAccountName": "your-storage-account-name",
      "ComputerVisionKey": "your-computer-vision-key",
      "ComputerVisionEndPoint":  "your-computer-vision-endpoint"
    }
}

Distribuera koden till Azure Functions

Nu är du redo att distribuera vårt program till Azure med hjälp av Visual Studio. Du kan också skapa Azure Functions-appen i Azure samtidigt som du ingår i distributionsprocessen.

  1. Börja genom att välja projektnoden ProcessImage och sedan Publicera.

  2. På dialogrutan Publicera väljer du Azure och sedan Nästa.

    En skärmbild som visar hur du väljer Azure som distributionsmål.

  3. Välj Azure Function App (Windows) eller Azure Function App (Linux) på nästa skärm och välj sedan Nästa igen.

    En skärmbild som visar hur du väljer Azure Functions som ett specifikt distributionsmål.

  4. I steget Functions-instans ser du till att välja den prenumeration som du vill distribuera till. Välj sedan den gröna + symbolen till höger i dialogrutan.

  5. En ny dialogruta öppnas. Ange följande värden för din nya funktionsapp.

    • Namn: Ange msdocsprocessimage eller något liknande.
    • Prenumerationsnamn: Välj vilken prenumeration du vill använda.
    • Resursgrupp: Välj den msdocs-storage-function resursgrupp som du skapade tidigare.
    • Plantyp: Välj Förbrukning.
    • Plats: Välj den region som är närmast dig.
    • Azure Storage: Välj det lagringskonto som du skapade tidigare.

    En skärmbild som visar hur du skapar en ny funktionsapp i Azure.

  6. När du har fyllt i alla dessa värden väljer du Skapa. Visual Studio och Azure börjar etablera de begärda resurserna, vilket tar en stund att slutföra.

  7. När processen är klar väljer du Slutför för att stänga dialogarbetsflödet.

  8. Det sista steget för att distribuera Azure-funktionen är att välja Publicera längst upp till höger på skärmen. Det kan också ta en stund att publicera funktionen. När programmet är klart körs det på Azure.

Ansluta tjänsterna

Azure-funktionen har distribuerats, men den kan inte ansluta till vårt lagringskonto och Visuellt innehåll tjänster ännu. Rätt nycklar och anslutningssträngar måste först läggas till i konfigurationsinställningarna för Azure Functions-appen.

  1. Längst upp i Azure Portal söker du efter funktionen och väljer Funktionsapp i resultatet.

  2. På skärmen Funktionsapp väljer du den funktionsapp som du skapade i Visual Studio.

  3. På översiktssidan för funktionsappen väljer du Konfiguration i det vänstra navigeringsfältet. Då öppnas en sida där vi kan hantera olika typer av konfigurationsinställningar för vår app. För tillfället är vi intresserade av avsnittet Programinställningar .

  4. Nästa steg är att lägga till inställningar för lagringskontots namn och anslutningssträng, den Visuellt innehåll hemliga nyckeln och Visuellt innehåll slutpunkten.

  5. På fliken Programinställningar väljer du + Ny programinställning. I den utfällbara menyn som visas anger du följande värden:

    • Namn: Ange värdet ComputerVisionKey.
    • Värde: Klistra in den Visuellt innehåll nyckel som du sparade från tidigare.
  6. Klicka på OK för att lägga till den här inställningen i din app.

    En skärmbild som visar hur du lägger till en ny programinställning i en Azure-funktion.

  7. Nu ska vi upprepa den här processen för slutpunkten för vår Visuellt innehåll-tjänst med hjälp av följande värden:

    • Namn: Ange ett värde för ComputerVisionEndpoint.
    • Värde: Klistra in slutpunkts-URL:en som du sparade från tidigare.
  8. Upprepa det här steget igen för anslutningen till lagringskontot med hjälp av följande värden:

    • Namn: Ange värdet StorageConnection.
    • Värde: Klistra in anslutningssträngen som du sparade från tidigare.
  9. Upprepa slutligen den här processen en gång till för lagringskontots namn med hjälp av följande värden:

    • Namn: Ange värdet StorageAccountName.
    • Värde: Ange namnet på lagringskontot som du skapade.
  10. När du har lagt till de här programinställningarna måste du välja Spara överst på konfigurationssidan. När sparande har slutförts kan du även trycka på Uppdatera för att se till att inställningarna hämtas.

Alla nödvändiga miljövariabler för att ansluta vår Azure-funktion till olika tjänster finns nu på plats.

Ladda upp en avbildning till Blob Storage

Nu är du redo att testa vårt program! Du kan ladda upp en blob till containern och sedan kontrollera att texten i bilden har sparats i Table Storage.

  1. Leta först upp Lagring överst i Azure Portal och välj lagringskonto. På sidan lagringskonto väljer du det konto som du skapade tidigare.

  2. Välj sedan Containrar i det vänstra navigeringsfältet och navigera sedan till containern ImageAnalysis som du skapade tidigare. Härifrån kan du ladda upp en testbild direkt i webbläsaren.

    En skärmbild som visar hur du navigerar till en lagringscontainer.

  3. Du hittar några exempelbilder som ingår i avbildningsmappen i roten för det nedladdningsbara exempelprojektet, eller så kan du använda en egen.

  4. Längst upp på sidan ImageAnalysis väljer du Ladda upp. I den utfällbara menyn som öppnas väljer du mappikonen till höger för att öppna en filwebbläsare. Välj den bild som du vill ladda upp och välj sedan Ladda upp.

    En skärmbild som visar hur du laddar upp en blob till en lagringscontainer.

  5. Filen ska visas i blobcontainern. Sedan kan du kontrollera att uppladdningen utlöste Azure-funktionen och att texten i bilden har analyserats och sparats i Table Storage korrekt.

  6. Med hjälp av sökvägarna överst på sidan navigerar du upp en nivå i ditt lagringskonto. Leta upp och välj Lagringswebbläsaren i det vänstra navigeringsfältet och välj sedan Tabeller.

  7. En ImageText-tabell bör nu vara tillgänglig. Klicka på tabellen för att förhandsgranska dataraderna i den. Du bör se en post för den bearbetade bildtexten i vår uppladdning. Du kan kontrollera detta med hjälp av tidsstämpeln eller genom att visa innehållet i kolumnen Text .

    En skärmbild som visar en textpost i Azure Table Storage.

Grattis! Du lyckades bearbeta en avbildning som laddades upp till Blob Storage med hjälp av Azure Functions och Visuellt innehåll.

Rensa resurser

Om du inte kommer att fortsätta att använda det här programmet kan du ta bort de resurser som du skapade genom att ta bort resursgruppen.

  1. Välj Resursgrupper i huvudnavigering
  2. msdocs-storage-function Välj resursgruppen i listan.
  3. Välj knappen Ta bort resursgrupp överst på översiktssidan för resursgruppen.
  4. Ange resursgruppens namn msdocs-storage-function i bekräftelsedialogrutan.
  5. Välj ta bort. Det kan ta några minuter att ta bort resursgruppen.