Aracılığıyla paylaş


Hızlı Başlangıç: Azure İşlevlerini kullanarak blob depolama olaylarına yanıt verme

Bu hızlı başlangıçta, Bir Blob Depolama kapsayıcısında olaylara yanıt veren bir uygulama oluşturmak için Visual Studio Code kullanacaksınız. Öykünücü kullanarak kodu yerel olarak test ettikten sonra, Azure İşlevleri'nde Flex Consumption planında çalışan yeni bir sunucusuz işlev uygulamasına dağıtırsınız.

Proje, proje kodunuzu yerel olarak başlatmayı ve doğrulamayı ve kodunuzu Azure'a dağıtmayı kolaylaştırmak için Visual Studio Code ile Azure Geliştirici CLI (azd) uzantısını kullanır. Bu dağıtım, güvenli ve ölçeklenebilir Azure İşlevleri dağıtımları için geçerli en iyi yöntemleri izler.

Bu makale, Azure İşlevleri için Node.js programlama modelinin 4. sürümünü destekler.

Bu makale, Azure İşlevleri için Python programlama modelinin 2. sürümünü destekler.

Önkoşullar

  • 18.x veya üzerini Node.js. node --version komutunu kullanarak sürümünüzü kontrol edin.

Projeyi başlatma

azd init Şablondan yerel bir Azure İşlevleri kod projesi oluşturmak için komut paletinden komutunu kullanın.

  1. Visual Studio Code'da, projenizi oluşturmak istediğiniz klasörü veya çalışma alanını açın.

  2. Komut paletini açmak için F1 tuşuna basın, komutunu Azure Developer CLI (azd): Initialize App (init)arayın ve çalıştırın, ardından Şablon seçin'i seçin.

    Geçerli klasörü veya çalışma alanını başlatırken azd biraz gecikme olabilir.

  1. İstendiğinde Şablon seçin seçeneğini tercih edin, ardından Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI öğesini arayın ve seçin.

  2. Terminalden istendiğinde, blobevents-dotnet gibi benzersiz bir ortam adı girin.

    Bu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasör veya çalışma alanında başlatır.

  1. İstendiğinde Şablon seçin seçeneğini tercih edin, ardından Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI öğesini arayın ve seçin.

  2. Terminalden istendiğinde, blobevents-python gibi benzersiz bir ortam adı girin.

    Bu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasör veya çalışma alanında başlatır.

  1. İstendiğinde Şablon seçin seçeneğini tercih edin, ardından Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI öğesini arayın ve seçin.

  2. İstendiğinde, örneğin blobevents-typescript gibi benzersiz bir ortam adı girin.

    Bu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasör veya çalışma alanında başlatır.

  1. İstendiğinde Şablon seçin seçeneğini tercih edin, ardından Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI öğesini arayın ve seçin.

  2. İstendiğinde, örneğin blobevents-java gibi benzersiz bir ortam adı girin.

    Bu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasör veya çalışma alanında başlatır.

  1. İstendiğinde Şablon seçin seçeneğini tercih edin, ardından Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI öğesini arayın ve seçin.

  2. İstendiğinde, örneğin blobevents-powershell gibi benzersiz bir ortam adı girin.

    Bu komut , proje dosyalarını şablon deposundan çeker ve projeyi geçerli klasör veya çalışma alanında başlatır.

ortamında azd, ortamınız uygulamanız için benzersiz bir dağıtım bağlamı tutar ve birden fazla dağıtım bağlamı tanımlayabilirsiniz. Ayrıca Azure'da oluşturduğunuz kaynak grubunun adının bir parçasıdır.

local.settings.json dosyasını ekleme

İşlevler, yerel olarak çalışırken konağı yapılandırmak için local.settings.json dosyasına ihtiyaç duyar.

  1. Uygulama klasörüne gitmek için src şu komutu çalıştırın:

    cd src
    
  1. Bu JSON verilerini içeren klasörde local.settings.jsonsrc adlı bir dosya oluşturun:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Bu JSON verilerini içeren klasörde local.settings.jsonsrc adlı bir dosya oluşturun:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "java",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Bu JSON verilerini içeren klasörde local.settings.jsonsrc adlı bir dosya oluşturun:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "node",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Bu JSON verilerini içeren klasörde local.settings.jsonsrc adlı bir dosya oluşturun:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "powershell",
            "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Bu JSON verilerini içeren klasörde local.settings.jsonsrc adlı bir dosya oluşturun:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "python",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    

