Självstudie steg 2: Automatisera storleksändringen av uppladdade bilder med Event Grid
Den här självstudien utökar självstudien Ladda upp bilddata i molnet med Azure Storage för att lägga till serverlös automatisk generering av miniatyrbilder med Azure Event Grid och Azure Functions. Här är det övergripande arbetsflödet:
I den här självstudien gör du följande:
- Skapa ett Azure Storage-konto
- Skapa, konfigurera och distribuera en funktionsapp
- Skapa en händelseprenumeration på lagringshändelser
- Testa exempelappen
Förutsättningar
För att slutföra den här kursen behöver du:
- Du behöver en Azure-prenumeration. Den här självstudien fungerar inte med den kostnadsfria prenumerationen.
- Du måste ha slutfört föregående Blob Storage-självstudie: Överför bilddata i molnet med Azure Storage.
Skapa ett Azure Storage-konto
För Azure Functions krävs ett allmänt lagringskonto. Förutom bloblagringskontot som du skapade i föregående självstudie skapar du ett separat allmänt lagringskonto i resursgruppen. Namnet på ett lagringskonto måste vara mellan 3 och 24 tecken långt och får endast innehålla siffror och gemener.
Ange variabler som ska innehålla namnet på resursgruppen som du skapade i föregående självstudie, platsen för resurser som ska skapas och namnet på det nya lagringskontot som Azure Functions kräver. Skapa sedan lagringskontot för Azure-funktionen.
Använd kommandot az storage account create .
Anteckning
Använd följande kommandon i Bash-gränssnittet i Cloud Shell. Använd listan med drunkningsfall längst upp till vänster i Cloud Shell för att växla till Bash-gränssnittet om det behövs.
Kör följande kommandon för att skapa ett Azure Storage-konto.
functionstorage="funcstorage$RANDOM"
az storage account create --name $functionstorage --location $region --resource-group $rgName --sku Standard_LRS --kind StorageV2 --allow-blob-public-access true
Skapa en funktionsapp
Du måste ha en funktionsapp som värd för körning av funktionen. Funktionsappen är en miljö för serverfri körning av funktionskoden. I följande kommando anger du ditt unika namn på funktionsappen. Funktionsappens namn används som DNS-standarddomän för funktionsappen. Därför måste namnet vara unikt bland alla appar i Azure. Ange ett namn för funktionsappen som ska skapas och skapa sedan Azure-funktionen.
Skapa en funktionsapp med kommandot az functionapp create.
functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4
Konfigurera nu funktionsappen så att den ansluter till bloblagringskontot som du skapade i föregående självstudie.
Konfigurera funktionsappen
Funktionen behöver autentiseringsuppgifter för Blob Storage-kontot, som läggs till i programinställningarna för funktionsappen med hjälp av antingen az functionapp config appsettings set eller kommandot 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
Inställningen FUNCTIONS_EXTENSION_VERSION=~2
får funktionsappen att köra version 2.x av Azure Functions-körningen. Nu kan du distribuera ett funktionskodprojekt till den här funktionsappen.
Distribuera funktionskoden
Storleksändringsfunktionen för C#-exemplet finns tillgängligt på GitHub. Distribuera kodprojektet till funktionsappen med kommandot 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
Funktionen för att ändra bildstorlek utlöses av HTTP-förfrågningar som skickats till den från tjänsten Event Grid. Du kan ange för Event Grid att du vill hämta meddelandena via funktionens URL genom att skapa en händelseprenumeration. I den här självstudien prenumererar du på blob-skapade händelser.
Data som skickas till funktionen från Event Grid-meddelandet inkluderar blobens URL. URL:en skickas sedan till indatabindningen för att hämta den uppladdade avbildningen från Blob Storage. Funktionen genererar en miniatyrbild och skriver den resulterande dataströmmen till en separat container i Blob Storage.
I det här projektet används EventGridTrigger
som typ av utlösare. Det är bättre att använda Event Grid-utlösaren än någon allmän HTTP-utlösare. Event Grid verifierar automatiskt Event Grid Function-utlösare. Med allmänna HTTP-utlösare måste du implementera verifieringssvaret.
Mer information om den här funktionen finns i filerna function.json och run.csx.
Funktionsprojektkoden distribueras direkt från den offentliga exempeldatabasen. Mer information om distributionsalternativen för Azure Functions finns i Kontinuerlig distribution för Azure Functions.
Skapa en händelseprenumeration
En händelseprenumeration anger vilka provider-genererade händelser du vill skicka till en viss slutpunkt. I det här fallet exponeras slutpunkten av din funktion. Använd följande steg till att skapa en händelseprenumeration som skickar meddelanden till din funktion i Azure-portalen:
I Azure Portal, överst på sidan söker du efter och väljer
Function App
och väljer den funktionsapp som du skapade. Välj Funktioner och välj miniatyrfunktionen .Välj Integration och välj sedan Event Grid-utlösare och välj Skapa Event Grid-prenumeration.
Använd de inställningar för händelseprenumerationen som anges i tabellen.
Inställning Föreslaget värde Beskrivning Namn imageresizersub Namn som identifierar din nya händelseprenumeration. Typ av ämne Lagringskonton Välj händelseprovidern för Storage-kontot. Prenumeration Din Azure-prenumeration Som standard välj den aktuella Azure-prenumerationen. Resursgrupp myResourceGroup Välj Använd befintlig och välj den resursgrupp du har använt i den här självstudien. Resurs Ditt Blob Storage-konto Välj det Blob Storage-konto där avbildningar lagras, inte det som används av Azure-funktionsappen. Systemämnesnamn imagestoragesystopic Ange ett namn för systemämnet. Mer information om systemämnen finns i Översikt över systemämnen. Händelsetyper Blob skapas Avmarkera alla typer utom Blob skapas. Det är bara händelsetyper för Microsoft.Storage.BlobCreated
som skickas till funktionen.Slutpunktstyp genereras automatiskt Fördefinierade som Azure-funktion. Slutpunkt genereras automatiskt Namnet på funktionen. I det här fallet är det Miniatyr. Växla till fliken Filter och utför följande åtgärder:
Välj alternativet Aktivera ämnesfiltrering.
För Ämne börjar med anger du följande värde: /blobServices/default/containers/images/.
Välj Skapa för att lägga till händelseprenumerationen för att skapa en händelseprenumeration
Thumbnail
som utlöser funktionen när en blob läggs till i containernimages
. Funktionen ändrar storlek på avbildningarna och lägger till dem till containernthumbnails
.
Nu när tjänsterna på serversidan har konfigurerats ska du testa funktionen för storleksändring i exempelwebbappen.
Testa exempelappen
När du ska testa storleksändring i webbappen bläddrar du till URL-adressen för din publicerade app. Standardwebbadressen för webbappen är https://<web_app>.azurewebsites.net
.
Välj Ladda upp foton för att välja och ladda upp en fil. Du kan också dra ett foto till den här regionen.
Observera att när den uppladdade bilden försvinner visas en kopia av den uppladdade bilden i karusellen Genererade miniatyrer . Den här bildens storlek ändrades av funktionen. Därefter lades den till i containern med miniatyrer och laddades ned av webbklienten.
Nästa steg
Se andra självstudier i avsnittet Självstudier i innehållsförteckningen (TOC).