Menjalankan fungsi Anda dari file paket di Azure

Di Azure, Anda dapat menjalankan fungsi langsung dari file paket penyebaran di aplikasi fungsi Anda. Opsi lainnya adalah menyebarkan file Anda di direktori d:\home\site\wwwroot (Windows) atau /home/site/wwwroot (Linux) aplikasi fungsi Anda.

Artikel ini menjelaskan manfaat menjalankan fungsi Anda dari paket. Ini juga menunjukkan cara mengaktifkan fungsi ini di aplikasi fungsi Anda.

Manfaat berlari dari file paket

Ada beberapa manfaat untuk berjalan dari file paket:

  • Mengurangi risiko masalah penguncian salinan file.
  • Dapat digunakan ke aplikasi produksi (dengan restart).
  • Anda dapat yakin dengan file yang sedang berjalan di aplikasi Anda.
  • Meningkatkan kinerja penyebaran Azure Resource Manager.
  • Dapat mengurangi waktu mulai dingin, terutama untuk fungsi JavaScript dengan pohon paket npm besar.

Untuk informasi selengkapnya, lihat pengumuman.

Mengaktifkan fungsi untuk dijalankan dari paket

Untuk memungkinkan aplikasi fungsi dijalankan dari paket, Anda cukup menambahkan pengaturan WEBSITE_RUN_FROM_PACKAGE ke pengaturan aplikasi fungsi. Properti pengaturan WEBSITE_RUN_FROM_PACKAGE bisa memiliki salah satu nilai berikut: ini:

Nilai Deskripsi
1 Menunjukkan bahwa aplikasi fungsi berjalan dari file paket lokal yang disebarkan di folder d:\home\data\SitePackages (Windows) atau /home/data/SitePackages (Linux) aplikasi fungsi Anda.
<URL> Mengatur URL yang merupakan lokasi jarak jauh dari file paket tertentu yang ingin Anda jalankan. Diperlukan untuk aplikasi fungsi yang berjalan di Linux dalam paket Konsumsi.

Tabel berikut menunjukkan opsi WEBSITE_RUN_FROM_PACKAGE yang disarankan untuk penyebaran ke paket hosting dan sistem operasi tertentu:

Paket hosting Windows Linux
Consumption 1 sangat disarankan. Hanya <URL> yang didukung.
Premium 1 disarankan. 1 disarankan.
Didedikasikan 1 disarankan. 1 disarankan.

Pertimbangan umum

  • File paket harus dalam format .zip. Format tar dan gzip saat ini tidak didukung.
  • Penyebaran Zip disarankan.
  • Saat menyebarkan aplikasi fungsi Anda ke Windows, Anda harus menyetel WEBSITE_RUN_FROM_PACKAGE ke 1 dan mempublikasikan dengan penerapan zip.
  • Saat Anda menjalankan dari paket, folder wwwroot menjadi baca-saja dan Anda akan menerima kesalahan saat menulis file ke direktori ini. File juga dalam format baca-saja di portal Azure.
  • Ukuran maksimum untuk file paket penyebaran saat ini adalah 1 GB.
  • Anda tidak dapat menggunakan cache lokal saat menjalankan dari paket penyebaran.
  • Jika proyek Anda perlu menggunakan build jarak jauh, jangan gunakan pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE. Sebagai gantinya, tambahkan pengaturan aplikasi penyesuaian penyebaran SCM_DO_BUILD_DURING_DEPLOYMENT=true. Untuk Linux, tambahkan juga pengaturan ENABLE_ORYX_BUILD=true. Untuk mempelajari selengkapnya, lihat Build jarak jauh.

Catatan

WEBSITE_RUN_FROM_PACKAGE tidak berfungsi dengan MSDeploy seperti yang dijelaskan di sini. Anda akan menerima kesalahan selama penyebaran seperti ARM-MSDeploy Deploy Failed. Ubah /MSDeploy ke /ZipDeploy dan kesalahan ini akan diselesaikan.

