Zelfstudie Stap 2: Het formaat van geüploade afbeeldingen automatiseren met behulp van Event Grid
Deze zelfstudie breidt de zelfstudie Afbeeldingsgegevens uploaden in de cloud uit met Azure Storage om serverloze automatische miniatuurgeneratie toe te voegen met behulp van Azure Event Grid en Azure Functions. Dit is de werkstroom op hoog niveau:
In deze zelfstudie voert u de volgende stappen uit:
- Een Azure Storage-account maken
- Een functie-app maken, configureren en implementeren
- Een gebeurtenisabonnement maken voor opslagevenementen
- De voorbeeld-app testen
Vereisten
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. Maak naast het Blob Storage-account dat u in de vorige zelfstudie hebt gemaakt, 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 op 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 az storage account create .
Notitie
Gebruik de volgende opdrachten in de Bash-shell van de Cloud Shell. Gebruik de vervolgkeuzelijst in de linkerbovenhoek van de Cloud Shell om zo nodig over te schakelen naar de Bash-shell.
Voer de volgende opdrachten uit om een Azure-opslagaccount te maken.
functionstorage="funcstorage$RANDOM"
az storage account create --name $functionstorage --location $region --resource-group $rgName --sku Standard_LRS --kind StorageV2 --allow-blob-public-access true
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.
Een functie-app maken met behulp van de opdracht az functionapp create.
functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4
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. Deze worden toegevoegd aan de toepassingsinstellingen van de functie-app met behulp van de opdracht az functionapp config appsettings set of Update-AzFunctionAppSetting .
storageConnectionString=$(az storage account show-connection-string --resource-group $rgName --name $blobStorageAccount --query connectionString --output tsv)
az functionapp config appsettings set --name $functionapp --resource-group $rgName --settings 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 $rgName --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 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 de functie-app die u hebt gemaakt, selecteer
Function App
en kies deze. 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 Storage-account waarin afbeeldingen worden opgeslagen, niet het account dat wordt gebruikt door de Azure-functie-app. 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.BlobCreated
worden 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 voor Onderwerp begint met de volgende waarde in: /blobServices/default/containers/images/.
Selecteer Maken om het gebeurtenisabonnement toe te voegen om een gebeurtenisabonnement te maken waarmee de
Thumbnail
functie wordt geactiveerd wanneer een blob wordt toegevoegd aan deimages
container. 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
.
Selecteer 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
Zie andere zelfstudies in de sectie Zelfstudies van de inhoudstabel .