Sanal ortam oluşturma ve etkinleştirme

src klasöründe şu komutları çalıştırarak adlı .venvbir sanal ortam oluşturun ve etkinleştirin:

python3 -m venv .venv
source .venv/bin/activate

Python Venv paketini Linux dağıtımınıza yüklemezse aşağıdaki komutu çalıştırın:

sudo apt-get install python3-venv

Yerel depolama öykünücüsü ayarlama

Azure kaynaklarını oluşturmadan ve kullanmadan önce kod projenizi yerel olarak çalıştırmak için Azurite öykünücüsünüzü kullanın.

  1. Henüz yapmadıysanız Azurite'yi yükleyin.

  2. F1 tuşuna basın. Komut paletinde, yerel depolama öykünücüsü başlatmak için komutunu Azurite: Start arayın ve çalıştırın.

  3. Azure alanında Çalışma Alanı>Ekli Depolama Hesapları>Yerel Öykünücüsü'ni genişletin, Blob Kapsayıcıları'na sağ tıklayın (Mac'e Ctrl tuşunu basılı tutarak tıklayın), Blob Kapsayıcısı Oluştur... öğesini seçin ve yerel öykünücüde şu iki blob depolama kapsayıcısını oluşturun:

    • unprocessed-pdf: tetikleyicinin depolama olaylarını izlediği kapsayıcı.
    • processed-pdf: işlevin işlenen blobları çıkış olarak gönderdiği kapsayıcı.
  4. Blob Kapsayıcıları'nı genişletin, işlenmemiş pdf'ye sağ tıklayın (Mac'e Ctrl tuşunu basılı tutarak tıklayın), Dosyaları Karşıya Yükle...'yi seçin, kök dizini kabul etmek için Enter tuşuna basın ve proje klasöründen data PDF dosyalarını karşıya yükleyin.

Yerel olarak çalışırken, REST kullanarak olay aboneliğinden bir ileti alan işlevi simüle edip işlevi tetikleyebilirsiniz.

İşlevi yerel olarak çalıştırma

Visual Studio Code, Azurite öykünücüsü kullanarak bu projeyi yerel geliştirme bilgisayarınızda çalıştırmanıza olanak sağlamak için Azure functions core araçlarıyla tümleştirilir. Ortam değişkeni PDFProcessorSTORAGE, depolama hesabı bağlantısını tanımlar ve bu, yerel olarak çalıştırılırken local.settings.json dosyasında "UseDevelopmentStorage=true" olarak ayarlanmıştır.

  1. Bu komutu proje klasöründen src bir terminal veya komut isteminde çalıştırın:

    func start
    
    mvn clean package
    mvn azure-functions:run
    
    npm install
    func start  
    
    npm install
    npm start  
    

    İşlevler ana bilgisayarı başlatıldığında, tetikleyicinin adını ve tetikleyici türünü terminal çıkışına yazar. İşlevler'de proje kök klasörü host.json dosyasını içerir.

  2. Temel Araçlar hala Terminal'de çalışırken, projenizdeki test.http dosyasını açın ve blob olayı webhook'una bir test blob olayı göndererek İstek Gönder'i seçin, böylece işlevi tetikleyin.

    Bu adım, yerel ortamda çalışırken bir olay aboneliğinden bir olayın alımını simüle eder ve bu süreçte istek ve işlenen dosya bilgilerini günlüklerde görmeniz beklenir. REST İstemcisi kullanmıyorsanız, yükü içinde test.httpolan uç noktayı çağırmak için başka bir güvenli REST aracı kullanmanız gerekir.

  3. Blob kapsayıcısının Çalışma Alanı alanında processed-pdf dosyasını genişletin ve işlevin PDF dosyasını işlediğini ve bir processed- ön ek ile kopyalandığını doğrulayın.

  4. İşiniz bittiğinde, ana bilgisayar işlemini durdurmak func.exe için terminal penceresinde Ctrl+C tuşlarına basın.

Kodu gözden geçirme (isteğe bağlı)

ProcessBlobUpload.cs proje dosyasında Event Grid blob tetikleyicisini tanımlayan kodu gözden geçirebilirsiniz. işlevi aşağıdakilerin nasıl yapılacağını gösterir:

  • Gerçek zamanlıya yakın işleme için BlobTrigger ile Source = BlobTriggerSource.EventGrid kullanın
  • BlobClient kaynağa ve BlobContainerClient hedefe bağlanın
  • Akışlar kullanarak blob içeriğini işleme ve başka bir kapsayıcıya kopyalama

Event Grid blob tetikleyicisini tanımlayan kodu function_app.py proje dosyasında gözden geçirebilirsiniz. işlevi aşağıdakilerin nasıl yapılacağını gösterir:

  • Gerçek zamanlıya yakın işleme için @app.blob_trigger ile source="EventGrid" kullanın
  • parametresini kullanarak blob içeriğine InputStream erişme
  • Azure Depolama SDK'sını kullanarak işlenen dosyaları hedef kapsayıcıya kopyalama

Event Grid blob tetikleyicisini tanımlayan kodu processBlobUpload.ts proje dosyasında gözden geçirebilirsiniz. işlevi aşağıdakilerin nasıl yapılacağını gösterir:

  • Gerçek zamanlıya yakın işleme için app.storageBlob() ile source: 'EventGrid' kullanın
  • Node.js Azure Depolama SDK'sını kullanarak blob içeriğine erişme
  • Dosyaları zaman uyumsuz olarak işleme ve hedef kapsayıcıya kopyalama

ProcessBlobUpload.java proje dosyasında Event Grid blob tetikleyicisini tanımlayan kodu gözden geçirebilirsiniz. işlevi aşağıdakilerin nasıl yapılacağını gösterir:

  • Gerçek zamanlıya yakın işleme için @BlobTrigger ile source = "EventGrid" kullanın
  • Parametresini kullanarak BlobInputStream blob içeriğine erişme
  • Java için Azure Depolama SDK'sını kullanarak işlenen dosyaları hedef kapsayıcıya kopyalama

Event Grid blob tetikleyicisini tanımlayan kodu ProcessBlobUpload/run.ps1 proje dosyasında ve ilgili function.jsongözden geçirebilirsiniz. işlevi aşağıdakilerin nasıl yapılacağını gösterir:

  • Neredeyse gerçek zamanlı işleme için function.json dosyasında "source": "EventGrid" ile blob tetikleyicisini yapılandırın.
  • PowerShell Azure Depolama cmdlet'lerini kullanarak blob içeriğine erişme
  • Azure PowerShell modüllerini kullanarak dosyaları işleme ve hedef kapsayıcıya kopyalama

İşlev kodunuzu yerel olarak gözden geçirip doğruladıktan sonra, projeyi Azure'da yayımlamanın zamanı geldi.

Azure kaynakları oluşturma ve dağıtma

azd up İşlev uygulamasını bir Flex Consumption planında ve olay aboneliği de dahil olmak üzere diğer gerekli Azure kaynaklarıyla birlikte oluşturmak için komutunu kullanın. Altyapı hazır olduktan sonra proje azd kodunuzu Azure'daki yeni işlev uygulamasına da dağıtır.

  1. Visual Studio Code'da F1 tuşuna basarak komut paletini açın. komutunu Azure Developer CLI (azd): Sign In with Azure Developer CLIarayın ve çalıştırın, ardından Azure hesabınızı kullanarak oturum açın.

  2. Proje kökünde F1 tuşuna basarak komut paletini açın. Gerekli Azure kaynaklarını oluşturmak ve kodunuzu dağıtmak için komutunu Azure Developer CLI (azd): Provision and Deploy (up) arayın ve çalıştırın.

  3. Terminal penceresinde istendiğinde şu gerekli dağıtım parametrelerini sağlayın:

    Uyarı Description
    Kullanılacak Azure Aboneliğini seçin Kaynaklarınızı oluşturmak istediğiniz aboneliği seçin.
    Çevre adı Uygulamanız için benzersiz bir dağıtım bağlamını korumak için kullanılan bir ortam.
    Azure veri merkezi konumu Yeni Azure kaynaklarını içeren kaynak grubunun oluşturulacağı Azure bölgesi. Yalnızca şu anda Esnek Tüketim planını destekleyen bölgeler gösterilir.

    Komut, azd up en son en iyi yöntemleri izleyerek bu gerekli Azure kaynaklarını oluşturmak ve yapılandırmak için Bicep yapılandırma dosyalarıyla bu istemlere yanıtlarınızı kullanır:

    • Esnek Tüketim planı ve işlev uygulaması
    • Blob kapsayıcıları ile Azure Depolama hesabı
    • Application Insights (önerilen)
    • Hesabınız için ilkelere ve rollere erişme
    • Blob olayları için Event Grid aboneliği
    • Hizmetten hizmete bağlantılar için depolanan bağlantı dizeleri yerine yönetilen kimlikleri kullanma

    Komut başarıyla tamamlandıktan sonra uygulamanız Azure'da bloblar kapsayıcıya unprocessed-pdf eklendiğinde işlevinizi tetikleme amacıyla yapılandırılmış bir olay aboneliğiyle çalışır.

  4. çıkıştaki AZURE_STORAGE_ACCOUNT_NAME ve AZURE_FUNCTION_APP_NAME değerlerini not edin. Bu adlar sırasıyla Azure'daki depolama hesabınız ve işlev uygulamanız için benzersizdir.

Dağıtılan işlevi doğrulama

  1. Visual Studio Code'da F1 tuşuna basın. Komut paletinde komutunu Azure Storage: Upload Files...arayın ve çalıştırın. Kök dizini kabul edin ve daha önce olduğu gibi proje klasöründen data bir veya daha fazla PDF dosyası yükleyin.

  2. İstendiği anda, yeni depolama hesabınızın adını (listeden AZURE_STORAGE_ACCOUNT_NAME) seçin. Blob Kapsayıcıları>işlenmemiş-pdf'yi seçin.

  3. F1 tuşuna basın. Komut paletinde komutunu Azure Storage: Open in Explorerarayın ve çalıştırın. > Blob Kapsayıcıları>işlenen-pdf olarak seçin, ardından Yeni pencerede aç seçeneğine tıklayın.

  4. Dosya Gezgini'nde, yüklediğiniz PDF dosyalarının fonksiyonunuz tarafından işlendiğini doğrulayın. Çıkış, processed-pdf kapsayıcısına, processed- ön ekiyle yazılır.

Event Grid blob tetikleyicisi, dosyaları karşıya yüklemekten hemen sonra saniyeler içinde işlem yapar. Bu hız, geleneksel yoklama tabanlı blob tetikleyicilerine kıyasla bu yaklaşımın neredeyse gerçek zamanlı özelliklerini gösterir.

Kodunuzu yeniden dağıtma

azd up Komutunu hem Azure kaynaklarınızı sağlamak hem de işlev uygulamanıza kod güncelleştirmeleri dağıtmak için gerektiği kadar çalıştırın.

Uyarı

Dağıtılan kod dosyalarının üzerine her zaman en son dağıtım paketi yazılır.

İstemlere ve tarafından azd oluşturulan tüm ortam değişkenlerine azd yönelik ilk yanıtlarınız adlandırılmış ortamınızda yerel olarak depolanır. azd env get-values Azure kaynakları oluşturulurken kullanılan ortamınızdaki tüm değişkenleri gözden geçirmek için komutunu kullanın.

Kaynakları temizle

İşlev uygulamanız ve ilgili kaynaklarınızla çalışmayı bitirdiğinizde, işlev uygulamasını ve ilgili kaynaklarını Azure'dan silmek için bu komutu kullanın. Bu eylem, başka maliyetlerle karşılaşmaktan kaçınmanıza yardımcı olur:

azd down --no-prompt

Uyarı

seçeneği, --no-prompt sizden onay almadan kaynak grubunuzu silmenizi belirtir azd .

Bu komut yerel kod projenizi etkilemez.