Tutorial: Memicu Azure Functions pada kontainer blob menggunakan langganan peristiwa

Jika Anda menggunakan versi pemicu Blob Storage sebelumnya dengan Azure Functions, Anda sering mendapatkan eksekusi yang tertunda karena pemicu melakukan polling kontainer blob untuk pembaruan. Anda dapat mengurangi latensi dengan memicu fungsi Anda menggunakan langganan peristiwa ke kontainer yang sama. Langganan peristiwa menggunakan infrastruktur Event Grid untuk meneruskan perubahan dalam kontainer saat terjadi. Anda dapat menerapkan kemampuan ini menggunakan ekstensi Azure Functions terbaru.

Artikel ini memperlihatkan cara membuat fungsi yang berjalan berdasarkan peristiwa yang dinaikkan saat blob ditambahkan ke kontainer. Anda akan menggunakan Visual Studio Code untuk pengembangan lokal dan untuk memeriksa apakah fungsi berfungsi secara lokal sebelum menyebarkan proyek Anda ke Azure.

  • Buat akun penyimpanan umum v2 di Azure Storage.
  • Buat kontainer di penyimpanan blob.
  • Buat fungsi yang dipicu Blob Storage berbasis peristiwa.
  • Buat langganan peristiwa ke kontainer blob.
  • Debug secara lokal menggunakan ngrok dengan mengunggah file.
  • Sebarkan ke Azure dan buat langganan peristiwa yang difilter.

Penting

Artikel ini menggunakan tab untuk mendukung beberapa versi model pemrograman Node.js. Model v4 umumnya tersedia dan dirancang untuk memiliki pengalaman yang lebih fleksibel dan intuitif untuk pengembang JavaScript dan TypeScript. Untuk detail selengkapnya tentang cara kerja model v4, lihat panduan pengembang Node.js Azure Functions. Untuk mempelajari selengkapnya tentang perbedaan antara v3 dan v4, lihat panduan migrasi.

Prasyarat

  • Utilitas ngrok, yang menyediakan cara bagi Azure untuk memanggil ke fungsi Anda yang berjalan secara lokal.

  • Ekstensi Azure Storage untuk Visual Studio Code, minimal versi 5.x.

Catatan

Ekstensi Azure Storage untuk Visual Studio Code saat ini dalam pratinjau.

Buat akun penyimpanan

Untuk menggunakan langganan peristiwa dengan Azure Storage, Anda memerlukan akun penyimpanan v2 tujuan umum. Secara default, Anda dapat membuat akun penyimpanan ini dari proyek Visual Studio Code saat ekstensi Azure Storage terinstal.

  1. Di Visual Studio Code, buka palet perintah (tekan F1), masukkan Azure Storage: Create Storage Account.... Pada perintah, berikan informasi berikut:

    Prompt Perbuatan
    Masukkan nama akun penyimpanan baru Berikan nama yang unik secara global. Nama akun penyimpanan harus memiliki panjang 3 hingga 24 karakter dengan hanya huruf kecil dan angka. Untuk identifikasi yang lebih mudah, kita akan menggunakan nama yang sama untuk grup sumber daya dan nama aplikasi fungsi.
    Pilih lokasi untuk sumber daya baru Pilih wilayah yang lebih dekat dengan Anda untuk kinerja yang lebih baik.

    Ekstensi ini membuat akun penyimpanan v2 tujuan umum dengan nama yang Anda berikan. Nama yang sama juga digunakan untuk grup sumber daya yang berisi akun penyimpanan.

  2. Setelah Anda membuat akun penyimpanan, buka palet perintah (tekan F1), dan masukkan Azure Storage: Create Blob Container.... Pada perintah, berikan informasi berikut:

    Prompt Perbuatan
    Pilih sumber daya Pilih akun penyimpanan yang Anda buat.
    Masukkan nama untuk kontainer blob baru Masukkan samples-workitems, yang merupakan nama kontainer yang dirujuk dalam proyek kode Anda.

