Ekstensi Dapr untuk Azure Functions
Penting
Ekstensi Dapr untuk Azure Functions saat ini dalam pratinjau dan hanya didukung di lingkungan Azure Container Apps.
Ekstensi Dapr untuk Azure Functions adalah sekumpulan alat dan layanan yang memungkinkan pengembang untuk dengan mudah mengintegrasikan Azure Functions dengan platform Distributed Application Runtime (Dapr).
Azure Functions adalah layanan komputasi berbasis peristiwa yang menyediakan serangkaian pemicu dan pengikatan untuk terhubung dengan layanan Azure lainnya dengan mudah. Dapr menyediakan serangkaian blok penyusun dan praktik terbaik untuk membangun aplikasi terdistribusi, termasuk layanan mikro, manajemen status, pub/sub olahpesan, dan banyak lagi.
Dengan integrasi antara Dapr dan Functions, Anda dapat membangun fungsi yang bereaksi terhadap peristiwa dari Dapr atau sistem eksternal.
Perbuatan | Arah | Jenis |
---|---|---|
Pemicu pada pengikatan input Dapr | T/A | daprBindingTrigger |
Pemicu pada pemanggilan layanan Dapr | T/A | daprServiceInvocationTrigger |
Pemicu pada langganan topik Dapr | T/A | daprTopicTrigger |
Tarik dalam status Dapr untuk eksekusi | Masuk | daprState |
Menarik rahasia Dapr untuk eksekusi | Masuk | daprSecret |
Menyimpan nilai ke status Dapr | Kehabisan | daprState |
Memanggil aplikasi Dapr lain | Kehabisan | daprInvoke |
Menerbitkan pesan ke topik Dapr | Kehabisan | daprPublish |
Mengirim nilai ke pengikatan output Dapr | Kehabisan | daprBinding |
Menginstal ekstensi
Paket NuGet ekstensi yang Anda instal tergantung pada mode C# dalam proses atau proses pekerja terisolasi yang Anda gunakan di aplikasi fungsi Anda:
Ekstensi ini tersedia dengan menginstal paket NuGet, versi 0.17.0-preview01.
Menggunakan CLI .NET:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr --prerelease
Memasang bundel
Anda dapat menambahkan ekstensi pratinjau dengan menambahkan atau mengganti kode berikut dalam file Anda host.json
:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.*, 5.0.0)"
}
}
Pengaktifan Dapr
Anda dapat mengonfigurasi Dapr menggunakan berbagai [argumen dan anotasi][dapr-args] berdasarkan konteks runtime. Anda dapat mengonfigurasi Dapr untuk Azure Functions melalui dua saluran:
- Templat Infrastruktur sebagai Kode (IaC), seperti dalam templat Bicep atau Azure Resource Manager (ARM)
- Portal Microsoft Azure
Saat menggunakan templat IaC, tentukan argumen berikut di bagian properties
definisi sumber daya aplikasi kontainer.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Nilai konfigurasi Dapr di atas dianggap sebagai perubahan cakupan aplikasi. Saat Anda menjalankan aplikasi kontainer dalam mode beberapa revisi, perubahan pada pengaturan ini tidak akan membuat revisi baru. Sebagai gantinya, semua revisi yang ada dimulai ulang untuk memastikan revisi dikonfigurasi dengan nilai terbaru.
Saat mengonfigurasi Dapr menggunakan portal Azure, navigasikan ke aplikasi fungsi Anda dan pilih Dapr dari menu sisi kiri:
Port dapr dan listener
Saat Anda memicu fungsi dari Dapr, ekstensi mengekspos port 3001
secara otomatis untuk mendengarkan permintaan masuk dari sidecar Dapr.
Penting
Port 3001
hanya diekspos dan didengarkan jika pemicu Dapr ditentukan dalam aplikasi fungsi. Saat menggunakan Dapr, sidecar menunggu untuk menerima respons dari port yang ditentukan sebelum menyelesaikan instansiasi. Jangan tentukan dapr.io/port
anotasi atau --app-port
kecuali Anda memiliki pemicu. Melakukannya dapat mengunci aplikasi Anda dari sidecar Dapr.
Jika Anda hanya menggunakan pengikatan input dan output, port 3001
tidak perlu diekspos atau ditentukan.
Secara default, ketika Azure Functions mencoba berkomunikasi dengan Dapr, Azure Functions memanggil Dapr melalui port yang diselesaikan dari variabel DAPR_HTTP_PORT
lingkungan . Jika variabel tersebut null, variabel tersebut default ke port 3500
.
Anda dapat mengambil alih alamat Dapr yang digunakan oleh pengikatan input dan output dengan mengatur DaprAddress
properti di function.json
untuk pengikatan (atau atribut). Secara default, ia menggunakan http://localhost:{DAPR_HTTP_PORT}
.
Aplikasi fungsi masih mengekspos port dan titik akhir lain untuk hal-hal seperti pemicu HTTP, yang secara lokal default ke 7071
, tetapi dalam kontainer, default ke 80
.
Jenis pengikatan
Jenis pengikatan yang didukung untuk .NET bergantung pada versi ekstensi dan mode eksekusi C#, yang dapat menjadi salah satu hal berikut:
Pustaka kelas dalam proses adalah kompilasi fungsi #C yang berjalan pada proses yang sama seperti runtime Functions.
Ekstensi Dapr mendukung jenis parameter sesuai dengan tabel di bawah ini.
Mengikat | Jenis parameter |
---|---|
Pemicu Dapr | daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
Input Dapr | daprState daprSecret |
Output Dapr | daprState daprInvoke daprPublish daprBinding |
Untuk contoh penggunaan jenis ini, lihat repositori GitHub untuk ekstensi.
Mencoba Ekstensi Dapr untuk Azure Functions
Pelajari cara menggunakan Ekstensi Dapr untuk Azure Functions melalui sampel yang disediakan.
Sampel | Deskripsi |
---|---|
Mulai Cepat | Mulai menggunakan Pengikatan Dapr Pub/sub dan HttpTrigger . |
Dapr Kafka | Pelajari cara menggunakan Ekstensi Dapr Azure Functions dengan komponen Kafka bindings Dapr. |
.NET Dalam proses | Pelajari cara menggunakan model dalam proses Azure Functions untuk berintegrasi dengan beberapa komponen Dapr di .NET, seperti Pemanggilan Layanan, Pub/sub, Pengikatan, dan Manajemen Status. |
.NET Terisolasi | Integrasikan dengan komponen Dapr di .NET menggunakan model eksekusi Azure Functions out-of-proc (OOP). |
Mencoba Ekstensi Dapr untuk Azure Functions
Pelajari cara menggunakan Ekstensi Dapr untuk Azure Functions melalui sampel yang disediakan.
Sampel | Deskripsi |
---|---|
Java Functions | Pelajari cara menggunakan Ekstensi Dapr Azure Functions menggunakan Java. |
Mencoba Ekstensi Dapr untuk Azure Functions
Pelajari cara menggunakan Ekstensi Dapr untuk Azure Functions melalui sampel yang disediakan.
Sampel | Deskripsi |
---|---|
Mulai Cepat | Mulai menggunakan Pengikatan Dapr Pub/sub dan HttpTrigger . |
Dapr Kafka | Pelajari cara menggunakan Ekstensi Dapr Azure Functions dengan komponen Kafka bindings Dapr. |
JavaScript | Jalankan aplikasi fungsi JavaScript Dapr dan integrasikan dengan Pemanggilan Layanan Dapr, Pub/sub, Pengikatan, dan Manajemen Status menggunakan Azure Functions. |
Mencoba Ekstensi Dapr untuk Azure Functions
Pelajari cara menggunakan Ekstensi Dapr untuk Azure Functions melalui sampel yang disediakan.
Sampel | Deskripsi |
---|---|
Fungsi PowerShell | Pelajari cara menggunakan Ekstensi Dapr Azure Functions dengan PowerShell. |
Mencoba Ekstensi Dapr untuk Azure Functions
Pelajari cara menggunakan Ekstensi Dapr untuk Azure Functions melalui sampel yang disediakan.
Sampel | Deskripsi |
---|---|
Dapr Kafka | Pelajari cara menggunakan Ekstensi Dapr Azure Functions dengan komponen Kafka bindings Dapr. |
Python v1 | Jalankan aplikasi Python berukuran Dapr dan gunakan model pemrograman Azure Functions Python v1 untuk berintegrasi dengan komponen Dapr. |
Python v2 | Luncurkan aplikasi Dapr menggunakan model pemrograman Azure Functions Python v2 untuk diintegrasikan dengan komponen Dapr. |
Pemecahan Masalah
Bagian ini menjelaskan cara memecahkan masalah yang dapat terjadi saat menggunakan ekstensi Dapr untuk Azure Functions.
Pastikan Dapr diaktifkan di lingkungan Anda
Jika Anda menggunakan pengikatan dan pemicu Dapr di Azure Functions, dan Dapr tidak diaktifkan di lingkungan Anda, Anda mungkin menerima pesan kesalahan: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information.
Untuk mengaktifkan Dapr di lingkungan Anda:
Jika Azure Function Anda disebarkan di Azure Container Apps, lihat Instruksi pengaktifan Dapr untuk ekstensi Dapr untuk Azure Functions.
Jika Azure Function Anda disebarkan di Kubernetes, verifikasi bahwa konfigurasi YAML penyebaran Anda memiliki anotasi berikut:
annotations: ... dapr.io/enabled: "true" dapr.io/app-id: "functionapp" # You should only set app-port if you are using a Dapr trigger in your code. dapr.io/app-port: "<DAPR_APP_PORT>" ...
Jika Anda menjalankan Azure Function secara lokal, jalankan perintah berikut untuk memastikan Anda menjalankan aplikasi fungsi dengan Dapr:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Memverifikasi nilai port aplikasi dalam konfigurasi Dapr
Ekstensi Dapr untuk Azure Functions memulai server HTTP pada port 3001
secara default. Anda dapat mengonfigurasi port ini menggunakan DAPR_APP_PORT
variabel lingkungan.
Jika Anda memberikan nilai port aplikasi yang salah saat menjalankan aplikasi Azure Functions, Anda mungkin menerima pesan kesalahan: The Dapr sidecar is configured to listen on port {portInt}, but the app server is running on port {appPort}. This may cause unexpected behavior. For more information, visit [this link](https://aka.ms/azfunc-dapr-app-config-error).
Untuk mengatasi pesan kesalahan ini:
Di pengaturan Dapr aplikasi kontainer Anda:
Jika Anda menggunakan pemicu Dapr dalam kode Anda, verifikasi bahwa port aplikasi diatur ke
3001
atau ke nilaiDAPR_APP_PORT
variabel lingkungan.Jika Anda tidak menggunakan pemicu Dapr dalam kode Anda, verifikasi bahwa port aplikasi tidak diatur. Seharusnya kosong.
Verifikasi bahwa Anda memberikan nilai port aplikasi yang benar dalam konfigurasi Dapr.
Jika Anda menggunakan Azure Container Apps, tentukan port aplikasi di Bicep:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }
Jika Anda menggunakan lingkungan Kubernetes, atur
dapr.io/app-port
anotasi:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...
Jika Anda mengembangkan secara lokal, verifikasi bahwa Anda mengatur
--app-port
saat menjalankan aplikasi fungsi dengan Dapr:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start