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, atau
UseDevelopmentStorage=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.

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 sebagai UseDevelopmentStorage=true. Di Azure, AzureWebJobsStorage pengaturan harus selalu menjadi string koneksi akun penyimpanan yang digunakan oleh aplikasi fungsi Anda. Untuk informasi selengkapnya, lihat AzureWebJobsStorage .

Langkah berikutnya