Tutorial: Mengunggah dan menganalisis file dengan Azure Functions dan Azure Blob Storage

Dalam tutorial ini, Anda akan mempelajari cara mengunggah gambar ke Azure Blob Storage dan memprosesnya menggunakan Azure Functions dan Computer Vision. Anda juga akan mempelajari cara menerapkan pemicu dan pengikatan Azure Function sebagai bagian dari proses ini. Bersama-sama, layanan ini akan menganalisis gambar yang diunggah yang berisi teks, mengekstrak teks darinya, lalu menyimpan teks dalam baris database untuk dianalisis nanti atau tujuan lainnya.

Azure Blob Storage adalah solusi penyimpanan objek berskala besar Microsoft untuk cloud. Blob Storage dirancang untuk menyimpan gambar dan dokumen, streaming file media, mengelola data cadangan dan arsip, dan banyak lagi. Anda dapat membaca selengkapnya tentang Blob Storage di halaman gambaran umum.

Azure Functions adalah solusi komputer tanpa server yang memungkinkan Anda menulis dan menjalankan blok kecil kode sebagai fungsi berbasis peristiwa yang sangat scalable, tanpa server. Anda dapat membaca selengkapnya tentang Azure Functions di halaman gambaran umum.

Dalam tutorial ini, Anda akan belajar cara:

  • Mengunggah gambar dan file ke Blob Storage
  • Menggunakan pemicu Azure Function untuk memproses data yang diunggah ke Blob Storage
  • Menggunakan layanan Azure AI untuk menganalisis gambar
  • Menulis data ke Table Storage menggunakan pengikatan output Azure Function

Prasyarat

Membuat akun penyimpanan dan kontainer

Langkah pertama adalah membuat akun penyimpanan yang akan menyimpan data blob yang diunggah, yang akan menjadi gambar berisi teks dalam skenario ini. Akun penyimpanan menawarkan beberapa layanan yang berbeda, tetapi tutorial ini menggunakan Blob Storage dan Table Storage.

Masuk ke portal Microsoft Azure.

  1. Di bilah pencarian di bagian atas portal, cari Storage dan pilih hasil berlabel akun Storage.

  2. Pada halaman Akun Storage, pilih + Buat di kiri atas.

  3. Pada halaman Buat akun penyimpanan, masukkan nilai berikut ini:

    • Langganan: Pilih langganan yang Anda inginkan.
    • Grup Sumber Daya: Pilih Buat baru dan masukkan nama msdocs-storage-function, lalu pilih OK.
    • Nama akun Storage: Masukkan nilai msdocsstoragefunction. Nama akun Storage harus unik di seluruh Azure, mungkin Anda perlu menambahkan angka setelah namanya, seperti msdocsstoragefunction123.
    • Wilayah: Pilih wilayah terdekat.
    • Performa: Pilih Standar.
    • Redundansi: Pilih nilai default.

    Cuplikan layar menunjukkan cara membuat akun penyimpanan di Azure.

  4. Pilih Tinjau + Buat di bagian bawah dan Azure akan memvalidasi informasi yang Anda masukkan. Setelah pengaturan divalidasi, pilih Buat dan Azure akan mulai memprovisikan akun penyimpanan, mungkin memakan waktu sejenak.

Membuat kontainer

  1. Setelah akun penyimpanan diprovisikan, pilih Buka sumber daya. Langkah selanjutnya adalah membuat kontainer penyimpanan di dalam akun tersebut untuk menyimpan gambar yang diunggah untuk dianalisis.

  2. Pada panel navigasi, pilih Kontainer.

  3. Pada halaman Kontainer, pilih + Kontainer di bagian atas. Di panel slide keluar, masukkan Namaanalisis gambar, dan pastikan tingkat akses Publik diatur ke Blob (akses baca anonim hanya untuk blob). Kemudian pilih Buat.

    Cuplikan layar menunjukkan cara membuat kontainer penyimpanan baru.

