Öğretici 2. Adım: Event Grid kullanarak karşıya yüklenen görüntüleri yeniden boyutlandırmayı otomatikleştirme

Bu öğretici, Azure Event Grid ve Azure İşlevleri kullanarak sunucusuz otomatik küçük resim oluşturma eklemek için Azure Depolama ile buluta görüntü verilerini yükleme öğreticisini genişletir. Üst düzey iş akışı aşağıdadır:

Bu öğreticide, aşağıdaki adımları gerçekleştireceksiniz:

  • Azure Depolama hesabı oluşturma
  • İşlev uygulaması oluşturma, yapılandırma ve dağıtma
  • Depolama olaylarına olay aboneliği oluşturma
  • Örnek uygulamayı test etme

Önkoşullar

Bu öğreticiyi tamamlamak için:

Azure Depolama hesabı oluşturma

Azure İşlevleri, genel bir depolama hesabı gerektirir. Önceki öğreticide oluşturduğunuz Blob depolama hesabına ek olarak, kaynak grubunda ayrı bir genel depolama hesabı oluşturun. Depolama hesabı adları 3 ile 24 karakter arasında olmalı ve yalnızca sayıyla küçük harf içermelidir.

Önceki öğreticide oluşturduğunuz kaynak grubunun adını, oluşturulacak kaynakların konumunu ve Azure İşlevleri gereken yeni depolama hesabının adını tutmak için değişkenleri ayarlayın. Ardından Azure işlevi için depolama hesabını oluşturun.

az storage account create komutunu kullanın.

Not

Cloud Shell Bash kabuğunda aşağıdaki komutları kullanın. Gerekirse Bash kabuğuna geçmek için Cloud Shell sol üst köşesindeki boğulma listesini kullanın.

Azure depolama hesabı oluşturmak için aşağıdaki komutları çalıştırın.

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

İşlev uygulaması oluşturma

İşlevinizin yürütülmesini barındıran bir işlev uygulamasına sahip olmanız gerekir. İşlev uygulaması, işlev kodunuzun sunucusuz yürütülmesine yönelik bir ortam sağlar. Aşağıdaki komutta kendi benzersiz işlev uygulama adınızı girin. İş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. Oluşturulacak işlev uygulaması için bir ad belirtin ve ardından Azure işlevini oluşturun.

az functionapp create komutunu kullanarak bir işlev uygulaması oluşturun.

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

Şimdi işlev uygulamasını önceki öğreticide oluşturduğunuz Blob depolama hesabına bağlanacak şekilde yapılandırın.

İşlev uygulamasını yapılandırma

İşlev, az functionapp config appsettings set veya Update-AzFunctionAppSetting komutu kullanılarak işlev uygulamasının uygulama ayarlarına eklenen Blob depolama hesabı için kimlik bilgilerine ihtiyaç duyar.

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

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. Bu işlev uygulamasına bir işlev kodu projesi dağıtabilirsiniz.

İşlev kodunu dağıtma

Örnek C# yeniden boyutlandırma işlevi GitHub'da kullanılabilir. az functionapp deployment source config komutunu kullanarak bu kod projesini işlev uygulamasına dağıtın.

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

Görüntüyü yeniden boyutlandırma işlevi, Event Grid hizmetinden gönderilen HTTP istekleriyle tetiklenir. Bir olay aboneliği oluşturarak Event Grid'e işlevinizin URL'sinde bu bildirimleri almak istediğinizi bildirirsiniz. Bu öğretici için blob tarafından oluşturulan olaylara abone olacaksınız.

Event Grid bildiriminden işleve geçirilen veriler, blobun URL'sini içerir. Ardından karşıya yüklenen görüntüyü Blob depolamadan almak için bu URL giriş bağlamasına geçirilir. İş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.

Bu proje, tetikleyici türü olarak EventGridTrigger kullanır. Genel HTTP tetikleyicileri yerine Event Grid tetikleyicisinin kullanılması önerilir. Event Grid, Event Grid İşlevi tetikleyicilerini otomatik olarak doğrular. Genel HTTP tetikleyicileri ile doğrulama yanıtını uygulamanız gerekir.

