Kurz Krok 2: Automatizace změny velikosti nahraných obrázků pomocí Služby Event Grid

Tento kurz rozšiřuje kurz Nahrát data obrázků do cloudu pomocí Služby Azure Storage o přidání automatického generování miniatur bez serveru pomocí Azure Event Grid a Azure Functions. Tady je základní pracovní postup:

V tomto kurzu provedete následující kroky:

  • Vytvoření účtu Azure Storage
  • Vytvoření, konfigurace a nasazení aplikace funkcí
  • Vytvoření odběru událostí pro události úložiště
  • Testování ukázkové aplikace

Požadavky

Pro absolvování tohoto kurzu potřebujete:

Vytvoření účtu Azure Storage

Azure Functions vyžaduje obecný účet úložiště. Kromě účtu úložiště Blob, který jste vytvořili v předchozím kurzu, vytvořte ve skupině prostředků samostatný obecný účet ú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 se vešly 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.

Použijte příkaz az storage account create .

Poznámka

V prostředí Bash Cloud Shell použijte následující příkazy. Pokud je to potřeba, použijte rozevírací seznam v levém horním rohu Cloud Shell a přepněte do prostředí Bash.

Spuštěním následujících příkazů vytvořte účet úložiště Azure.

functionstorage="funcstorage$RANDOM"
az storage account create --name $functionstorage --location $region --resource-group $rgName --sku Standard_LRS --kind StorageV2  --allow-blob-public-access true

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 funkcí. 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 funkcí, která se má vytvořit, a pak vytvořte funkci Azure.

Aplikaci Function App vytvoříte pomocí příkazu az functionapp create.

functionapp="funcapp$RANDOM"
az functionapp create --name $functionapp --storage-account $functionstorage --resource-group $rgName --consumption-plan-location $region --functions-version 4

Teď nakonfigurujte aplikaci funkcí tak, aby se připojila k účtu blob storage, který jste vytvořili v předchozím kurzu.

Konfigurace aplikace Function App

Funkce potřebuje přihlašovací údaje pro účet úložiště objektů blob, které se přidají do nastavení aplikace funkcí pomocí příkazu az functionapp config appsettings set nebo 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

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 jazyka C# je k dispozici na GitHubu. Nasaďte tento projekt kódu do aplikace funkcí pomocí příkazu 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

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í vytvořených objektem 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 Portal v horní části stránky vyhledejte a vyberte Function App a zvolte aplikaci funkcí, kterou jste vytvořili. Vyberte Funkce a zvolte funkci Thumbnail .

    Volba funkce Thumbnail na portálu

  2. Vyberte Možnost Integrace , pak aktivační událost Event Gridu a vyberte Vytvořit odběr služby Event Grid.

    V Azure Portal přejděte na Přidat odběr služby Event Grid.

  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 Zvolte účet Blob Storage, ve kterém se ukládají obrázky, a ne účet, který používá aplikace funkcí Azure.
    Název tématu systému imagestoragesystopic Zadejte název systémového tématu. 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. Do pole Předmět začíná na zadejte následující hodnotu: /blobServices/default/containers/images/.

      Určení filtru pro odběr událostí

  5. Výběrem možnosti Vytvořit přidejte odběr události a vytvořte odběr události, který aktivuje Thumbnail funkci při přidání objektu blob do kontejneru images . Funkce změní velikost obrázků a přidá je do kontejneru thumbnails .

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.

Vyberte Nahrát fotky 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 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 znázorňující publikovanou webovou aplikaci s názvem ImageResizer v prohlížeči pro sadu .NET SDK v12

Další kroky

Projděte si další kurzy v části Kurzy obsahu (TOC).