Öğretici: Karşıya yüklenen görüntüleri yeniden boyutlandırmayı Event Grid kullanarak otomatikleştirmeTutorial: Automate resizing uploaded images using Event Grid

Azure Event Grid, bulut için bir olay oluşturma hizmetidir.Azure Event Grid is an eventing service for the cloud. Event Grid, Azure hizmetleri veya üçüncü taraf kaynaklar tarafından başlatılan olaylara abonelikler oluşturmanızı sağlar.Event Grid enables you to create subscriptions to events raised by Azure services or third-party resources.

Bu öğretici, Depolama öğreticileri serisinin ikinci bölümüdür.This tutorial is part two of a series of Storage tutorials. Azure Event Grid ve Azure Işlevleri 'ni kullanarak sunucusuz otomatik küçük resim oluşturmayı eklemek için önceki depolama öğreticisini genişletir.It extends the previous Storage tutorial to add serverless automatic thumbnail generation using Azure Event Grid and Azure Functions. Event Grid, Azure İşlevleri’nin Azure Blob depolama olaylarına yanıt vermesini ve karşıya yüklenen görüntülerin küçük resimlerini oluşturmasını sağlar.Event Grid enables Azure Functions to respond to Azure Blob storage events and generate thumbnails of uploaded images. Blob depolama oluşturma olayına karşı bir olay aboneliği oluşturulur.An event subscription is created against the Blob storage create event. Belirli bir Blob depolama kapsayıcısına blob eklendiğinde bir işlev uç noktası çağrılır.When a blob is added to a specific Blob storage container, a function endpoint is called. Event Grid’den işlev bağlamaya geçirilen veriler, bloba erişmek ve küçük resim görüntüsünü oluşturmak için kullanılır.Data passed to the function binding from Event Grid is used to access the blob and generate the thumbnail image.

Var olan bir görüntü yükleme uygulamasına yeniden boyutlandırma işlevini eklemek için Azure CLI ve Azure portalını kullanabilirsiniz.You use the Azure CLI and the Azure portal to add the resizing functionality to an existing image upload app.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:In this tutorial, you learn how to:

  • Genel bir Azure Depolama hesabı oluşturmaCreate a general Azure Storage account
  • Azure İşlevleri’ni kullanarak sunucusuz kod dağıtmaDeploy serverless code using Azure Functions
  • Event Grid’de bir Blob depolama olayı aboneliği oluşturmaCreate a Blob storage event subscription in Event Grid

ÖnkoşullarPrerequisites

Not

Bu makale yeni Azure PowerShell Az modülünü kullanacak şekilde güncelleştirilmiştir.This article has been updated to use the new Azure PowerShell Az module. En azından Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecek olan AzureRM modülünü de kullanmaya devam edebilirsiniz.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Yeni Az modülüyle AzureRM'nin uyumluluğu hakkında daha fazla bilgi edinmek için bkz. Yeni Azure PowerShell Az modülüne giriş.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az modülü yükleme yönergeleri için bkz. Azure PowerShell'i yükleme.For Az module installation instructions, see Install Azure PowerShell.

Bu öğreticiyi tamamlamak için:To complete this tutorial:

Önceki BLOB depolama öğreticisini tamamlamış olmanız gerekir: Azure depolama ile veri görüntüsünü buluta yükleyin.You must have completed the previous Blob storage tutorial: Upload image data in the cloud with Azure Storage.

Azure aboneliğinizyoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Event Grid kaynak sağlayıcısını önceden aboneliğinize kaydetmediyseniz burada kaydettiğinizden emin olun.If you've not previously registered the Event Grid resource provider in your subscription, make sure it's registered.

az provider register --namespace Microsoft.EventGrid

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı Azure Cloud Shell.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell, ya da bash PowerShell Azure hizmetleriyle çalışmak için kullanmanıza olanak sağlar.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell önceden yüklenmiş komutları kullanabilirsiniz.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell başlatmak için:To launch Azure Cloud Shell:

SeçenekOption Örnek/bağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Dene ' nin seçilmesi, kodu Cloud Shell otomatik olarak kopyalamaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için deneme örneği
Tarayıcınızda Cloud Shell açmak için Başlat Cloud Shell düğmesine gidin veyaseçin. https://shell.azure.comGo to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Cloud Shell yeni bir pencerede BaşlatLaunch Cloud Shell in a new window
Azure Portalsağ üstteki menü çubuğunda Cloud Shell düğmesini seçin.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Bu makaledeki kodu Azure Cloud Shell çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell başlatın.Launch Cloud Shell.

  2. Kodu kopyalamak için bir kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.

  3. Kodu Windows ve Linux 'ta CTRL+SHIFT+v veya MacOS 'ta cmd+Shift+v ile Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Kodu çalıştırmak için ENTER tuşuna basın.Press Enter to run the code.

