Mulai cepat: Membuat fungsi C# di Azure dari baris perintah

Dalam artikel ini, Anda menggunakan alat baris perintah untuk membuat fungsi C# yang merespons permintaan. Setelah menguji kode secara lokal, Anda menyebarkannya ke lingkungan tanpa server Azure Functions.

Artikel ini mendukung pembuatan kedua jenis fungsi C# yang dikompilasi:

Model eksekusi Deskripsi
Dalam proses Kode fungsi Anda berjalan dalam proses yang sama dengan proses host Azure Functions. Mendukung .NET Core 3.1 dan .NET 6.0. Untuk mempelajari lebih lanjut, lihat Mengembangkan fungsi pustaka kelas C# dengan menggunakan Azure Functions.
Proses terisolasi Kode fungsi Anda berjalan dalam proses pekerja .NET terpisah. Mendukung .NET 5.0 dan .NET 6.0. Untuk mempelajari lebih lanjut, lihat Mengembangkan fungsi proses terisolasi di C #.

Artikel ini membuat fungsi pemicu HTTP yang berjalan pada .NET 6.0. Ada juga Versi berbasis Visual Studio Code dari artikel ini.

Menyelesaikan mulai cepat ini dikenakan sedikit biaya sekitar beberapa sen USD atau kurang di akun Azure Anda.

Mengonfigurasi lingkungan lokal Anda

Sebelum memulai, Anda harus memiliki:

Anda juga memerlukan akun Azure dengan langganan aktif. Membuat akun secara gratis.

Pemeriksaan prasyarat

Verifikasi prasyarat Anda, yang bergantung pada apakah Anda menggunakan Azure CLI atau Azure PowerShell untuk membuat sumber daya Azure:

  • Di terminal atau jendela perintah, jalankan func --version untuk memeriksa apakah Azure Functions Core Tools adalah versi 4.x.

  • Jalankan dotnet --list-sdks untuk memeriksa apakah versi yang diperlukan telah dipasang.

  • Jalankan az --version untuk memeriksa apakah versi Azure CLI adalah 2.4 atau yang lebih baru.

  • Jalankan az login untuk masuk ke Azure dan memverifikasi langganan aktif.

Membuat proyek fungsi lokal

Di Azure Functions, proyek fungsi adalah kontainer untuk satu atau beberapa fungsi individual yang masing-masing merespons pemicu tertentu. Semua fungsi dalam proyek memiliki konfigurasi lokal dan hosting yang sama. Di bagian ini, Anda membuat proyek fungsi yang berisi satu fungsi.

  1. Jalankan perintah func init, sebagai berikut, untuk membuat proyek fungsi dalam folder bernama LocalFunctionProj dengan runtime yang ditentukan:

    func init LocalFunctionProj --dotnet
    
  2. Navigasi ke folder proyek:

    cd LocalFunctionProj
    

    Folder ini berisi berbagai file untuk proyek, termasuk file konfigurasi bernama local.settings.json dan host.json. Karena local.settings.json dapat berisi rahasia yang diunduh dari Azure, file dikecualikan dari kontrol sumber secara default dalam file .gitignore.

  3. Tambahkan fungsi ke proyek Anda dengan menggunakan perintah berikut, yang mana argumen --name adalah nama unik fungsi Anda (HttpExample) dan argumen --template menentukan pemicu fungsi (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    func new membuat file kode HttpExample.cs.

(Opsional) Memeriksa isi file

Jika diinginkan, Anda dapat melompat ke Menjalankan fungsi secara lokal dan memeriksa isi file nanti.

HttpExample.cs

Kode fungsi yang dihasilkan dari template tergantung pada jenis proyek C# yang dikompilasi.

HttpExample.cs berisi metode Run yang menerima data permintaan dalam variabel req adalah HttpRequest yang dihiasi dengan HttpTriggerAttribute, yang mendefinisikan perilaku pemicu.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace LocalFunctionProj
{
    public static class HttpExample
    {
        [FunctionName("HttpExample")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            name = name ?? data?.name;

            return name != null
                ? (ActionResult)new OkObjectResult($"Hello, {name}")
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }
    }
}

Objek yang ditampilkan adalah ActionResult yang menampilkan pesan respons sebagai OkObjectResult (200) atau BadRequestObjectResult (400).

Untuk mempelajari lebih lanjut, lihat Pemicu dan pengikatan HTTP Azure Functions.

Menjalankan fungsi secara lokal

  1. Jalankan fungsi Anda dengan memulai host runtime bahasa umum Azure Functions lokal dari folder LocalFunctionProj:

    func start
    

    Menjelang akhir output, baris berikut akan muncul:

     ...
    
     Now listening on: http://0.0.0.0:7071
     Application started. Press Ctrl+C to shut down.
    
     Http Functions:
    
             HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
     ...
    
     

    Catatan

    Jika HttpExample tidak muncul seperti yang ditunjukkan di atas, Anda mungkin memulai hosting dari luar folder akar proyek. Dalam kasus ini, gunakan Ctrl+C untuk menghentikan hosting, navigasi ke folder akar proyek, dan jalankan perintah sebelumnya lagi.

  2. Salin URL fungsi HttpExample Anda dari output ini ke browser:

    Tambahkan string kueri ?name=<YOUR_NAME> ke URL fungsi, yang akan membuat URL penuhnya menjadi seperti http://localhost:7071/api/HttpExample?name=Functions. Browser akan menampilkan pesan tanggapan yang mengulang nilai string kueri Anda. Terminal tempat Anda memulai proyek juga menunjukkan output log saat Anda membuat permintaan.

  3. Jika sudah selesai, gunakan Ctrl+C dan pilih y untuk menghentikan hosting fungsi.

Membuat sumber daya Azure pendukung untuk fungsi Anda

Sebelum Anda dapat menyebarkan kode fungsi ke Azure, Anda perlu membuat tiga sumber daya:

  • Grup sumber daya, yang merupakan kontainer logis untuk sumber daya terkait.
  • Akun penyimpanan, yang digunakan untuk mempertahankan status dan informasi lain tentang fungsi Anda.
  • Aplikasi fungsi, yang menyediakan lingkungan untuk menjalankan kode fungsi Anda. Aplikasi fungsi memetakan proyek fungsi lokal Anda dan memungkinkan Anda mengelompokkan fungsi sebagai unit logis untuk pengelolaan, penerapan, dan berbagi sumber daya yang lebih mudah.

Gunakan perintah berikut untuk membuat item ini. Azure CLI dan PowerShell didukung.

  1. Jika Anda belum melakukannya, masuk ke Azure:

    az login
    

    Perintah az login memasukkan Anda ke akun Azure Anda.

  2. Buat grup sumber daya bernama AzureFunctionsQuickstart-rg di wilayah yang Anda pilih:

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    Perintah az group create membuat grup sumber daya. Dalam perintah di atas, ganti <REGION> dengan wilayah yang dekat dengan wilayah Anda, dan menggunakan kode wilayah yang tersedia yang ditampilkan dari perintah lokasi daftar akun az.

  3. Buat akun penyimpanan tujuan umum di grup sumber daya dan wilayah Anda:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
    

    Perintah az storage account create membuat akun penyimpanan.

    Dalam contoh sebelumnya, ganti <STORAGE_NAME> dengan nama yang sesuai untuk Anda dan unik di Azure Storage. Nama harus berisi tiga hingga 24 karakter angka dan huruf kecil saja. Standard_LRS menentukan akun tujuan umum, yang didukung oleh Functions.

  1. Buat aplikasi fungsi di Azure:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet --functions-version 3 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    Perintah az functionapp create membuat aplikasi fungsi di Azure.

    Catatan

    Perintah ini membuat aplikasi fungsi menggunakan runtime Azure Functions versi 3.x. Perintah func azure functionapp publish yang akan Anda jalankan nanti memperbarui aplikasi ke versi 4.x.

    Dalam contoh sebelumnya, ganti <STORAGE_NAME> dengan nama akun yang Anda gunakan di langkah sebelumnya, dan ganti <APP_NAME> dengan nama unik global yang sesuai untuk Anda. <APP_NAME> juga merupakan domain DNS default untuk aplikasi fungsi.

    Perintah ini membuat aplikasi fungsi yang berjalan dalam runtime bahasa tertentu berdasarkan Rencana Penggunaan Azure Functions, yang gratis untuk jumlah penggunaan yang Anda keluarkan di sini. Perintah ini juga menyediakan instans Azure Application Insights terkait dalam grup sumber daya yang sama. Dengan instans tersebut, Anda dapat memantau aplikasi fungsi Anda dan melihat log. Untuk mengetahui informasi selengkapnya, lihat Memantau Azure Functions. Instans tidak dikenakan biaya sampai Anda mengaktifkannya.

Menyebarkan proyek fungsi ke Azure

Setelah berhasil membuat aplikasi fungsi di Azure, kini Anda siap untuk menyebarkan proyek fungsi lokal Anda menggunakan perintah func fungsi azureapp publish.

Dalam contoh berikut, ganti <APP_NAME> dengan nama aplikasi Anda.

func azure functionapp publish <APP_NAME>

Perintah terbitkan menunjukkan hasil yang mirip dengan output berikut (dipotong agar sederhana):

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Memanggil fungsi pada Azure

Karena fungsi Anda menggunakan pemicu HTTP dan mendukung permintaan GET, Anda memanggilnya dengan membuat permintaan HTTP ke URL-nya. Melakukan tindakan ini di browser adalah cara yang paling mudah.

Salin Panggilan URL lengkap yang ditampilkan dalam output perintah terbitkan ke bilah alamat browser, menambahkan parameter kueri ?name=Functions. Ketika Anda membuka URL ini, browser akan menampilkan output yang sama seperti saat Anda menjalankan fungsi secara lokal.

Jalankan perintah berikut untuk melihat mendekati real-time log streaming:

func azure functionapp logstream <APP_NAME> 

Di jendela terminal terpisah atau di browser, panggil lagi fungsi jarak jauh. Log verbose dari eksekusi fungsi di Azure ditampilkan di terminal.

Membersihkan sumber daya

Jika Anda melanjutkan ke langkah berikutnya dan menambahkan pengikatan output antrean Azure Storage, jaga semua sumber daya Anda tetap di tempat saat Anda akan membangun apa yang telah Anda lakukan.

Jika tidak, gunakan perintah berikut untuk menghapus grup sumber daya dan semua sumber daya di dalamnya untuk menghindari timbulnya biaya lebih lanjut.

az group delete --name AzureFunctionsQuickstart-rg

Langkah berikutnya