Zelfstudie: Formaat van geüploade afbeeldingen automatisch wijzigen met Event Grid
Azure Event Grid is een gebeurtenisservice voor de cloud. Met Event Grid kunt u abonnementen nemen op gebeurtenissen die worden gegenereerd door Azure-services of resources van derden.
Deze zelfstudie is deel twee in een reeks zelfstudies over Azure Storage en is een vervolg op de vorige zelfstudie over Storage met als doel om zonder tussenkomst van een server automatisch miniaturen te genereren met behulp van Azure Event Grid en Azure Functions. Event Grid zorgt ervoor dat Azure Functions kan reageren op gebeurtenissen van Azure Blob-opslag om miniaturen van geüploade afbeeldingen te genereren. Een gebeurtenisabonnement wordt gekoppeld aan gebeurtenis waarmee Blob-opslag wordt gemaakt. Wanneer er een blob wordt toegevoegd aan een specifieke Blob-opslagcontainer, wordt er een functie-eindpunt aangeroepen. Aan de hand van gegevens die vanuit Event Grid worden doorgegeven aan de functiebinding, wordt er toegang verkregen tot de blob en wordt de miniatuurafbeelding gegenereerd.
Met behulp van de Azure CLI en Azure Portal kunt u de functionaliteit voor formaatwijziging toevoegen aan een bestaande app voor het uploaden van afbeeldingen.
In deze zelfstudie leert u het volgende:
- Een Azure Storage-account maken
- Serverloze code implementeren met behulp van Azure Functions
- Een gebeurtenisabonnement voor Blob-opslag maken in Event Grid
Vereisten
Notitie
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Vereisten voor het voltooien van deze zelfstudie:
- U hebt een Azure-abonnement nodig. Deze zelfstudie werkt niet met het gratis abonnement.
- U moet de vorige zelfstudie over blobopslag hebben voltooid: Afbeeldingsgegevens uploaden in de cloud met Azure Storage.
Een Azure Storage-account maken
Voor Azure Functions is een algemeen opslagaccount vereist. Naast het Blob Storage-account dat u in de vorige zelfstudie hebt gemaakt, maakt u een afzonderlijk algemeen opslagaccount in de resourcegroep. Namen van opslagaccounts moeten tussen 3 en 24 tekens lang zijn en mogen alleen cijfers en kleine letters bevatten.
Stel variabelen in voor de naam van de resourcegroep die u in de vorige zelfstudie hebt gemaakt, de locatie voor resources die moeten worden gemaakt en de naam van het nieuwe opslagaccount dat Azure Functions vereist. Maak vervolgens het opslagaccount voor de Azure-functie.
Gebruik de opdracht New-AzStorageAccount.
Geef een naam op voor de resourcegroep.
$resourceGroupName="myResourceGroup"Geef de locatie voor het opslagaccount op.
$location="eastus"Geef de naam op van het opslagaccount dat door de functie moet worden gebruikt.
$functionstorage="<name of the storage account to be used by the function>"Een opslagaccount maken.
New-AzStorageAccount -ResourceGroupName $resourceGroupName -AccountName $functionstorage -Location $location -SkuName Standard_LRS -Kind StorageV2
Een functie-app maken
U moet een functie-app hebben die als host fungeert voor de uitvoering van uw functie. De functie-app biedt een omgeving waarin uw functiecode zonder server kan worden uitgevoerd.
Geef de naam van uw eigen unieke functie-app op in de volgende opdracht. De naam van de functie-app wordt gebruikt als het standaard DNS-domein voor de functie-app. Om die reden moet de naam uniek zijn in alle apps in Azure.
Geef een naam op voor de functie-app die moet worden gemaakt en maak vervolgens de Azure-functie.
Maak een functie-app met behulp van de opdracht New-AzFunctionApp.
Geef een naam op voor de functie-app.
$functionapp="<name of the function app>"Een functie-app maken.
New-AzFunctionApp -Location $location -Name $functionapp -ResourceGroupName $resourceGroupName -Runtime PowerShell -StorageAccountName $functionstorage
Nu moet u de functie-app configureren om verbinding te maken met het Blob-opslagaccount dat u in de vorige zelfstudie hebt gemaakt.
De functie-app configureren
De functie heeft referenties nodig voor het Blob Storage-account, dat wordt toegevoegd aan de toepassingsinstellingen van de functie-app met behulp van de opdracht az functionapp config appsettings set of de opdracht Update-AzFunctionAppSetting.
storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName --name $blobStorageAccount --query connectionString --output tsv)
az functionapp config appsettings set --name $functionapp --resource-group $resourceGroupName --settings "AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2 FUNCTIONS_WORKER_RUNTIME=dotnet"
$storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName --name $blobStorageAccount --query connectionString --output tsv)
Update-AzFunctionAppSetting -Name $functionapp -ResourceGroupName $resourceGroupName -AppSetting @{AzureWebJobsStorage=$storageConnectionString; THUMBNAIL_CONTAINER_NAME=thumbnails; THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2; 'FUNCTIONS_WORKER_RUNTIME'='dotnet'}
De instelling FUNCTIONS_EXTENSION_VERSION=~2 zorgt ervoor dat de functie-app wordt uitgevoerd met versie 2.x van de runtime van Azure Functions.
U kunt nu een codeproject van Functions implementeren naar deze functie-app.
De functiecode implementeren
De C#-voorbeeldfunctie van resize is beschikbaar op GitHub. Implementeer dit codeproject naar de functie-app met behulp van de opdracht az functionapp deployment source config.
az functionapp deployment source config --name $functionapp --resource-group $resourceGroupName --branch master --manual-integration --repo-url https://github.com/Azure-Samples/function-image-upload-resize
De functie om afbeeldingen in grootte aan te passen wordt geactiveerd door HTTP-aanvragen die vanaf de Event Grid-service worden verzonden. U kunt Event Grid laten weten dat u deze meldingen bij de URL van uw functie wilt ontvangen door een gebeurtenisabonnement te maken. Voor deze zelfstudie abonneert u zich op gebeurtenissen die door een blob zijn gemaakt.
De gegevens die aan de functie worden doorgegeven in de Event Grid-melding bevatten de URL van de blob. Die URL is op zijn beurt doorgegeven aan de invoerbinding om de geüploade installatiekopie uit de Blob-opslag op te halen. De functie genereert een miniatuurafbeelding en de resulterende stroom wordt weggeschreven naar een afzonderlijke container in de Blob-opslag.
Dit project gebruikt EventGridTrigger als het type trigger. Het wordt aangeraden om de trigger van Event Grid te gebruiken in plaats van algemene HTTP-triggers. Functie-triggers van Event Grid worden namelijk automatisch gevalideerd. Bij gebruik van algemene HTTP-triggers moet u een validatie-antwoord implementeren.
Als u meer wilt leren over deze functie, bekijk dan de bestanden function.json en run.csx.
Het codeproject van Functions wordt rechtstreeks vanuit de openbare opslagplaats met voorbeelden geïmplementeerd. Zie Doorlopende implementatie voor Azure Functions voor meer informatie over implementatieopties voor Azure Functions.
Een gebeurtenisabonnement maken
Een gebeurtenisabonnement geeft aan welke door de provider gegenereerde gebeurtenissen u naar een bepaald eindpunt wilt versturen. In dit geval wordt het eindpunt bepaald door de functie. Gebruik de volgende stappen om in Azure Portal een gebeurtenisabonnement te maken die meldingen aan uw functie verzendt:
Zoek in de Azure Portal bovenaan de pagina naar
Function App, selecteer het kies de functie-app die u zojuist hebt gemaakt. Selecteer Functies en kies de functie Miniatuur.
Selecteer Integratie, kies vervolgens de Event Grid-trigger en vervolgens Event Grid-abonnement maken.
Gebruik de instellingen voor het gebeurtenisabonnement zoals die zijn opgegeven in de tabel onder de afbeelding.