CLI'yi yerel olarak yükleyip kullanmayı tercih ederseniz bu öğretici için Azure CLI 2.0.14 veya sonraki bir sürümünü kullanmanız gerekir.If you choose to install and use the CLI locally, this tutorial requires the Azure CLI version 2.0.14 or later. Sürümü bulmak için az --version komutunu çalıştırın.Run az --version to find the version. Yükleme veya yükseltme yapmanız gerekiyorsa bkz. Azure CLI'yı yükleme.If you need to install or upgrade, see Install Azure CLI.

Cloud Shell kullanmıyorsanız önce az login kullanarak oturum açmanız gerekir.If you are not using Cloud Shell, you must first sign in using az login.

Azure Depolama hesabı oluşturmaCreate an Azure Storage account

Azure İşlevleri, genel bir depolama hesabı gerektirir.Azure Functions requires a general storage account. Önceki öğreticide oluşturduğunuz BLOB depolama hesabına ek olarak, az Storage Account Create komutunu kullanarak kaynak grubunda ayrı bir genel depolama hesabı oluşturun.In addition to the Blob storage account you created in the previous tutorial, create a separate general storage account in the resource group by using the az storage account create command. Depolama hesabı adları 3 ile 24 karakter arasında olmalı ve yalnızca sayıyla küçük harf içermelidir.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.

  1. Bir değişkeni, önceki öğreticide oluşturduğunuz kaynak grubunun adını tutacak şekilde ayarlayın.Set a variable to hold the name of the resource group that you created in the previous tutorial.

    resourceGroupName=myResourceGroup
    
  2. Azure Işlevlerinin gerektirdiği yeni depolama hesabının adı için bir değişken ayarlayın.Set a variable for the name of the new storage account that Azure Functions requires.

    functionstorage=<name of the storage account to be used by the function>
    
  3. Azure işlevi için depolama hesabı oluşturun.Create the storage account for the Azure function.

    az storage account create --name $functionstorage --location southeastasia \
    --resource-group $resourceGroupName --sku Standard_LRS --kind storage
    

İşlev uygulaması oluşturmaCreate a function app

İşlevinizin yürütülmesini barındıran bir işlev uygulamasına sahip olmanız gerekir.You must have a function app to host the execution of your function. İşlev uygulaması, işlev kodunuzun sunucusuz yürütülmesine yönelik bir ortam sağlar.The function app provides an environment for serverless execution of your function code. az functionapp create komutunu kullanarak bir işlev uygulaması oluşturun.Create a function app by using the az functionapp create command.

Aşağıdaki komutta kendi benzersiz işlev uygulamanızın adını sağlayın.In the following command, provide your own unique function app name. İşlev uygulaması adı, işlev uygulamasının varsayılan DNS etki alanı olarak kullanılacağı için adın Azure’daki tüm uygulamalarda benzersiz olması gerekir.The function app name is used as the default DNS domain for the function app, and so the name needs to be unique across all apps in Azure.

  1. Oluşturulacak işlev uygulaması için bir ad belirtin.Specify a name for the function app that's to be created.

    functionapp=<name of the function app>
    
  2. Azure işlevini oluşturun.Create the Azure function.

    az functionapp create --name $functionapp --storage-account $functionstorage \
    --resource-group $resourceGroupName --consumption-plan-location southeastasia
    

Şimdi, işlev uygulamasını önceki öğreticideoluşturduğunuz BLOB depolama hesabına bağlanacak şekilde yapılandırmanız gerekir.Now you must configure the function app to connect to the Blob storage account you created in the previous tutorial.

İşlev uygulamasını yapılandırmaConfigure the function app

İşlevin, az functionapp config appSettings set komutu kullanılarak işlev uygulamasının uygulama ayarlarına eklenen BLOB depolama hesabı için kimlik bilgileri gerekir.The function needs credentials for the Blob storage account, which are added to the application settings of the function app using the az functionapp config appsettings set command.

blobStorageAccount=<name of the Blob storage account you created in the previous tutorial>
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_EXTENSION_VERSION=~2 ayarı işlev uygulamasının Azure İşlevleri çalışma zamanının 2.x sürümünde çalışmasını sağlar.The FUNCTIONS_EXTENSION_VERSION=~2 setting makes the function app run on version 2.x of the Azure Functions runtime.