Anda akan melihat kontainer baru muncul dalam daftar kontainer.

Mengambil string koneksi

Langkah terakhir adalah mengambil string koneksi untuk akun penyimpanan.

  1. Di panel navigasi kiri, pilih Tombol Akses.

  2. Di halaman Kunci akses, pilih Tampilkan kunci. Salin nilai String Koneksi di bawah bagian key1 dan tempelkan nilai ini di tempat lain untuk digunakan nanti. Anda juga perlu mencatat nama akun penyimpanan msdocsstoragefunction untuk digunakan nanti.

    Cuplikan layar menunjukkan cara mengakses kontainer penyimpanan.

Nilai-nilai ini akan diperlukan ketika kita harus menghubungkan Azure Function ke akun penyimpanan ini.

Membuat layanan Vision Computer

Selanjutnya, buat akun layanan Computer Vision yang akan memproses file yang kita unggah. Computer Vision adalah bagian dari layanan Azure AI dan menawarkan berbagai fitur untuk mengekstrak data dari gambar. Anda dapat mempelajari selengkapnya tentang Computer Vision di halaman gambaran umum.

  1. Di bilah pencarian di bagian atas portal, cari Computer dan pilih hasil berlabel Computer vision.

  2. Pada halaman Computer vision, pilih + Buat.

  3. Pada halaman Buat Computer Vision, masukkan nilai berikut ini:

    • Langganan: Pilih langganan yang Anda inginkan.
    • Grup Sumber Daya: Gunakan grup sumber daya msdocs-storage-function yang Anda buat sebelumnya.
    • Wilayah: Pilih wilayah terdekat.
    • Nama: Masukkan nama msdocscomputervision.
    • Tingkat Harga: Pilih Gratis jika tersedia, jika tidak, pilih Standar S1.
    • Centang kotak Pemberitahuan AI yang Bertanggung Jawab jika Anda menyetujui persyaratan

    Cuplikan layar menunjukkan cara membuat layanan Computer Vision baru.

  4. Pilih Tinjau + Buat di bagian bawah. Azure akan membutuhkan waktu sejenak untuk memvalidasi informasi yang Anda masukkan. Setelah pengaturan divalidasi, pilih Buat dan Azure akan mulai memprovisikan layanan Computer Vision, mungkin memakan waktu sejenak.

  5. Setelah operasi selesai, pilih Buka Sumber Daya.

Mengambil kunci

Selanjutnya, kita perlu menemukan kunci rahasia dan URL titik akhir untuk digunakan layanan Computer Vision di aplikasi Azure Function.

  1. Pada halaman gambaran umum Computer Vision, pilih Kunci dan Titik Akhir.

  2. Pada halaman Kunci dan Titik Akhir, salin nilai Kunci 1 dan nilai Titik Akhir, lalu tempelkan di tempat lain untuk digunakan nanti.

    Cuplikan layar yang menunjukkan cara mengambil Kunci dan Titik Akhir URL untuk layanan Computer Vision.

Mengunduh dan mengonfigurasi proyek sampel

Kode untuk Azure Function yang digunakan dalam tutorial ini dapat ditemukan di repositori GitHub ini. Anda juga dapat mengkloning proyek menggunakan perintah di bawah ini.

git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet

Kode proyek sampel tersebut menyelesaikan tugas-tugas berikut:

  • Mengambil variabel lingkungan untuk menyambungkan ke akun penyimpanan dan layanan Computer Vision
  • Menerima file yang diunggah sebagai parameter blob
  • Menganalisis blob menggunakan layanan Computer Vision
  • Mengirim teks gambar yang dianalisis ke baris tabel baru menggunakan pengikatan output

Setelah Anda mengunduh dan membuka proyek, ada beberapa konsep penting yang perlu dipahami dalam metode utama Run yang ditunjukkan di bawah ini. Azure Function menggunakan pengikatan Pemicu dan Output, yang diterapkan menggunakan atribut pada tanda tangan metode Run.