Instelling Voorgestelde waarde Beschrijving Naam imageresizersub De naam voor het nieuwe gebeurtenisabonnement. Onderwerptype Opslagaccounts Kies de provider voor de gebeurtenissen van het opslagaccount. Abonnement Uw Azure-abonnement Uw huidige Azure-abonnement is standaard geselecteerd. Resourcegroep myResourceGroup Selecteer Bestaande gebruiken en kies de resourcegroep die u in deze zelfstudie hebt gebruikt. Resource Uw Blob-opslagaccount Kies het Blob-opslagaccount dat u hebt gemaakt. Naam van systeemonderwerp imagestoragesystopic Geef een naam op voor het systeemonderwerp. Zie Overzicht van systeemonderwerpen voor meer informatie over systeemonderwerpen. Gebeurtenistypen BlobCreated Schakel alle typen uit behalve BlobCreated. Alleen gebeurtenistypen van Microsoft.Storage.BlobCreatedworden doorgegeven aan de functie.Eindpunttype automatisch gegenereerd Vooraf gedefinieerd als Azure-functie. Eindpunt automatisch gegenereerd Naam van de functie. In dit geval is deze Miniatuur. Open het tabblad Filters en voer de volgende acties uit:
Selecteer de optie Filteren van onderwerpen inschakelen.
Voer bij Onderwerp begint met de volgende waarde in: /blobServices/default/containers/images/.

Selecteer Maken om het gebeurtenisabonnement toe te voegen. Er wordt een gebeurtenisabonnement gemaakt die de functie
Thumbnailactiveert op het moment dat er een blob wordt toegevoegd aan de containerimages. De functie past de afbeelding in grootte aan en voegt deze toe aan de containerthumbnails.
De services in de back-end zijn nu geconfigureerd. Dit betekent dat u de functionaliteit voor het aanpassen van het formaat van afbeeldingen kunt gaan testen in de voorbeeld-web-app.
De voorbeeld-app testen
U kunt de formaatwijziging door de web-app testen door naar de URL van de gepubliceerde app te gaan. De standaard-URL van de web-app is https://<web_app>.azurewebsites.net.
Klik ergens in het gebied Foto's uploaden om een bestand te selecteren en te uploaden. U kunt ook een foto naar dit gebied slepen.
Zodra de geüploade afbeelding is verdwenen, ziet u een kopie van de geüploade afbeelding in de carrousel Gegenereerde miniaturen. Het formaat van deze afbeelding werd gewijzigd door de functie, waarna de afbeelding werd toegevoegd aan de container thumbnails en gedownload door de webclient.

Volgende stappen
In deze zelfstudie heeft u het volgende geleerd:
- Een algemene Azure Storage-account maken
- Serverloze code implementeren met behulp van Azure Functions
- Een gebeurtenisabonnement voor Blob-opslag maken in Event Grid
Ga naar deel drie van de reeks met zelfstudies over Azure Storage om te leren hoe u de toegang tot het opslagaccount beveiligt.
- Zie Een inleiding tot Azure Event Grid voor meer informatie over Event Grid.
- Zie Een functie maken die kan worden geïntegreerd met Azure Logic Apps als u nog een zelfstudie wilt volgen waarin Azure Functions wordt gebruikt.