Teknologi penyebaran di Azure Functions

Anda dapat menggunakan beberapa teknologi berbeda untuk menyebarkan kode proyek Azure Functions Anda ke Azure. Artikel ini memberikan gambaran umum tentang metode penyebaran yang tersedia untuk Anda dan rekomendasi metode terbaik untuk digunakan dalam berbagai skenario. Artikel ini juga menyediakan daftar lengkap dan detail penting tentang teknologi penyebaran yang mendasarinya.

Metode penerapan

Teknologi penyebaran yang Anda gunakan untuk menerbitkan kode ke aplikasi fungsi Anda di Azure bergantung pada kebutuhan spesifik Anda dan titik dalam siklus pengembangan. Misalnya, selama pengembangan dan pengujian, Anda dapat menggunakan langsung dari alat pengembangan Anda, seperti Visual Studio Code. Saat aplikasi sedang diproduksi, Anda lebih mungkin menerbitkan secara berkelanjutan dari kontrol sumber atau dengan menggunakan alur penerbitan otomatis, yang dapat menyertakan validasi dan pengujian.

Tabel berikut menjelaskan metode penyebaran yang tersedia untuk proyek kode Anda.

Jenis penyebaran Metode Terbaik untuk...
Berbasis alat Penerbitan Visual Studio Code
Penerbitan Visual Studio
Penerbitan Core Tools
Penyebaran selama pengembangan dan penyebaran improvisasi lainnya. Menyebarkan kode Anda sesuai permintaan menggunakan alat pengembangan lokal.
Dikelola App Service Pusat Penyebaran (CI/CD)
Penyebaran kontainer
Penyebaran berkelanjutan (CI/CD) dari kontrol sumber atau dari registri kontainer. Penyebaran dikelola oleh platform App Service (Kudu).
Alur eksternal Azure Pipelines
TIndkan GitHub
Alur produksi yang mencakup validasi, pengujian, dan tindakan lain yang harus dijalankan sebagai bagian dari penyebaran otomatis. Penyebaran dikelola oleh alur.

Penyebaran tertentu harus menggunakan teknologi terbaik berdasarkan skenario tertentu. Banyak metode penyebaran didasarkan pada penyebaran zip, yang direkomendasikan untuk penyebaran.

Ketersediaan teknologi penyebaran

Metode penyebaran juga tergantung pada paket hosting dan sistem operasi tempat Anda menjalankan aplikasi fungsi Anda.
Saat ini, Functions menawarkan tiga paket hosting:

Setiap paket memiliki perilaku yang berbeda. Tidak semua teknologi penyebaran tersedia untuk setiap paket hosting dan sistem operasi. Bagan ini menyediakan informasi tentang teknologi penyebaran yang didukung:

Teknologi penyebaran Konsumsi Windows Windows Premium Windows Khusus Konsumsi Linux Linux Premium Linux Khusus
URLpaket eksternal 1
Penyebaran Zip
Kontainer Docker
Kontrol sumber
GitLokal 1
FTPS1
Pengeditandalam portal 2

1 Teknologi penyebaran yang mengharuskan Anda menyinkronkan pemicu secara manual tidak disarankan .
2 Pengeditan di portal dinonaktifkan saat kode disebarkan ke aplikasi fungsi Anda dari luar portal. Untuk informasi selengkapnya, termasuk detail dukungan bahasa untuk pengeditan di portal, lihat Detail dukungan bahasa.

Konsep kunci

Beberapa konsep utama sangat penting untuk memahami cara kerja penyebaran di Azure Functions.

Sinkronisasi pemicu

Saat Anda mengubah salah satu pemicu Anda, infrastruktur Functions harus mengetahui perubahan tersebut. Sinkronisasi terjadi secara otomatis untuk banyak teknologi penyebaran. Namun, dalam beberapa kasus, Anda harus menyinkronkan pemicu Anda secara manual.

Anda harus menyinkronkan pemicu secara manual saat menggunakan opsi penyebaran ini:

Anda dapat menyinkronkan pemicu dengan salah satu dari tiga cara:

  • Hidupkan ulang aplikasi fungsi Anda di portal Microsoft Azure.
  • Kirim permintaan HTTP POST ke https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> menggunakan kunci master.
  • Kirim permintaan HTTP POST ke https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Ganti tempat penampung dengan ID langganan, nama grup sumber daya, dan nama aplikasi fungsi Anda. Permintaan ini memerlukan token akses di Authorization header permintaan.

Saat menyebarkan menggunakan URL paket eksternal, Anda perlu memulai ulang aplikasi fungsi secara manual untuk sepenuhnya menyinkronkan penyebaran Anda saat paket berubah tanpa mengubah URL, yang mencakup penyebaran awal.

