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:

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:

  1. 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 miniatyrfunktionen i portalen

  2. Välj Integration och välj sedan Event Grid-utlösare och välj Skapa Event Grid-prenumeration.

    Gå till Lägg till Event Grid-prenumeration i Azure Portal

  3. Använd de inställningar för händelseprenumerationen som anges i tabellen.

    Skapa händelseprenumeration från funktionen i Azure-portalen

    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.
  4. Växla till fliken Filter och utför följande åtgärder:

    1. Välj alternativet Aktivera ämnesfiltrering.

    2. För Ämne börjar med anger du följande värde: /blobServices/default/containers/images/.

      Ange filter för händelseprenumeration

  5. 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 containern images . Funktionen ändrar storlek på avbildningarna och lägger till dem till containern thumbnails.

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.

Skärmbild som visar en publicerad webbapp med titeln

Nästa steg

Se andra självstudier i avsnittet Självstudier i innehållsförteckningen (TOC).