Setelah membuat kontainer blob, Anda dapat membuat fungsi yang memicu pada kontainer ini dan langganan peristiwa yang mengirimkan peristiwa ke fungsi Anda.

Membuat fungsi yang dipicu Blob

Saat Anda membuat fungsi yang dipicu Blob Storage menggunakan Visual Studio Code, Anda juga membuat proyek baru. Anda harus mengedit fungsi untuk menggunakan langganan peristiwa sebagai sumbernya, daripada menggunakan kontainer polling reguler.

  1. Di Visual Studio Code, buka aplikasi fungsi Anda.

  2. Buka palet perintah (tekan F1), masukkan Azure Functions: Create Function..., dan pilih Buat proyek baru.

  3. Untuk ruang kerja proyek Anda, pilih lokasi direktori. Pastikan Anda membuat folder baru atau memilih folder kosong untuk ruang kerja proyek.

    Jangan pilih folder proyek yang sudah menjadi bagian dari ruang kerja.

  4. Pada perintah, berikan informasi berikut:

    Prompt Perbuatan
    Pilih Bahasa Pilih C#.
    Pilih runtime .NET Pilih .NET 6.0 Isolated LTS untuk berjalan dalam proses pekerja yang terisolasi atau .NET 6.0 LTS untuk dalam proses.
    Pilih templat untuk fungsi pertama proyek Anda Pilih Azure Blob Storage trigger.
    Berikan nama fungsi Memasuki BlobTriggerEventGrid.
    Menyediakan namespace layanan Memasuki My.Functions.
    Pilih pengaturan dari "local.setting.json" Pilih Create new local app setting.
    Pilih akun penyimpanan Pilih akun penyimpanan yang Anda buat dari daftar.
    Ini adalah jalur dalam akun penyimpanan yang akan dipantau pemicu Terima nilai default samples-workitems.
    Pilih bagaimana Anda ingin membuka proyek Anda Pilih Open in current window.
    Prompt Perbuatan
    Pilih Bahasa Pilih Python.
    Pilih interpreter Python untuk membuat lingkungan virtual Pilih penerjemah Python pilihan Anda. Jika opsi tidak ditampilkan, masukkan jalur lengkap ke biner Python Anda.
    Pilih templat untuk fungsi pertama proyek Anda Pilih Azure Blob Storage trigger.
    Berikan nama fungsi Memasuki BlobTriggerEventGrid.
    Pilih pengaturan dari "local.setting.json" Pilih Create new local app setting.
    Pilih akun penyimpanan Pilih akun penyimpanan yang Anda buat dari daftar.
    Ini adalah jalur dalam akun penyimpanan yang akan dipantau pemicu Terima nilai default samples-workitems.
    Pilih bagaimana Anda ingin membuka proyek Anda Pilih Open in current window.
    Prompt Perbuatan
    Pilih Bahasa Pilih Java.
    Pilih versi Java Pilih Java 11 atau Java 8, versi Java tempat fungsi Anda berjalan di Azure dan yang telah Anda verifikasi secara lokal.
    Berikan ID grup Pilih com.function.
    Berikan ID artefak Pilih BlobTriggerEventGrid.
    Berikan versi Pilih 1.0-SNAPSHOT.
    Berikan nama paket Pilih com.function.
    Berikan nama aplikasi Setujui nama yang dibuat dan dimulai dengan BlobTriggerEventGrid.
    Pilih alat build untuk proyek Java Pilih Maven.
    Pilih bagaimana Anda ingin membuka proyek Anda Pilih Open in current window.
    Prompt Perbuatan
    Pilih bahasa pemrogram untuk proyek fungsi Anda Pilih TypeScript.
    Pilih model pemrograman TypeScript Pilih Model V4.
    Pilih templat untuk fungsi pertama proyek Anda Pilih Azure Blob Storage trigger.
    Berikan nama fungsi Memasuki BlobTriggerEventGrid.
    Pilih pengaturan dari "local.setting.json" Pilih Create new local app setting.
    Pilih akun penyimpanan Pilih akun penyimpanan yang Anda buat.
    Ini adalah jalur dalam akun penyimpanan yang akan dipantau pemicu Terima nilai default samples-workitems.
    Pilih bagaimana Anda ingin membuka proyek Anda Pilih Open in current window.
    Prompt Perbuatan
    Pilih bahasa pemrogram untuk proyek fungsi Anda Pilih JavaScript.
    Pilih model pemrograman JavaScript Pilih Model V4.
    Pilih templat untuk fungsi pertama proyek Anda Pilih Azure Blob Storage trigger.
    Berikan nama fungsi Memasuki BlobTriggerEventGrid.
    Pilih pengaturan dari "local.setting.json" Pilih Create new local app setting.
    Pilih akun penyimpanan Pilih akun penyimpanan yang Anda buat.
    Ini adalah jalur dalam akun penyimpanan yang akan dipantau pemicu Terima nilai default samples-workitems.
    Pilih bagaimana Anda ingin membuka proyek Anda Pilih Open in current window.
    Prompt Perbuatan
    Pilih bahasa pemrogram untuk proyek fungsi Anda Pilih PowerShell.
    Pilih templat untuk fungsi pertama proyek Anda Pilih Azure Blob Storage trigger.
    Berikan nama fungsi Memasuki BlobTriggerEventGrid.
    Pilih pengaturan dari "local.setting.json" Pilih Create new local app setting.
    Pilih akun penyimpanan Pilih akun penyimpanan yang Anda buat.
    Ini adalah jalur dalam akun penyimpanan yang akan dipantau pemicu Terima nilai default samples-workitems.
    Pilih bagaimana Anda ingin membuka proyek Anda Pilih Open in current window.
  5. Setelah perintah muncul, pilih Pilih akun>penyimpanan Tambahkan ke ruang kerja.

