Öğretici: Olay aboneliği kullanarak blob kapsayıcılarında Azure İşlevleri tetikleme

Blob Depolama tetikleyicisinin önceki sürümlerini Azure İşlevleri ile kullanıyorsanız, tetikleyici blob kapsayıcısını güncelleştirmeler için yokladığı için genellikle gecikmeli yürütmeler alırsınız. Aynı kapsayıcıya bir olay aboneliği kullanarak işlevinizi tetikleyerek gecikme süresini azaltabilirsiniz. Olay aboneliği, kapsayıcıdaki değişiklikleri gerçekleşirken iletmek için Event Grid altyapısını kullanır. En son Azure İşlevleri uzantılarını kullanarak bu özelliği uygulayabilirsiniz.

Bu makalede, kapsayıcıya blob eklendiğinde tetiklenen olaylara göre çalışan bir işlevin nasıl oluşturulacağı gösterilmektedir. Yerel geliştirme ve projenizi Azure'a dağıtmadan önce işlevin yerel olarak çalışıp çalışmadığını denetlemek için Visual Studio Code'ı kullanacaksınız.

  • Azure Depolama'da genel bir depolama v2 hesabı oluşturun.
  • Blob depolamada kapsayıcı oluşturma.
  • Olay temelli blob Depolama tetiklenen bir işlev oluşturun.
  • Blob kapsayıcısına olay aboneliği oluşturma.
  • Dosyaları karşıya yükleyerek ngrok kullanarak yerel olarak hata ayıklama.
  • Azure'a dağıtın ve filtrelenmiş olay aboneliği oluşturun.

Önemli

Bu makalede, Node.js programlama modelinin birden çok sürümünü desteklemek için sekmeler kullanılır. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.

Önkoşullar

Not

Visual Studio Code için Azure Depolama uzantısı şu anda önizleme aşamasındadır.

Depolama hesabı oluşturma

Azure Depolama ile olay aboneliği kullanmak için genel amaçlı bir v2 depolama hesabına ihtiyacınız vardır. Varsayılan olarak, Azure Depolama uzantısı yüklü olduğunda Visual Studio Code projenizden bu depolama hesabını oluşturabilirsiniz.

  1. Visual Studio Code'da komut paletini açın (F1 tuşuna basın), girin Azure Storage: Create Storage Account.... İstemlerde aşağıdaki bilgileri sağlayın:

    İstem Eylem
    Yeni depolama hesabının adını girin Genel olarak benzersiz bir ad sağlayın. Depolama hesap adlarının uzunluğu yalnızca küçük harf ve sayılarla 3 ile 24 karakter arasında olmalıdır. Daha kolay tanımlama için kaynak grubu ve işlev uygulaması adı için aynı adı kullanacağız.
    Yeni kaynaklar için bir konum seçin Daha iyi performans için size yakın bir bölge seçin.

    Uzantı, sağladığınız adla genel amaçlı bir v2 depolama hesabı oluşturur. Depolama hesabını içeren kaynak grubu için de aynı ad kullanılır.

  2. Depolama hesabını oluşturduktan sonra komut paletini açın (F1 tuşuna basın) ve girin Azure Storage: Create Blob Container.... İstemlerde aşağıdaki bilgileri sağlayın:

    İstem Eylem
    Kaynak seçin Oluşturduğunuz depolama hesabını seçin.
    Yeni blob kapsayıcısı için bir ad girin Kod projenizde başvurulan kapsayıcı adı olan değerini girin samples-workitems.

Blob kapsayıcısını oluşturduğunuza göre, hem bu kapsayıcıda tetikleyen işlevi hem de işlevinize olay teslim eden olay aboneliğini oluşturabilirsiniz.

Blob ile tetiklenen işlev oluşturma

