Bagikan melalui


Mulai cepat: Merespons peristiwa penyimpanan blob dengan menggunakan Azure Functions

Dalam panduan singkat ini, Anda menggunakan Visual Studio Code untuk membuat aplikasi yang merespons kejadian dalam kontainer Azure Blob Storage. Setelah menguji kode secara lokal dengan menggunakan emulator, Anda menyebarkannya ke aplikasi fungsi tanpa server baru yang berjalan dalam paket Konsumsi Flex di Azure Functions.

Proyek ini menggunakan ekstensi Azure Developer CLI (azd) dengan Visual Studio Code untuk menyederhanakan inisialisasi dan memverifikasi kode proyek Anda secara lokal, serta menyebarkan kode Anda ke Azure. Penyebaran ini mengikuti praktik terbaik saat ini untuk penyebaran Azure Functions yang aman dan dapat diskalakan.

Artikel ini mendukung model pemrograman Node.js versi 4 untuk Azure Functions.

Artikel ini mendukung model pemrograman Python versi 2 untuk Azure Functions.

Prasyarat

  • Node.js 18.x atau lebih tinggi. Gunakan perintah node --version untuk memeriksa versi Anda.

Menginisialisasi proyek

Gunakan perintah azd init dari palet perintah untuk membuat proyek kode Azure Functions lokal dari templat.

  1. Di Visual Studio Code, buka folder atau ruang kerja tempat Anda ingin membuat proyek.

  2. Tekan F1 untuk membuka palet perintah, cari dan jalankan perintah Azure Developer CLI (azd): Initialize App (init), lalu pilih Pilih templat.

    Mungkin ada sedikit penundaan saat azd menginisialisasi folder atau ruang kerja saat ini.

  1. Saat diminta, pilih Pilih templat, lalu cari dan pilih Azure Functions C# Event Grid Blob Trigger using Azure Developer CLI.

  2. Saat diminta di terminal, masukkan nama lingkungan yang unik, seperti blobevents-dotnet.

    Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder atau ruang kerja saat ini.

  1. Saat diminta, pilih Pilih templat, lalu cari dan pilih Azure Functions Python Event Grid Blob Trigger using Azure Developer CLI.

  2. Saat diminta di terminal, masukkan nama lingkungan yang unik, seperti blobevents-python.

    Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder atau ruang kerja saat ini.

  1. Saat diminta, pilih Pilih templat, lalu cari dan pilih Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLI.

  2. Saat diminta, masukkan nama lingkungan yang unik, seperti blobevents-typescript.

    Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder atau ruang kerja saat ini.

  1. Saat diminta, pilih Pilih templat, lalu cari dan pilih Azure Functions Java Event Grid Blob Trigger using Azure Developer CLI.

  2. Saat diminta, masukkan nama lingkungan yang unik, seperti blobevents-java.

    Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder atau ruang kerja saat ini.

  1. Saat diminta, pilih Pilih templat, lalu cari dan pilih Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLI.

  2. Saat diminta, masukkan nama lingkungan yang unik, seperti blobevents-powershell.

    Perintah ini menarik file proyek dari repositori templat dan menginisialisasi proyek di folder atau ruang kerja saat ini.

Di azd, lingkungan mempertahankan konteks penyebaran unik untuk aplikasi Anda, dan Anda dapat menentukan lebih dari satu. Ini juga bagian dari nama grup sumber daya yang Anda buat di Azure.

Menambahkan file local.settings.json

Functions memerlukan file local.settings.json untuk mengonfigurasi host saat berjalan secara lokal.

  1. Jalankan perintah ini untuk masuk ke src folder aplikasi:

    cd src
    
  1. Buat file bernama local.settings.json di src folder yang berisi data JSON ini:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Buat file bernama local.settings.json di src folder yang berisi data JSON ini:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "java",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Buat file bernama local.settings.json di src folder yang berisi data JSON ini:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "node",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Buat file bernama local.settings.json di src folder yang berisi data JSON ini:

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_WORKER_RUNTIME": "powershell",
            "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2",
            "PDFProcessorSTORAGE": "UseDevelopmentStorage=true"
        }
    }
    
  1. Buat file bernama local.settings.json di src folder yang berisi data JSON ini:

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

Membuat dan mengaktifkan lingkungan virtual

src Di folder , jalankan perintah ini untuk membuat dan mengaktifkan lingkungan virtual bernama .venv:

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

Jika Python tidak menginstal paket venv pada distribusi Linux Anda, jalankan perintah berikut:

sudo apt-get install python3-venv

Menyiapkan emulator penyimpanan lokal

Gunakan emulator Azurite untuk menjalankan proyek kode Anda secara lokal sebelum membuat dan menggunakan sumber daya Azure.

  1. Jika Anda belum melakukannya, instal Azurite.

  2. Tekan F1. Di palet perintah, cari dan jalankan perintah Azurite: Start untuk memulai emulator penyimpanan lokal.

  3. Di area Azure , perluas Workspace>Attached Storage Accounts>Local Emulator, klik kanan (Ctrl-klik pada Mac) Kontainer Blob, pilih Buat Kontainer Blob..., dan buat dua kontainer penyimpanan blob ini di emulator lokal:

    • unprocessed-pdf: kontainer yang dipantau oleh pemicu untuk memantau peristiwa penyimpanan.
    • processed-pdf: kontainer tempat fungsi mengirim blob yang diproses sebagai output.
  4. Perluas Kontainer Blob, klik kanan (Ctrl+klik di Mac) unprocessed-pdf, pilih Unggah Berkas..., tekan Enter untuk memilih direktori root, dan unggah file PDF dari data direktori proyek.

Saat berjalan secara lokal, Anda dapat menggunakan REST untuk memicu fungsi dengan mensimulasikan fungsi yang menerima pesan dari langganan peristiwa.

Jalankan fungsi secara lokal

Visual Studio Code terintegrasi dengan alat Azure Functions Core untuk memungkinkan Anda menjalankan proyek ini di komputer pengembangan lokal Anda dengan menggunakan emulator Azurite. Variabel PDFProcessorSTORAGE lingkungan menentukan koneksi akun penyimpanan, yang juga diatur ke "UseDevelopmentStorage=true" dalam file local.settings.json saat berjalan secara lokal.

  1. Jalankan perintah ini dari src folder proyek di terminal atau prompt perintah:

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

    Ketika host Functions dimulai, ia menulis nama pemicu dan jenis pemicu ke output terminal. Di Functions, folder akar proyek berisi file host.json.

  2. Dengan Core Tools yang masih berjalan di Terminal, buka test.http file di proyek Anda dan pilih Kirim Permintaan untuk memicu fungsi ProcessBlobUpload dengan mengirimkan event blob pengujian ke webhook event blob.

    Langkah ini mensimulasikan penerimaan peristiwa dari langganan peristiwa saat berjalan secara lokal, dan Anda akan melihat permintaan dan informasi file yang diproses yang ditulis dalam log. Jika Anda tidak menggunakan Klien REST, Anda harus menggunakan alat REST aman lain untuk memanggil titik akhir dengan payload di test.http.

  3. Di area Ruang Kerja untuk kontainer blob, perluas processed-pdf dan verifikasi bahwa fungsi memproses file PDF dan menyalinnya dengan processed- awalan.

  4. Setelah selesai, tekan Ctrl+C di jendela terminal untuk menghentikan func.exe proses host.

Meninjau kode (opsional)

Anda dapat meninjau kode yang menentukan pemicu blob Event Grid dalam file proyek ProcessBlobUpload.cs. Fungsi ini menunjukkan cara:

  • Gunakan BlobTrigger dengan Source = BlobTriggerSource.EventGrid untuk pemrosesan hampir real-time
  • Ikat ke BlobClient untuk blob sumber dan BlobContainerClient untuk tujuan
  • Memproses konten blob dan menyalinnya ke kontainer lain dengan menggunakan aliran

Anda dapat meninjau kode yang menentukan pemicu blob Event Grid dalam file proyek function_app.py. Fungsi ini menunjukkan cara:

  • Gunakan @app.blob_trigger dengan source="EventGrid" untuk pemrosesan hampir real-time
  • Mengakses konten blob menggunakan InputStream parameter
  • Menyalin file yang diproses ke kontainer tujuan menggunakan Azure Storage SDK

Anda dapat meninjau kode yang menentukan pemicu blob Event Grid dalam file proyek processBlobUpload.ts. Fungsi ini menunjukkan cara:

  • Gunakan app.storageBlob() dengan source: 'EventGrid' untuk pemrosesan hampir real-time
  • Mengakses konten blob menggunakan Node.js Azure Storage SDK
  • Memproses dan menyalin file ke kontainer tujuan secara asinkron

Anda dapat meninjau kode yang menentukan pemicu blob Event Grid dalam file proyek ProcessBlobUpload.java. Fungsi ini menunjukkan cara:

  • Gunakan @BlobTrigger dengan source = "EventGrid" untuk pemrosesan hampir real-time
  • Mengakses konten blob menggunakan BlobInputStream parameter
  • Menyalin file yang diproses ke kontainer tujuan menggunakan Azure Storage SDK untuk Java

Anda dapat meninjau kode yang menentukan pemicu blob Event Grid dalam file proyek ProcessBlobUpload/run.ps1 dan function.jsonyang sesuai. Fungsi ini menunjukkan cara:

  • Konfigurasi pemicu blob dengan "source": "EventGrid" di "function.json" untuk pemrosesan hampir real-time
  • Mengakses konten blob menggunakan cmdlet Azure Storage PowerShell
  • Memproses dan menyalin file ke kontainer tujuan menggunakan modul Azure PowerShell

Setelah Anda meninjau dan memverifikasi kode fungsi Anda secara lokal, saatnya untuk menerbitkan proyek ke Azure.

Membuat sumber daya Azure dan menyebarkan

azd up Gunakan perintah untuk membuat aplikasi fungsi dalam paket Konsumsi Flex bersama dengan sumber daya Azure lain yang diperlukan, termasuk langganan peristiwa. Setelah infrastruktur siap, azd sebarkan juga kode proyek Anda ke aplikasi fungsi baru di Azure.

  1. Di Visual Studio Code, tekan F1 untuk membuka palet perintah. Cari dan jalankan perintah Azure Developer CLI (azd): Sign In with Azure Developer CLI, lalu masuk dengan menggunakan akun Azure Anda.

  2. Di akar proyek, tekan F1 untuk membuka palet perintah. Cari dan jalankan perintah Azure Developer CLI (azd): Provision and Deploy (up) untuk membuat sumber daya Azure yang diperlukan dan menyebarkan kode Anda.

  3. Ketika diminta di jendela Terminal, berikan parameter penyebaran yang diperlukan ini:

    Cepat Description
    Pilih Langganan Azure yang akan digunakan Pilih langganan tempat Anda ingin membuat sumber daya.
    Nama lingkungan Lingkungan yang digunakan untuk mempertahankan konteks penyebaran unik untuk aplikasi Anda.
    Lokasi Azure Wilayah Azure untuk membuat grup sumber daya yang berisi sumber daya Azure baru. Hanya wilayah yang saat ini mendukung paket Konsumsi Flex yang ditampilkan.

    Perintah azd up ini menggunakan respons Anda terhadap petunjuk ini bersama dengan file konfigurasi Bicep untuk membuat dan mengonfigurasi sumber daya Azure yang diperlukan, sambil mengikuti praktik terbaik terbaru.

    • Paket Konsumsi Flex dan aplikasi fungsi
    • Akun Azure Storage dengan kontainer blob
    • Application Insights (disarankan)
    • Mengakses kebijakan dan peran untuk akun Anda
    • Langganan Event Grid untuk peristiwa blob
    • Koneksi layanan ke layanan dengan menggunakan identitas terkelola (alih-alih string koneksi tersimpan)

    Setelah perintah berhasil diselesaikan, aplikasi Anda berjalan di Azure dengan langganan peristiwa yang dikonfigurasi untuk memicu fungsi Anda saat blob ditambahkan ke unprocessed-pdf kontainer.

  4. Catat AZURE_STORAGE_ACCOUNT_NAME dan AZURE_FUNCTION_APP_NAME dalam output. Nama-nama ini unik untuk akun penyimpanan dan aplikasi fungsi Anda di Azure.

Memverifikasi fungsi yang dideploy

  1. Di Visual Studio Code, tekan F1. Di palet perintah, cari dan jalankan perintah Azure Storage: Upload Files.... Terima direktori akar, dan seperti sebelumnya, unggah satu atau beberapa file PDF dari data folder proyek.

  2. Saat diminta, pilih nama akun penyimpanan baru Anda (dari AZURE_STORAGE_ACCOUNT_NAME). Pilih Kontainer Blob>unprocessed-pdf.

  3. Tekan F1. Di palet perintah, cari dan jalankan perintah Azure Storage: Open in Explorer. Pilih akun penyimpanan yang sama >Kontainer Blob>processed-pdf, lalu Buka di jendela baru.

  4. Di Explorer, verifikasi bahwa file PDF yang Anda unggah diproses oleh fungsi Anda. Output dituliskan ke dalam kontainer processed-pdf dengan awalan processed-.

Pemicu blob Event Grid memproses file dalam hitungan detik setelah diunggah. Kecepatan ini menunjukkan kemampuan hampir real-time dari pendekatan ini dibandingkan dengan pemicu berbasis polling blob tradisional.

Menyebarkan ulang kode Anda

Jalankan azd up perintah sebanyak yang Anda butuhkan untuk menyediakan sumber daya Azure Anda dan menyebarkan pembaruan kode ke aplikasi fungsi Anda.

Nota

File kode yang disebarkan selalu ditimpa oleh paket penyebaran terbaru.

Respons awal Anda terhadap azd perintah dan variabel lingkungan apa pun yang dihasilkan oleh azd disimpan secara lokal di lingkungan bernama Anda. azd env get-values Gunakan perintah untuk meninjau semua variabel di lingkungan Anda yang digunakan saat membuat sumber daya Azure.

Membersihkan sumber daya

Setelah selesai bekerja dengan aplikasi fungsi dan sumber daya terkait, gunakan perintah ini untuk menghapus aplikasi fungsi dan sumber daya terkait dari Azure. Tindakan ini membantu Anda menghindari timbulnya biaya lebih lanjut:

azd down --no-prompt

Nota

Opsi ini --no-prompt menginstruksikan azd untuk menghapus grup sumber daya Anda tanpa konfirmasi dari Anda.

Perintah ini tidak memengaruhi proyek kode lokal Anda.