Bu işlev hakkında daha fazla bilgi edinmek için bkz. function.json ve run.csx dosyaları.

İşlev proje kodu, doğrudan ortak örnek depodan dağıtılır. 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.

Olay aboneliği oluşturma

Olay aboneliği, belirli bir uç noktaya gönderilmesini istediğiniz, sağlayıcı tarafından oluşturulmuş olayları gösterir. Bu örnekte uç nokta, işleviniz tarafından kullanıma sunulur. Azure Portal'da işlevinize bildirimler gönderen bir olay aboneliği oluşturmak için aşağıdaki adımları kullanın:

  1. Azure portal sayfanın üst kısmında oluşturduğunuz işlev uygulamasını arayın ve seçinFunction App. İşlevler'i ve küçük resim işlevini seçin.

    Portalda Thumbnail işlevini seçme

  2. Tümleştirme'yi ve ardından Event Grid Tetikleyicisi'ni ve event grid aboneliği oluştur'u seçin.

    Azure portal Event Grid aboneliği ekleme bölümüne gidin

  3. Tabloda belirtilen olay aboneliği ayarlarını kullanın.

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

    Ayar Önerilen değer Açıklama
    Ad imageresizersub Yeni olay aboneliğinizi tanımlayan ad.
    Konu türü Depolama hesapları Depolama hesabı olay sağlayıcısını seçin.
    Abonelik Azure aboneliğiniz Varsayılan olarak, geçerli Azure aboneliğiniz seçili durumdadır.
    Kaynak grubu myResourceGroup Var olanı kullan’ı seçin ve bu öğreticide kullandığınız kaynak grubunu belirleyin.
    Kaynak Blob depolama hesabınız Azure işlev uygulaması tarafından kullanılan blob depolama hesabını değil görüntülerin depolandığı Blob depolama hesabını seçin.
    Sistem Konu Adı imagestoragesystopic Sistem konusu için bir ad belirtin. Sistem konuları hakkında bilgi edinmek için bkz . Sistem konularına genel bakış.
    Olay türleri Oluşturulan blob Oluşturulan blob dışındaki tüm türlerin işaretini kaldırın. Yalnızca Microsoft.Storage.BlobCreated türündeki olaylar işleve geçirilir.
    Uç nokta türü otomatik oluşturulmuş Azure İşlevi olarak önceden tanımlanmıştır.
    Bitiş noktası otomatik oluşturulmuş İşlevin adı. Bu durumda küçük resimdir.
  4. Filtreler sekmesine geçin ve aşağıdaki eylemleri gerçekleştirin:

    1. Konu filtrelemeyi etkinleştir seçeneğini belirleyin.

    2. Konu ile başlar için şu değeri girin: /blobServices/default/containers/images/.

      Olay aboneliği için filtre belirtme

  5. Kapsayıcıya blob eklendiğinde işlevi tetikleyen Thumbnail bir olay aboneliği oluşturmak üzere olay aboneliğini eklemek için Oluştur'uimages seçin. işlevi görüntüleri yeniden boyutlandırır ve kapsayıcıya thumbnails ekler.

Arka uç hizmetleri yapılandırıldıktan sonra, görüntü yeniden boyutlandırma işlevini örnek web uygulamasında test edin.

Örnek uygulamayı test etme

Web uygulamasında görüntü yeniden boyutlandırmayı test etmek için, yayımlanan uygulamanızın URL'sine gidin. Web uygulamasının varsayılan URL'si https://<web_app>.azurewebsites.net şeklindedir.

Dosya seçmek ve karşıya yüklemek için Fotoğrafları karşıya yükle'yi seçin. Ayrıca bu bölgeye fotoğraf sürükleyebilirsiniz.

Karşıya yüklenen görüntü kaybolduktan sonra, Oluşturulan Küçük Resimler döngüde karşıya yüklenen görüntünün bir kopyasının görüntülendiğine dikkat edin. 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.

.NET v12 SDK'sı için tarayıcıda

Sonraki adımlar

İçerik tablosunun (İÇINDEKILER) Öğreticiler bölümünde diğer öğreticilere bakın.