Mulai cepat: Membuat fungsi TypeScript di Azure dari baris perintah

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

Penting

Konten artikel ini berubah berdasarkan pilihan Model pemrograman Node.js pilihan Anda di pemilih di bagian atas halaman. Model v4 umumnya tersedia dan dirancang untuk memiliki pengalaman yang lebih fleksibel dan intuitif untuk pengembang JavaScript dan TypeScript. Pelajari selengkapnya tentang perbedaan antara v3 dan v4 dalam panduan migrasi.

Penyelesaian mulai cepat ini dikenakan biaya kecil beberapa sen USD atau kurang di akun Azure Anda.

Terdapat juga Versi berbasis Visual Studio Code dari artikel ini.

Mengonfigurasi lingkungan lokal Anda

Sebelum memulai, Anda harus memiliki prasyarat berikut:

  • Node.js versi 14 atau lebih tinggi.

Instal Azure Functions Core Tools

Cara yang disarankan untuk menginstal Core Tools tergantung pada sistem operasi komputer pengembangan lokal Anda.

Langkah-langkah berikut menggunakan penginstal Windows (MSI) untuk menginstal Core Tools v4.x. Untuk informasi selengkapnya tentang penginstal berbasis paket lainnya, lihat Core Tools readme.

Unduh dan jalankan penginstal Core Tools, berdasarkan versi Windows Anda:

Jika sebelumnya Anda menggunakan penginstal Windows (MSI) untuk menginstal Core Tools di Windows, Anda harus menghapus instalan versi lama dari Tambahkan Hapus Program sebelum menginstal versi terbaru.

  • Pastikan Anda menginstal versi v4.0.5382 dari Core Tools, atau versi yang lebih baru.

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. Di folder yang sesuai, jalankan func init perintah , sebagai berikut, untuk membuat proyek TypeScript Node.js v3 di folder saat ini:

    func init --typescript --model V3
    

    Folder ini sekarang 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.

  2. 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 subfolder yang cocok dengan nama fungsi yang berisi file kode yang sesuai dengan bahasa yang dipilih proyek dan file konfigurasi bernama function.json.

(Opsional) Memeriksa isi file

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

index.ts

init.ts mengekspor fungsi yang dipicu sesuai dengan konfigurasi di function.json.

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    context.log('HTTP trigger function processed a request.');
    const name = (req.query.name || (req.body && req.body.name));
    const responseMessage = name
        ? "Hello, " + name + ". This HTTP triggered function executed successfully."
        : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";

    context.res = {
        // status: 200, /* Defaults to 200 */
        body: responseMessage
    };

};

export default httpTrigger;

Untuk pemicu HTTP, fungsi menerima data permintaan pada variabel req jenis HttpRequests sebagaimana ditentukan dalam function.json. Objek yang dikembalikan, ditentukan sebagai $return di function.json, adalah respons.

function.json

function.json adalah file konfigurasi yang menentukan input dan output bindings untuk fungsi, termasuk jenis pemicu.

{
    "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
    ]
}

Setiap pengikatan memerlukan arah, jenis, dan nama yang unik. Pemicu HTTP memiliki pengikatan input jenis httpTrigger dan pengikatan output jenis http.

  1. Di folder yang sesuai, jalankan func init perintah , sebagai berikut, untuk membuat proyek TypeScript Node.js v4 di folder saat ini:

    func init --typescript
    

    Folder ini sekarang 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. Paket npm yang diperlukan juga diinstal di node_modules.

  2. 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 bernama HttpExample.ts di direktori src/functions , yang berisi kode fungsi Anda.

  3. Tambahkan informasi koneksi Azure Storage di local.settings.json.

    {
        "Values": {       
            "AzureWebJobsStorage": "<Azure Storage connection information>",
            "FUNCTIONS_WORKER_RUNTIME": "node"
        }
    }
    
  4. (Opsional) Jika Anda ingin mempelajari selengkapnya tentang fungsi tertentu, katakanlah pemicu HTTP, Anda dapat menjalankan perintah berikut:

    func help httptrigger
    