Atribut Table menggunakan dua parameter. Parameter pertama menentukan nama tabel untuk menulis nilai teks gambar yang diurai, yang dimunculkan oleh fungsi. Parameter kedua Connection menarik string koneksi Table Storage dari variabel lingkungan sehingga Azure Function memiliki akses ke dalamnya.

Atribut BlobTrigger ini digunakan untuk mengikat fungsi ke peristiwa unggahan di Blob Storage, dan memasok blob yang diunggah ke fungsi Run. Pemicu blob memiliki dua parameter sendiri - satu untuk nama kontainer blob yang memantau unggahan, dan satunya untuk string koneksi akun penyimpanan lagi.

// Azure Function name and output Binding to Table Storage
[FunctionName("ProcessImageUpload")]
[return: Table("ImageText", Connection = "StorageConnection")]
// Trigger binding runs when an image is uploaded to the blob container below
public async Task<ImageContent> Run([BlobTrigger("imageanalysis/{name}", 
        Connection = "StorageConnection")]Stream myBlob, string name, ILogger log)
{
    // Get connection configurations
    string subscriptionKey = Environment.GetEnvironmentVariable("ComputerVisionKey");
    string endpoint = Environment.GetEnvironmentVariable("ComputerVisionEndpoint");
    string imgUrl = $"https://{ Environment.GetEnvironmentVariable("StorageAccountName")}
                        .blob.core.windows.net/imageanalysis/{name}";

    ComputerVisionClient client = new ComputerVisionClient(
        new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = endpoint };

    // Get the analyzed image contents
    var textContext = await AnalyzeImageContent(client, imgUrl);

    return new ImageContent { 
        PartitionKey = "Images",
        RowKey = Guid.NewGuid().ToString(), Text = textContext 
    };
}

public class ImageContent
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}

Kode ini juga mengambil nilai konfigurasi penting dari variabel lingkungan, seperti string koneksi akun penyimpanan dan kunci Computer Vision. Kita akan menambahkan variabel lingkungan ini ke lingkungan Azure Function setelah disebarkan.

Fungsi ProcessImage juga menggunakan metode kedua yang disebut AnalyzeImage, ditunjukkan di bawah ini. Kode ini menggunakan Titik Akhir URL dan Kunci akun Computer Vision untuk membuat permintaan ke server tersebut agar memproses gambar kita. Permintaan tersebut akan mengembalikan semua teks yang ditemukan dalam gambar, kemudian teks tersebut akan ditulis ke Table Storage menggunakan pengikatan output pada metode Run.

static async Task<string> ReadFileUrl(ComputerVisionClient client, string urlFile)
{
    // Analyze the file using Computer Vision Client
    var textHeaders = await client.ReadAsync(urlFile);
    string operationLocation = textHeaders.OperationLocation;
    Thread.Sleep(2000);
    
    // Complete code omitted for brevity, view in sample project
    
    return text.ToString();
}

Berjalan secara lokal

Jika ingin menjalankan proyek secara lokal, Anda dapat mengisi variabel lingkungan menggunakan file local.settings.json. Di dalam file ini, isi nilai tempat penampung dengan nilai yang Anda simpan sebelumnya saat membuat sumber daya Azure.

Meskipun kode Azure Function akan berjalan secara lokal, kode tersebut masih akan terhubung ke layanan langsung di Azure, dibandingkan menggunakan emulator lokal apa pun.

{
    "IsEncrypted": false,
    "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "FUNCTIONS_WORKER_RUNTIME": "dotnet",
      "StorageConnection": "your-storage-account-connection-string",
      "StorageAccountName": "your-storage-account-name",
      "ComputerVisionKey": "your-computer-vision-key",
      "ComputerVisionEndPoint":  "your-computer-vision-endpoint"
    }
}

Menyebarkan kode ke Azure Functions

