Oktatóanyag: Feltöltött képek átméretezésének automatizálása a Event Grid

Az Azure Event Grid egy felhőalapú eseménykezelési szolgáltatás. Az Event Grid lehetővé teszi, hogy előfizetéseket hozzon létre az Azure-szolgáltatások vagy külső erőforrások által létrehozott eseményekhez.

Ez az oktatóanyag a Storage oktatóanyag-sorozat második része. Kibővíti az előző Storage oktatóanyagot, és hozzáadja a kiszolgáló nélküli automatikus miniatűr-létrehozást az Azure Event Grid és az Azure Functions használatával. Az Event Grid lehetővé teszi az Azure Functions számára, hogy reagáljon az Azure Blob Storage eseményeire, és létrehozza a feltöltött képek miniatűrjeit. Az esemény-előfizetések a Blob Storage-esemény létrehozásakor jönnek létre. Amikor egy blob bekerül egy adott Blob Storage-tárolóba, a rendszer meghívja egy függvény végpontját. Az Event Gridből a függvénykötésnek továbbadott adatokat a rendszer arra használja, hogy hozzáférjen a blobhoz, és létrehozza a miniatűrt.

Az Azure CLI és az Azure Portal segítségével hozzáadja az átméretezési funkciót egy meglévő képfeltöltő alkalmazáshoz.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Azure Storage-fiók létrehozása
  • Kiszolgáló nélküli programkód üzembe helyezése az Azure Functions használatával
  • Blob Storage esemény-előfizetés létrehozása az Event Gridben

Előfeltételek

Megjegyzés

Ez a cikk frissült az Azure Az PowerShell-moduljának használatával. Mostantól az Az PowerShell-modul használatát javasoljuk az Azure-ral folytatott interakciókhoz. Az Az PowerShell-modul használatának megkezdéséhez lásd az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Az oktatóanyag elvégzéséhez:

Azure Storage-fiók létrehozása

Az Azure Functions szolgáltatásnak egy általános célú tárfiókra van szüksége. Az előző oktatóanyagban létrehozott Blob Storage-fiókon kívül hozzon létre egy külön általános tárfiókot az erőforráscsoportban. A tárfiókok neve 3–24 karakter hosszúságú lehet, és csak számokból és kisbetűkből állhat.

Állítson be változókat az előző oktatóanyagban létrehozott erőforráscsoport nevének, a létrehozható erőforrások helyének és az új tárfióknak a Azure Functions tárolására. Ezután hozza létre az Azure-függvény tárfiókját.

Használja a New-AzStorageAccount parancsot.

  1. Adja meg az erőforráscsoport nevét.

    $resourceGroupName="myResourceGroup"
    
  2. Adja meg a tárfiók helyét.

    $location="eastus"    
    
  3. Adja meg a függvény által használni kívánt tárfiók nevét.

    $functionstorage="<name of the storage account to be used by the function>"    
    
  4. Tárfiók létrehozása.

    New-AzStorageAccount -ResourceGroupName $resourceGroupName -AccountName $functionstorage -Location $location -SkuName Standard_LRS -Kind StorageV2        
    

Függvényalkalmazás létrehozása

Rendelkeznie kell egy függvényalkalmazással a függvény végrehajtásának biztosításához. A függvényalkalmazás szolgáltat környezetet a függvénykód kiszolgáló nélküli végrehajtásához.

A következő parancsban adja meg a saját egyedi függvényalkalmazás-nevét. A függvényalkalmazás nevét a rendszer a függvényalkalmazás alapértelmezett DNS-tartományának részeként használja, ezért egyedinek kell lennie az Azure összes alkalmazásában.

Adja meg a létrehozni kívánt függvényalkalmazás nevét, majd hozza létre az Azure-függvényt.

Függvényalkalmazás létrehozása a New-AzFunctionApp paranccsal.

  1. Adja meg a függvényalkalmazás nevét.

    $functionapp="<name of the function app>"    
    
  2. Függvényalkalmazás létrehozása.

    New-AzFunctionApp -Location $location -Name $functionapp -ResourceGroupName $resourceGroupName -Runtime PowerShell -StorageAccountName $functionstorage    
    

Most konfigurálja a függvényalkalmazást, hogy csatlakozzon az előző oktatóanyagban létrehozott Blob Storage-fiókhoz.

A függvényalkalmazás konfigurálása

A függvénynek szüksége van a Blob Storage-fiók hitelesítő adataira, amelyeket a rendszer az az functionapp config appsettings set vagy az Update-AzFunctionAppSetting paranccsal ad hozzá a függvényalkalmazás alkalmazásbeállításaihoz.

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
$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

A FUNCTIONS_EXTENSION_VERSION=~2 beállítással a függvényalkalmazás az Azure Functions futtatókörnyezet 2.x-es verzióján fut.

Most már üzembe helyezhet egy függvénykód-projektet a függvényalkalmazásban.

A függvénykód üzembe helyezése

A C#-átméretezési minta függvény a következő GitHub. Telepítse ezt a kódprojektet a függvényalkalmazásba az az functionapp deployment source config paranccsal.

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

A kép átméretezése függvényt az Event Grid szolgáltatásból küldött HTTP-kérések indítják el. Egy esemény-előfizetés létrehozásával utasítja az Event Gridet, hogy ezeket az értesítéseket a függvénye URL-címére szeretné kapni. Ebben az oktatóanyagban blobok által létrehozott eseményekre iratkozik fel.