Untuk kesederhanaan, tutorial ini menggunakan kembali akun penyimpanan yang sama dengan aplikasi fungsi Anda. Namun, dalam produksi, Anda mungkin ingin menggunakan akun penyimpanan terpisah dengan aplikasi fungsi Anda. Untuk informasi selengkapnya, lihat Pertimbangan penyimpanan untuk Azure Functions.

Meningkatkan ekstensi Penyimpanan

Untuk menggunakan pemicu Blob Storage berbasis Event Grid, fungsi Anda memerlukan setidaknya versi 5.x untuk ekstensi Penyimpanan.

Untuk meningkatkan proyek Anda dengan versi ekstensi yang diperlukan, di jendela Terminal, jalankan perintah berikut: dotnet tambahkan paket

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs --version 6.1.0
  1. Buka file proyek host.json, dan periksa extensionBundle elemen .

  2. Jika extensionBundle.version tidak setidaknya 3.3.0 , ganti extensionBundle dengan yang terbaru:

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

Memperbarui fungsi untuk menggunakan peristiwa

Dalam file BlobTriggerEventGrid.cs, tambahkan Source = BlobTriggerSource.EventGrid ke parameter untuk atribut pemicu Blob, misalnya:

[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");
}

Setelah Anda membuat fungsi, dalam file konfigurasi function.json, tambahkan "source": "EventGrid" ke pengikatan myBlob , misalnya:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "source": "EventGrid",
      "connection": "<NAMED_STORAGE_CONNECTION>"
    }
  ]
}
  1. Dalam file yang dihasilkan Function.java , ganti konten dengan kode berikut, dan ganti nama file menjadi BlobTriggerEventGrid.java:

    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. Hapus file pengujian unit terkait, yang tidak lagi berlaku untuk jenis pemicu baru.

Setelah Anda membuat fungsi, tambahkan source: "EventGrid" ke options objek dalam file TypeScript Anda, misalnya:

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,
});

Setelah Anda membuat fungsi, tambahkan source: "EventGrid" ke options objek dalam file JavaScript Anda, misalnya:

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`
        );
    },
});

Setelah Anda membuat fungsi, dalam file konfigurasi function.json, tambahkan "source": "EventGrid" ke pengikatan myBlob , misalnya:

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

Memulai penelusuran kesalahan lokal

Event Grid memvalidasi URL titik akhir saat Anda membuat langganan peristiwa di portal Azure. Validasi ini berarti bahwa sebelum Anda dapat membuat langganan peristiwa untuk penelusuran kesalahan lokal, fungsi Anda harus berjalan secara lokal dengan akses jarak jauh yang diaktifkan oleh utilitas ngrok. Jika kode fungsi lokal Anda tidak berjalan dan dapat diakses oleh Azure, Anda tidak akan dapat membuat langganan peristiwa.

Menentukan titik akhir pemicu blob

Saat fungsi Anda berjalan secara lokal, titik akhir default yang digunakan untuk pemicu penyimpanan blob berbasis peristiwa akan terlihat seperti URL berikut:

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

Simpan jalur ini, yang akan Anda gunakan nanti untuk membuat URL titik akhir pada langganan peristiwa. Jika menggunakan nama yang berbeda untuk fungsi yang dipicu Blob Storage, Anda perlu mengubah nilai functionName dalam string kueri.

Catatan

Karena titik akhir menangani peristiwa untuk pemicu Blob Storage, jalur titik akhir menyertakan blobs. URL titik akhir untuk pemicu Event Grid akan berada di jalur eventgrid.

Menjalankan ngrok

Untuk membobol fungsi yang sedang di-debug, Anda harus menyediakan cara bagi Azure Event Grid untuk berkomunikasi dengan fungsi yang berjalan di komputer lokal.

Utilitas ngrok meneruskan permintaan eksternal ke alamat server proksi yang dihasilkan secara acak ke alamat dan port tertentu di komputer lokal Anda. untuk memanggil titik akhir webhook fungsi yang berjalan di komputer Anda.

  1. Mulai ngrok menggunakan perintah berikut:

    ngrok.exe http http://localhost:7071
    

    Saat utilitas dimulai, jendela perintah akan terlihat mirip dengan cuplikan layar berikut:

    Screenshot that shows the Command Prompt after starting the

  2. Salin URL HTTPS yang dihasilkan ketika ngrok dijalankan. Nilai ini digunakan untuk menentukan titik akhir webhook pada komputer Anda yang terekspos menggunakan ngrok.

Penting

Pada titik ini, jangan hentikan ngrok. Setiap kali Anda memulai ngrok, URL HTTPS akan dibuat kembali dengan nilai berbeda. Karena titik akhir langganan peristiwa tidak dapat diubah, Anda harus membuat langganan peristiwa baru setiap kali Anda menjalankan ngrok.

Kecuali jika Anda membuat akun ngrok, waktu sesi ngrok maksimum dibatasi hingga dua jam.

Membuat URL titik akhir

Titik akhir yang digunakan dalam langganan peristiwa terdiri dari tiga bagian berbeda, yaitu nama server awalan, jalur, dan string kueri. Tabel berikut akan menjelaskan batasan ini:

Bagian URL Deskripsi
Nama server dan awalan Saat fungsi Anda berjalan secara lokal, nama server dengan awalan https:// berasal dari URL Penerusan yang dihasilkan oleh ngrok. Di URL localhost, URL ngrok akan menggantikan http://localhost:7071. Saat berjalan di Azure, Anda akan menggunakan server aplikasi fungsi yang diterbitkan, yang biasanya dalam bentuk https://<FUNCTION_APP_NAME>.azurewebsites.net.
Jalur Bagian jalur URL titik akhir berasal dari URL localhost yang disalin sebelumnya, dan terlihat seperti /runtime/webhooks/blobs untuk pemicu Blob Storage. Jalur untuk pemicu Event Grid akan seperti /runtime/webhooks/EventGrid
Untai kueri Untuk semua bahasa termasuk .NET Mengisolasi functionName=Host.Functions.BlobTriggerEventGrid parameter, kecuali untuk .NET Dalam proses yang harus dalam functionName=BlobTriggerEventGrid string kueri mengatur nama fungsi yang menangani peristiwa. Jika menggunakan nama yang berbeda untuk fungsi, Anda harus mengubah nilai ini. Kunci akses tidak diperlukan saat berjalan secara lokal. Saat berjalan di Azure, Anda juga harus menyertakan parameter code= dalam URL, yang berisi kunci yang bisa didapatkan dari portal.

Cuplikan layar berikut memperlihatkan contoh bagaimana URL akhir akan terlihat saat menggunakan jenis pemicu BlobTriggerEventGrid:

Endpoint selection

Mulai penelusuran kesalahan

Dengan ngrok yang sudah berjalan, mulai proyek lokal Anda sebagai berikut:

  1. Atur titik henti dalam fungsi Anda pada garis yang menangani logging.

  2. Mulai sesi debugging.

    Buka terminal baru dan jalankan perintah mvn berikut untuk memulai sesi penelusuran kesalahan.

    mvn azure-functions:run -DenableDebug
    

    Tekan F5 untuk memulai sesi penelusuran kesalahan.

Dengan kode Anda yang menjalankan dan meneruskan penerusan ngrok, saatnya untuk membuat langganan peristiwa ke kontainer blob.

Membuat langganan kejadian

Langganan peristiwa, yang didukung oleh Azure Event Grid, memunculkan peristiwa berdasarkan perubahan dalam kontainer blob yang ditautkan. Lalu peristiwa ini dikirim ke titik akhir webhook di pemicu fungsi Anda. Setelah langganan peristiwa dibuat, URL titik akhir tidak dapat diubah. Artinya, setelah Anda selesai dengan penelusuran kesalahan lokal (atau jika Anda menghidupkan ulang ngrok), Anda harus menghapus dan membuat ulang langganan peristiwa.

  1. Di Visual Studio Code, pilih ikon Azure di bilah Aktivitas. Di Sumber Daya, perluas langganan Anda, perluas Akun penyimpanan, klik kanan akun penyimpanan yang dibuat sebelumnya, dan pilih Buka di portal.

  2. Masuk ke portal Azure dan catat Grup sumber daya untuk akun penyimpanan Anda. Anda akan membuat sumber daya lain di grup yang sama untuk mempermudah pembersihan sumber daya setelah selesai.

  3. pilih opsi Peristiwa dari menu kiri.

    Add storage account event

  4. Di jendelaPeristiwa, pilih tombol + Langganan Peristiwa, dan berikan nilai dari tabel berikut ke tab Dasar:

    Pengaturan Nilai yang disarankan Deskripsi
    Nama myBlobLocalNgrokEventSub Nama yang mengidentifikasi langganan peristiwa. Anda dapat menggunakan nama untuk menemukan langganan peristiwa dengan cepat.
    Skema Peristiwa Skema Event Grid Gunakan skema default untuk peristiwa.
    Nama Topik Sistem samples-workitems-blobs Nama untuk topik, yang mewakili kontainer. Topik ini dibuat dengan langganan pertama, dan Anda akan menggunakannya untuk langganan peristiwa di masa mendatang.
    Filter ke Jenis Peristiwa Blob Dibuat
    Jenis Titik Akhir Web Hook Pemicu penyimpanan blob menggunakan titik akhir webhook. Anda akan menggunakan Azure Functions untuk pemicu Event Grid.
    Endpoint Titik akhir URL berbasis ngrok Anda Gunakan titik akhir URL berbasis ngrok yang Anda tentukan sebelumnya.
  5. Pilih Konfirmasi pilihan untuk memvalidasi URL titik akhir.

  6. Pilih Buat untuk membuat langganan peristiwa.

Unggah file ke kontainer itu

Dengan langganan peristiwa serta proyek kode Anda dan ngrok yang masih berjalan, Anda kini dapat mengunggah file ke kontainer penyimpanan untuk memicu fungsi. Anda dapat mengunggah file dari komputer ke kontainer penyimpanan blob menggunakan Visual Studio Code.

  1. Di Visual Studio Code, buka palet perintah (tekan F1) dan ketik Azure Storage: Upload Files....

  2. Dalam kotak dialog Buka, pilih file, sebaiknya file gambar biner yang tidak terlalu besar, pilih Unggah .

  3. Berikan informasi berikut pada permintaan:

    Pengaturan Nilai yang disarankan Deskripsi
    Pilih sumber daya Nama akun penyimpanan Ganti nama akun penyimpanan yang Anda buat dalam langkah sebelumnya.
    Pilih jenis sumber daya Kontainer Blob Anda mengunggah ke kontainer blob.
    Pilih Kontainer Blob samples-workitems Nilai ini adalah nama kontainer yang Anda buat dalam langkah sebelumnya.
    Masukkan direktori tujuan unggahan ini Default Cukup terima nilai default /, yang merupakan akar kontainer.

Perintah ini mengunggah file dari komputer Anda ke kontainer penyimpanan di Azure. Pada titik ini, instans ngrok Anda yang sedang berjalan harus melaporkan bahwa permintaan diteruskan. Anda juga akan melihat di output func.exe untuk sesi penelusuran kesalahan bahwa fungsi Anda telah dimulai. Harapannya, pada titik ini, sesi debug Anda sedang menunggu Anda di mana Anda mengatur titik henti.

Menerbitkan proyek ke Azure

Sekarang setelah Anda berhasil memvalidasi kode fungsi secara lokal, saatnya untuk menerbitkan proyek ke aplikasi fungsi baru di Azure.

Buat aplikasi fungsi

Langkah-langkah berikut membuat sumber daya yang dibutuhkan di Azure dan menyebarkan file proyek Anda.

  1. Di palet perintah, masukkan Azure Functions: Buat aplikasi fungsi di Azure...(Tingkat Lanjut).

  2. Mengikuti perintah, berikan informasi ini:

    Prompt Pilihan
    Masukkan nama unik global untuk aplikasi fungsi baru. Ketikkan nama unik secara global yang mengidentifikasi aplikasi fungsi baru Anda lalu pilih Masukkan. Karakter yang valid untuk nama aplikasi fungsi adalah a-z, 0-9, dan -. Tuliskan nama ini; Anda akan memerlukannya nanti saat membuat titik akhir URL titik akhir baru.
    Pilih tumpukan runtime. Pilih versi bahasa pemrogram yang telah Anda jalankan secara lokal.
    Pilih OS. Pilih Linux atau Windows. Aplikasi Python harus dijalankan di Linux.
    Pilih grup sumber daya untuk sumber daya baru. Pilih nama grup sumber daya yang Anda buat dengan akun penyimpanan, yang sebelumnya dicatat di portal.
    Pilih lokasi untuk sumber daya baru. Pilih lokasi di wilayah di dekat Anda atau di dekat layanan lain yang diakses fungsi Anda.
    Pilih paket hosting. Pilih Konsumsi untuk hosting paket Konsumsi tanpa server, di mana Anda hanya dikenakan biaya saat fungsi berjalan.
    Pilih akun penyimpanan. Pilih nama akun penyimpanan yang sudah ada yang telah Anda gunakan.
    Pilih sumber daya Application Insights untuk aplikasi Anda. Pilih Buat sumber daya Application Insights baru dan saat diminta, ketik nama untuk instans yang digunakan untuk menyimpan data runtime dari fungsi Anda.

    Pemberitahuan muncul setelah aplikasi fungsi Anda dibuat dan paket penyebaran diterapkan. Pilih Tampilkan Output dalam pemberitahuan ini untuk melihat hasil pembuatan dan penyebaran, termasuk sumber daya Azure yang Anda buat.

Menerapkan aplikasi fungsi

Penting

Penyebaran ke aplikasi fungsi yang ada selalu menimpa konten aplikasi tersebut di Azure.

  1. Di area Sumber Daya aktivitas Azure, temukan sumber daya aplikasi fungsi yang baru saja Anda buat, klik kanan sumber daya, dan pilih Sebarkan ke aplikasi fungsi....

  2. Saat diminta untuk menimpa penyebaran sebelumnya, pilih Sebarkan untuk menyebarkan kode fungsi Anda ke sumber daya aplikasi fungsi baru.

  3. Setelah penyebaran selesai, pilih Tampilkan Output untuk melihat hasil pembuatan dan penyebaran, termasuk sumber daya Azure yang Anda buat. Jika melewatkan pemberitahuan, pilih ikon bel di sudut kanan bawah untuk melihatnya lagi.

    Screenshot of the View Output window.

Menerbitkan pengaturan aplikasi

Karena pengaturan lokal dari local.settings.json tidak otomatis diterbitkan, Anda harus mengunggahnya sekarang sehingga fungsi berjalan dengan benar di Azure.

Di palet perintah, masukkan Azure Functions: Unggah Pengaturan Lokal..., dan di perintah Pilih sumber daya. pilih nama aplikasi fungsi Anda.

Membuat ulang langganan peristiwa

Sekarang setelah aplikasi fungsi berjalan di Azure, Anda perlu membuat langganan peristiwa baru. Langganan peristiwa baru ini menggunakan titik akhir fungsi Anda di Azure. Anda juga akan menambahkan filter ke langganan peristiwa sehingga fungsi hanya dipicu saat file JPEG (.jpg) ditambahkan ke kontainer. Di Azure, URL titik akhir juga berisi kunci akses, yang membantu memblokir aktor selain Event Grid agar tidak mengakses titik akhir.

Mendapatkan kunci ekstensi blob

  1. Di Visual Studio Code, pilih ikon Azure di bilah Aktivitas. Di Sumber Daya, perluas langganan Anda, perluas Aplikasi Fungsi, klik kanan aplikasi fungsi yang dibuat, dan pilih Buka di portal.

  2. Pada Fungsi di menu kiri, pilih Kunci aplikasi.

  3. Pada Kunci sistem, pilih kunci bernama blobs_extension, dan salin Nilai kunci.

Anda akan menyertakan nilai ini dalam string kueri URL titik akhir baru.

Membuat URL titik akhir

Buat URL titik akhir baru untuk pemicu Blob Storage berdasarkan contoh berikut:

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>

Dalam contoh ini, ganti <FUNCTION_APP_NAME> dengan nama aplikasi fungsi Anda dan ganti <BLOB_EXTENSION_KEY> dengan nilai yang Anda dapatkan dari portal. Jika menggunakan nama yang berbeda untuk fungsi, Anda juga harus mengubah string kueri functionName sesuai kebutuhan.

Membuat langganan peristiwa yang difilter

Karena URL titik akhir langganan peristiwa tidak dapat diubah, Anda harus membuat langganan peristiwa baru. Anda juga harus menghapus langganan peristiwa lama saat ini, karena tidak dapat digunakan kembali.

Kali ini, Anda akan menyertakan filter pada langganan peristiwa sehingga hanya file JPEG (*.jpg) yang memicu fungsi.

  1. Di Visual Studio Code, pilih ikon Azure di bilah Aktivitas. Di Sumber Daya, perluas langganan Anda, perluas Akun penyimpanan, klik kanan akun penyimpanan yang dibuat sebelumnya, dan pilih Buka di portal.

  2. Di portal Azure, pilih opsi Peristiwa dari menu kiri.

  3. Di jendela Peristiwa, pilih langganan peristiwa berbasis ngrok lama Anda, pilih Hapus>Simpan. Tindakan ini akan menghapus langganan peristiwa lama.

  4. Pilih tombol + Langganan Peristiwa, dan berikan nilai dari tabel berikut ke tab Dasar:

    Pengaturan Nilai yang disarankan Deskripsi
    Nama myBlobAzureEventSub Nama yang mengidentifikasi langganan peristiwa. Anda dapat menggunakan nama untuk menemukan langganan peristiwa dengan cepat.
    Skema Peristiwa Skema Event Grid Gunakan skema default untuk peristiwa.
    Filter ke Jenis Peristiwa Blob Dibuat
    Jenis Titik Akhir Web Hook Pemicu penyimpanan blob menggunakan titik akhir webhook. Anda akan menggunakan Azure Functions untuk pemicu Event Grid.
    Endpoint Titik akhir URL baru berbasis Azure Anda Gunakan titik akhir URL yang Anda buat, yang menyertakan nilai kunci.
  5. Pilih Konfirmasi pilihan untuk memvalidasi URL titik akhir.

  6. Pilih tab Filter, di bawah Filter subjek centang Aktifkan pemfilteran subjek, ketik .jpgSubjek berakhir dengan. Tindakan ini akan memfilter peristiwa hanya untuk file JPEG.

    Add filter

  7. Pilih Buat untuk membuat langganan peristiwa.

Memverifikasi fungsi di Azure

Dengan seluruh topologi yang sekarang menjalankan Azure, saatnya untuk memverifikasi bahwa semuanya berfungsi dengan benar. Karena Anda sudah berada di portal, paling mudah untuk hanya mengunggah file dari sana.

  1. Di halaman akun penyimpanan Anda di portal, pilih Kontainer dan pilih kontainer samples-workitems Anda.

  2. Pilih tombol Unggah untuk membuka halaman unggah di sebelah kanan, jelajahi sistem file lokal Anda untuk menemukan file yang .jpg akan diunggah, lalu pilih tombol Unggah untuk mengunggah blob. Sekarang, Anda dapat memverifikasi bahwa fungsi Anda berjalan berdasarkan peristiwa pengunggahan kontainer.

  3. Di akun penyimpanan Anda, kembali ke halaman Peristiwa, pilih Langganan Peristiwa, dan Anda akan melihat bahwa peristiwa telah dikirimkan.

  4. Kembali ke halaman aplikasi fungsi Anda di portal, pada bagian Fungsi pilih Fungsi, pilih fungsi dan Anda akan melihat Total Jumlah Eksekusi minimal satu.

  5. Pada bagian Pengembang, pilih Pantau, dan Anda akan melihat jejak yang ditulis dari keberhasilan eksekusi fungsi. Mungkin ada penundaan hingga lima menit karena peristiwa diproses oleh Application Insights.

Membersihkan sumber daya

Saat melanjutkan ke langkah berikutnya dan menambahkan antrean Azure Storage yang mengikat ke fungsi, Anda harus menyimpan semua sumber daya untuk membangun apa yang telah Anda lakukan.

Jika tidak, Anda dapat menggunakan langkah-langkah berikut untuk menghapus aplikasi fungsi dan sumber daya terkait untuk menghindari timbulnya biaya lebih lanjut.

  1. Di Visual Studio Code, tekan F1 untuk membuka palet perintah. Di palet perintah, cari dan pilih Azure: Open in portal.

  2. Pilih aplikasi fungsi Anda dan tekan Enter. Halaman aplikasi fungsi terbuka di portal Azure.

  3. Di tab Ringkasan, pilih tautan bernama di samping Grup sumber daya.

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

  4. Di halaman Grup sumber daya, tinjau daftar sumber daya yang disertakan, dan pastikan sumber daya tersebut adalah sumber daya yang ingin Anda hapus.

  5. Pilih Hapus grup sumber daya, dan ikuti instruksinya.

    Penghapusan mungkin perlu waktu beberapa menit. Setelah selesai, pemberitahuan akan muncul selama beberapa detik. Anda juga dapat memilih ikon bel di bagian atas halaman untuk melihat pemberitahuan.

Untuk informasi selengkapnya tentang biaya Azure Functions, lihat Memperkirakan biaya rencana Konsumsi.

Langkah berikutnya