Saat aplikasi fungsi Anda diamankan oleh pembatasan jaringan masuk, titik akhir pemicu sinkronisasi hanya dapat dipanggil dari klien di dalam jaringan virtual.

Build jarak jauh

Azure Functions dapat secara otomatis melakukan build pada kode yang diterimanya setelah penyebaran zip. Build ini berbeda tergantung pada apakah aplikasi Anda berjalan di Windows atau Linux.

Semua aplikasi fungsi yang berjalan di Windows memiliki aplikasi manajemen kecil, scm situs yang disediakan oleh Kudu. Situs ini menangani banyak penyebaran dan membangun logika untuk Azure Functions.

Saat aplikasi disebarkan ke Windows, perintah khusus bahasa, seperti dotnet restore (C#) atau npm install (JavaScript) dijalankan.

Pertimbangan berikut berlaku saat menggunakan build jarak jauh selama penyebaran:

  • Build jarak jauh didukung untuk aplikasi fungsi yang berjalan di Linux dalam paket Konsumsi. Namun, opsi penyebaran terbatas untuk aplikasi ini karena tidak memiliki scm situs (Kudu).
  • Aplikasi fungsi yang berjalan di Linux paket Premium atau dalam paket Khusus (App Service) memang memiliki scm situs (Kudu), tetapi terbatas dibandingkan dengan Windows.
  • Build jarak jauh tidak dilakukan saat aplikasi menggunakan run-from-package. Untuk mempelajari cara menggunakan build jarak jauh dalam kasus ini, lihat Penyebaran Zip.
  • Anda mungkin mengalami masalah dengan build jarak jauh saat aplikasi Dibuat sebelum fitur tersedia (1 Agustus 2019). Untuk aplikasi yang lebih lama, buat aplikasi fungsi baru atau jalankan az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> untuk memperbarui aplikasi fungsi Anda. Perintah ini mungkin memerlukan dua kali percobaan untuk berhasil.

Penyimpanan konten aplikasi

Beberapa metode penyebaran menyimpan payload aplikasi yang disebarkan atau dibuat pada akun penyimpanan yang terkait dengan aplikasi fungsi. Functions mencoba menggunakan berbagi konten Azure Files saat dikonfigurasi, tetapi beberapa metode sebagai gantinya menyimpan payload dalam instans penyimpanan blob yang AzureWebJobsStorage terkait dengan koneksi. Lihat detail di paragraf Di mana konten aplikasi disimpan dari setiap teknologi penyebaran yang tercakup di bagian berikutnya.

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.

Detail teknologi penyebaran

Metode penyebaran berikut ini tersedia di Azure Functions.

URL paket eksternal

Anda dapat menggunakan URL paket eksternal untuk mereferensikan file paket jarak jauh (.zip) yang berisi aplikasi fungsi Anda. File diunduh dari URL yang disediakan, dan aplikasi berjalan dalam mode Jalankan Dari Paket.

Cara menggunakannya: Tambahkan WEBSITE_RUN_FROM_PACKAGE ke pengaturan aplikasi Anda. Nilai pengaturan ini harus merupakan URL (lokasi file paket tertentu yang ingin Anda jalankan). Anda dapat menambahkan pengaturan baik di portal atau dengan menggunakan Azure CLI.

Jika Anda menggunakan penyimpanan Azure Blob, gunakan kontainer privat dengan tanda tangan akses bersama (SAS) untuk memberi Functions akses ke paket. Setiap kali aplikasi dimulai ulang, aplikasi tersebut mengambil salinan konten. Referensi Anda harus valid untuk masa pakai aplikasi.

Kapan menggunakannya: URL paket eksternal adalah satu-satunya metode penyebaran yang didukung untuk Azure Functions yang berjalan di Linux dalam paket Konsumsi, jika pengguna tidak ingin terjadi build jarak jauh. Setiap kali Anda menyebarkan file paket yang dirujuk aplikasi fungsi, Anda harus menyinkronkan pemicu secara manual, termasuk penyebaran awal. Saat Mengubah konten file paket dan bukan URL itu sendiri, Anda juga harus memulai ulang aplikasi fungsi untuk menyinkronkan pemicu.

Tempat konten aplikasi disimpan: Konten aplikasi disimpan di URL yang ditentukan. Ini bisa berada di Azure Blobs, mungkin di akun penyimpanan yang ditentukan oleh AzureWebJobsStorage koneksi. Beberapa alat klien mungkin default untuk menyebarkan ke blob di akun ini. Misalnya, untuk aplikasi Konsumsi Linux, Azure CLI akan mencoba menyebarkan melalui paket yang disimpan dalam blob pada akun yang ditentukan oleh AzureWebJobsStorage.

Penyebaran zip

Gunakan penyebaran zip untuk mendorong file .zip yang berisi aplikasi fungsi Anda ke Azure. Secara opsional, Anda dapat mengatur aplikasi untuk mulai berjalan dari paket, atau menentukan agar terlaksana build jarak jauh.

Cara menggunakannya: Sebarkan dengan menggunakan alat klien favorit Anda: Visual Studio Code, Visual Studio, atau dari baris perintah menggunakan Azure Functions Core Tools. Secara default, alat-alat ini menggunakan penyebaran zip dan berjalan dari paket. Core Tools dan ekstensi Visual Studio Code mengaktifkan build jarak jauh saat menyebarkan ke Linux. Untuk menyebarkan file .zip secara manual ke aplikasi fungsi Anda, ikuti instruksi di Sebarkan dari file .zip atau URL .

Saat menggunakan penyebaran zip, Anda dapat mengatur aplikasi untuk dijalankan dari paket. Untuk menjalankan dari paket, atur WEBSITE_RUN_FROM_PACKAGE nilai pengaturan aplikasi ke 1. Kami merekomendasikan penyebaran zip. Ini menghasilkan waktu pemuatan yang lebih cepat untuk aplikasi Anda, dan ini adalah default untuk VS Code, Visual Studio, dan Azure CLI.

Kapan menggunakannya: Penyebaran zip adalah teknologi penyebaran yang direkomendasikan untuk Azure Functions.

Tempat konten aplikasi disimpan: Konten aplikasi dari penyebaran zip secara default disimpan pada sistem file, yang mungkin didukung oleh Azure Files dari akun penyimpanan yang ditentukan saat aplikasi fungsi dibuat. Di Konsumsi Linux, konten aplikasi tetap ada pada blob di akun penyimpanan yang ditentukan oleh AzureWebJobsStorage koneksi.

Kontainer Docker

Anda dapat menyebarkan aplikasi fungsi yang berjalan di kontainer Linux.

Cara menggunakannya:Buat fungsi Anda di kontainer Linux lalu sebarkan kontainer ke paket Premium atau Khusus di Azure Functions atau host kontainer lain. Gunakan Azure Functions Core Tools untuk membuat Dockerfile yang disesuaikan untuk proyek yang Anda gunakan untuk membangun aplikasi fungsi dalam kontainer. Anda dapat menggunakan kontainer dalam penyebaran berikut:

Kapan menggunakannya: Gunakan opsi kontainer Docker saat Anda memerlukan kontrol lebih besar atas lingkungan Linux tempat aplikasi fungsi Anda berjalan dan tempat kontainer dihosting. Mekanisme penyebaran ini hanya tersedia untuk fungsi yang berjalan di Linux.

Tempat konten aplikasi disimpan: Konten aplikasi disimpan dalam registri kontainer yang ditentukan sebagai bagian dari gambar.

Kontrol sumber

Anda dapat mengaktifkan integrasi berkelanjutan antara aplikasi fungsi dan repositori kode sumber. Dengan kontrol sumber diaktifkan, pembaruan ke kode di repositori sumber yang terhubung memicu penyebaran kode terbaru dari repositori. Untuk informasi selengkapnya, lihat Penyebaran berkelanjutan untuk Azure Functions.

Cara menggunakannya: Cara term mudah untuk menyiapkan penerbitan dari kontrol sumber adalah dari Pusat Penyebaran di area Fungsi portal. Untuk informasi selengkapnya, lihat Penerapan berkelanjutan untuk Azure Functions.

Kapan menggunakannya: Menggunakan kontrol sumber adalah praktik terbaik untuk tim yang berkolaborasi pada aplikasi fungsinya. Kontrol sumber adalah opsi penyebaran yang baik yang memungkinkan alur penyebaran yang lebih canggih. Kontrol sumber biasanya diaktifkan pada slot penahapan, yang dapat ditukar menjadi produksi setelah validasi pembaruan dari repositori. Untuk informasi selengkapnya, lihat Slot penyebaran Azure Functions.

Tempat konten aplikasi disimpan: Konten aplikasi berada di sistem kontrol sumber, tetapi konten aplikasi yang dikloning dan dibuat secara lokal disimpan di sistem file aplikasi, yang mungkin didukung oleh Azure Files dari akun penyimpanan yang ditentukan saat aplikasi fungsi dibuat.

Git Lokal

Anda dapat menggunakan Git lokal untuk mendorong kode dari komputer lokal Anda ke Azure Functions dengan menggunakan Git.

Cara menggunakannya: Ikuti instruksi dalam penyebaran Git Lokal ke Azure App Service.

Kapan menggunakannya: Untuk mengurangi kemungkinan kesalahan, Anda harus menghindari penggunaan metode penyebaran yang memerlukan langkah tambahan untuk menyinkronkan pemicu secara manual. Gunakan penyebaran zip jika memungkinkan.

Tempat konten aplikasi disimpan: Konten aplikasi disimpan di sistem file, yang mungkin didukung oleh Azure Files dari akun penyimpanan yang ditentukan saat aplikasi fungsi dibuat.

FTP/S

Anda dapat menggunakan FTP/S untuk langsung mentransfer file ke Azure Functions, meskipun metode penyebaran ini tidak disarankan. Saat Anda tidak berencana menggunakan FTP, Anda harus menonaktifkannya. Jika Anda memilih untuk menggunakan FTP, Anda harus memberlakukan FTPS. Untuk mempelajari caranya di portal Azure, lihat Menerapkan FTPS.

Cara menggunakannya: Ikuti instruksi dalam pengaturan penyebaran FTPS untuk mendapatkan URL dan kredensial yang dapat Anda gunakan untuk menyebarkan ke aplikasi fungsi Anda menggunakan FTPS.

Kapan menggunakannya: Untuk mengurangi kemungkinan kesalahan, Anda harus menghindari penggunaan metode penyebaran yang memerlukan langkah tambahan untuk menyinkronkan pemicu secara manual. Gunakan penyebaran zip jika memungkinkan.

Tempat konten aplikasi disimpan: Konten aplikasi disimpan di sistem file, yang mungkin didukung oleh Azure Files dari akun penyimpanan yang ditentukan saat aplikasi fungsi dibuat.

Pengeditan portal

Di editor berbasis portal, Anda dapat langsung mengedit file yang ada di aplikasi fungsi Anda (pada dasarnya menyebarkan setiap kali Anda menyimpan perubahan).

Cara menggunakannya: Untuk dapat mengedit fungsi Anda di portal Azure, Anda harus membuat fungsi Anda di portal. Untuk mempertahankan satu sumber kebenaran, menggunakan metode penyebaran lainnya membuat fungsi Anda baca-saja dan mencegah pengeditan portal yang berkelanjutan. Untuk kembali ke status di mana Anda dapat mengedit file di portal Azure, Anda dapat mengubah kembali mode edit secara manual ke Read/Write dan menghapus pengaturan aplikasi terkait penyebaran (seperti WEBSITE_RUN_FROM_PACKAGE).

Kapan menggunakannya: Portal adalah cara yang tepat untuk memulai dengan Azure Functions. Untuk pekerjaan pengembangan yang lebih canggih, kami sarankan Anda menggunakan salah satu alat klien berikut:

Tempat konten aplikasi disimpan: Konten aplikasi disimpan di sistem file, yang mungkin didukung oleh Azure Files dari akun penyimpanan yang ditentukan saat aplikasi fungsi dibuat.

Tabel berikut ini memperlihatkan sistem operasi dan bahasa yang mendukung pengeditan di portal:

Bahasa Konsumsi Windows Windows Premium Windows Khusus Konsumsi Linux Linux Premium Linux Khusus
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 Pengeditan di portal hanya didukung untuk file skrip C#, yang berjalan dalam proses dengan host. Untuk informasi selengkapnya, lihat referensi pengembang skrip Azure Functions C# (.csx).
2 Pengeditan dalam portal hanya didukung untuk model pemrograman Python v1.

Perilaku penyebaran

Saat Anda menyebarkan pembaruan ke kode aplikasi fungsi Anda, fungsi yang saat ini dijalankan dihentikan. Setelah penyebaran selesai, kode baru dimuat untuk mulai memproses permintaan. Tinjau Meningkatkan performa dan keandalan Azure Functions untuk mempelajari cara menulis fungsi stateless dan defensif.

Jika Anda membutuhkan kontrol lebih besar atas transisi ini, Anda harus menggunakan slot penyebaran.

Slot penyebaran

Saat menerapkan aplikasi fungsi ke Azure, Anda dapat menyebarkan ke slot penyebaran terpisah, bukan langsung ke produksi. Menyebarkan ke slot penyebaran lalu bertukar ke produksi setelah verifikasi adalah cara yang disarankan untuk mengonfigurasi penyebaran berkelanjutan.

Cara Anda menyebarkan ke slot tergantung pada alat penyebaran tertentu yang Anda gunakan. Misalnya, saat menggunakan Azure Functions Core Tools, Anda menyertakan--slot opsi untuk menunjukkan nama slot tertentu untuk perintah tersebut func azure functionapp publish .

Untuk informasi selengkapnya tentang slot penyebaran, lihat dokumentasi Slot Penyebaran Azure Functions untuk detailnya.

Langkah berikutnya

Baca artikel ini untuk mempelajari selengkapnya tentang menerapkan aplikasi fungsi Anda: