Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam tutorial ini, Anda mempelajari cara menyebarkan aplikasi ASP.NET Core berbasis data ke Azure App Service dan menyambungkan ke Azure SQL Database. Anda juga akan menyebarkan Azure Cache for Redis untuk mengaktifkan kode penyimpanan cache di aplikasi milik Anda. Azure App Service adalah layanan patch mandiri dan hosting web yang sangat dapat diskalakan, yang dapat dengan mudah menyebarkan aplikasi di Windows atau Linux. Meskipun tutorial ini menggunakan aplikasi ASP.NET Core 8.0, prosesnya sama untuk versi ASP.NET Core lainnya.
Dalam tutorial ini, Anda akan belajar cara untuk:
- Buat arsitektur cache App Service, SQL Database, dan Redis yang aman secara default.
- Amankan rahasia koneksi menggunakan identitas terkelola dan referensi Key Vault.
- Terapkan aplikasi sampel ASP.NET Core ke App Service dari repositori GitHub.
- Akses string koneksi App Service dan pengaturan aplikasi dalam kode aplikasi.
- Buat pembaruan dan lakukan penerapan ulang kode aplikasi.
- Hasilkan skema basis data dengan mengunggah bundel migrasi.
- Stream log diagnostik dari Azure.
- Kelola aplikasi di portal Azure.
- Provision arsitektur yang sama dan implementasikan menggunakan Azure Developer CLI.
- Optimalkan alur kerja pengembangan Anda dengan GitHub Codespaces dan GitHub Copilot.
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda belum memiliki akun Azure, Anda dapat membuatnya secara gratis.
- Akun GitHub. Anda juga bisa mendapatkannya secara gratis.
- Pemahaman tentang pengembangan ASP.NET Core.
- (Opsional) Untuk mencoba GitHub Copilot, Anda memerlukan akun GitHub Copilot. Uji coba gratis selama 30 hari tersedia.
- Akun Azure dengan langganan aktif. Jika Anda belum memiliki akun Azure, Anda dapat membuatnya secara gratis.
- Azure Developer CLI terinstal. Anda dapat mengikuti langkah-langkah dengan Azure Cloud Shell karena sudah terpasang Azure Developer CLI.
- Pemahaman tentang pengembangan ASP.NET Core.
- (Opsional) Untuk mencoba GitHub Copilot, Anda memerlukan akun GitHub Copilot. Uji coba gratis selama 30 hari tersedia.
Lompat ke akhir
Jika Anda hanya ingin melihat aplikasi sampel dalam tutorial ini yang berjalan di Azure, cukup jalankan perintah berikut di Azure Cloud Shell, dan ikuti perintahnya:
dotnet tool install --global dotnet-ef
mkdir msdocs-app-service-sqldb-dotnetcore
cd msdocs-app-service-sqldb-dotnetcore
azd init --template msdocs-app-service-sqldb-dotnetcore
azd up
1. Jalankan contoh
Pertama, Anda harus menyusun aplikasi berbasis data sebagai titik awal. Untuk kenyamanan Anda, repositori sampel mencakup konfigurasi dev container. Kontainer pengembangan memiliki semua yang Anda butuhkan untuk mengembangkan sebuah aplikasi, termasuk basis data, cache, dan semua variabel lingkungan yang dibutuhkan oleh aplikasi contoh. Kontainer pengembangan dapat berjalan di GitHub codespace, yang berarti Anda dapat menjalankan contoh tersebut di komputer mana saja dengan peramban web.
Langkah 1: Di jendela peramban baru:
- Masuk ke akun GitHub Anda.
- Arahkan ke https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore/fork.
- Hapus centang Salin cabang utama saja. Anda menginginkan semua cabang.
- Pilih Buat fork.
Langkah 2: Dalam fork GitHub:
- Pilih main>starter-no-infra untuk cabang starter. Cabang ini hanya berisi proyek contoh dan tidak ada file atau konfigurasi terkait Azure.
- Pilih Code>Codespaces>Buat codespace pada starter-no-infra. Penyiapan ruang kode membutuhkan beberapa menit.
Langkah 3: Di terminal codespace:
- Jalankan migrasi basis data dengan
dotnet ef database update
. - Jalankan aplikasi dengan
dotnet run
. - Ketika Anda melihat pemberitahuan
Your application running on port 5093 is available.
, pilih Buka di Peramban. Anda seharusnya melihat aplikasi sampel di tab browser baru. Untuk menghentikan aplikasi, ketikCtrl
+C
.
Petunjuk
Anda dapat bertanya kepada GitHub Copilot tentang repositori ini. Contohnya:
- @workspace Apa yang dilakukan proyek ini?
- @workspace Apa yang dilakukan folder .devcontainer?
Ada masalah? Periksa bagian Pemecahan Masalah.
2. Buat Layanan Aplikasi, basis data, dan cache
Pada langkah ini, Anda membuat sumber daya Azure. Langkah-langkah yang digunakan dalam tutorial ini menciptakan satu set sumber daya yang aman secara default yang mencakup App Service, Azure SQL Database, dan Azure Cache. Untuk proses pembuatan, Anda akan menentukan:
- Nama untuk aplikasi web. Ini digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
- Wilayah tempat aplikasi dijalankan secara fisik di dunia. Ini juga digunakan sebagai bagian dari nama DNS untuk aplikasi Anda.
- Tumpukan Waktu Proses untuk aplikasi. Di sinilah Anda memilih versi .NET yang akan digunakan untuk aplikasi Anda.
- Rencana hosting untuk aplikasi. Ini adalah tingkatan harga yang mencakup serangkaian fitur dan kapasitas penskalaan untuk aplikasi Anda.
- Kelompok Sumber Daya untuk aplikasi. Sebuah grup sumber daya memungkinkan Anda mengelompokkan semua sumber daya Azure yang dibutuhkan untuk aplikasi dalam satu wadah logis.
Masuk ke portal Azure dan ikuti langkah-langkah ini untuk membuat sumber daya Layanan Aplikasi Azure Anda.
Langkah 1: Di portal Azure
- Masukkan "web app database" di bilah pencarian di bagian atas portal Azure.
- Pilih item yang diberi label Web App + Database di bawah judul Marketplace. Anda juga dapat menavigasi ke pandu pakar pembuatan secara langsung.
Langkah 2: Di halaman Buat Aplikasi Web + Basis Data, isi formulir sebagai berikut.
- Grup Sumber Daya: Pilih Buat baru dan gunakan nama msdocs-core-sql-tutorial.
- Wilayah: Wilayah Azure di dekat Anda.
- Nama: msdocs-core-sql-XYZ di mana XYZ adalah tiga karakter acak. Nama ini harus unik di seluruh Azure.
- Stack runtime: .NET 8 (LTS).
- Mesin: SQLAzure. Azure SQL Database adalah mesin basis data yang sepenuhnya dikelola sebagai platform layanan (PaaS) yang selalu berjalan pada versi stabil terbaru dari SQL Server.
- Tambahkan Azure Cache for Redis?: Ya.
- Paket Hosting: Standar. Setelah siap, Anda dapat meningkatkan skala ke tingkat harga produksi.
- Pilih Tinjau + kreasikan.
- Setelah validasi selesai, pilih Create.
Step 3: Proses penerapan memerlukan beberapa menit untuk selesai. Setelah penerapan selesai, pilih tombol Go to resource. Anda diarahkan langsung ke aplikasi Layanan Aplikasi, tetapi sumber daya berikut dibuat:
- Resource group: Wadah untuk semua sumber daya yang dibuat.
- App Service plan: Menentukan sumber daya komputasi untuk App Service. Paket Linux pada level Basic telah dibuat.
- App Service: Mewakili aplikasi Anda dan berjalan dalam rencana App Service.
- Virtual network: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
- Private endpoints: Akses ujung untuk key vault, server database, dan cache Redis dalam jaringan virtual.
- Antarmuka jaringan: Mewakili alamat IP pribadi, satu untuk masing-masing titik akhir pribadi.
- Azure SQL Database server: Hanya dapat diakses dari belakang titik akhir pribatnya.
- Azure SQL Database: Sebuah basis data dan pengguna dibuat untuk Anda di server.
- Azure Cache for Redis: Hanya dapat diakses dari belakang titik akhir pribadinya.
- Key vault: Hanya dapat diakses dari balik endpoint pribadinya. Digunakan untuk mengelola rahasia bagi aplikasi App Service.
- Zona DNS Pribadi: Memungkinkan resolusi DNS untuk kunci pengaman, server basis data, dan cache Redis dalam jaringan virtual.
3. Rahasia koneksi yang aman
Penyihir pembuatan telah membuat variabel konektivitas untuk Anda sebagai string koneksi .NET dan pengaturan aplikasi. Namun, praktik terbaik keamanan adalah memastikan rahasia tidak tersimpan di App Service sama sekali. Anda akan memindahkan rahasia Anda ke penyimpanan kunci dan mengubah pengaturan aplikasi Anda ke referensi Key Vault dengan bantuan Service Connectors.
Petunjuk
Untuk menggunakan otentikasi tanpa kata sandi, lihat Cara mengubah koneksi Basis Data SQL agar menggunakan identitas terkelola?
Langkah 1: Ambil string koneksi yang ada
- Di menu sebelah kiri halaman App Service, pilih Pengaturan > Variabel lingkungan > String koneksi.
- Pilih AZURE_SQL_CONNECTIONSTRING.
- Dalam Tambah/Edit string koneksi, di bidang Nilai, temukan bagian Password= di akhir string.
- Salin string kata sandi setelah Password= untuk digunakan nanti. String koneksi ini memungkinkan Anda untuk terhubung ke database SQL yang diamankan di belakang endpoint pribadi. Namun, rahasia disimpan langsung di aplikasi App Service, yang bukan yang terbaik. Demikian pula, string koneksi cache Redis di tab Pengaturan Aplikasi mengandung sebuah rahasia. Anda akan mengubah ini.
Langkah 2: Buat brankas kunci untuk manajemen rahasia yang aman
- Pada bilah pencarian atas, ketik "key vault", lalu pilih Marketplace>Key Vault.
- Di Grup Sumber Daya, pilih msdocs-core-sql-tutorial.
- Di Nama key vault, ketiklah nama yang hanya terdiri dari huruf dan angka.
- Di Wilayah, atur ke lokasi yang sama dengan grup sumber daya.
Langkah 3: Amankan brankas kunci dengan Endpoint Pribadi
- Pilih tab Jaringan.
- Batalkan pilihan Aktifkan akses publik.
- Pilih Buat titik akhir privat.
- Di Grup sumber daya, pilih msdocs-core-sql-tutorial.
- Dalam dialog, di Lokasi, pilih lokasi yang sama dengan aplikasi App Service Anda.
- Di Nama, ketik msdocs-core-sql-XYZVvaultEndpoint.
- Di Lokasi, pilih lokasi yang sama dengan aplikasi App Service Anda.
- Di Jaringan virtual, pilih msdocs-core-sql-XYZVnet.
- Di Subnet, msdocs-core-sql-XYZSubnet.
- Pilih OK.
- Pilih Tinjau + buat, lalu pilih Buat. Tunggu hingga penyebaran key vault selesai. Anda harus melihat "Penyebaran Anda telah selesai."
Langkah 4:
- Di bilah pencarian atas, ketik msdocs-core-sql, kemudian pilih sumber daya App Service yang disebut msdocs-core-sql-XYZ.
- Pada halaman App Service, di menu sebelah kiri, pilih Pengaturan > Service Connector. Sudah ada dua konektor yang dibuat oleh wizard pembuatan aplikasi untuk Anda.
- Pilih kotak centang di sebelah konektor SQL Database, lalu pilih Edit.
- Pilih tab Autentikasi .
- Pada Password, tempelkan kata sandi yang telah Anda salin sebelumnya.
- Pilih Simpan Rahasia di Key Vault.
- Di bawah Key Vault Connection, pilih Create new. Dialog Create connection dibuka di atas dialog edit.
Langkah 5: Buat koneksi Key Vault
- Dalam dialog Buat koneksi untuk koneksi Key Vault, di Key Vault, pilih brankas kunci yang Anda buat sebelumnya.
- Pilih Tinjau + Buat.
- Setelah validasi selesai, pilih Create.
Langkah 6: Menyelesaikan pengaturan konektor Basis Data SQL
- Anda kembali ke dialog edit untuk defaultConnector. Pada tab Autentikasi, tunggu konektor Key Vault dibuat. Setelah selesai, dropdown Key Vault Connection akan otomatis memilihnya.
- Pilih Next: Networking.
- Pilih Simpan. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.
Langkah 7: Mengonfigurasi konektor Redis untuk menggunakan rahasia Key Vault
- Di halaman Konektor Layanan, pilih kotak centang di samping konektor Cache for Redis, lalu pilih Edit.
- Pilih tab Autentikasi .
- Pilih Simpan Rahasia di Key Vault.
- Di bawah Key Vault Connection, pilih key vault yang Anda buat.
- Pilih Next: Networking.
- Pilih Konfigurasikan aturan firewall untuk mengaktifkan akses ke layanan target. Wizard pembuatan aplikasi telah mengamankan basis data SQL dengan titik akhir pribadi.
- Pilih Simpan. Tunggu hingga pemberitahuan Pembaruan berhasil muncul.
Langkah 8: Verifikasi integrasi Key Vault
- Dari menu sebelah kiri, pilih Pengaturan > Variabel lingkungan > String koneksi lagi.
- Di sebelah AZURE_SQL_CONNECTIONSTRING, pilih Tampilkan nilai. Nilainya harus
@Microsoft.KeyVault(...)
, yang berarti bahwa itu adalah referensi penyimpanan kunci karena rahasianya sekarang dikelola di penyimpanan kunci. - Untuk memverifikasi string koneksi Redis, pilih tab Pengaturan Aplikasi. Di sebelah AZURE_REDIS_CONNECTIONSTRING, pilih Tampilkan nilai. Nilainya harus
@Microsoft.KeyVault(...)
juga.
Untuk meringkas, proses mengamankan rahasia koneksi Anda melibatkan:
- Mengambil informasi rahasia koneksi dari variabel pada lingkungan aplikasi App Service.
- Membuat penyimpanan kunci.
- Membuat koneksi Key Vault dengan identitas terkelola yang ditetapkan sistem.
- Memperbarui konektor layanan untuk menyimpan rahasia di tempat penyimpanan kunci.
4. Menerapkan kode contoh
Dalam langkah ini, Anda mengonfigurasi penyebaran GitHub menggunakan GitHub Actions. Ini hanya salah satu dari banyak cara untuk menerapkan ke App Service, tetapi juga cara yang bagus untuk memiliki integrasi berkelanjutan dalam proses penerapan Anda. Secara default, setiap git push
ke repositori GitHub Anda memulai tindakan membangun dan menyebarkan.
Langkah 1: Di menu sebelah kiri, pilihPusat Penyebaran>.
Langkah 2: Di halaman Pusat Penerapan:
- Di Sumber, pilih GitHub. Secara default, GitHub Actions dipilih sebagai penyedia build.
- Masuk ke akun GitHub Anda dan ikuti perintah untuk mengotorisasi Azure.
- Di Organisasi, pilih akun Anda.
- Di Repositori, pilih msdocs-app-service-sqldb-dotnetcore.
- Di Branch, pilih starter-no-infra. Versi ini adalah cabang yang sama tempat Anda bekerja dengan aplikasi sampel Anda, tanpa berkas atau konfigurasi yang terkait dengan Azure.
- Untuk Jenis autentikasi, pilih Identitas yang ditetapkan pengguna.
- Di menu atas, pilih Simpan.
Layanan Aplikasi mengkomitkan file alur kerja ke repositori GitHub yang dipilih, di direktori
.github/workflows
. Secara default, pusat penerapan membuat identitas yang ditetapkan pengguna untuk alur kerja agar dapat mengautentikasi menggunakan Microsoft Entra (autentikasi OIDC). Untuk opsi autentikasi alternatif, lihat Menerapkan ke App Service menggunakan GitHub Actions.
Langkah 3: Kembali ke ruang kode GitHub dari fork contoh Anda, jalankan git pull origin starter-no-infra
.
Ini menarik file alur kerja yang baru saja dikomit ke dalam ruang kode Anda.
Tangkapan layar yang menunjukkan git pull di dalam codespace GitHub.
Langkah 4 (Opsi 1: dengan GitHub Copilot):
- Mulai sesi obrolan baru dengan memilih tampilan Chat, lalu memilih +.
- Ajukan, "@workspace Bagaimana aplikasi terhubung ke database dan cache?" Copilot mungkin akan memberi Anda beberapa penjelasan tentang kelas
MyDatabaseContext
dan bagaimana kelas tersebut dikonfigurasi dalam Program.cs. - Tanyakan, "Dalam mode produksi, saya ingin aplikasi menggunakan string koneksi yang disebut AZURE_SQL_CONNECTIONSTRING untuk database dan pengaturan aplikasi yang disebut AZURE_REDIS_CONNECTIONSTRING*." Copilot mungkin memberikan saran kode yang mirip dengan yang ada pada Opsi 2: tanpa GitHub Copilot langkah di bawah ini dan bahkan memberi tahu Anda untuk melakukan perubahan pada file Program.cs.
- Buka Program.cs di penjelajah dan tambahkan saran kode. GitHub Copilot tidak memberikan respons yang sama setiap saat, dan tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?.
Langkah 4 (Opsi 2: tanpa GitHub Copilot):
- Buka Program.cs di penjelajah.
- Temukan kode yang dikomentari (baris 12-21) dan batalkan komentar.
Kode ini terhubung ke basis data dengan menggunakan
AZURE_SQL_CONNECTIONSTRING
dan terhubung ke cache Redis dengan menggunakan pengaturan aplikasiAZURE_REDIS_CONNECTIONSTRING
.
Langkah 5 (Pilihan 1: dengan GitHub Copilot):
- Buka .github/workflows/starter-no-infra_msdocs-core-sql-XYZ di penjelajah. File ini dibuat oleh wizard pembuatan App Service.
- Sorot langkah
dotnet publish
dan pilih.
- Ask Copilot, "Instal dotnet ef, lalu buat kumpulan migrasi di folder keluaran yang sama."
- Jika saran dapat diterima, pilih Accept. GitHub Copilot tidak memberikan respons yang sama setiap saat, dan tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?.
Langkah 5 (Opsi 2: tanpa GitHub Copilot):
- Buka .github/workflows/starter-no-infra_msdocs-core-sql-XYZ di penjelajah. File ini dibuat oleh wizard pembuatan App Service.
- Di langkah
dotnet publish
, tambahkan langkah untuk menginstal alat Entity Framework Core dengan perintahdotnet tool install -g dotnet-ef --version 8.*
. - Di bawah langkah baru, tambahkan langkah lain untuk menghasilkan bundel migrasi database dalam paket penyebaran:
dotnet ef migrations bundle --runtime linux-x64 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle
. Bundel migrasi adalah executable mandiri yang dapat Anda jalankan di lingkungan produksi tanpa memerlukan .NET SDK. Layanan Aplikasi kontainer linux hanya memiliki runtime .NET dan tidak memiliki SDK .NET.
Langkah 6:
- Pilih ekstensi Source Control.
- Dalam kotak teks, ketik pesan komit seperti
Configure Azure database and cache connections
. Atau, pilihdan biarkan GitHub Copilot menghasilkan pesan commit untuk Anda.
- Pilih Terapkan, lalu konfirmasi dengan Ya.
- Pilih Sinkronkan perubahan 1, lalu konfirmasi dengan OK.
Langkah 7: Kembali ke halaman Deployment Center di portal Azure:
- Pilih tab Logs, kemudian pilih Refresh untuk melihat jalannya deployment baru.
- Di item log untuk eksekusi penyebaran, pilih entri Bangun/Sebarkan Log dengan tanda waktu terbaru.
Langkah 8: Anda dibawa ke repository GitHub Anda dan melihat bahwa aksi GitHub sedang berjalan. File alur kerja menentukan dua tahap terpisah, mem-build dan menyebarkan. : Tunggu hingga menjalankan GitHub menunjukkan status sebagai Berhasil. Dibutuhkan sekitar 5 menit.
Ada masalah? Periksa bagian Pemecahan Masalah.
5. Hasilkan skema database
Dengan Database SQL yang dilindungi oleh jaringan virtual, cara termudah untuk menjalankan migrasi database dotnet adalah melalui sesi SSH dengan kontainer Linux di App Service.
Langkah 1: Kembali ke halaman App Service, di menu sebelah kiri,
- Pilih Alat Pengembangan>SSH.
- Pilih Buka. (Start up membutuhkan waktu beberapa menit.)
Langkah 2: Di sesi SSH:
- Jalankan
cd /home/site/wwwroot
. Berikut adalah semua file yang telah Anda sebarkan. - Jalankan bundel migrasi yang dihasilkan oleh alur kerja GitHub dengan perintah
./migrationsbundle -- --environment Production
. Jika berhasil, App Service berhasil terhubung ke SQL Database. Ingatlah bahwa--environment Production
sesuai dengan perubahan kode yang Anda buat di Program.cs.
Dalam sesi SSH, hanya perubahan pada file di /home
yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar /home
tidak akan disimpan.
Ada masalah? Periksa bagian Pemecahan Masalah.
6. Buka aplikasi
Langkah 1: Di halaman App Service:
- Dari menu sebelah kiri, pilih Overview.
- Pilih URL aplikasi Anda.
Langkah 2: Tambahkan beberapa tugas ke daftar. Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas aman ke Azure SQL Database.
Petunjuk
Aplikasi contoh menerapkan pola cache-aside. Saat Anda mengunjungi tampilan data untuk kedua kalinya, atau memuat ulang halaman yang sama setelah melakukan perubahan data, waktu pemrosesan di halaman web menunjukkan waktu yang jauh lebih cepat karena datanya dimuat dari cache, bukan dari basis data.
7. Menyiarkan log diagnostik
Azure App Service mengambil semua log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Aplikasi contoh ini menyertakan kode pencatatan di setiap titik akhirnya untuk menunjukkan kemampuan ini.
Langkah 1: Di halaman App Service:
- Dari menu sebelah kiri, pilih Pemantauan>log Layanan Aplikasi.
- Di Pengelogan aplikasi, pilih Sistem File.
- Di menu atas, pilih Simpan.
Langkah 2: Dari menu sebelah kiri, pilih Aliran log. Anda melihat log untuk aplikasi Anda, termasuk log platform dan log dari dalam kontainer.
8. Bersihkan sumber daya
Setelah Anda selesai, Anda dapat menghapus semua sumber daya dari langganan Azure Anda dengan menghapus grup sumber daya.
Langkah 1: Di bilah pencarian di bagian atas portal Azure:
- Masukkan nama grup sumber daya.
- Pilih grup sumber daya.
Langkah 2: Di halaman grup sumber daya, pilih Hapus grup sumber daya.
Langkah 3:
- Masukkan nama grup sumber daya untuk mengonfirmasi penghapusan Anda.
- Pilih Hapus.
2. Buat sumber daya Azure dan terapkan aplikasi contoh
Dalam langkah ini, Anda membuat sumber daya Azure dan menerapkan aplikasi contoh ke App Service di Linux. Langkah-langkah yang digunakan dalam tutorial ini menciptakan serangkaian sumber daya yang secara default aman, termasuk App Service, Azure SQL Database, dan Azure Cache untuk Redis.
Kontainer pengembangan sudah memiliki Azure Developer CLI (AZD).
Dari akar repository, jalankan
azd init
.azd init --template dotnet-app-service-sqldb-infra
Saat diminta, berikan jawaban berikut:
Pertanyaan Jawaban Direktori saat ini tidak kosong. Apakah Anda ingin memulai sebuah proyek di sini di '<your-directory>'? Y Apa yang ingin Anda lakukan dengan file-file ini? Biarkan file saya yang ada tetap tidak berubah Masukkan nama lingkungan baru Ketik nama unik. Templat AZD menggunakan nama ini sebagai bagian dari nama DNS aplikasi web Anda di Azure ( <app-name>-<hash>.azurewebsites.net
). Karakter alfanumerik dan tanda hubung diperbolehkan.Masuk ke Azure dengan menjalankan perintah
azd auth login
dan mengikuti petunjuknya.azd auth login
Buat sumber daya Azure yang diperlukan dan sebarkan kode aplikasi dengan
azd up
perintah . Ikuti perintah untuk memilih langganan dan lokasi yang diinginkan untuk sumber daya Azure.azd up
Perintah
azd up
membutuhkan waktu sekitar 15 menit untuk diselesaikan (cache Redis membutuhkan waktu paling lama). Ia juga menyusun dan menerapkan kode aplikasi Anda, tetapi Anda akan memodifikasi kode Anda nanti agar dapat bekerja dengan App Service. Saat dijalankan, perintah tersebut memberikan pesan tentang proses penyediaan dan penerapan, termasuk tautan ke penerapan di Azure. Ketika selesai, perintah tersebut juga menampilkan tautan ke aplikasi penyebaran.Templat AZD ini berisi file (azure.yaml dan direktori infra ) yang menghasilkan arsitektur aman secara default dengan sumber daya Azure berikut:
- Resource group: Wadah untuk semua sumber daya yang dibuat.
- App Service plan: Menentukan sumber daya komputasi untuk App Service. Paket Linux pada level Basic telah dibuat.
- App Service: Mewakili aplikasi Anda dan berjalan dalam rencana App Service.
- Virtual network: Terintegrasi dengan aplikasi App Service dan mengisolasi lalu lintas jaringan back-end.
- Private endpoints: Akses ujung untuk key vault, server database, dan cache Redis dalam jaringan virtual.
- Antarmuka jaringan: Mewakili alamat IP pribadi, satu untuk masing-masing titik akhir pribadi.
- Azure SQL Database server: Hanya dapat diakses dari belakang titik akhir pribatnya.
- Azure SQL Database: Sebuah basis data dan pengguna dibuat untuk Anda di server.
- Azure Cache for Redis: Hanya dapat diakses dari belakang titik akhir pribadinya.
- Key vault: Hanya dapat diakses dari balik endpoint pribadinya. Digunakan untuk mengelola rahasia bagi aplikasi App Service.
- Zona DNS Pribadi: Memungkinkan resolusi DNS untuk kunci pengaman, server basis data, dan cache Redis dalam jaringan virtual.
Setelah perintah selesai membuat sumber daya dan melakukan penyebaran kode aplikasi untuk pertama kalinya, aplikasi contoh yang disebarkan belum berfungsi karena Anda harus melakukan beberapa perubahan kecil agar dapat terhubung ke basis data di Azure.
Ada masalah? Periksa bagian Pemecahan Masalah.
3. Periksa string koneksi
Petunjuk
String koneksi database SQL bawaan menggunakan autentikasi SQL. Untuk autentikasi yang lebih aman tanpa kata sandi, lihat Bagaimana cara mengubah koneksi SQL Database untuk menggunakan identitas terkelola?
Template AZD yang Anda gunakan telah menghasilkan variabel konektivitas untuk Anda sebagai pengaturan aplikasi dan outputnya ke terminal untuk kenyamanan Anda. Pengaturan aplikasi adalah salah satu cara untuk menjaga rahasia koneksi tetap aman dari repositori kode Anda.
Dalam output AZD, temukan pengaturan
AZURE_SQL_CONNECTIONSTRING
danAZURE_REDIS_CONNECTIONSTRING
. Hanya nama pengaturan yang ditampilkan. Mereka terlihat seperti ini dalam keluaran AZD:App Service app has the following connection strings: - AZURE_SQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_SQL_CONNECTIONSTRING
berisi string koneksi ke SQL Database di Azure, danAZURE_REDIS_CONNECTIONSTRING
berisi string koneksi ke Azure Redis cache. Anda perlu menggunakannya dalam kode Anda nanti.Untuk kenyamanan Anda, template AZD menunjukkan tautan langsung ke halaman pengaturan aplikasi. Temukan tautan dan buka di tab browser baru.
Ada masalah? Periksa bagian Pemecahan Masalah.
4. Modifikasi kode contoh dan lakukan penerapan ulang
Di dalam GitHub codespace, mulai sesi obrolan baru dengan memilih tampilan Chat, lalu memilih +.
Ajukan, "@workspace Bagaimana aplikasi terhubung ke database dan cache?" Copilot mungkin akan memberi Anda beberapa penjelasan tentang kelas
MyDatabaseContext
dan bagaimana kelas tersebut dikonfigurasi dalam Program.cs.Tanyakan, "Dalam mode produksi, saya ingin aplikasi menggunakan string koneksi yang disebut AZURE_SQL_CONNECTIONSTRING untuk database dan pengaturan aplikasi yang disebut AZURE_REDIS_CONNECTIONSTRING*." Copilot mungkin memberikan saran kode yang mirip dengan yang ada pada Opsi 2: tanpa GitHub Copilot langkah di bawah ini dan bahkan memberi tahu Anda untuk melakukan perubahan pada file Program.cs.
Buka Program.cs di penjelajah dan tambahkan saran kode.
GitHub Copilot tidak memberikan respons yang sama setiap saat, dan tidak selalu benar. Anda mungkin perlu mengajukan lebih banyak pertanyaan untuk menyempurnakan responsnya. Untuk tips, lihat Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?.
Sebelum Anda menerapkan perubahan ini, Anda masih perlu menghasilkan paket migrasi.
Ada masalah? Periksa bagian Pemecahan Masalah.
5. Hasilkan skema database
Dengan Database SQL yang dilindungi oleh jaringan virtual, cara termudah untuk menjalankan migrasi database adalah melalui sesi SSH dengan kontainer Layanan Aplikasi. Namun, wadah App Service Linux tidak memiliki .NET SDK, sehingga cara termudah untuk menjalankan migrasi basis data adalah dengan mengunggah bundel migrasi yang berdiri sendiri.
Hasilkan bundle migrasi untuk proyek Anda dengan perintah berikut:
dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
Petunjuk
Aplikasi sampel (lihat DotNetCoreSqlDb.csproj) dikonfigurasi untuk menyertakan file migrationsbundle ini. Selama tahap
azd package
ini, migrationsbundle akan ditambahkan ke paket penyebaran.Sebarkan semua perubahan dengan
azd up
.azd up
Dalam output AZD, temukan URL untuk sesi SSH dan navigasikan ke dalamnya di browser. Ini terlihat seperti ini dalam output:
Open SSH session to App Service container at: <URL>
Dalam sesi SSH, jalankan perintah berikut:
cd /home/site/wwwroot ./migrationsbundle -- --environment Production
Jika berhasil, App Service berhasil terhubung ke basis data. Ingatlah bahwa
--environment Production
sesuai dengan perubahan kode yang Anda buat di Program.cs.Nota
Hanya perubahan pada file di
/home
yang dapat bertahan di luar mulai ulang aplikasi. Perubahan di luar/home
tidak akan disimpan.
Ada masalah? Periksa bagian Pemecahan Masalah.
6. Buka aplikasi
Dalam keluaran AZD, temukan URL aplikasi Anda dan buka di browser. URL tampak seperti ini dalam keluaran AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Tambahkan beberapa tugas ke dalam daftar.
Selamat, Anda menjalankan aplikasi web di Azure App Service, dengan konektivitas aman ke Azure SQL Database.
Ada masalah? Periksa bagian Pemecahan Masalah.
7. Menyiarkan log diagnostik
Layanan Aplikasi Azure dapat menangkap log konsol untuk membantu Anda mendiagnosis masalah dengan aplikasi Anda. Untuk kenyamanan, templat AZD sudah mengaktifkan pengelogan ke sistem file lokal dan mengirimkan log ke ruang kerja Analitik Log.
Aplikasi sampel mencakup pernyataan pengelogan standar untuk menunjukkan kemampuan ini, seperti yang ditunjukkan dalam cuplikan berikut:
public async Task<IActionResult> Index()
{
var todoItems = await _cache.GetAsync(_TodoItemsCacheKey);
if (todoItems != null)
{
_logger.LogInformation("Data from cache.");
var todoList = JsonConvert.DeserializeObject<List<Todo>>(Encoding.UTF8.GetString(todoItems));
return View(todoList);
}
else
{
_logger.LogInformation("Data from database.");
var todoList = await _context.Todo.ToListAsync();
var serializedTodoList = JsonConvert.SerializeObject(todoList);
await _cache.SetAsync(_TodoItemsCacheKey, Encoding.UTF8.GetBytes(serializedTodoList));
return View(todoList);
}
}
Dalam output AZD, temukan tautan untuk men-stream log Layanan Aplikasi dan navigasikan ke sana di peramban. Tautan terlihat seperti ini dalam keluaran AZD:
Stream App Service logs at: <URL>
Pelajari lebih lanjut tentang pencatatan dalam aplikasi .NET dalam seri Enable Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.
Ada masalah? Periksa bagian Pemecahan Masalah.
8. Bersihkan sumber daya
Untuk menghapus semua sumber daya Azure di lingkungan penerapan saat ini, jalankan azd down
dan ikuti petunjuknya.
azd down
Pemecahan Masalah
- Tampilan penempatan portal untuk Azure SQL Database menunjukkan status Konflik
- Di portal Azure, UI aliran log untuk aplikasi web menunjukkan kesalahan jaringan
-
Sesi SSH di browser menunjukkan
SSH CONN CLOSED
-
Halaman aliran log portal menunjukkan
Connected!
tetapi tidak ada log
Tampilan penyebaran portal untuk Azure SQL Database menunjukkan status Konflik
Bergantung pada langganan Anda dan wilayah yang Anda pilih, Anda mungkin melihat status penyebaran untuk Azure SQL Database sebagai Conflict
, dengan pesan berikut dalam detail Operasi:
Location '<region>' is not accepting creation of new Windows Azure SQL Database servers at this time.
Kesalahan ini kemungkinan besar disebabkan oleh batasan pada langganan Anda untuk wilayah yang Anda pilih. Coba pilih wilayah yang berbeda untuk penyebaran Anda.
Di portal Azure, antarmuka log stream untuk aplikasi web menunjukkan kesalahan jaringan.
Anda mungkin melihat kesalahan ini:
Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.
Ini biasanya merupakan kesalahan sementara saat aplikasi pertama kali dimulai. Tunggu beberapa menit dan periksa lagi.
Sesi SSH di browser menunjukkan SSH CONN CLOSED
Diperlukan beberapa menit agar kontainer Linux dapat memulai. Tunggu beberapa menit dan periksa lagi.
Halaman aliran log portal menunjukkan Connected!
tetapi tidak ada log
Setelah Anda mengkonfigurasi log diagnostik, aplikasi akan di-restart. Anda mungkin perlu menyegarkan halaman agar perubahan dapat diterapkan di peramban.
Pertanyaan yang Sering Diajukan
- Berapa biaya untuk penyiapan ini?
- Bagaimana cara menyambungkan ke server Azure SQL Database yang diamankan di belakang jaringan virtual dengan alat lain?
- Bagaimana cara kerja pengembangan aplikasi lokal dengan GitHub Actions?
- Bagaimana cara men-debug kesalahan selama penyebaran GitHub Actions?
- Bagaimana cara mengubah koneksi Database SQL untuk menggunakan identitas terkelola sebagai gantinya?
- Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
- Apa yang bisa saya lakukan dengan GitHub Copilot di ruang kode saya?
Berapa biaya setup ini?
Harga untuk sumber daya yang dibuat adalah sebagai berikut:
- Paket Layanan Aplikasi dibuat pada tingkat Basic dan dapat dinaikkan atau diturunkan sesuai kebutuhan. Lihat harga App Service.
- Azure SQL Database dibuat dalam tingkat tujuan umum tanpa server pada perangkat keras seri Standar dengan inti minimum. Ada biaya kecil dan dapat didistribusikan ke wilayah lain. Anda dapat meminimalkan biaya lebih jauh dengan mengurangi ukuran maksimal, atau Anda dapat meningkatkannya dengan menyesuaikan tingkat layanan, tingkat komputasi, konfigurasi perangkat keras, jumlah inti, ukuran basis data, dan redundansi zona. Lihat harga Azure SQL Database.
- Azure Cache untuk Redis dibuat di tingkat Basic dengan ukuran cache minimum. Ada biaya kecil yang terkait dengan tingkat ini. Anda dapat meningkatkan ke level kinerja yang lebih tinggi untuk ketersediaan yang lebih baik, pengelompokan, dan fitur lainnya. Lihat harga Azure Cache untuk Redis.
- Jaringan virtual tidak dikenakan biaya kecuali Anda mengonfigurasi fungsionalitas tambahan, seperti peering. Lihat Harga Azure Virtual Network.
- Zona DNS privat dikenakan biaya kecil. Lihat Harga Azure DNS.
Bagaimana cara saya menghubungkan ke server Azure SQL Database yang diamankan di balik jaringan virtual dengan alat lainnya?
- Untuk akses dasar dari alat baris perintah, Anda dapat menjalankan
sqlcmd
dari terminal SSH aplikasi. Kontainer aplikasi tidak dilengkapi dengansqlcmd
, jadi Anda harus menginstalnya secara manual. Ingatlah bahwa klien yang terpasang tidak bertahan setelah aplikasi dimulai ulang. - Untuk terhubung dari client SQL Server Management Studio atau dari Visual Studio, komputer Anda harus berada dalam jaringan virtual. Sebagai contoh, bisa jadi sebuah VM Azure yang terhubung ke salah satu subnet, atau sebuah mesin dalam jaringan lokal yang memiliki koneksi VPN situs-ke-situs dengan jaringan virtual Azure.
Bagaimana pengembangan aplikasi lokal bekerja dengan GitHub Actions?
Ambil file alur kerja otomatis dari App Service sebagai contoh, setiap git push
memulai proses build dan penerapan baru. Dari klon lokal repositori GitHub, Anda membuat pembaruan yang diinginkan dan mendorongnya ke GitHub. Contohnya:
git add .
git commit -m "<some-message>"
git push origin main
Bagaimana cara saya men-debug kesalahan selama penerapan GitHub Actions?
Jika sebuah langkah gagal dalam file alur kerja GitHub yang dihasilkan secara otomatis, coba modifikasi perintah yang gagal untuk menghasilkan keluaran yang lebih rinci. Misalnya, Anda dapat memperoleh lebih banyak keluaran dari perintah dotnet
dengan menambahkan opsi -v
. Komit dan unggah perubahan Anda untuk memulai penyebaran lain ke App Service.
Saya tidak memiliki izin untuk membuat identitas yang ditetapkan pengguna
Lihat menyiapkan penerapan GitHub Actions dari Deployment Center.
Bagaimana cara mengubah sambungan SQL Database agar menggunakan identitas terkelola sebagai gantinya?
String koneksi default ke database SQL dikelola oleh Service Connector dengan nama defaultConnector, dan menggunakan otentikasi SQL. Untuk menggantinya dengan koneksi yang menggunakan identitas terkelola, jalankan perintah berikut di cloud shell setelah mengganti placeholder:
az extension add --name serviceconnector-passwordless --upgrade
az sql server update --enable-public-network true
az webapp connection delete sql --connection defaultConnector --resource-group <group-name> --name <app-name>
az webapp connection create sql --connection defaultConnector --resource-group <group-name> --name <app-name> --target-resource-group <group-name> --server <database-server-name> --database <database-name> --client-type dotnet --system-identity --config-connstr true
az sql server update --enable-public-network false
Secara default, perintah az webapp connection create sql --client-type dotnet --system-identity --config-connstr
melakukan hal berikut:
- Mengatur pengguna Anda sebagai administrator Microsoft Entra ID untuk server basis data SQL.
- Buat identitas terkelola yang ditetapkan oleh sistem dan beri akses ke database.
- Menghasilkan string koneksi tanpa kata sandi yang disebut
AZURE_SQL_CONNECTIONGSTRING
, yang sudah digunakan aplikasi Anda di akhir tutorial.
Aplikasi Anda sekarang seharusnya memiliki konektivitas ke database SQL. Untuk informasi selengkapnya, lihat Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.
Petunjuk
Tidak ingin mengaktifkan koneksi jaringan publik? Anda dapat melompati az sql server update --enable-public-network true
dengan menjalankan perintah dari shell cloud Azure yang terintegrasi dengan jaringan virtual Anda jika Anda memiliki penetapan peran Pemilik pada langganan Anda.
Untuk memberikan identitas akses yang diperlukan ke basis data yang diamankan oleh jaringan virtual, az webapp connection create sql
memerlukan konektivitas langsung dengan autentikasi Entra ID ke server basis data. Secara default, Azure cloud shell tidak memiliki akses ke database yang diamankan oleh jaringan.
Apa yang dapat saya lakukan dengan GitHub Copilot di ruang kode saya?
Anda mungkin memperhatikan bahwa tampilan obrolan GitHub Copilot sudah tersedia untuk Anda saat Anda membuat codespace. Untuk kenyamanan Anda, kami menyertakan ekstensi obrolan GitHub Copilot dalam definisi kontainer (lihat .devcontainer/devcontainer.json). Namun, Anda perlu akun GitHub Copilot (tersedia uji coba gratis selama 30 hari).
Beberapa tips untuk Anda saat berbicara dengan GitHub Copilot:
- Dalam satu sesi obrolan, pertanyaan dan jawaban saling membangun dan Anda dapat menyesuaikan pertanyaan Anda untuk memperhalus jawaban yang Anda dapatkan.
- Secara bawaan, GitHub Copilot tidak memiliki akses ke file mana pun di repositori Anda. Untuk mengajukan pertanyaan mengenai sebuah file, buka file tersebut di editor terlebih dahulu.
- Untuk memungkinkan GitHub Copilot mengakses semua file di repositori saat mempersiapkan jawabannya, mulailah pertanyaan Anda dengan
@workspace
. Untuk informasi lebih lanjut, lihat Use the @workspace agent. - Dalam sesi obrolan, GitHub Copilot dapat menyarankan perubahan dan (dengan
@workspace
) bahkan menunjukkan di mana perubahan tersebut harus dilakukan, namun tidak diperbolehkan melakukan perubahan untuk Anda. Terserah Anda untuk menambahkan perubahan yang disarankan dan mengujinya.
Berikut adalah beberapa hal lain yang dapat Anda katakan untuk menyempurnakan jawaban yang Anda terima:
- Saya ingin kode ini hanya berjalan dalam mode produksi.
- Saya ingin kode ini berjalan hanya di Azure App Service dan bukan secara lokal.
- Parameter --output-path tampaknya tidak didukung.
Konten terkait
Lanjutkan ke tutorial berikutnya untuk mempelajari cara mengamankan aplikasi Anda dengan domain kustom dan sertifikat.
Atau, lihat sumber daya lainnya: