Kurz: automatizace změny velikosti nahraných imagí pomocí Event Grid

Azure Event Grid je služba Eventing Service pro Cloud. Event Grid umožňuje vytvářet odběry událostí vyvolaných službami Azure nebo prostředky třetích stran.

Tento kurz je druhou částí série kurzů o službě Storage. Navazuje na předchozí kurz o službě Storage a přidává automatické vytváření miniatur bez serveru s využitím služeb Azure Event Grid a Azure Functions. Event Grid umožňuje službě Azure Functions reagovat na události služby Azure Blob Storage a vytvářet miniatury nahraných obrázků. K události vytvoření ve službě Blob Storage se vytvoří odběr události. Při přidání objektu blob do určitého kontejneru služby Blob Storage dojde k volání koncového bodu funkce. K přístupu k objektu blob se použití data předaná do vazby funkce ze služby Event Grid a vygeneruje se obrázek miniatury.

Funkce změny velikosti se do existující aplikace pro nahrávání obrázků přidává pomocí rozhraní Azure CLI a webu Azure Portal.

V tomto kurzu se naučíte:

  • Vytvoření účtu Azure Storage
  • Nasadit kód bez serveru pomocí služby Azure Functions
  • Vytvořit odběr události služby Blob Storage ve službě Event Grid

Požadavky

Poznámka

Tento článek používá modul Azure Az PowerShell, což je doporučený modul PowerShellu pro interakci s Azure. Pokud chcete začít s modulem Az PowerShell, projděte si téma věnované instalaci Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Pro absolvování tohoto kurzu potřebujete:

Vytvoření účtu Azure Storage

Azure Functions vyžaduje obecný účet úložiště. Kromě účtu BLOB Storage, který jste vytvořili v předchozím kurzu, vytvořte ve skupině prostředků samostatný účet obecné úložiště. Názvy účtů úložiště musí mít délku 3 až 24 znaků a můžou obsahovat jenom číslice a malá písmena.

Nastavte proměnné tak, aby obsahovaly název skupiny prostředků, kterou jste vytvořili v předchozím kurzu, umístění pro prostředky, které se mají vytvořit, a název nového účtu úložiště, který Azure Functions vyžaduje. Pak vytvořte účet úložiště pro funkci Azure Functions.

Použijte příkaz New-AzStorageAccount .

  1. Zadejte název skupiny prostředků.

    $resourceGroupName="myResourceGroup"
    
  2. Zadejte umístění pro účet úložiště.

    $location="eastus"    
    
  3. Zadejte název účtu úložiště, který má funkce používat.

    $functionstorage="<name of the storage account to be used by the function>"    
    
  4. Vytvoření účtu úložiště

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

Vytvoření aplikace funkcí

K hostování provádění funkcí potřebujete aplikaci Function App. Function App poskytuje prostředí pro provádění kódu funkce bez serveru.

V následujícím příkazu zadejte vlastní jedinečný název aplikace Function App. Název aplikace funkcí se použije jako výchozí doména DNS pro příslušnou aplikaci funkcí, a proto musí být název mezi všemi aplikacemi v Azure jedinečný.

Zadejte název aplikace Function App, která se má vytvořit, a pak vytvořte funkci Azure Functions.

Pomocí příkazu New-AzFunctionApp vytvořte aplikaci Function App.

  1. Zadejte název aplikace Function App.

    $functionapp="<name of the function app>"    
    
  2. Vytvořte aplikaci Function App.

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

Teď nakonfigurujte aplikaci Function App, aby se připojovala k účtu úložiště objektů blob, který jste vytvořili v předchozím kurzu.

Konfigurace aplikace Function App

Tato funkce vyžaduje pro účet úložiště objektů BLOB přihlašovací údaje, které se přidají do nastavení aplikace Function App pomocí příkazu AZ functionapp config appSettings set nebo Update-AzFunctionAppSetting .

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 FUNCTIONS_WORKER_RUNTIME=dotnet"
$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; 'FUNCTIONS_WORKER_RUNTIME'='dotnet'}

Nastavení FUNCTIONS_EXTENSION_VERSION=~2 způsobí, že bude aplikace funkcí používat verzi 2.x modulu runtime služby Azure Functions.

Teď můžete nasadit do této aplikace Function App nasadit projekt projektu kódu funkce.

Nasazení kódu funkce

Ukázková funkce změny velikosti v C# je dostupná na GitHub. Pomocí příkazu AZ functionapp Deployment source config nasaďte tento projekt kódu do aplikace Function App.

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

Funkce změny velikosti obrázků se aktivuje požadavky HTTP, které se do ní odesílají ze služby Event Grid. Službě Event Grid můžete sdělit, že chcete přijímat tato oznámení na adrese URL vaší funkce, vytvořením odběru událostí. Pro účely tohoto kurzu se přihlásíte k odběru událostí vytvářených objekty blob.

Data předávaná do funkce z oznámení služby Event Grid zahrnují adresu URL objektu blob. Tato adresa URL se pak předá do vstupní vazby za účelem získání nahraného obrázku ze služby Blob Storage. Funkce vygeneruje obrázek miniatury a zapíše výsledný datový proud do samostatného kontejneru ve službě Blob Storage.

Tento projekt používá aktivační události typu EventGridTrigger. Použití aktivační události Event Grid je vhodnější než obecné aktivační události HTTP. Event Grid automaticky ověřuje aktivační události funkcí Event Grid. U obecných aktivačních událostí HTTP je potřeba implementovat odpověď ověření.

Další informace o této funkci najdete v souborech function.json a run.csx.

Kód projektu funkce se nasadí přímo z veřejného úložiště ukázek. Další informace o možnostech nasazení pro Azure Functions najdete v článkuPrůběžné nasazování se službou Azure Functions.

Vytvoření odběru událostí

Odběr událostí udává, které události vygenerované zprostředkovatelem chcete odeslat do určitého koncového bodu. V tomto případě zveřejňuje koncový bod vaše funkce. Pomocí následujících kroků vytvořte na webu Azure Portal odběr událostí, který odesílá oznámení do vaší funkce:

  1. V Azure Portalv horní části hledání stránky a vyberte Function App a zvolte aplikaci funkcí, kterou jste právě vytvořili. Vyberte funkce a zvolte funkci Miniatura .

    Volba funkce miniatury na portálu

  2. Vyberte vybrat integraci a pak zvolte aktivační událost Event Grid a vyberte vytvořit Event Grid předplatné.

    Přejděte k části Přidání předplatného Event Grid v Azure Portal

  3. Použijte nastavení odběru událostí uvedená v tabulce.

    Vytvoření odběru událostí z funkce na webu Azure Portal

    Nastavení Navrhovaná hodnota Popis
    Název imageresizersub Název identifikující nový odběr událostí.
    Typ tématu Účty úložiště Vyberte zprostředkovatele událostí Účty úložiště.
    Předplatné Vaše předplatné Azure Ve výchozím nastavení je vybrané vaše aktuální předplatné Azure.
    Skupina prostředků myResourceGroup Vyberte Použít existující a zvolte skupinu prostředků, které jste už používali v tomto kurzu.
    Prostředek Váš účet služby Blob Storage Vyberte účet služby Blob Storage, který jste vytvořili.
    Název systémového tématu imagestoragesystopic Zadejte název systémového tématu. Další informace o systémových tématech najdete v tématu Přehled systémových témat.
    Typy událostí Vytvoření objektu blob Zrušte zaškrtnutí všech typů komě Vytvoření objektu blob. Do funkce se předají jenom události typu Microsoft.Storage.BlobCreated.
    Typ koncového bodu automaticky generovaný Předdefinované jako Funkce Azure.
    Koncový bod automaticky generovaný Název funkce. V tomto případě je to Thumbnail.
  4. Přepněte na kartu Filtry a proveďte následující akce:

    1. Vyberte možnost Povolit filtrování předmětu.

    2. Jako Předmět začíná na zadejte následující hodnotu: /blobServices/default/containers/images/.

      Zadání filtru pro odběr události

  5. Vyberte Vytvořit a přidejte odběr události. Tím se vytvoří odběr události, který aktivuje Thumbnail funkci při přidání objektu blob do images kontejneru. Funkce změní velikost obrázků a přidá je do thumbnails kontejneru.

Teď máte nakonfigurované back-endové služby a můžete funkci změny velikosti obrázků otestovat v ukázkové webové aplikaci.

Testování ukázkové aplikace

Pokud chcete ve webové aplikaci otestovat změnu velikosti obrázků, přejděte na adresu URL publikované aplikace. Výchozí adresa URL webové aplikace je https://<web_app>.azurewebsites.net.

Klikněte na oblast Nahrát fotografie a vyberte a nahrajte soubor. Do této oblasti také můžete fotografii přetáhnout.

Všimněte si, že po zmizení nahraného obrázku se v karuselu Generated Thumbnails (Vygenerované miniatury) zobrazí kopie nahraného obrázku. Funkce změnila velikost tohoto obrázku, přidala miniaturu do kontejneru thumbnails a webový klient ji stáhl.

Snímek obrazovky s publikovanou webovou aplikací s názvem ImageResizer v prohlížeči pro . sadu NET SDK v12

Další kroky

V tomto kurzu jste se naučili:

  • Vytvořit obecný účet služby Azure Storage
  • Nasadit kód bez serveru pomocí služby Azure Functions
  • Vytvořit odběr události služby Blob Storage ve službě Event Grid

Ve třetí části série kurzů o službě Storage se dozvíte, jak zabezpečit přístup k účtu úložiště.