Share via


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:

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:

  1. 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.

    De functie Miniatuur in de portal kiezen

  2. Selecteer Integratie, kies vervolgens de Event Grid-trigger en vervolgens Event Grid-abonnement maken.

    Navigeren naar Event Grid-abonnement toevoegen in de Azure Portal

  3. Gebruik de instellingen voor het gebeurtenisabonnement zoals die zijn opgegeven in de tabel onder de afbeelding.

    Een gebeurtenisabonnement maken voor de functie in Azure Portal

    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.
  4. Open het tabblad Filters en voer de volgende acties uit:

    1. Selecteer de optie Filteren van onderwerpen inschakelen.

    2. Voer voor Onderwerp begint met de volgende waarde in: /blobServices/default/containers/images/.

      Een filter opgeven voor het gebeurtenisabonnement

  5. 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 de images container. De functie past de afbeelding in grootte aan en voegt deze toe aan de container thumbnails.

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.

Schermopname van een gepubliceerde web-app met de naam ImageResizer in een browser voor de .NET v12 SDK.

Volgende stappen

Zie andere zelfstudies in de sectie Zelfstudies van de inhoudstabel .