Menambahkan pengaturan WEBSITE_RUN_FROM_PACKAGE baru

Ada beberapa cara yang dapat Anda tambahkan, perbarui, dan hapus pengaturan aplikasi fungsi:

Perubahan pada pengaturan aplikasi fungsi mengharuskan aplikasi fungsi Anda dimulai ulang.

Menggunakan WEBSITE_RUN_FROM_PACKAGE = 1

Bagian ini menyediakan informasi tentang cara menjalankan aplikasi fungsi Anda dari file paket lokal.

Pertimbangan terkait menyebarkan dari paket lokal

  • Menggunakan paket di situs adalah opsi yang disarankan untuk berjalan dari paket penyebaran, kecuali pada Linux yang di-hosting dalam paket Konsumsi.
  • Penyebaran Zip adalah cara yang disarankan untuk mengunggah paket penyebaran ke situs Anda.
  • Saat tidak menggunakan penyebaran zip, pastikan folder d:\home\data\SitePackages (Windows) atau /home/data/SitePackages (Linux) memiliki file bernama packagename.txt. File ini hanya berisi nama, tanpa spasi kosong, dari file paket dalam folder ini yang saat ini sedang berjalan.

Integrasi dengan penyebaran zip

Penerapan Zip adalah fitur Azure App Service yang memungkinkan Anda menerapkan proyek aplikasi fungsi wwwroot ke direktori. Proyek ini dikemas sebagai berkas .zip penyebaran. API yang sama dapat digunakan untuk menyebarkan paket Anda ke folder d:\home\data\SitePackages (Windows) atau /home/data/SitePackages (Linux).

Dengan nilai pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE dari 1, API penyebaran zip menyalin paket Anda ke folder d:\home\data\SitePackages (Windows) atau /home/data/SitePackages (Linux) alih-alih mengekstrak file ke d:\home\site\wwwroot (Windows) atau /home/site/wwwroot (Linux). Ini juga membuat file packagename.txt. Setelah restart, paket dipasang sebagai wwwroot sistem berkas baca-saja. Untuk informasi selengkapnya tentang penerapan zip, lihat Penggunaan zip untuk Azure Functions.

Catatan

Saat penyebaran terjadi, restart aplikasi fungsi dipicu. Eksekusi fungsi yang saat ini berjalan selama penyebaran dihentikan. Harap tinjau Meningkatkan performa dan keandalan Azure Functions untuk mempelajari cara menulis fungsi tanpa status dan defensif.

Menggunakan WEBSITE_RUN_FROM_PACKAGE = URL

Bagian ini menyediakan informasi tentang cara menjalankan aplikasi fungsi Anda dari paket yang disebarkan ke titik akhir URL. Opsi ini adalah satu-satunya yang didukung untuk berjalan dari paket di Linux yang dihosting dalam paket Konsumsi.

Pertimbangan terkait menyebarkan dari URL

  • Saat menjalankan aplikasi fungsi di Windows, pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE = <URL> memberikan performa cold-start yang lebih buruk dan tidak disarankan.
  • Saat menentukan URL, Anda juga harus menyinkronkan pemicu secara manual setelah memublikasikan paket yang diperbarui.
  • Runtime Functions harus memiliki izin untuk mengakses URL paket.
  • Anda tidak boleh menyebarkan paket Anda ke Azure Blob Storage sebagai blob publik. Alih-alih, Anda harus menggunakan kontainer pribadi dengan Tanda Tangan Akses Bersama (SAS) atau gunakan identitas terkelola untuk mengaktifkan runtime Fungsi untuk mengakses paket.
  • Anda harus mempertahankan URL SAS apa pun yang digunakan untuk penyebaran. Ketika SAS kedaluwarsa, paket tidak dapat lagi disebarkan. Dalam hal ini, Anda harus membuat SAS baru dan memperbarui pengaturan di aplikasi fungsi Anda. Anda dapat menghilangkan beban manajemen ini dengan menggunakan identitas terkelola.
  • Saat berjalan pada rencana Premium, pastikan untuk menghilangkan cold start.
  • Saat berjalan pada paket Khusus, pastikan Anda telah mengaktifkan Always On.
  • Anda dapat menggunakan Azure Storage Explorer untuk mengunggah file paket ke kontainer blob dalam akun penyimpanan Anda.