Bu işlev uygulamasına bir işlev kodu projesi dağıtabilirsiniz.You can now deploy a function code project to this function app.

İşlev kodunu dağıtmaDeploy the function code

Örnek C# yeniden boyutlandırma işlevi GitHub'da kullanılabilir.The sample C# resize function is available on GitHub. Az functionapp Deployment Source config komutunu kullanarak bu kod projesini işlev uygulamasına dağıtın.Deploy this code project to the function app by using the az functionapp deployment source config command.

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

Görüntüyü yeniden boyutlandırma işlevi, Event Grid hizmetinden gönderilen HTTP istekleriyle tetiklenir.The image resize function is triggered by HTTP requests sent to it from the Event Grid service. Bir olay aboneliği oluşturarak Event Grid'e işlevinizin URL'sinde bu bildirimleri almak istediğinizi bildirirsiniz.You tell Event Grid that you want to get these notifications at your function's URL by creating an event subscription. Bu öğreticide, blob tarafından oluşturulan olaylara abone oluyorsunuz.For this tutorial you subscribe to blob-created events.

Event Grid bildiriminden işleve geçirilen veriler, blobun URL'sini içerir.The data passed to the function from the Event Grid notification includes the URL of the blob. Ardından karşıya yüklenen görüntüyü Blob depolamadan almak için bu URL giriş bağlamasına geçirilir.That URL is in turn passed to the input binding to obtain the uploaded image from Blob storage. İşlev bir küçük resim görüntüsü oluşturur ve elde edilen akışı Blob depolama içinde ayrı bir kapsayıcıya yazar.The function generates a thumbnail image and writes the resulting stream to a separate container in Blob storage.

Bu proje, tetikleyici türü olarak EventGridTrigger kullanır.This project uses EventGridTrigger for the trigger type. Genel HTTP tetikleyicileri yerine Event Grid tetikleyicisinin kullanılması önerilir.Using the Event Grid trigger is recommended over generic HTTP triggers. Event Grid, Event Grid İşlevi tetikleyicilerini otomatik olarak doğrular.Event Grid automatically validates Event Grid Function triggers. Genel HTTP tetikleyicileri ile doğrulama yanıtını uygulamanız gerekir.With generic HTTP triggers, you must implement the validation response.

Bu işlev hakkında daha fazla bilgi edinmek için bkz. function.json ve run.csx dosyaları.To learn more about this function, see the function.json and run.csx files.

İşlev proje kodu, doğrudan ortak örnek depodan dağıtılır.The function project code is deployed directly from the public sample repository. Azure İşlevleri’ne ilişkin dağıtım seçenekleri hakkında daha fazla bilgi için bkz. Azure İşlevleri için sürekli dağıtım.To learn more about deployment options for Azure Functions, see Continuous deployment for Azure Functions.

Olay aboneliği oluşturmaCreate an event subscription