Visual Studio Code kullanarak blob Depolama ile tetiklenen bir işlev oluşturduğunuzda, yeni bir proje de oluşturursunuz. Normal yoklanan kapsayıcıyı kullanmak yerine kaynak olarak bir olay aboneliği kullanmak için işlevini düzenlemeniz gerekir.

  1. Visual Studio Code'da işlev uygulamanızı açın.

  2. Komut paletini açın (F1 tuşuna basın), girin Azure Functions: Create Function...ve Yeni proje oluştur'u seçin.

  3. Proje çalışma alanınız için dizin konumunu seçin. Yeni bir klasör oluşturduğunuzdan veya proje çalışma alanı için boş bir klasör seçtiğinizden emin olun.

    Zaten bir çalışma alanının parçası olan bir proje klasörünü seçmeyin.

  4. İstemlerde aşağıdaki bilgileri sağlayın:

    İstem Eylem
    Dil seçin C# öğesini seçin.
    .NET çalışma zamanı seçme Yalıtılmış bir çalışan işleminde veya .NET 6.0 LTS işlem içinde çalıştırmak için öğesini seçin.NET 6.0 Isolated LTS.
    Projenizin ilk işlevi için bir şablon seçin Azure Blob Storage trigger öğesini seçin.
    İşlev adı belirtin BlobTriggerEventGrid girin.
    Ad alanı sağlama My.Functions girin.
    "local.settings.json" ayarı seçin Create new local app setting öğesini seçin.
    Depolama hesabı seçme Listeden oluşturduğunuz depolama hesabını seçin.
    Bu, tetikleyicinin izleyeceği depolama hesabınızdaki yoldur Varsayılan değerini samples-workitemskabul edin.
    Projenizi nasıl açmak istediğinizi seçin Open in current window öğesini seçin.
    İstem Eylem
    Dil seçin Python öğesini seçin.
    Sanal ortam oluşturmak için Python yorumlayıcısını seçme Tercih ettiğiniz Python yorumlayıcıyı seçin. Bir seçenek gösterilmiyorsa Python ikili dosyanızın tam yolunu girin.
    Projenizin ilk işlevi için bir şablon seçin Azure Blob Storage trigger öğesini seçin.
    İşlev adı belirtin BlobTriggerEventGrid girin.
    "local.settings.json" ayarı seçin Create new local app setting öğesini seçin.
    Depolama hesabı seçme Listeden oluşturduğunuz depolama hesabını seçin.
    Bu, tetikleyicinin izleyeceği depolama hesabınızdaki yoldur Varsayılan değerini samples-workitemskabul edin.
    Projenizi nasıl açmak istediğinizi seçin Open in current window öğesini seçin.
    İstem Eylem
    Dil seçin Java öğesini seçin.
    Java sürümünü seçme İşlevlerinizin Azure'da çalıştığı ve yerel olarak doğruladığınız Java sürümünü veya Java 8öğesini seçinJava 11.
    Grup kimliği belirtin com.function öğesini seçin.
    Yapıt kimliği sağlama BlobTriggerEventGrid öğesini seçin.
    Sürüm sağlama 1.0-SNAPSHOT öğesini seçin.
    Paket adı belirtin com.function öğesini seçin.
    Uygulama adı belirtin ile BlobTriggerEventGridbaşlayan oluşturulan adı kabul edin.
    Java projesi için derleme aracını seçin Maven öğesini seçin.
    Projenizi nasıl açmak istediğinizi seçin Open in current window öğesini seçin.
    İstem Eylem
    İşlev projeniz için bir dil seçin TypeScript öğesini seçin.
    TypeScript programlama modeli seçme Model V4 öğesini seçin.
    Projenizin ilk işlevi için bir şablon seçin Azure Blob Storage trigger öğesini seçin.
    İşlev adı belirtin BlobTriggerEventGrid girin.
    "local.settings.json" ayarı seçin Create new local app setting öğesini seçin.
    Depolama hesabı seçme Oluşturduğunuz depolama hesabını seçin.
    Bu, tetikleyicinin izleyeceği depolama hesabınızdaki yoldur Varsayılan değerini samples-workitemskabul edin.
    Projenizi nasıl açmak istediğinizi seçin Open in current window öğesini seçin.
    İstem Eylem
    İşlev projeniz için bir dil seçin JavaScript öğesini seçin.
    JavaScript programlama modeli seçme Model V4 öğesini seçin.
    Projenizin ilk işlevi için bir şablon seçin Azure Blob Storage trigger öğesini seçin.
    İşlev adı belirtin BlobTriggerEventGrid girin.
    "local.settings.json" ayarı seçin Create new local app setting öğesini seçin.
    Depolama hesabı seçme Oluşturduğunuz depolama hesabını seçin.
    Bu, tetikleyicinin izleyeceği depolama hesabınızdaki yoldur Varsayılan değerini samples-workitemskabul edin.
    Projenizi nasıl açmak istediğinizi seçin Open in current window öğesini seçin.
    İstem Eylem
    İşlev projeniz için bir dil seçin PowerShell öğesini seçin.
    Projenizin ilk işlevi için bir şablon seçin Azure Blob Storage trigger öğesini seçin.
    İşlev adı belirtin BlobTriggerEventGrid girin.
    "local.settings.json" ayarı seçin Create new local app setting öğesini seçin.
    Depolama hesabı seçme Oluşturduğunuz depolama hesabını seçin.
    Bu, tetikleyicinin izleyeceği depolama hesabınızdaki yoldur Varsayılan değerini samples-workitemskabul edin.
    Projenizi nasıl açmak istediğinizi seçin Open in current window öğesini seçin.
  5. İstem görüntülendikten sonra Depolama hesabı>seç Çalışma alanına ekle'yi seçin.

Kolaylık olması için bu öğreticide işlev uygulamanızla aynı depolama hesabı yeniden kullanılır. Ancak üretimde işlev uygulamanızla ayrı bir depolama hesabı kullanmak isteyebilirsiniz. Daha fazla bilgi için bkz. Azure İşlevleri için depolama hakkında dikkat edilmesi gerekenler.

Depolama uzantısını yükseltme

Event Grid tabanlı Blob Depolama tetikleyicisini kullanmak için işlevinizin Depolama uzantısı için en az 5.x sürümü gerekir.

Projenizi gerekli uzantı sürümüyle yükseltmek için Terminal penceresinde şu komutu çalıştırın: dotnet add package

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs --version 6.1.0
  1. host.json proje dosyasını açın ve öğesini inceleyin extensionBundle .

  2. extensionBundle.version en az 3.3.0 değilse değerini en son değerle değiştirinextensionBundle:

    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
    

İşlevi olayları kullanacak şekilde güncelleştirme

BlobTriggerEventGrid.cs dosyasında Blob tetikleyici özniteliğinin parametrelerine ekleyin Source = BlobTriggerSource.EventGrid , örneğin:

[Function("BlobTriggerCSharp")]
public async Task Run([BlobTrigger("samples-workitems/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myBlob, string name, FunctionContext executionContext)
{
    var logger = executionContext.GetLogger("BlobTriggerCSharp");
    logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Size: {myBlob.Length} Bytes");
}

İşlevi oluşturduktan sonra function.json yapılandırma dosyasında bağlamaya myBlob ekleyin"source": "EventGrid", örneğin:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. Oluşturulan Function.java dosyada, içeriği aşağıdaki kodla değiştirin ve dosyayı olarak BlobTriggerEventGrid.javayeniden adlandırın:

    package com.function;
    
    import com.microsoft.azure.functions.annotation.*;
    import com.microsoft.azure.functions.*;
    
    /**
    * Azure Functions with Azure Blob trigger.
    */
    public class BlobTriggerEventGrid {
        /**
        * This function will be invoked when a new or updated blob is detected at the specified path. The blob contents are provided as input to this function.
        */
        @FunctionName("BlobTriggerEventGrid")
        @StorageAccount("glengatesteventgridblob_STORAGE")
        public void run(
            @BlobTrigger(name = "content", path = "samples-workitems/{name}", dataType = "binary", source = "EventGrid" ) byte[] content,
            @BindingName("name") String name,
            final ExecutionContext context
        ) {
              context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n  Size: " + content.length + " Bytes");
          }
    }
    
  2. Artık yeni tetikleyici türüne uygulanmayan ilişkili birim testi dosyasını kaldırın.

İşlevi oluşturduktan sonra TypeScript dosyanızdaki nesneye options ekleyinsource: "EventGrid", örneğin:

import { app, InvocationContext } from '@azure/functions';

export async function storageBlobTrigger1(blob: Buffer, context: InvocationContext): Promise<void> {
    context.log(
        `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
    );
}

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: storageBlobTrigger1,
});

İşlevi oluşturduktan sonra JavaScript dosyanızdaki nesneye options ekleyinsource: "EventGrid", örneğin:

const { app } = require('@azure/functions');

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: (blob, context) => {
        context.log(
            `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
        );
    },
});

İşlevi oluşturduktan sonra function.json yapılandırma dosyasında bağlamaya myBlob ekleyin"source": "EventGrid", örneğin:

{
    "bindings": [
        {
            "name": "myblob",
            "type": "blobTrigger",
            "direction": "in",
            "path": "samples-workitems/{name}",
            "source": "EventGrid",
            "connection": "<NAMED_STORAGE_CONNECTION>"
        }
    ]
}

Yerel hata ayıklamayı başlatma

Event Grid, Azure portalında bir olay aboneliği oluşturduğunuzda uç nokta URL'sini doğrular. Bu doğrulama, yerel hata ayıklama için bir olay aboneliği oluşturabilmeniz için önce işlevinizin ngrok yardımcı programı tarafından etkinleştirilen uzaktan erişimle yerel olarak çalışıyor olması gerektiği anlamına gelir. Yerel işlev kodunuz çalışmıyorsa ve Azure'a erişilemiyorsa olay aboneliğini oluşturamazsınız.

Blob tetikleyici uç noktasını belirleme

İşleviniz yerel olarak çalıştığında, olay temelli blob depolama tetikleyicisi için kullanılan varsayılan uç nokta aşağıdaki URL'ye benzer:

http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid
http://localhost:7071/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid

Daha sonra olay abonelikleri için uç nokta URL'leri oluşturmak için kullanacağınız bu yolu kaydedin. Blob Depolama tetiklenen işleviniz için farklı bir ad kullandıysanız, sorgu dizesindeki değeri değiştirmeniz functionName gerekir.

Not

Uç nokta bir Blob Depolama tetikleyicisi için olayları işlediğinden uç nokta yolu içerirblobs. Bunun yerine bir Event Grid tetikleyicisinin uç nokta URL'si yolda olur eventgrid .

ngrok çalıştırma

Makinenizde hata ayıklanan bir işleve girmek için Azure Event Grid'in yerel bilgisayarınızda çalışan işlevlerle iletişim kurması için bir yol sağlamanız gerekir.

ngrok yardımcı programı, dış istekleri rastgele oluşturulan bir proxy sunucu adresine yerel bilgisayarınızdaki belirli bir adrese ve bağlantı noktasına iletir. aracılığıyla makinenizde çalışan işlevin web kancası uç noktasını çağırın.

  1. Aşağıdaki komutu kullanarak ngrok'ı başlatın:

    ngrok.exe http http://localhost:7071
    

    Yardımcı program başlatılırken komut penceresi aşağıdaki ekran görüntüsüne benzer görünmelidir:

    Screenshot that shows the Command Prompt after starting the

  2. ngrok çalıştırıldığında oluşturulan HTTPS URL'sini kopyalayın. Bu değer, ngrok kullanılarak kullanıma sunulan bilgisayarınızda web kancası uç noktasını belirlemek için kullanılır.

Önemli

Bu noktada, durmayın ngrok. her başlattığınızda ngrok, HTTPS URL'si farklı bir değerle yeniden oluşturulur. Bir olay aboneliğinin uç noktası değiştirilemediğinden, her çalıştırdığınızda ngrokyeni bir olay aboneliği oluşturmanız gerekir.

Ngrok hesabı oluşturmadığınız sürece en fazla ngrok oturum süresi iki saatle sınırlıdır.

Uç nokta URL'sini oluşturma

Olay aboneliğinde kullanılan uç nokta, ön ekli sunucu adı, yol ve sorgu dizesi olmak üzere üç farklı bölümden oluşur. Aşağıdaki tabloda bu bölümler açıklanmaktadır:

URL bölümü Açıklama
Ön ek ve sunucu adı İşleviniz yerel olarak çalıştığında, önek https:// içeren sunucu adı ngrok tarafından oluşturulan İletme URL'sinden gelir. localhost URL'sinde , ngrok URL'si öğesinin yerini alır http://localhost:7071. Azure'da çalışırken, bunun yerine genellikle biçiminde https://<FUNCTION_APP_NAME>.azurewebsites.netolan yayımlanmış işlev uygulaması sunucusunu kullanırsınız.
Yol Uç nokta URL'sinin yol bölümü daha önce kopyalanan localhost URL'sinden gelir ve blob Depolama tetikleyicisi gibi /runtime/webhooks/blobs görünür. Event Grid tetikleyicisinin yolu şu olabilir: /runtime/webhooks/EventGrid
Sorgu dizesi .NET dahil olmak üzere tüm diller için parametreyi functionName=Host.Functions.BlobTriggerEventGrid yalıtmış, sorgu dizesinde olması functionName=BlobTriggerEventGrid gereken .NET İşlem İçi dışında, olayı işleyen işlevin adını ayarlar. İşleviniz için farklı bir ad kullandıysanız bu değeri değiştirmeniz gerekir. Yerel olarak çalıştırılırken erişim anahtarı gerekmez. Azure'da çalışırken, URL'ye portaldan alabileceğiniz bir code= anahtar içeren bir parametre de eklemeniz gerekir.

Aşağıdaki ekran görüntüsünde adlı BlobTriggerEventGridbir Blob Depolama tetikleyicisi kullanılırken son uç nokta URL'sinin nasıl görüneceğine ilişkin bir örnek gösterilmektedir:

Endpoint selection

Hata ayıklamayı başlatma

ngrok zaten çalışırken yerel projenizi şu şekilde başlatın:

  1. İşlevinizde günlüğe kaydetmeyi işleyen satırda bir kesme noktası ayarlayın.

  2. Hata ayıklama oturumu başlatın.

    Yeni bir terminal açın ve hata ayıklama oturumunu başlatmak için aşağıdaki mvn komutu çalıştırın.

    mvn azure-functions:run -DenableDebug
    

    Hata ayıklama oturumu başlatmak için F5 tuşuna basın.

Kodunuz çalışırken ve ngrok iletme istekleriyle blob kapsayıcısına bir olay aboneliği oluşturmanın zamanı geldi.

Olay aboneliğini oluşturma

Azure Event Grid tarafından desteklenen bir olay aboneliği, bağlantılı blob kapsayıcısında yapılan değişikliklere göre olayları tetikler. Bu olay daha sonra işlevinizin tetikleyicisinde web kancası uç noktasına gönderilir. Olay aboneliği oluşturulduktan sonra uç nokta URL'si değiştirilemez. Bu, yerel hata ayıklamayı tamamladıktan sonra (veya ngrok'ı yeniden başlatırsanız) olay aboneliğini silmeniz ve yeniden oluşturmanız gerektiği anlamına gelir.

  1. Visual Studio Code'da Etkinlik çubuğunda Azure simgesini seçin. Kaynaklar'da aboneliğinizi genişletin, Depolama hesaplarını genişletin, daha önce oluşturduğunuz depolama hesabına sağ tıklayın ve Portalda aç'ı seçin.

  2. Azure portalında oturum açın ve depolama hesabınızın Kaynak grubunu not edin. İşiniz bittiğinde kaynakları temizlemeyi kolaylaştırmak için diğer kaynaklarınızı aynı grupta oluşturacaksınız.

  3. soldaki menüden Olaylar seçeneğini belirleyin.

    Add storage account event

  4. Olaylar penceresinde + Olay Aboneliği düğmesini seçin ve aşağıdaki tablodan Temel sekmesine değerler sağlayın:

    Ayar Önerilen değer Veri Akışı Açıklaması
    Adı myBlobLocalNgrokEventSub Olay aboneliğini tanımlayan ad. Olay aboneliğini hızla bulmak için adı kullanabilirsiniz.
    Olay Şeması Event Grid Şeması Olaylar için varsayılan şemayı kullanın.
    Sistem Konu Adı samples-workitems-blobs Kapsayıcıyı temsil eden konunun adı. Konu başlığı ilk abonelikle oluşturulur ve bunu gelecekteki olay abonelikleri için kullanacaksınız.
    Olay Türlerine Göre Filtrele Blob Oluşturuldu
    Uç Nokta Türü Web Kancası Blob depolama tetikleyicisi bir web kancası uç noktası kullanır. Event Grid tetikleyicisi için Azure İşlevleri kullanırsınız.
    Uç nokta Ngrok tabanlı URL uç noktanız Daha önce belirlediğiniz ngrok tabanlı URL uç noktasını kullanın.
  5. Uç nokta URL'sini doğrulamak için Seçimi onayla'yı seçin.

  6. Olay aboneliğini oluşturmak için Oluştur'u seçin.

Kapsayıcıya dosya yükleme

Olay aboneliği ve kod projeniz ve ngrok çalışmaya devam ettikten sonra artık işlevinizi tetikleyecek bir dosyayı depolama kapsayıcınıza yükleyebilirsiniz. Visual Studio Code kullanarak bilgisayarınızdan blob depolama kapsayıcınıza dosya yükleyebilirsiniz.

  1. Visual Studio Code'da komut paletini açın (F1 tuşuna basın) ve yazın Azure Storage: Upload Files....

  2. iletişim kutusunda, tercihen çok büyük olmayan bir ikili görüntü dosyası olan bir dosya seçin, Karşıya Yükle'yi seçin.

  3. İstemlerde aşağıdaki bilgileri sağlayın:

    Ayar Önerilen değer Açıklama
    Kaynak seçin Depolama hesabı adı Önceki adımda oluşturduğunuz depolama hesabının adını seçin.
    Bir kaynak türü seçin Blob Kapsayıcıları Blob kapsayıcısına yükleniyorsunuz.
    Blob Kapsayıcısı'nın seçilmesi samples-workitems Bu değer, önceki adımda oluşturduğunuz kapsayıcının adıdır.
    Bu karşıya yüklemenin hedef dizinini girin varsayılan Kapsayıcı kökü olan varsayılan değerini /kabul edin.

Bu komut, bilgisayarınızdan Azure'daki depolama kapsayıcısına bir dosya yükler. Bu noktada, çalışan ngrok örneğiniz bir isteğin iletildiğini bildirmelidir. Hata ayıklama oturumunuzun func.exe çıkışında işlevinizin başlatıldığını da görürsünüz. Umarım bu noktada hata ayıklama oturumunuz kesme noktasını ayarladığınız yerde sizi bekliyordur.

Projeyi Azure'da yayımlama

İşlev kodunuzu yerel olarak başarıyla doğruladığınıza göre, projeyi Azure'da yeni bir işlev uygulamasında yayımlamanın zamanı geldi.

İşlev uygulaması oluşturma

Aşağıdaki adımlar Azure'da ihtiyacınız olan kaynakları oluşturur ve proje dosyalarınızı dağıtır.

  1. Komut paletine Azure İşlevleri: Azure'da işlev uygulaması oluştur... yazın. (Gelişmiş).

  2. İstemleri izleyerek şu bilgileri sağlayın:

    İstem Seçim
    Yeni işlev uygulaması için genel olarak benzersiz bir ad girin. Yeni işlev uygulamanızı tanımlayan genel olarak benzersiz bir ad yazıp Enter tuşuna basın. İşlev uygulaması adına ilişkin geçerli karakterler a-z, 0-9 ve - işaretidir. Bu adı yazın; Daha sonra yeni uç nokta URL'sini oluştururken buna ihtiyacınız olacak.
    Bir çalışma zamanı yığını seçin. Yerel olarak çalıştırdığınız dil sürümünü seçin.
    bir işletim sistemi seçin. Linux veya Windows'u seçin. Python uygulamaları Linux üzerinde çalıştırılmalıdır.
    Yeni kaynaklar için bir kaynak grubu seçin. Daha önce portalda not ettiğiniz depolama hesabınızla oluşturduğunuz kaynak grubunun adını seçin.
    Yeni kaynaklar için bir konum seçin. Size yakın bir bölgede veya işlevlerinizin erişebilecekleri diğer hizmetlere yakın bir konum seçin.
    Bir barındırma planı seçin. Yalnızca işlevleriniz çalıştırıldığında ücretlendirileceğiniz sunucusuz Tüketim planı barındırma için Tüketim'i seçin.
    Bir depolama hesabı seçin. Kullanmakta olduğunuz mevcut depolama hesabının adını seçin.
    Uygulamanız için bir Uygulama Analizler kaynağı seçin. Yeni Uygulama Analizler kaynağı oluştur'u seçin ve isteminde işlevlerinizden çalışma zamanı verilerini depolamak için kullanılan örnek için bir ad yazın.

    İşlev uygulamanız oluşturulduktan ve dağıtım paketi uygulandıktan sonra bir bildirim görüntülenir. Oluşturduğunuz Azure kaynakları dahil olmak üzere oluşturma ve dağıtım sonuçlarını görüntülemek için bu bildirimde Çıkışı Görüntüle'yi seçin.

İşlev kodunu dağıtma

Önemli

Mevcut bir işlev uygulamasına dağıtılması her zaman Azure'da bu uygulamanın içeriğinin üzerine yazılır.

  1. Azure etkinliğinin Kaynaklar alanında, yeni oluşturduğunuz işlev uygulaması kaynağını bulun, kaynağa sağ tıklayın ve İşlev uygulamasına dağıt... öğesini seçin.

  2. Önceki dağıtımların üzerine yazmanız istendiğinde, işlev kodunuzu yeni işlev uygulaması kaynağına dağıtmak için Dağıt'ı seçin.

  3. Dağıtım tamamlandıktan sonra, oluşturduğunuz Azure kaynakları da dahil olmak üzere oluşturma ve dağıtım sonuçlarını görüntülemek için Çıkışı Görüntüle'yi seçin. Bildirimi kaçırırsanız, yeniden görmek için sağ alt köşedeki zil simgesini seçin.

    Screenshot of the View Output window.

Uygulama ayarlarını yayımlama

local.settings.json yerel ayarları otomatik olarak yayımlanmadığından, işlevinizin Azure'da düzgün çalışması için bunları şimdi karşıya yüklemeniz gerekir.

Komut paletine Azure İşlevleri: Yerel Ayarlar yükle... yazın ve Kaynak seçin. isteminde işlev uygulamanızın adını seçin.

Olay aboneliğini yeniden oluşturma

İşlev uygulaması Artık Azure'da çalıştığına göre, yeni bir olay aboneliği oluşturmanız gerekir. Bu yeni olay aboneliği, Azure'daki işlevinizin uç noktasını kullanır. Ayrıca olay aboneliğine bir filtre ekleyerek işlevin yalnızca JPEG (.jpg) dosyaları kapsayıcıya eklendiğinde tetiklenmesini de sağlarsınız. Azure'da uç nokta URL'si, Event Grid dışındaki aktörlerin uç noktaya erişmesini engellemeye yardımcı olan bir erişim anahtarı da içerir.

Blob uzantısı anahtarını alma

  1. Visual Studio Code'da Etkinlik çubuğunda Azure simgesini seçin. Kaynaklar'da aboneliğinizi genişletin, İşlev Uygulaması'nı genişletin, oluşturduğunuz işlev uygulamasına sağ tıklayın ve Portalda aç'ı seçin.

  2. Soldaki menüden İşlevler'in altında Uygulama anahtarları'nı seçin.

  3. Sistem anahtarları'nın altında blobs_extension adlı anahtarı seçin ve Value anahtarını kopyalayın.

Bu değeri yeni uç nokta URL'sinin sorgu dizesine ekleyeceksiniz.

Uç nokta URL'sini oluşturma

Aşağıdaki örneği temel alarak Blob Depolama tetikleyicisi için yeni bir uç nokta URL'si oluşturun:

https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>
https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.BlobTriggerEventGrid&code=<BLOB_EXTENSION_KEY>

Bu örnekte değerini <FUNCTION_APP_NAME> işlev uygulamanızın adıyla değiştirin ve değerini portaldan edindiğiniz değerle değiştirin <BLOB_EXTENSION_KEY> . İşleviniz için farklı bir ad kullandıysanız, sorgu dizesini functionName gerektiği gibi değiştirmeniz de gerekir.

Filtrelenmiş olay aboneliği oluşturma

Bir olay aboneliğinin uç nokta URL'si değiştirilemediğinden yeni bir olay aboneliği oluşturmanız gerekir. Yeniden kullanılamayacağı için eski olay aboneliğini de silmeniz gerekir.

Bu kez, yalnızca JPEG dosyalarının (*.jpg) işlevi tetiklemesi için olay aboneliğine filtreyi ekleyeceksiniz.

  1. Visual Studio Code'da Etkinlik çubuğunda Azure simgesini seçin. Kaynaklar'da aboneliğinizi genişletin, Depolama hesaplarını genişletin, daha önce oluşturduğunuz depolama hesabına sağ tıklayın ve Portalda aç'ı seçin.

  2. Azure portalında soldaki menüden Olaylar seçeneğini belirleyin.

  3. Olaylar penceresinde eski ngrok tabanlı olay aboneliğinizi seçin ve Kaydet'i sil'i>seçin. Bu eylem eski olay aboneliğini kaldırır.

  4. + Olay Aboneliği düğmesini seçin ve aşağıdaki tablodan Temel sekmesine değer sağlayın:

    Ayar Önerilen değer Veri Akışı Açıklaması
    Adı myBlobAzureEventSub Olay aboneliğini tanımlayan ad. Olay aboneliğini hızla bulmak için adı kullanabilirsiniz.
    Olay Şeması Event Grid Şeması Olaylar için varsayılan şemayı kullanın.
    Olay Türlerine Göre Filtrele Blob Oluşturuldu
    Uç Nokta Türü Web Kancası Blob depolama tetikleyicisi bir web kancası uç noktası kullanır. Event Grid tetikleyicisi için Azure İşlevleri kullanırsınız.
    Uç nokta Yeni Azure tabanlı URL uç noktanız Oluşturduğunuz ve anahtar değerini içeren URL uç noktasını kullanın.
  5. Uç nokta URL'sini doğrulamak için Seçimi onayla'yı seçin.

  6. Filtreler sekmesini seçin, Konu filtreleri'ninaltında Konu filtrelemeyi etkinleştir'in altında Konu ile biter yazın .jpg. Bu, olayları yalnızca JPEG dosyalarına filtreler.

    Add filter

  7. Olay aboneliğini oluşturmak için Oluştur'u seçin.

Azure'da işlevi doğrulama

Topolojinin tamamı artık Azure'da çalışırken, her şeyin düzgün çalıştığını doğrulamanın zamanı geldi. Zaten portalda olduğunuzdan, en kolayı oradan bir dosyayı karşıya yüklemektir.

  1. Portaldaki depolama hesabı sayfanızda Kapsayıcılar'ı seçin ve samples-workitems kapsayıcınızı seçin.

  2. Sağ taraftaki karşıya yükleme sayfasını açmak için Karşıya Yükle düğmesini seçin, karşıya yüklenecek dosyayı .jpg bulmak için yerel dosya sisteminize göz atın ve ardından Karşıya Yükle düğmesini seçerek blobu karşıya yükleyin. Artık kapsayıcı karşıya yükleme olayına göre işlevinizin çalıştığını doğrulayabilirsiniz.

  3. Depolama hesabınızda Olaylar sayfasına dönün, Olay Abonelikleri'ni seçin ve bir olayın teslim edilmiş olduğunu görmeniz gerekir.

  4. Portaldaki işlev uygulaması sayfanıza dönün, İşlevler'in altında İşlevler'i seçin, işlevinizi seçin ve en az bir Toplam Yürütme Sayısı görmeniz gerekir.

  5. Geliştirici'nin altında İzleyici'yi seçtiğinizde başarılı işlev yürütmelerinizden yazılmış izlemeler görmeniz gerekir. Olaylar Uygulama Analizler tarafından işlendiği için beş dakika gecikme olabilir.

Kaynakları temizleme

Bir sonraki adıma devam edip işlevinize bir Azure Depolama kuyruğu bağlaması eklediğinizde, önceden yaptıklarınızı oluşturmak için tüm kaynaklarınızı yerinde tutmanız gerekir.

Aksi takdirde, daha fazla maliyet oluşmasını önlemek için işlev uygulamasını ve ilgili kaynaklarını silmek için aşağıdaki adımları kullanabilirsiniz.

  1. Visual Studio Code'da F1 tuşuna basarak komut paletini açın. Komut paletinde araması yapın ve öğesini seçin Azure: Open in portal.

  2. İşlev uygulamanızı seçin ve Enter tuşuna basın. İşlev uygulaması sayfası Azure portalında açılır.

  3. Genel Bakış sekmesinde Kaynak grubunun yanındaki adlandırılmış bağlantıyı seçin.

    Screenshot of select the resource group to delete from the function app page.

  4. Kaynak grubu sayfasında, dahil edilen kaynakların listesini gözden geçirin ve bunların silmek istediğiniz kaynaklar olduğunu doğrulayın.

  5. Kaynak grubunu sil’i seçin ve yönergeleri izleyin.

    Silme işlemi birkaç dakika sürebilir. İşlem tamamlandığında, birkaç saniye boyunca bir bildirim görüntülenir. Bildirimi görüntülemek için sayfanın üst kısmındaki zil simgesini de seçebilirsiniz.

İşlev maliyetleri hakkında daha fazla bilgi için bkz . Tüketim planı maliyetlerini tahmin etme.

Sonraki adımlar