Menyebarkan penyusun API Data ke Azure App Service

Panduan ini menunjukkan kepada Anda cara menyebarkan penyusun API Data (DAB) untuk Azure App Service menggunakan model penyebaran berbasis kode, tanpa membangun atau mengelola gambar kontainer. App Service menyediakan dukungan bawaan untuk TLS, domain kustom, penskalaan, pemantauan, dan autentikasi Microsoft Entra.

Diagram arsitektur keseluruhan setelah penyebaran ke Azure App Service selesai.

Petunjuk / Saran

Jika lingkungan Anda menggunakan kontainer, lihat Deploy untuk Azure Container Apps atau Deploy untuk Azure Kubernetes Service sebagai gantinya.

Prasyarat

Membangun file konfigurasi

Buat file konfigurasi DAB untuk menyambungkan ke database Anda yang sudah ada.

  1. Buat direktori kosong di komputer lokal Anda untuk menyimpan file konfigurasi dan artefak penyebaran.

  2. Inisialisasi file konfigurasi dasar baru menggunakan dab init. Gunakan fungsi @env() untuk mereferensikan variabel lingkungan DATABASE_CONNECTION_STRING agar kredensial tidak disimpan di dalam file konfigurasi.

    dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"
    

    Important

    Ganti <database-type> dengan jenis database yang didukung, seperti mssql, , postgresql, mysqlatau cosmosdb_nosql. Beberapa jenis database memerlukan pengaturan konfigurasi tambahan pada inisialisasi.

  3. Tambahkan setidaknya satu entitas database ke konfigurasi. Gunakan perintah dab add untuk mengonfigurasi entitas. Ulangi dab add sebanyak yang Anda butuhkan untuk entitas Anda.

    dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"
    
  4. Buka dan tinjau konten file dab-config.json. Verifikasi bahwa:

    • data-source.connection-string menggunakan @env('DATABASE_CONNECTION_STRING')
    • Entitas dan izin Anda sudah benar

    Important

    Jangan sematkan string koneksi literal atau rahasia di dab-config.json. Gunakan fungsi @env() agar nilai diambil dari variabel lingkungan saat waktu berjalan.

Membuat manifes alat lokal

Gunakan manifes alat .NET lokal sehingga paket penyebaran menyertakan DAB sebagai dependensi proyek. Pendekatan ini menghindari mengandalkan alat yang diinstal secara global di dalam App Service.

  1. Buat manifes alat lokal .NET di direktori proyek Anda.

    dotnet new tool-manifest
    
  2. Instal penyusun API Data sebagai alat lokal.

    dotnet tool install microsoft.dataapibuilder --prerelease
    
  3. Pastikan manifes ada di .config/dotnet-tools.json.

    Note

    Parameter --prerelease menginstal versi prarilis terbaru Data API Builder. Hapus bendera untuk menginstal rilis stabil terbaru sebagai gantinya.

Uji secara lokal

Sebelum menyebarkan ke Azure, pastikan runtime telah dimulai dan titik akhir Anda berjalan dengan baik.

  1. Atur string koneksi sebagai variabel lingkungan lokal.

    $env:DATABASE_CONNECTION_STRING = "<your-connection-string>"
    
  2. Mulai runtime DAB secara lokal.

    dab start
    
  3. Uji titik akhir REST dengan menavigasi ke antarmuka pengguna Swagger atau membuat permintaan ke /api/<entity-name>.

  4. Uji titik akhir GraphQL di /graphql.

  5. Hentikan runtime setelah memverifikasi semua titik akhir.

Membuat sumber daya App Service

Buat sumber daya Azure yang diperlukan untuk menghosting DAB di App Service.

  1. Buat grup sumber daya baru. Anda menggunakan grup sumber daya ini untuk semua sumber daya baru dalam panduan ini.

    az group create \
      --name <resource-group-name> \
      --location <location>
    

    Petunjuk / Saran

    Pertimbangkan untuk memberi nama grup sumber daya msdocs-dab-appservice.

  2. Buat paket App Service.

    az appservice plan create \
      --name <plan-name> \
      --resource-group <resource-group-name> \
      --sku B1 \
      --is-linux
    

    Note

    Panduan ini menggunakan tingkat B1 (Dasar) di Linux.

  3. Buat aplikasi web dengan runtime .NET 8.

    az webapp create \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --plan <plan-name> \
      --runtime "DOTNETCORE:8.0"
    

    Petunjuk / Saran

    Validasi runtime yang tersedia untuk paket Anda dengan az webapp list-runtimes --os linux.

Mengonfigurasi pengaturan Layanan Aplikasi

Konfigurasikan variabel lingkungan dan perintah startup yang diperlukan App Service untuk menjalankan DAB.

  1. Konfigurasikan penyedia autentikasi untuk App Service. Pengaturan ini memberi tahu DAB untuk mempercayai autentikasi bawaan App Service (Easy Auth) untuk informasi identitas.

    dab configure --runtime.host.authentication.provider AppService
    
  2. Tetapkan string koneksi database sebagai pengaturan aplikasi App Service.

    az webapp config appsettings set \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --settings DATABASE_CONNECTION_STRING="<your-connection-string>"
    

    Petunjuk / Saran

    Gunakan string koneksi yang tidak menyertakan rahasia. Sebagai gantinya, gunakan identitas terkelola dan autentikasi Microsoft Entra untuk mengelola akses antara database Anda dan App Service. Untuk informasi selengkapnya, lihat Layanan Azure yang menggunakan identitas terkelola.

  3. Buat skrip startup yang memulihkan manifes alat lokal dan memulai DAB. Buat file bernama startup.sh di direktori proyek Anda.

    #!/bin/sh
    dotnet tool restore
    dotnet tool run dab start
    

    Important

    Pastikan startup.sh menggunakan akhiran baris LF (Unix), bukan CRLF. Windows editor dapat menyimpan dengan CRLF secara default, yang menyebabkan skrip gagal pada host Linux App Service.

  4. Atur perintah startup di App Service.

    az webapp config set \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --startup-file "startup.sh"
    

Terapkan ke App Service

Kemas file proyek Anda dan sebarkan ke App Service menggunakan penyebaran ZIP.

  1. Buat paket penyebaran yang berisi file proyek Anda. Minimal, meliputi:

    • dab-config.json
    • .config/dotnet-tools.json
    • startup.sh
    Compress-Archive -Path dab-config.json, .config, startup.sh -DestinationPath deploy.zip -Force
    

    Important

    ZIP harus berisi file di tingkat akar. Jangan zip folder induk yang berisi file. Akar arsip harus mencakup dab-config.json, .config/, dan startup.sh secara langsung.

  2. Sebarkan paket ZIP ke App Service.

    az webapp deploy \
      --resource-group <resource-group-name> \
      --name <app-name> \
      --src-path deploy.zip \
      --type zip
    

Verifikasi proses penyebaran

Setelah penyebaran, konfirmasikan bahwa DAB berhasil dimulai di App Service.

  1. Buka URL Layanan Aplikasi.

    https://<app-name>.azurewebsites.net
    
  2. Periksa titik akhir kesehatan.

    https://<app-name>.azurewebsites.net/health
    
  3. Uji titik akhir REST dan GraphQL menggunakan jalur entitas yang sama dengan yang Anda uji secara lokal. Aplikasi yang disebarkan menggunakan dab-config.json yang sama, sehingga perilaku endpoint harus sesuai dengan runtime lokal Anda.

  4. Jika ada titik akhir yang mengembalikan kesalahan yang tidak terduga, aktifkan pengelogan aplikasi dan tinjau log.

    az webapp log config \
      --name <app-name> \
      --resource-group <resource-group-name> \
      --application-logging filesystem \
      --level information
    
    az webapp log tail \
      --name <app-name> \
      --resource-group <resource-group-name>
    

Mengonfigurasi autentikasi (opsional)

Lindungi titik akhir App Service Anda dengan Microsoft Entra ID untuk penggunaan produksi.

Untuk langkah-langkah mendetail, lihat Mengonfigurasi autentikasi App Service.

Important

Penyedia AppService autentikasi di dab-config.json mempercayai header yang dimasukkan oleh autentikasi App Service. Pastikan autentikasi App Service diaktifkan saat menggunakan penyedia ini dalam produksi. Untuk informasi selengkapnya, lihat Easy Auth (App Service).

Note

Autentikasi App Service melindungi akses masuk ke endpoint Anda. Izin entitas DAB tetap mengatur operasi yang diizinkan oleh runtime. Jika Anda menginginkan akses berbasis peran, perbarui izin entitas Anda untuk menggunakan peran tertentu alih-alih anonymous:*.

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan aplikasi contoh atau sumber daya, hapus penerapan dan semua sumber daya yang terkait.

az group delete \
  --name <resource-group-name> \
  --yes \
  --no-wait