Jalankan fungsi secara lokal

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

    npm install
    npm start
    
    npm start
    

    Menjeda akhir output, log berikut akan muncul:

    Screenshot of terminal window output when running function locally.

    Catatan

    Jika HttpExample tidak muncul seperti yang ditunjukkan pada log, Anda mungkin memulai host dari luar folder akar proyek. Dalam hal ini, gunakan Ctrl+c untuk menghentikan host, menavigasi ke folder akar proyek, dan jalankan perintah sebelumnya lagi.

  2. Salin URL fungsi HttpExample Anda dari output ini ke browser dan tambahkan string kueri ?name=<your-name>, membuat URL lengkap seperti http://localhost:7071/api/HttpExample?name=Functions. Browser harus menampilkan pesan seperti Hello Functions:

    Result of the function run locally in the browser

    Terminal tempat Anda memulai proyek juga menunjukkan output log saat Anda membuat permintaan.

  3. Saat Anda siap, gunakan Ctrl+c dan pilih y untuk menghentikan host fungsi.

Membuat sumber daya Azure pendukung untuk fungsi Anda

Sebelum 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, menyediakan lingkungan untuk menjalankan kode fungsi Anda. Aplikasi fungsi memetakan proyek fungsi lokal Anda dan memungkinkan Anda mengelompokkan fungsi sebagai unit logis untuk pengelolaan, penyebaran, 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 --allow-blob-public-access false
    

    Perintah az storage account create membuat akun penyimpanan.

    Di 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.

Penting

Akun penyimpanan digunakan untuk menyimpan data aplikasi penting, terkadang termasuk kode aplikasi itu sendiri. Anda harus membatasi akses dari aplikasi dan pengguna lain ke akun penyimpanan.

  1. Buat aplikasi fungsi di Azure:

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

    Perintah az functionapp create membuat aplikasi fungsi di Azure. Disarankan agar Anda menggunakan versi terbaru Node.js, yang saat ini berjumlah 18. Anda dapat menentukan versi dengan mengatur --runtime-version ke 18.

    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 membuat instans Azure Application Insights terkait dalam grup sumber daya yang sama, yang dengannya Anda dapat memantau aplikasi fungsi dan melihat log. Untuk mengetahui informasi selengkapnya, lihat Memantau Azure Functions. Instans tidak dikenakan biaya sampai Anda mengaktifkannya.

Menyebarkan proyek fungsi ke Azure

Sebelum Anda menggunakan Core Tools untuk menyebarkan proyek Anda ke Azure, Anda membuat build file JavaScript siap produksi dari file sumber TypeScript.

  1. Gunakan perintah berikut untuk menyiapkan proyek TypeScript untuk penyebaran:

    npm run build
    
  2. Dengan sumber daya yang diperlukan, Anda sekarang siap untuk menyebarkan proyek fungsi lokal Anda ke aplikasi fungsi di Azure dengan menggunakan perintah terbitkan. Dalam contoh berikut, ganti <APP_NAME> dengan nama aplikasi Anda.

    func azure functionapp publish <APP_NAME>
    

    Jika Anda melihat kesalahan, "Tidak dapat menemukan aplikasi dengan nama ...", tunggu beberapa detik dan coba lagi, karena Azure mungkin belum sepenuhnya menginisialisasi aplikasi setelah perintah az functionapp create sebelumnya.

    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?code=KYHrydo4GFe9y0000000qRgRJ8NdLFKpkakGJQfC3izYVidzzDN4gQ==
     

Menggunakan fungsi pada Azure

Karena fungsi Anda menggunakan pemicu HTTP, Anda memanggilnya dengan membuat permintaan HTTP ke URL-nya di browser atau dengan alat seperti curl.

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

The output of the function run on Azure in a browser

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, buat semua sumber daya Anda tetap di tempat saat Anda akan membuat apa yang telah Anda lakukan.

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

az group delete --name AzureFunctionsQuickstart-rg

Langkah berikutnya