Mengunggah paket secara manual ke Blob Storage

Untuk menyebarkan paket dalam zip saat menggunakan opsi URL, Anda harus membuat paket penyebaran terkompresi .zip dan mengunggahnya ke tujuan. Contoh ini menyebarkan ke kontainer di Blob Storage.

  1. Buat paket .zip untuk proyek Anda menggunakan utilitas pilihan Anda.

  2. Di portal Microsoft Azure, cari nama akun penyimpanan Anda atau telusuri di akun penyimpanan.

  3. Di akun penyimpanan Anda, pilih Kontainer di bawah Penyimpanan Data.

  4. Pilih + Kontainer untuk membuat kontainer Blob Storage baru di akun Anda.

  5. Di halaman Kontainer baru, sediakan Nama (misalnya, "penyebaran"), pastikan Tingkat akses publik bersifat Privat, dan pilih Buat.

  6. Pilih kontainer yang Anda buat, pilih Unggah, telusuri ke lokasi file .zip yang Anda buat dengan proyek Anda, dan pilih Unggah.

  7. Setelah unggahan selesai, pilih file blob Anda yang diunggah, dan salin URL-nya. Anda mungkin perlu membuat URL SAS jika Anda tidak menggunakan identitas

  8. Cari aplikasi fungsi Anda atau telusuri di halaman Aplikasi Fungsi.

  9. Di aplikasi fungsi Anda, pilih Konfigurasi di bawah Pengaturan.

  10. Di tab Pengaturan aplikasi, pilih + Pengaturan aplikasi baru

  11. Masukkan nilai WEBSITE_RUN_FROM_PACKAGE untuk Nama, dan tempelkan URL paket Anda di Blob Storage sebagai Nilai.

  12. Pilih OK. Lalu pilih Simpan>Lanjutkan untuk menyimpan pengaturan dan menghidupkan ulang aplikasi.

Sekarang Anda dapat menjalankan fungsi Anda di Azure untuk memverifikasi bahwa penyebaran telah berhasil menggunakan file .zip paket penyebaran.

Berikut ini memperlihatkan aplikasi fungsi yang dikonfigurasi untuk dijalankan dari file .zip yang dihosting di penyimpanan Azure Blob:

WEBSITE_RUN_FROM_ZIP app setting

Ambil paket dari Azure Blob Storage menggunakan identitas terkelola

Azure Blob Storage dapat dikonfigurasi untuk mengotorisasi permintaan dengan ID Microsoft Entra. Ini berarti bahwa daripada membuat kunci SAS dengan kedaluwarsa, Anda dapat mengandalkan identitas terkelola aplikasi. Secara default, identitas yang ditetapkan sistem aplikasi akan digunakan. Jika Anda ingin menentukan identitas yang ditetapkan pengguna, Anda dapat mengatur pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID ke ID sumber daya dari identitas tersebut. Pengaturan juga dapat menerima "SystemAssigned" sebagai nilai, meskipun ini sama dengan menghilangkan pengaturan sama sekali.

Untuk mengaktifkan paket yang akan diambil menggunakan identitas:

  1. Pastikan blob dikonfigurasi untuk akses privat.

  2. Berikan identitas peran Storage Blob Data Reader dengan cakupan di atas blob paket. Lihat Menetapkan peran Azure untuk akses ke data blob untuk detail tentang membuat penetapan peran.

  3. Atur pengaturan aplikasi WEBSITE_RUN_FROM_PACKAGE ke URL blob paket. Ini kemungkinan akan berupa "https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}" atau yang serupa.

Langkah berikutnya