Sekarang Anda siap untuk menyebarkan aplikasi ke Azure dengan menggunakan Visual Studio. Anda juga dapat membuat aplikasi Azure Functions di Azure secara bersamaan sebagai bagian dari proses penyebaran.

  1. Untuk memulai, klik kanan simpul proyek ProcessImage dan pilih Terbitkan.

  2. Pada layar dialog Terbitkan, pilih Azure dan pilih Berikutnya.

    Cuplikan layar yang menunjukkan cara memilih Azure sebagai target penyebaran.

  3. Pilih Aplikasi Azure Function (Windows) atau Aplikasi Azure Function (Linux) di layar berikutnya, lalu pilih Berikutnya.

    Cuplikan layar yang menunjukkan cara memilih Azure Functions sebagai target penyebaran tertentu.

  4. Pada langkah Instans Functions, pastikan untuk memilih langganan yang ingin Anda sebarkan. Selanjutnya, pilih simbol hijau + di sisi kanan dialog.

  5. Dialog baru akan terbuka. Masukkan nilai berikut untuk Aplikasi Fungsi baru Anda.

    • Nama: Masukkan msdocsprocessimage atau yang serupa.
    • Nama Langganan: Pilih langganan apa pun yang ingin Anda gunakan.
    • Grup Sumber Daya: Pilih grup sumber daya msdocs-storage-function yang Anda buat sebelumnya.
    • Jenis Paket: Pilih Konsumsi.
    • Lokasi: Pilih wilayah terdekat.
    • Azure Storage: Pilih akun penyimpanan yang Anda buat sebelumnya.

    Cuplikan layar yang menunjukkan cara membuat Aplikasi Fungsi baru di Azure.

  6. Setelah Anda mengisi semua nilai tersebut, pilih Buat. Visual Studio dan Azure akan mulai memprovisikan sumber daya yang diminta dan akan memakan waktu beberapa saat hingga selesai.

  7. Setelah proses selesai, pilih Selesai untuk menutup alur kerja dialog.

  8. Langkah terakhir untuk menyebarkan Azure Function adalah memilih Terbitkan di kanan atas layar. Menerbitkan fungsi tersebut mungkin juga membutuhkan waktu beberapa saat hingga selesai. Setelah selesai, aplikasi Anda akan berjalan di Azure.

Sambungkan layanan

Azure Function berhasil disebarkan, tetapi belum dapat terhubung ke akun penyimpanan dan layanan Computer Vision. Kunci dan string koneksi yang benar harus ditambahkan terlebih dahulu ke pengaturan konfigurasi aplikasi Azure Functions.

  1. Di bagian atas portal Azure, cari fungsi dan pilih Aplikasi Fungsi dari hasil.

  2. Pada layar Aplikasi Fungsi, pilih Aplikasi Fungsi yang Anda buat di Visual Studio.

  3. Pada halaman gambaran umum Aplikasi Fungsi, pilih Konfigurasi di navigasi kiri. Maka akan terbuka halaman tempat kita dapat mengelola berbagai jenis pengaturan konfigurasi untuk aplikasi. Untuk saat ini, kami tertarik pada bagian Pengaturan Aplikasi.

  4. Langkah selanjutnya adalah menambahkan pengaturan untuk nama akun penyimpanan dan string koneksi, kunci rahasia Computer Vision, dan titik akhir Computer Vision.

  5. Di tab Pengaturan aplikasi, pilih + Pengaturan aplikasi baru. Di flyout yang muncul, masukkan nilai berikut:

    • Nama: Masukkan nilai ComputerVisionKey.
    • Nilai: Tempelkan di kunci Computer Vision yang Anda simpan dari sebelumnya.
  6. Klik OK untuk menambahkan pengaturan ini ke aplikasi Anda.

    Cuplikan layar yang menunjukkan cara menambahkan pengaturan aplikasi baru ke Azure Function.

  7. Selanjutnya, ulangi proses ini untuk titik akhir layanan Computer Vision, menggunakan nilai berikut:

    • Nama: Masukkan nilai ComputerVisionEndpoint.
    • Nilai: Tempelkan URL titik akhir yang Anda simpan sebelumnya.
  8. Ulangi langkah ini lagi untuk koneksi akun penyimpanan menggunakan nilai berikut:

    • Nama: Masukkan nilai StorageConnection.
    • Nilai: Tempelkan string koneksi yang Anda simpan sebelumnya.
  9. Terakhir, ulangi proses ini sekali lagi untuk nama akun penyimpanan menggunakan nilai berikut:

    • Nama: Masukkan nilai StorageAccountName.
    • Nilai: Masukkan nama akun penyimpanan yang Anda buat.
  10. Setelah Anda menambahkan pengaturan aplikasi ini, pastikan untuk memilih Simpan di bagian atas halaman konfigurasi. Setelah penyimpanan selesai, Anda dapat menekan Refresh untuk memastikan pengaturan telah diambil.