Olay aboneliği, belirli bir uç noktaya gönderilmesini istediğiniz, sağlayıcı tarafından oluşturulmuş olayları gösterir.An event subscription indicates which provider-generated events you want sent to a specific endpoint. Bu örnekte uç nokta, işleviniz tarafından kullanıma sunulur.In this case, the endpoint is exposed by your function. Azure Portal'da işlevinize bildirimler gönderen bir olay aboneliği oluşturmak için aşağıdaki adımları kullanın:Use the following steps to create an event subscription that sends notifications to your function in the Azure portal:

  1. Azure Portalsol taraftaki menüden tüm hizmetler ' i seçin ve ardından işlev uygulamaları' nı seçin.In the Azure portal, select All Services on the left menu, and then select Function Apps.

    Azure portalında İşlev Uygulamalarına göz atma

  2. İşlev uygulamanızı genişletin, küçük resim işlevini seçin ve ardından Event Grid aboneliği Ekle' yi seçin.Expand your function app, choose the Thumbnail function, and then select Add Event Grid subscription.

    Azure portalında İşlev Uygulamalarına göz atma

  3. Tabloda belirtilen olay aboneliği ayarlarını kullanın.Use the event subscription settings as specified in the table.

    Azure portalında işlevden olay aboneliği oluşturma

    AyarSetting Önerilen değerSuggested value AçıklamaDescription
    NameName imageresizersubimageresizersub Yeni olay aboneliğinizi tanımlayan ad.Name that identifies your new event subscription.
    Konu türüTopic type Depolama hesaplarıStorage accounts Depolama hesabı olay sağlayıcısını seçin.Choose the Storage account event provider.
    AbonelikSubscription Azure aboneliğinizYour Azure subscription Varsayılan olarak, geçerli Azure aboneliğiniz seçili durumdadır.By default, your current Azure subscription is selected.
    Kaynak grubuResource group myResourceGroupmyResourceGroup Var olanı kullan’ı seçin ve bu öğreticide kullandığınız kaynak grubunu belirleyin.Select Use existing and choose the resource group you have been using in this tutorial.
    KaynakResource Blob depolama hesabınızYour Blob storage account Oluşturduğunuz Blob depolama hesabını seçin.Choose the Blob storage account you created.
    Olay türleriEvent types Oluşturulan blobBlob created Oluşturulan blob dışındaki tüm türlerin işaretini kaldırın.Uncheck all types other than Blob created. Yalnızca Microsoft.Storage.BlobCreated türündeki olaylar işleve geçirilir.Only event types of Microsoft.Storage.BlobCreated are passed to the function.
    Abone türüSubscriber type otomatik oluşturulmuşautogenerated Web Kancası olarak önceden tanımlanmış.Pre-defined as Web Hook.
    Abone uç noktasıSubscriber endpoint otomatik oluşturulmuşautogenerated Sizin için oluşturulan uç nokta URL'sini kullanın.Use the endpoint URL that is generated for you.
  4. Filtre sekmesine geçin ve aşağıdaki işlemleri yapın:Switch to the Filter tab, and do the following actions:

    1. Konu filtrelemeyi etkinleştir seçeneğini belirleyin.Select Enable subject filtering option.

    2. Konu için ile başlıyorsa, şu değeri girin: /Blobservices/default/containers/images/Blobs/ .For Subject begins with, enter the following value : /blobServices/default/containers/images/blobs/.

      Olay aboneliği için filtre belirtin

  5. Olay aboneliğini eklemek için Oluştur ' u seçin.Select Create to add the event subscription. Bu, Thumbnail images kapsayıcıya bir blob eklendiğinde işlev tetikleyen bir olay aboneliği oluşturur.This creates an event subscription that triggers Thumbnail function when a blob is added to the images container. İşlev görüntüleri yeniden boyutlandırır ve thumbnails kapsayıcıya ekler.The function resizes the images and adds them to the thumbnails container.

Arka uç hizmetleri yapılandırıldıktan sonra, görüntü yeniden boyutlandırma işlevini örnek web uygulamasında test edin.Now that the backend services are configured, you test the image resize functionality in the sample web app.

Örnek uygulamayı test etmeTest the sample app

Web uygulamasında görüntü yeniden boyutlandırmayı test etmek için, yayımlanan uygulamanızın URL'sine gidin.To test image resizing in the web app, browse to the URL of your published app. Web uygulamasının varsayılan URL'si https://<web_app>.azurewebsites.net şeklindedir.The default URL of the web app is https://<web_app>.azurewebsites.net.

Karşıya fotoğraf yükle bölgesine tıklayarak bir dosyayı seçip karşıya yükleyin.Click the Upload photos region to select and upload a file. Ayrıca bu bölgeye fotoğraf sürükleyebilirsiniz.You can also drag a photo to this region.

Karşıya yüklenen görüntü kaybolduktan sonra Oluşturulan küçük resimler döngüsünde karşıya yüklenen görüntünün bir kopyasının gösterildiğine dikkat edin.Notice that after the uploaded image disappears, a copy of the uploaded image is displayed in the Generated thumbnails carousel. Bu görüntü, işlev tarafından yeniden boyutlandırılmış, thumbnails kapsayıcısına eklenmiş ve web istemcisi tarafından indirilmiştir.This image was resized by the function, added to the thumbnails container, and downloaded by the web client.

Tarayıcıda yayınlanan web uygulaması

Sonraki adımlarNext steps

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:In this tutorial, you learned how to:

  • Genel bir Azure Depolama hesabı oluşturmaCreate a general Azure Storage account
  • Azure İşlevleri’ni kullanarak sunucusuz kod dağıtmaDeploy serverless code using Azure Functions
  • Event Grid’de bir Blob depolama olayı aboneliği oluşturmaCreate a Blob storage event subscription in Event Grid

Depolama hesabına erişimin güvenliğini sağlama hakkında bilgi almak için Depolama öğreticisi serisinin üçüncü bölümüne geçin.Advance to part three of the Storage tutorial series to learn how to secure access to the storage account.