Bagikan melalui


Ekstensi Dapr untuk Azure Functions

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.

Tindakan Arah Tipe
Pemicu pada pengikatan input Dapr N/A daprBindingTrigger
Pemicu pada pemanggilan layanan Dapr N/A daprServiceInvocationTrigger
Pemicu pada langganan topik Dapr N/A daprTopicTrigger
Tarik dalam status Dapr untuk eksekusi In daprState
Menarik rahasia Dapr untuk eksekusi In daprSecret
Menyimpan nilai ke status Dapr Out daprState
Memanggil aplikasi Dapr lain Out daprInvoke
Menerbitkan pesan ke topik Dapr Out daprPublish
Mengirim nilai ke pengikatan output Dapr Out daprBinding

Pasang 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 1.0.0.

Menggunakan .NET CLI:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr

Menginstal bundel

Agar dapat menggunakan ekstensi pengikatan ini di aplikasi Anda, pastikan file host.json di akar proyek Anda berisi referensi ini extensionBundle :

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

Dalam contoh ini, version nilai [4.0.0, 5.0.0) menginstruksikan host Functions untuk menggunakan versi bundel yang setidaknya 4.0.0 tetapi kurang dari 5.0.0, yang mencakup semua versi potensial 4.x. Notasi ini secara efektif mempertahankan aplikasi Anda pada versi minor terbaru yang tersedia dari bundel ekstensi v4.x.

Jika memungkinkan, Anda harus menggunakan versi utama bundel ekstensi terbaru dan memungkinkan runtime untuk secara otomatis mempertahankan versi minor terbaru. Anda dapat melihat konten bundel terbaru pada halaman rilis bundel ekstensi. Untuk informasi selengkapnya, lihat Bundel ekstensi Azure Functions.

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 -tanggal yang paling up-to.

Saat mengonfigurasi Dapr menggunakan portal Microsoft Azure, navigasikan ke aplikasi fungsi Anda dan pilih Dapr dari menu sisi kiri:

Cuplikan layar yang menunjukkan tempat menemukan pengaktifan Dapr untuk Aplikasi Fungsi di portal Microsoft Azure.

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_PORTlingkungan . 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 fungsi C# yang dikompilasi berjalan dalam proses yang sama dengan runtime Functions.

Ekstensi Dapr mendukung jenis parameter sesuai dengan tabel di bawah ini.

Binding Jenis parameter
Pemicu Dapr daprBindingTrigger
daprServiceInvocationTrigger
daprTopicTrigger
Input Dapr daprState
daprSecret
Output Dapr daprState
daprInvoke
daprPublish
daprBinding

Untuk contoh menggunakan 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.

Samples Description
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.

Samples Description
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.

Samples Description
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.

Samples Description
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.

Samples Description
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.

Troubleshooting

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:

  1. Di pengaturan Dapr aplikasi kontainer Anda:

    • Jika Anda menggunakan pemicu Dapr dalam kode Anda, verifikasi bahwa port aplikasi diatur ke 3001 atau ke nilai DAPR_APP_PORT variabel lingkungan.

    • Jika Anda tidak menggunakan pemicu Dapr dalam kode Anda, verifikasi bahwa port aplikasi tidak diatur. Ini harus kosong.

  2. 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 
      

Langkah selanjutnya

Pelajari selengkapnya tentang Dapr.