Öğretici: Karşıya yüklenen görüntüleri yeniden boyutlandırmayı otomatik hale Event Grid

Azure Event Grid, bulut için bir olay hizmetidir. Event Grid, Azure hizmetleri veya üçüncü taraf kaynaklar tarafından başlatılan olaylara abonelikler oluşturmanızı sağlar.

Bu öğretici, Depolama öğreticileri serisinin ikinci bölümüdür. Önceki Depolama öğreticisine, Azure Event Grid ve Azure İşlevleri’ni kullanarak sunucusuz otomatik küçük resim oluşturma işlemini ekler. 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. Blob depolama oluşturma olayına karşı bir olay aboneliği oluşturulur. Belirli bir Blob depolama kapsayıcısına blob eklendiğinde bir işlev uç noktası çağrılır. 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.

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.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Azure Depolama hesabı oluşturma
  • Azure İşlevleri’ni kullanarak sunucusuz kod dağıtma
  • Event Grid’de bir Blob depolama olayı aboneliği oluşturma

Önkoşullar

Not

Bu makalede, Azure ile etkileşim kurmak için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

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.

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

New-AzStorageAccount komutunu kullanın.

  1. Kaynak grubu için bir ad belirtin.

    $resourceGroupName="myResourceGroup"
    
  2. Depolama hesabının konumunu belirtin.

    $location="eastus"    
    
  3. İşlev tarafından kullanılacak depolama hesabının adını belirtin.

    $functionstorage="<name of the storage account to be used by the function>"    
    
  4. Depolama hesabı oluşturma.

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

İş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.

New-AzFunctionApp komutunu kullanarak bir işlev uygulaması oluşturun.

  1. İşlev uygulaması için bir ad belirtin.

    $functionapp="<name of the function app>"    
    
  2. İşlev uygulaması oluşturma.

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

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

İş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ç gösterir.

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'}

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 $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. Bir olay aboneliği oluşturarak Event Grid'e işlevinizin URL'sinde bu bildirimleri almak istediğinizi bildirirsiniz. Bu öğreticide, blob tarafından oluşturulan olaylara abone oluyorsunuz.

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. Bu Azure portalsayfasında, sayfanın üst kısmında öğesini bulun ve Function App yeni oluşturduğunuz işlev uygulamasını seçin. İşlevler'i seçin ve Thumbnail işlevini seçin.

    Portalda Thumbnail işlevini seçin

  2. Tümleştirme'yi seçin, sonra tetikleyiciyi Event Grid aboneliği oluştur'Event Grid seçin.

    Event Grid aboneliği ekle'ye Azure portal

  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 Oluşturduğunuz Blob depolama hesabını seçin.
    Sistem Konusu 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.
    Uç Nokta otomatik oluşturulmuş İşlevin adı. Bu durumda Küçük Resim olur.
  4. Filtreler sekmesine geçiş yapın ve aşağıdaki eylemleri gerçekleştirin:

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

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

      Olay aboneliği için filtre belirtme

  5. Olay aboneliğini eklemek için Oluştur'a tıklayın. Bu, kapsayıcıya blob eklendiğinde Thumbnail işlevi tetikleyen bir olay aboneliği images oluşturur. 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.

Karşıya fotoğraf yükle bölgesine tıklayarak bir dosyayı seçip karşıya yükleyin. Ayrıca bu bölgeye fotoğraf sürükleyebilirsiniz.

Karşıya yüklenen görüntü kaybolduktan sonra, karşıya yüklenen görüntünün bir kopyasının Oluşturulan Küçük Resimler zaman içinde görüntülendiğinden emin olur. 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 bir tarayıcıda "ImageResizer" başlıklı yayımlanmış bir web . uygulamasını gösteren ekran görüntüsü.

Sonraki adımlar

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:

  • Genel bir Azure Depolama hesabı oluşturma
  • Azure İşlevleri’ni kullanarak sunucusuz kod dağıtma
  • Event Grid’de bir Blob depolama olayı aboneliği oluşturma

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.