Kode dan uji Azure Functions secara lokal
Meskipun Anda dapat mengembangkan dan menguji Azure Functions di portal Microsoft Azure, banyak pengembang lebih suka pengalaman pengembangan lokal. Saat Anda menggunakan Fungsi, menggunakan editor kode dan alat pengembangan favorit Anda untuk membuat dan menguji fungsi di komputer lokal Anda menjadi lebih mudah. Fungsi lokal Anda dapat terhubung ke layanan Azure langsung, dan Anda dapat melakukan debug fungsi di komputer lokal menggunakan runtime Azure Functions penuh.
Artikel ini memberikan tautan ke lingkungan pengembangan tertentu untuk bahasa pilihan Anda. Ini juga memberikan beberapa panduan bersama untuk pengembangan lokal, seperti bekerja dengan file local.settings.json.
Di lingkungan pengembangan lokal
Cara Anda mengembangkan fungsi di komputer lokal bergantung pada preferensi bahasa dan alat Anda. Lingkungan dalam tabel berikut mendukung pengembangan lokal:
Lingkungan | Bahasa | Deskripsi |
---|---|---|
Visual Studio Code | C# (dalam proses) C# (proses pekerja terisolasi) JavaScript PowerShell Python |
Ekstensi Azure Functions untuk VS Code menambahkan dukungan Functions ke VS Code. Membutuhkan Core Tools. Mendukung pengembangan di Linux, macOS, dan Windows, saat menggunakan versi 2.x Core Tools. Untuk mempelajari lebih lanjut, lihat Membuat fungsi pertama Anda menggunakan Visual Studio Code. |
Perintah atau terminal | C# (dalam proses) C# (proses pekerja terisolasi) JavaScript PowerShell Python |
Azure Functions Core Tools menyediakan runtime inti dan templat untuk membuat fungsi, yang memungkinkan pengembangan lokal. Versi 2.x mendukung pengembangan pada Linux, macOS, dan Windows. Semua lingkungan mengandalkan Alat Inti untuk runtime Functions lokal. |
Visual Studio | C# (dalam proses) C# (proses pekerja terisolasi) |
Alat Azure Functions disertakan dalam beban kerja pengembangan Azure Visual Studio, dimulai dengan Visual Studio 2019. Memungkinkan Anda mengompilasi fungsi di perpustakaan kelas dan memublikasikan .dll ke Azure. Termasuk Core Tools untuk pengujian lokal. Untuk mempelajari lebih lanjut, lihat Mengembangkan Azure Functions menggunakan Visual Studio. |
Maven (bermacam-macam) | Java | Struktur Maven mendukung Core Tools untuk mengaktifkan pengembangan fungsi Java. Versi 2.x mendukung pengembangan pada Linux, macOS, dan Windows. Untuk mempelajari lebih lanjut, lihat Membuat fungsi pertama Anda dengan Java dan Maven. Juga mendukung pengembangan menggunakan Eclipse dan IntelliJ IDEA. |
Catatan
Karena keterbatasan mengedit kode fungsi di portal Azure, Anda harus mengembangkan fungsi Anda secara lokal dan menerbitkan proyek kode Anda ke aplikasi fungsi di Azure. Untuk informasi selengkapnya, lihat Batasan pengembangan di portal Azure
Masing-masing lingkungan pengembangan lokal ini memungkinkan Anda membuat proyek aplikasi fungsi dan menggunakan templat fungsi yang telah ditentukan sebelumnya untuk membuat fungsi baru. Masing-masing menggunakan Core Tools sehingga Anda dapat menguji dan menelusuri kesalahan fungsi Anda terhadap runtime Functions nyata di mesin Anda sendiri seperti halnya aplikasi lain. Anda juga dapat memublikasikan proyek aplikasi fungsi dari salah satu lingkungan ini ke Azure.
File proyek lokal
Direktori proyek Functions berisi file berikut di folder akar proyek, terlepas dari bahasa:
Nama file | Deskripsi |
---|---|
host.json | Untuk mempelajari lebih lanjut, lihat referensi host.json. |
local.settings.json | Pengaturan yang digunakan oleh Core Tools saat berjalan secara lokal, termasuk pengaturan aplikasi. Untuk mempelajari selengkapnya, lihat file pengaturan lokal. |
.gitignore | Mencegah file local.settings.json tidak sengaja diterbitkan ke repositori Git. Untuk mempelajari selengkapnya, lihat file pengaturan lokal. |
.vscode\extensions.json | Pengaturan file yang digunakan saat membuka folder proyek di Visual Studio Code. |
File lain dalam proyek bergantung pada bahasa dan fungsi tertentu Anda. Untuk informasi selengkapnya, lihat panduan pengembang untuk bahasa Anda.
File pengaturan lokal
File local.settings.json menyimpan pengaturan aplikasi dan pengaturan yang digunakan oleh alat pengembangan lokal. Pengaturan di file local.settings.json hanya digunakan saat Anda menjalankan proyek secara lokal. Saat Anda menerbitkan proyek ke Azure, pastikan juga untuk menambahkan pengaturan yang diperlukan ke pengaturan aplikasi untuk aplikasi fungsi.
Penting
Karena local.settings.json mungkin mencakup rahasia, seperti string koneksi, Anda tidak boleh menyimpannya di repositori jarak jauh. Alat yang mendukung Fungsi menyediakan cara untuk menyinkronkan pengaturan dalam file local.settings.json dengan pengaturan aplikasi di aplikasi fungsi tempat proyek Anda digunakan.
File local setting memiliki struktur ini:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
Pengaturan ini didukung saat Anda menjalankan proyek secara lokal:
Pengaturan | Deskripsi |
---|---|
IsEncrypted |
Ketika pengaturan ini diatur ke true , semua nilai dienkripsi dengan kunci komputer lokal. Digunakan dengan func settings perintah. Nilai default false . Anda mungkin ingin mengenkripsi local.settings.json file pada komputer lokal Anda ketika memuat rahasia, seperti string sambungan layanan. Host secara otomatis mendekripsi pengaturan saat dijalankan. Gunakan func settings decrypt perintah sebelum mencoba membaca setelan terenkripsi secara lokal. |
Values |
Kumpulan pengaturan aplikasi yang digunakan saat proyek berjalan secara lokal. Pasangan nilai kunci (string-string) ini sesuai dengan pengaturan aplikasi di aplikasi fungsi Anda di Azure, seperti AzureWebJobsStorage . Banyak pemicu dan pengikatan memiliki properti yang mengacu pada pengaturan aplikasi string koneksi, seperti Connection untuk pemicu penyimpanan Blob. Untuk properti ini, Anda memerlukan pengaturan aplikasi yang ditentukan dalam Values array. Lihat tabel berikutnya untuk daftar pengaturan yang umum digunakan. Nilai harus untai (karakter) dan bukan objek atau array JSON. Nama pengaturan tidak boleh menyertakan garis bawah ganda ( __ ) dan tidak boleh menyertakan titik dua (: ). Karakter garis bawah ganda disediakan oleh runtime bahasa umum, dan titik dua disediakan untuk mendukung injeksi dependensi. |
Host |
Pengaturan di bagian ini mengkustomisasi proses host Fungsi saat Anda menjalankan proyek secara lokal. Pengaturan ini terpisah dari pengaturan host.json, yang juga berlaku saat Anda menjalankan proyek di Azure. |
LocalHttpPort |
Mengatur port default yang digunakan saat menjalankan host Fungsi lokal ( func host start dan func run ). --port Opsi baris perintah lebih diutamakan daripada pengaturan ini. Misalnya, saat berjalan di IDE Visual Studio, Anda dapat mengubah nomor port dengan bernavigasi ke jendela "Properti Proyek -> Debug" dan menentukan nomor port secara eksplisit dalam perintah host start --port <your-port-number> yang dapat disediakan di bidang "Argumen Aplikasi". |
CORS |
Mendefinisikan asal-usul yang diizinkan untuk berbagi sumber daya lintas asal (CORS). Asal-usul disediakan sebagai daftar yang dipisahkan koma tanpa spasi. Nilai wildcard (*) didukung, memungkinkan permintaan dari asal apa pun. |
CORSCredentials |
Ketika diatur ke true , memungkinkan withCredentials permintaan. |
ConnectionStrings |
Koleksi. Jangan gunakan koleksi ini untuk string koneksi yang digunakan oleh pengikatan data fungsi Anda. Koleksi ini hanya digunakan oleh kerangka kerja yang biasanya mendapatkan string koneksi dari ConnectionStrings bagian file konfigurasi, seperti Kerangka Kerja Entitas. String koneksi dalam objek ini ditambahkan ke lingkungan dengan jenis penyedia System.Data.SqlClient. Item dalam koleksi ini tidak dipublikasikan ke Azure dengan pengaturan aplikasi lain. Anda harus secara eksplisit menambahkan nilai-nilai ini Connection strings ke koleksi pengaturan aplikasi fungsi Anda. Jika Anda membuat SqlConnection dalam kode fungsi, Anda harus menyimpan nilai string koneksi dengan koneksi Anda yang lain di Pengaturan Aplikasi di portal. |
Pengaturan aplikasi berikut dapat disertakan dalam Values
array saat berjalan secara lokal:
Pengaturan | Nilai | Deskripsi |
---|---|---|
AzureWebJobsStorage |
String koneksi akun Microsoft Azure Storage, atauUseDevelopmentStorage=true |
Memuat string koneksi untuk akun penyimpanan Azure. Diperlukan ketika menggunakan pemicu selain HTTP. Untuk informasi selengkapnya, lihat AzureWebJobsStorage referensi.Ketika Anda memiliki Azurite Emulator yang terinstal secara lokal dan Anda atur AzureWebJobsStorage ke UseDevelopmentStorage=true , Core Tools akan menggunakan emulator. Untuk informasi selengkapnya, lihat Emulator penyimpanan lokal. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true |false |
Untuk menonaktifkan fungsi saat berjalan secara lokal, tambahkan "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" ke koleksi, di mana <FUNCTION_NAME> nama fungsi. Untuk mempelajari lebih lanjut, lihat Cara menonaktifkan fungsi di Azure Functions. |
FUNCTIONS_WORKER_RUNTIME |
dotnet dotnet-isolated node java powershell python |
Menunjukkan bahasa yang ditargetkan dari runtime Fungsi. Diperlukan untuk runtime bahasa umum Azure Functions versi 2.x dan yang lebih tinggi. Pengaturan ini dibuat untuk proyek Anda oleh Core Tools. Untuk mempelajari selengkapnya, lihat FUNCTIONS_WORKER_RUNTIME referensinya. |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
Menunjukkan untuk menggunakan PowerShell 7 saat berjalan secara lokal. Jika tidak disetel, maka PowerShell Core 6 digunakan. Setelan ini hanya digunakan ketika berjalan secara lokal. Versi runtime PowerShell ditentukan oleh powerShellVersion pengaturan konfigurasi situs, saat dijalankan di Azure, yang dapat diatur di portal. |
Menyinkronkan pengaturan
Saat Anda mengembangkan fungsi secara lokal, pengaturan lokal apa pun yang diperlukan oleh aplikasi Anda juga harus ada di pengaturan aplikasi aplikasi fungsi tempat kode Anda disebarkan. Anda mungkin juga perlu mengunduh pengaturan saat ini dari aplikasi fungsi ke proyek lokal Anda. Meskipun Anda dapat mengonfigurasi pengaturan aplikasi secara manual di portal Azure, alat berikut juga memungkinkan Anda menyinkronkan pengaturan aplikasi dengan pengaturan lokal di proyek Anda:
Pemicu dan pengikatan
Saat Anda mengembangkan fungsi secara lokal, Anda perlu mempertimbangkan perilaku pemicu dan pengikatan. Untuk pemicu HTTP, Anda cukup memanggil titik akhir HTTP di komputer lokal, menggunakan http://localhost/
. Untuk fungsi yang dipicu non-HTTP, ada beberapa opsi untuk dijalankan secara lokal:
- Cara term mudah untuk menguji pengikatan selama pengembangan lokal adalah dengan menggunakan string koneksi yang menargetkan layanan Azure langsung. Anda dapat menargetkan layanan langsung dengan menambahkan pengaturan string koneksi yang sesuai dalam
Values
array dalam file local.settings.json. Saat Anda melakukan ini, eksekusi lokal selama pengujian memengaruhi data layanan langsung. Karena itu, pertimbangkan untuk menyiapkan layanan terpisah untuk digunakan selama pengembangan dan pengujian, lalu beralih ke layanan yang berbeda selama produksi. - Untuk pemicu berbasis penyimpanan, Anda dapat menggunakan emulator penyimpanan lokal.
- Anda dapat menjalankan fungsi pemicu non-HTTP secara manual dengan menggunakan titik akhir administrator khusus. Untuk informasi selengkapnya, lihat Menjalankan fungsi yang tidak dipicu HTTP secara manual.
Selama pengujian lokal, Anda harus menjalankan host yang disediakan oleh Core Tools (func.exe) secara lokal. Untuk informasi selengkapnya, lihat Azure Functions Core Tools.
Alat pengujian HTTP
Selama pengembangan, mudah untuk memanggil salah satu titik akhir fungsi Anda dari browser web saat mereka mendukung metode HTTP GET. Namun, untuk metode HTTP lain yang mendukung payload, seperti POST atau PUT, Anda perlu menggunakan alat uji HTTP untuk membuat dan mengirim permintaan HTTP ini ke titik akhir fungsi Anda.
Perhatian
Untuk skenario di mana permintaan Anda harus menyertakan data sensitif, pastikan untuk menggunakan alat yang melindungi data Anda dan mengurangi risiko mengekspos data sensitif apa pun ke publik. Data sensitif yang harus Anda lindungi mungkin termasuk: kredensial, rahasia, token akses, kunci API, data geolokasi, bahkan informasi identitas pribadi (PII).
Anda dapat menjaga keamanan data Anda dengan memilih alat uji HTTP yang berfungsi secara offline atau lokal, tidak menyinkronkan data Anda ke cloud, dan tidak mengharuskan Anda masuk ke akun online. Beberapa alat juga dapat melindungi data Anda dari paparan yang tidak disengaja dengan menerapkan fitur keamanan tertentu.
Hindari menggunakan alat yang menyimpan riwayat permintaan HTTP Anda secara terpusat (termasuk informasi sensitif), jangan ikuti praktik keamanan terbaik, atau jangan hormati masalah privasi data.
Pertimbangkan untuk menggunakan salah satu alat ini untuk mengirim permintaan HTTP dengan aman ke titik akhir fungsi Anda:
- Visual Studio Code dengan ekstensi dari Visual Studio Marketplace, seperti Klien REST
- PowerShell Invoke-RestMethod
- Microsoft Edge - Alat Konsol Jaringan
- Bruno
- curl
Emulator penyimpanan lokal
Selama pengembangan lokal, Anda dapat menggunakan emulator Azurite lokal saat menguji fungsi dengan pengikatan Azure Storage (Queue Storage, Blob Storage, dan Table Storage), tanpa harus terhubung ke layanan penyimpanan jarak jauh. Azurite terintegrasi dengan Visual Studio Code dan Visual Studio, dan Anda juga dapat menjalankannya dari prompt perintah menggunakan npm. Untuk informasi selengkapnya, lihat Gunakan emulator Azurite untuk pengembangan Microsoft Azure Storage lokal.
Pengaturan berikut dalam Values
kumpulan file local.settings.json memberi tahu host Functions lokal untuk menggunakan Azurite untuk koneksi default AzureWebJobsStorage
:
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
Dengan nilai pengaturan ini, pemicu atau pengikatan Azure Storage apa pun yang menggunakan AzureWebJobsStorage
sebagai koneksinya terhubung ke Azurite saat berjalan secara lokal. Ingatlah pertimbangan ini saat menggunakan emulasi penyimpanan selama eksekusi lokal:
- Anda harus menginstal dan menjalankan Azurite.
- Anda harus menguji dengan koneksi penyimpanan aktual ke layanan Azure sebelum menerbitkan ke Azure.
- Saat Anda menerbitkan proyek, jangan terbitkan
AzureWebJobsStorage
pengaturan sebagaiUseDevelopmentStorage=true
. Di Azure,AzureWebJobsStorage
pengaturan harus selalu menjadi string koneksi akun penyimpanan yang digunakan oleh aplikasi fungsi Anda. Untuk informasi selengkapnya, lihatAzureWebJobsStorage
.
Langkah berikutnya
- Untuk mempelajari selengkapnya tentang pengembangan lokal fungsi C# yang dikompilasi (proses dalam proses dan proses pekerja terisolasi) menggunakan Visual Studio, lihat Mengembangkan Azure Functions menggunakan Visual Studio.
- Untuk mempelajari selengkapnya tentang pengembangan fungsi lokal menggunakan Visual Studio Code di komputer Mac, Linux, atau Windows, lihat artikel memulai Visual Studio Code untuk bahasa pilihan Anda:
- Untuk mempelajari selengkapnya tentang mengembangkan fungsi dari prompt perintah atau terminal, lihat Azure Functions Core Tools.