Az Event Grid-értesítésből a függvénynek átadott adatok között megtalálható a blob URL-címe. Ezt az URL-címet ezután az eseményindító átadja a bemeneti kötésnek a feltöltött kép Blob Storage-ból való lekéréséhez. A függvény létrehoz egy miniatűrt, és a Blob Storage egyik külön tárolójába írja az eredményül kapott streamet.

A projekt az EventGridTrigger típusú eseményindítót használja. Az általános HTTP-eseményindítók helyett az Event Grid eseményindító használata ajánlott. Az Event Grid automatikusan érvényesíti az Event Grid függvény eseményindítóit. Általános HTTP-eseményindítók esetén meg kell valósítani az érvényesítési választ.

A függvénnyel kapcsolatos további tudnivalókért tekintse meg a function.json és run.csx fájlt.

A függvény projektkódját a rendszer közvetlenül a nyilvános mintaadattárból helyezi üzembe. További információk az Azure Functions üzembe helyezési lehetőségeiről: Azure Functions – folyamatos üzembe helyezés.

Esemény-előfizetés létrehozása

Az esemény-előfizetés jelzi, hogy melyik szolgáltató eseményeit kívánja elküldeni egy adott végpontnak. Ebben az esetben a függvény közzéteszi a végpontot. Az alábbi lépésekkel hozzon létre egy esemény-előfizetést, amely értesítéseket küld a függvényének az Azure Portalon:

  1. A Azure Portallap tetején keresse meg és válassza ki az újonnan létrehozott Function App függvényalkalmazást. Válassza a Függvények lehetőséget, majd a Thumbnail függvényt.

    A Thumbnail függvény kiválasztása a portálon

  2. Válassza az Integráció lehetőséget, majd válassza Event Grid eseményindítót, majd a Create Event Grid subscription (Előfizetés létrehozása) lehetőséget.

    Lépjen a Event Grid előfizetés hozzáadása Azure Portal

  3. Használja a táblázatban megadott esemény-előfizetési beállításokat.

    Esemény-előfizetés létrehozása a függvényből az Azure Portalon

    Beállítás Ajánlott érték Leírás
    Név imageresizersub Az új esemény-előfizetés azonosítóneve.
    Témakörtípus Tárfiókok Válassza ki a Storage-fiók eseményszolgáltatóját.
    Előfizetés Az Azure-előfizetése Alapértelmezés szerint az aktuális Azure-előfizetés van kiválasztva.
    Erőforráscsoport myResourceGroup Válassza a Meglévő használata elemet, majd válassza ki az oktatóanyagban használt erőforráscsoportot.
    Erőforrás Saját Blob Storage-fiók Válassza ki a létrehozott Blob Storage-fiókot.
    Rendszertémakör neve imagestoragesystopic Adja meg a rendszertéma nevét. A rendszertémaktémákról a Rendszertémaktémák áttekintése témakörben talál további információt.
    Eseménytípusok Létrehozott blob Törölje a jelölést az összes típus mellől a Létrehozott blob kivételével. A rendszer csak a Microsoft.Storage.BlobCreated eseménytípusokat adja át a függvénynek.
    Végpont típusa automatikusan létrehozott Előre definiált azure-függvény.
    Végpont automatikusan létrehozott A függvény neve. Ebben az esetben ez a Miniatűr.
  4. Váltson a Szűrők lapra, és tegye a következőket:

    1. Válassza a Tárgyszűrés engedélyezése lehetőséget.

    2. A Tárgy mezőben a következő értéket adja meg: /blobServices/default/containers/images/.

      Szűrő megadása az esemény-előfizetéshez

  5. Az esemény-előfizetés hozzáadásához válassza a Létrehozás lehetőséget. Ez létrehoz egy esemény-előfizetést, amely aktiválja Thumbnail a függvényt, amikor hozzáadnak egy blobot a images tárolóhoz. A függvény átméretezi a képeket, és hozzáadja őket a thumbnails tárolóhoz.

Most, hogy konfigurálta a háttérszolgáltatásokat, tesztelni fogja a képátméretezési funkciót a minta-webalkalmazásban.

A mintaalkalmazás tesztelése

A képátméretezés webalkalmazásban való teszteléséhez nyissa meg a közzétett alkalmazás URL-címét. A webalkalmazás alapértelmezett URL-címe https://<web_app>.azurewebsites.net.

Kattintson a Fényképek feltöltése területre egy fájl kiválasztásához és feltöltéséhez. Fényképet is behúzhat a területre.

Figyelje meg, hogy miután a feltöltött kép eltűnik, megjelenik a feltöltött kép egy másolata a Generated Thumbnails (Generált miniatűrök) ablaktábla segítségével. A függvény átméretezte a képet, hozzáadta a miniatűrök tárolóhoz, a webes ügyfél pedig letöltötte a képet.

Képernyőkép egy "ImageResizer" című közzétett webalkalmazásról a . NET v12 SDK böngészőjében.

További lépések

Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:

  • Általános célú Azure Storage-fiók létrehozása
  • Kiszolgáló nélküli programkód üzembe helyezése az Azure Functions használatával
  • Blob Storage esemény-előfizetés létrehozása az Event Gridben

Lépjen a Storage oktatóanyag-sorozat harmadik részére, amelyből megtudhatja, hogyan férhet hozzá biztonságosan a tárfiókhoz.