Semua variabel lingkungan yang diperlukan untuk menghubungkan fungsi Azure ke layanan yang berbeda sekarang telah siap.

Mengunggah gambar ke Blob Storage

Sekarang Anda siap untuk menguji aplikasi! Anda dapat mengunggah blob ke kontainer, lalu memverifikasi bahwa teks dalam gambar disimpan ke Table Storage.

  1. Pertama, di bagian atas portal Azure, cari Storage dan pilih akun Storage. Pada halaman akun penyimpanan, pilih akun yang Anda buat sebelumnya.

  2. Selanjutnya, pilih Kontainer di navigasi kiri, lalu buka kontainer ImageAnalysis yang Anda buat sebelumnya. Dari sini, Anda dapat mengunggah gambar pengujian di dalam browser.

    Cuplikan layar yang menunjukkan cara menavigasi ke kontainer penyimpanan.

  3. Anda dapat menemukan beberapa gambar sampel yang disertakan dalam folder gambar di akar proyek sampel yang dapat diunduh, atau Anda dapat menggunakan salah satu gambar Anda sendiri.

  4. Di bagian atas halaman ImageAnalysis, pilih Unggah. Di flyout yang terbuka, pilih ikon folder di sebelah kanan untuk membuka browser file. Pilih gambar yang ingin Anda unggah, lalu pilih Unggah.

    Cuplikan layar yang menunjukkan cara mengunggah blob ke kontainer penyimpanan.

  5. File akan muncul di dalam kontainer blob Anda. Selanjutnya, Anda dapat memverifikasi bahwa unggahan tersebut memicu Azure Function, dan bahwa teks dalam gambar dianalisis dan disimpan ke Table Storage dengan benar.

  6. Dengan menggunakan petunjuk navigasi di bagian atas halaman, buka satu tingkat di akun penyimpanan Anda. Temukan dan pilih Browser Storage di navigasi kiri, lalu pilih Tabel.

  7. Sekarang tabel ImageText tersedia. Klik pada tabel untuk melihat pratinjau baris data di dalamnya. Anda akan melihat entri teks gambar yang diproses dari unggahan. Anda dapat memverifikasi menggunakan Stempel Waktu, atau dengan menampilkan konten kolom Teks.

    Cuplikan layar yang menampilkan entri teks di Azure Table Storage.

Selamat! Anda berhasil memproses gambar yang diunggah ke Blob Storage menggunakan Azure Functions dan Computer Vision.

Membersihkan sumber daya

Jika Anda tidak ingin terus menggunakan aplikasi ini, Anda dapat menghapus sumber daya yang Anda buat dengan menghapus grup sumber daya.

  1. Pilih Grup sumber daya dari navigasi utama
  2. Pilih grup sumber daya msdocs-storage-function dari daftar.
  3. Pilih tombol Hapus grup sumber daya di bagian atas halaman gambaran umum grup sumber daya.
  4. Masukkan nama grup sumber daya msdocs-storage-function dalam dialog konfirmasi.
  5. Pilih hapus. Proses untuk menghapus grup sumber daya mungkin memerlukan waktu beberapa menit untuk diselesaikan.