Zelfstudie: Een bestand uploaden en analyseren met Azure Functions en Blob Storage
In deze zelfstudie leert u hoe u een afbeelding uploadt naar Azure Blob Storage en deze verwerkt met behulp van Azure Functions en Computer Vision. U leert ook hoe u Azure Function-triggers en -bindingen implementeert als onderdeel van dit proces. Samen analyseren deze services een geüploade afbeelding die tekst bevat, extraheert u de tekst eruit en slaat u de tekst vervolgens op in een databaserij voor latere analyse of andere doeleinden.
Azure Blob Storage is de zeer schaalbare oplossing voor objectopslag van Microsoft voor de cloud. Blob Storage is ontworpen voor het opslaan van afbeeldingen en documenten, het streamen van mediabestanden, het beheren van back-up- en archiefgegevens en nog veel meer. Meer informatie over Blob Storage vindt u op de overzichtspagina.
Azure Functions is een serverloze computeroplossing waarmee u kleine codeblokken kunt schrijven en uitvoeren als zeer schaalbare, serverloze, gebeurtenisgestuurde functies. Meer informatie over Azure Functions vindt u op de overzichtspagina.
In deze zelfstudie leert u het volgende:
- Afbeeldingen en bestanden uploaden naar Blob Storage
- Een Azure Function-gebeurtenistrigger gebruiken om gegevens te verwerken die zijn geüpload naar Blob Storage
- Azure AI-services gebruiken om een afbeelding te analyseren
- Gegevens schrijven naar Table Storage met behulp van Uitvoerbindingen van Azure Function
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Visual Studio 2022 geïnstalleerd.
Het opslagaccount en de container maken
De eerste stap is het maken van het opslagaccount waarin de geüploade blobgegevens worden opgeslagen. In dit scenario zijn dit afbeeldingen die tekst bevatten. Een opslagaccount biedt verschillende services, maar in deze zelfstudie worden Blob Storage en Table Storage gebruikt.
Meld u aan bij het Azure-portaal.
Zoek in de zoekbalk boven aan de portal naar Storage en selecteer het resultaat met het label Storage-accounts.
Selecteer op de pagina Opslagaccounts de optie + Maken in de linkerbovenhoek.
Voer op de pagina Een opslagaccount maken de volgende waarden in:
- Abonnement: kies uw gewenste abonnement.
- Resourcegroep: Selecteer Nieuwe maken en voer een naam in van
msdocs-storage-function
en kies OK. - Naam van opslagaccount: voer een waarde in van
msdocsstoragefunction
. De naam van het opslagaccount moet uniek zijn in Azure, dus mogelijk moet u getallen achter de naam toevoegen, zoalsmsdocsstoragefunction123
. - Regio: Selecteer de regio die zich het dichtst bij u bevindt.
- Prestaties: kies Standard.
- Redundantie: laat de standaardwaarde geselecteerd.
Selecteer Controleren en maken onderaan en Azure valideert de gegevens die u hebt ingevoerd. Zodra de instellingen zijn gevalideerd, kiest u Maken en Azure begint met het inrichten van het opslagaccount. Dit kan even duren.
De container maken
Nadat het opslagaccount is ingericht, selecteert u Ga naar resource. De volgende stap bestaat uit het maken van een opslagcontainer in het account voor het opslaan van geüploade afbeeldingen voor analyse.
Kies Containers in het navigatiedeelvenster.
Selecteer + Container bovenaan op de pagina Containers. Voer in het deelvenster Dia-out een naam van afbeeldingsanalyse in en zorg ervoor dat het openbare toegangsniveau is ingesteld op Blob (alleen anonieme leestoegang voor blobs). Selecteer vervolgens Maken.
De nieuwe container wordt weergegeven in de lijst met containers.
De verbindingsreeks ophalen
De laatste stap is het ophalen van onze verbindingsreeks voor het opslagaccount.
Selecteer toegangssleutels in het linkernavigatievenster.
Selecteer Sleutels weergeven op de pagina Toegangssleutels. Kopieer de waarde van de verbindingsreeks onder de sectie key1 en plak deze ergens voor later gebruik. U moet ook een notitie maken van de naam
msdocsstoragefunction
van het opslagaccount voor later gebruik.
Deze waarden zijn nodig wanneer we onze Azure-functie moeten verbinden met dit opslagaccount.
De Computer Vision-service maken
Maak vervolgens het Computer Vision-serviceaccount waarmee de geüploade bestanden worden verwerkt. Computer Vision maakt deel uit van Azure AI-services en biedt diverse functies voor het extraheren van gegevens uit afbeeldingen. Meer informatie over Computer Vision vindt u op de overzichtspagina.
Zoek in de zoekbalk boven aan de portal naar Computer en selecteer het resultaat met het label Computer Vision.
Selecteer + Maken op de computer vision-pagina.
Voer op de pagina Computer Vision maken de volgende waarden in:
- Abonnement: kies uw gewenste abonnement.
- Resourcegroep: gebruik de
msdocs-storage-function
resourcegroep die u eerder hebt gemaakt. - Regio: Selecteer de regio die zich het dichtst bij u bevindt.
- Naam: Voer een naam in van
msdocscomputervision
. - Prijscategorie: Kies Gratis als deze beschikbaar is, kies anders Standard S1.
- Schakel het selectievakje Verantwoordelijke AI-kennisgeving in als u akkoord gaat met de voorwaarden
Selecteer Beoordelen en maken onderaan. Het duurt even voordat Azure de gegevens valideert die u hebt ingevoerd. Zodra de instellingen zijn gevalideerd, kiest u Maken en Azure begint met het inrichten van de Computer Vision-service. Dit kan even duren.
Wanneer de bewerking is voltooid, selecteert u Ga naar resource.
De sleutels ophalen
Vervolgens moeten we de geheime sleutel en eindpunt-URL vinden voor de Computer Vision-service die moet worden gebruikt in onze Azure Function-app.
Selecteer sleutels en eindpunt op de overzichtspagina van Computer Vision.
Kopieer op de pagina Sleutels en Eindpunt de waarde sleutel 1 en de endPoint-waarden en plak deze ergens om later te gebruiken.
Het voorbeeldproject downloaden en configureren
De code voor de Azure-functie die in deze zelfstudie wordt gebruikt, vindt u in deze GitHub-opslagplaats. U kunt het project ook klonen met behulp van de onderstaande opdracht.
git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet
Met de voorbeeldprojectcode worden de volgende taken uitgevoerd:
- Haalt omgevingsvariabelen op om verbinding te maken met het opslagaccount en de Computer Vision-service
- Accepteert het geüploade bestand als blobparameter
- Analyseert de blob met behulp van de Computer Vision-service
- Verzendt de geanalyseerde afbeeldingstekst naar een nieuwe tabelrij met behulp van uitvoerbindingen
Nadat u het project hebt gedownload en geopend, zijn er enkele essentiële concepten die u kunt begrijpen in de onderstaande hoofdmethode Run
. De Azure-functie maakt gebruik van trigger- en uitvoerbindingen, die worden toegepast met behulp van kenmerken in de Run
methodehandtekening.
Het Table
kenmerk maakt gebruik van twee parameters. De eerste parameter geeft de naam van de tabel op voor het schrijven van de geparseerde afbeeldingstekstwaarde die door de functie wordt geretourneerd. Met de tweede Connection
parameter wordt een Table Storage-verbindingsreeks opgehaald uit de omgevingsvariabelen, zodat onze Azure-functie er toegang toe heeft.
Het BlobTrigger
kenmerk wordt gebruikt om onze functie te binden aan de uploadgebeurtenis in Blob Storage en levert die geüploade blob aan de Run
functie. De blobtrigger heeft twee eigen parameters: één voor de naam van de blobcontainer om te controleren op uploads en een voor de verbindingsreeks van ons opslagaccount.
// 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; }
}
Met deze code worden ook essentiële configuratiewaarden opgehaald uit omgevingsvariabelen, zoals het opslagaccount verbindingsreeks en de Computer Vision-sleutel. We voegen deze omgevingsvariabelen toe aan onze Azure Function-omgeving nadat deze is geïmplementeerd.
De ProcessImage
functie maakt ook gebruik van een tweede methode met de naam AnalyzeImage
, zie hieronder. Deze code maakt gebruik van het URL-eindpunt en de sleutel van ons Computer Vision-account om een aanvraag naar die server te doen om onze afbeelding te verwerken. De aanvraag retourneert alle tekst die in de afbeelding is gedetecteerd. Deze wordt vervolgens naar Table Storage geschreven met behulp van de uitvoerbinding op de Run
methode.
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();
}
Lokaal uitvoeren
Als u het project lokaal wilt uitvoeren, kunt u de omgevingsvariabelen vullen met behulp van het local.settings.json-bestand. Vul in dit bestand de waarden van de tijdelijke aanduidingen in met de waarden die u eerder hebt opgeslagen bij het maken van de Azure-resources.
Hoewel de Azure Function-code lokaal wordt uitgevoerd, maakt deze nog steeds verbinding met de liveservices in Azure in plaats van lokale emulators te gebruiken.
{
"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"
}
}
De code implementeren in Azure Functions
U bent nu klaar om onze toepassing te implementeren in Azure met behulp van Visual Studio. U kunt ook de Azure Functions-app in Azure tegelijk maken als onderdeel van het implementatieproces.
Als u wilt beginnen, selecteert u het projectknooppunt ProcessImage en selecteert u Publiceren.
Selecteer Azure in het dialoogvenster Publiceren en kies Volgende.
Selecteer azure-functie-app (Windows) of Azure-functie-app (Linux) in het volgende scherm en kies vervolgens opnieuw Volgende .
Zorg ervoor dat u in de stap van het Functions-exemplaar het abonnement kiest waarnaar u wilt implementeren. Selecteer vervolgens het groene + symbool aan de rechterkant van het dialoogvenster.
Er wordt een nieuw dialoogvenster geopend. Voer de volgende waarden in voor uw nieuwe functie-app.
- Naam: Voer msdocprocessimage of iets dergelijks in.
- Abonnementsnaam: kies het abonnement dat u wilt gebruiken.
- Resourcegroep: kies de
msdocs-storage-function
resourcegroep die u eerder hebt gemaakt. - Abonnementstype: Selecteer Verbruik.
- Locatie: Kies de regio die het dichtst bij u in de buurt ligt.
- Azure Storage: selecteer het opslagaccount dat u eerder hebt gemaakt.
Nadat u al deze waarden hebt ingevuld, selecteert u Maken. Visual Studio en Azure beginnen met het inrichten van de aangevraagde resources. Dit duurt enkele ogenblikken.
Zodra het proces is voltooid, selecteert u Voltooien om de dialoogvensterwerkstroom te sluiten.
Als laatste stap voor het implementeren van de Azure-functie selecteert u Publiceren in de rechterbovenhoek van het scherm. Het kan even duren voordat de functie wordt gepubliceerd. Zodra deze is voltooid, wordt uw toepassing uitgevoerd in Azure.
De services verbinden
De Azure-functie is geïmplementeerd, maar kan nog geen verbinding maken met ons opslagaccount en Computer Vision-services. De juiste sleutels en verbindingsreeks s moeten eerst worden toegevoegd aan de configuratie-instellingen van de Azure Functions-app.
Zoek boven in Azure Portal naar functie en selecteer functie-app in de resultaten.
Selecteer in het scherm Functie-app de functie-app die u hebt gemaakt in Visual Studio.
Selecteer Configuratie in het linkernavigatievenster op de overzichtspagina van de functie-app. Hiermee opent u een pagina waarin we verschillende typen configuratie-instellingen voor onze app kunnen beheren. Voorlopig zijn we geïnteresseerd in de sectie Toepassingsinstellingen .
De volgende stap bestaat uit het toevoegen van instellingen voor de naam van het opslagaccount en verbindingsreeks, de geheime sleutel van Computer Vision en het Computer Vision-eindpunt.
Selecteer + Nieuwe toepassingsinstelling op het tabblad Toepassingsinstellingen. Voer in de flyout die wordt weergegeven de volgende waarden in:
- Naam: Voer een waarde in van ComputerVisionKey.
- Waarde: Plak de Computer Vision-sleutel die u eerder hebt opgeslagen.
Klik op OK om deze instelling toe te voegen aan uw app.
Vervolgens herhalen we dit proces voor het eindpunt van onze Computer Vision-service met behulp van de volgende waarden:
- Naam: Voer een waarde in van ComputerVisionEndpoint.
- Waarde: Plak de eindpunt-URL die u eerder hebt opgeslagen.
Herhaal deze stap opnieuw voor de verbinding met het opslagaccount met behulp van de volgende waarden:
- Naam: Voer een waarde van StorageConnection in.
- Waarde: Plak de verbindingsreeks die u eerder hebt opgeslagen.
Herhaal dit proces ten slotte nog één keer voor de naam van het opslagaccount met behulp van de volgende waarden:
- Naam: Voer een waarde van StorageAccountName in.
- Waarde: Voer de naam in van het opslagaccount dat u hebt gemaakt.
Nadat u deze toepassingsinstellingen hebt toegevoegd, selecteert u Opslaan boven aan de configuratiepagina. Wanneer het opslaan is voltooid, kunt u ook op Vernieuwen drukken om ervoor te zorgen dat de instellingen worden opgehaald.
Alle vereiste omgevingsvariabelen om onze Azure-functie te verbinden met verschillende services zijn nu aanwezig.
Een afbeelding uploaden naar Blob Storage
U bent nu klaar om onze toepassing te testen! U kunt een blob uploaden naar de container en vervolgens controleren of de tekst in de afbeelding is opgeslagen in Table Storage.
Zoek eerst boven aan Azure Portal naar Opslag en selecteer opslagaccount. Selecteer op de pagina opslagaccount het account dat u eerder hebt gemaakt.
Selecteer vervolgens Containers in het linkernavigatievenster en navigeer vervolgens naar de ImageAnalysis-container die u eerder hebt gemaakt. Hier kunt u een testafbeelding rechtstreeks in de browser uploaden.
U vindt een aantal voorbeeldafbeeldingen die zijn opgenomen in de map afbeeldingen in de hoofdmap van het downloadbare voorbeeldproject of u kunt een van uw eigen afbeeldingen gebruiken.
Selecteer Uploaden bovenaan de pagina ImageAnalysis. Selecteer in de flyout die wordt geopend het mappictogram aan de rechterkant om een bestandsbrowser te openen. Kies de afbeelding die u wilt uploaden en selecteer vervolgens Uploaden.
Het bestand moet worden weergegeven in de blobcontainer. Vervolgens kunt u controleren of de upload de Azure-functie heeft geactiveerd en of de tekst in de afbeelding correct is geanalyseerd en opgeslagen in Table Storage.
Navigeer met behulp van de breadcrumbs boven aan de pagina naar een hoger niveau in uw opslagaccount. Zoek en selecteer Opslagbrowser in het linkernavigatievenster en selecteer vervolgens Tabellen.
Er moet nu een ImageText-tabel beschikbaar zijn. Klik op de tabel om een voorbeeld van de gegevensrijen in de tabel te bekijken. U ziet nu een vermelding voor de verwerkte afbeeldingstekst van onze upload. U kunt dit controleren met behulp van de tijdstempel of door de inhoud van de kolom Tekst weer te geven.
Gefeliciteerd U hebt een afbeelding verwerkt die is geüpload naar Blob Storage met behulp van Azure Functions en Computer Vision.
Resources opschonen
Als u deze toepassing niet meer gaat gebruiken, kunt u de resources verwijderen die u hebt gemaakt door de resourcegroep te verwijderen.
- Resourcegroepen selecteren in de hoofdnavigatie
- Selecteer de
msdocs-storage-function
resourcegroep in de lijst. - Selecteer de knop Resourcegroep verwijderen boven aan de overzichtspagina van de resourcegroep.
- Voer de naam van de resourcegroep msdocs-storage-function in het bevestigingsdialoogvenster in.
- Selecteer Verwijderen. Het verwijderen van de resourcegroep kan enkele minuten duren.