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 web Python Django berbasis data untuk Azure App Service dan menggunakan Konektor Layanan untuk menyambungkannya ke layanan Azure lainnya. Contoh aplikasi web menyimpan informasi restoran dan ulasan dalam database Azure Database for PostgreSQL dan menyimpan foto dalam kontainer Azure Storage.
Anda menggunakan Azure CLI untuk menyelesaikan tugas berikut:
- Buat aplikasi web Python Django dan sebarkan ke Azure App Service.
- Buat server dan database fleksibel Azure Database for PostgreSQL.
- Buat akun dan kontainer Azure Storage.
- Sambungkan aplikasi web ke database dan kontainer penyimpanan menggunakan Konektor Layanan dengan autentikasi identitas terkelola .
- Berinteraksi dengan aplikasi web.
Catatan
Tutorial ini mirip dengan tutorial App Service Deploy a Python Django web app dengan PostgreSQL di Azure, tetapi menggunakan identitas terkelola tanpa kata sandi yang ditetapkan sistem dengan kontrol akses berbasis peran Azure untuk mengakses sumber daya Azure lainnya. Bagian Buat koneksi layanan tanpa kata sandi di artikel ini memperlihatkan bagaimana Konektor Layanan menyederhanakan proses koneksi.
Aplikasi web menggunakan DefaultAzureCredential kelas pustaka klien Python Azure Identity untuk secara otomatis mendeteksi kapan identitas terkelola ada dan menggunakannya untuk mengakses sumber daya lain.
Prasyarat
Langganan Azure dengan izin tulis dan penugasan peran untuk sumber daya tutorial, di wilayah Azure yang mendukung Service Connector dan memiliki dukungan dan kuota App Service yang memadai.
Azure Cloud Shell untuk menjalankan langkah-langkah tutorial, atau jika Anda lebih suka menjalankan secara lokal:
- Instal Azure CLI 2.30.0 atau yang lebih tinggi. Untuk memeriksa versi Anda, jalankan
az --version. Untuk meningkatkan, jalankanaz upgrade. - Masuk ke Azure dengan menggunakan
az logindan mengikuti perintah.
- Instal Azure CLI 2.30.0 atau yang lebih tinggi. Untuk memeriksa versi Anda, jalankan
Atur lingkungan Anda
Pastikan langganan Anda terdaftar untuk menggunakan penyedia sumber daya
Microsoft.ServiceLinkerdanMicrosoft.DBforPostgreSQL. Jika tidak, jalankanaz provider register -n Microsoft.[name of service]untuk mendaftarkan penyedia.Instal ekstensi Azure CLI berikut:
az extension add --name serviceconnector-passwordless --upgrade az extension add --name rdbms-connect
Mengkloning aplikasi sampel
Klon repositori aplikasi sampel.
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.gitAtau, Anda dapat mengunduh aplikasi dari https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless dan membuka zipnya ke folder yang disebut serviceconnector-webapp-postgresql-django-passwordless.
Ubah direktori ke folder repositori menggunakan
cd serviceconnector-webapp-postgresql-django-passwordlessdan jalankan semua perintah yang tersisa dari folder tersebut.
Di aplikasi sampel, pengaturan produksi aplikasi web ada di file azuresite/production.py . Pengaturan pengembangan berada di azuresite/settings.py. Pengaturan produksi mengonfigurasi Django untuk berjalan di lingkungan produksi apa pun dan tidak khusus untuk App Service.
Aplikasi ini menggunakan pengaturan produksi saat variabel lingkungan WEBSITE_HOSTNAME ditetapkan. Untuk string koneksi Azure Postgres, App Service secara otomatis mengatur variabel ini ke URL aplikasi web, seperti https://msdocs-django.azurewebsites.net.
Untuk informasi selengkapnya, lihat daftar pemeriksaan implementasi Django. Lihat juga pengaturan Production untuk Django pada Azure.
Menentukan variabel lingkungan awal
Kode berikut mendefinisikan variabel lingkungan yang diperlukan untuk tutorial ini.
-
LOCATIONharus menjadi wilayah Azure di mana langganan Anda memiliki kuota yang cukup untuk membuat resource dan tidak memberikan batasan pada Azure Database untuk PostgreSQL untuk langganan Anda. -
ADMIN_PWharus berisi 8 hingga 128 karakter dalam setidaknya tiga dari empat kategori huruf besar, huruf kecil, angka, dan karakter non-infanumerik, tidak termasuk$.
Siapkan variabel lingkungan berikut, ganti placeholder
<region>dan<database password>dengan nilai yang valid.LOCATION="<region>" RAND_ID=$RANDOM RESOURCE_GROUP_NAME="msdocs-mi-web-app" APP_SERVICE_NAME="msdocs-mi-web-$RAND_ID" DB_SERVER_NAME="msdocs-mi-postgres-$RAND_ID" ADMIN_USER="demoadmin" ADMIN_PW="<database password>"Buat grup sumber daya untuk berisi semua sumber daya proyek. Nama grup sumber daya di-cache dan secara otomatis diterapkan ke perintah-perintah berikutnya.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Menyebarkan kode aplikasi ke App Service
Buat host aplikasi di App Service dan sebarkan kode aplikasi sampel ke host tersebut. Perintah az webapp up melakukan tindakan berikut:
- Membuat paket App Service di tingkat harga Dasar (B1).
- Membuat aplikasi App Service.
- Mengaktifkan pengelogan default untuk aplikasi.
- Mengunggah repositori menggunakan penyebaran ZIP dengan otomatisasi pembangunan diaktifkan.
- Membangun aplikasi.
Dalam kode, sku menentukan CPU, memori, dan biaya paket App Service. Paket layanan Dasar (B1) dikenakan biaya kecil dalam langganan Azure Anda. Anda dapat menghilangkan --sku parameter untuk menggunakan SKU default, biasanya P1v3 (Premium v3). Untuk daftar lengkap paket App Service, lihat Harga App Service.
Dari folder repositori serviceconnector-webapp-postgresql-django-passwordless , jalankan perintah berikut
az webapp up:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.10 \ --sku B1Catatan
Penyebaran membutuhkan waktu beberapa menit, dan perintah dapat menggantung atau kehabisan waktu, terutama pada SKU Dasar. Setelah aplikasi berhasil dibangun dan output menunjukkan
Starting the site, Anda dapat keluar dari perintah dengan memilih Ctrl+C.Konfigurasikan aplikasi untuk menggunakan file start.sh repositori dengan menjalankan perintah az webapp config set .
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Membuat database Postgres di Azure
Buat database Azure Database for PostgreSQL untuk menyimpan informasi aplikasi. Perintah az postgres flexible-server create membuat server fleksibel Azure Database for PostgreSQL dalam grup sumber daya yang ditentukan yang memiliki:
- Nama server yang ditentukan dalam
--nameparameter . Nama harus unik di seluruh Azure. - SKU ditentukan dalam
--sku-nameparameter . - Nama pengguna dan kata sandi akun administrator yang ditentukan dalam parameter
--admin-userdan--admin-password.
Buat server Azure Database for PostgreSQL. Jika diminta untuk mengaktifkan akses ke alamat IP klien saat ini, masukkan
yuntuk ya.az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --sku-name Standard_D2ds_v4 \ --microsoft-entra-auth EnabledJika Anda tidak diminta untuk mengaktifkan akses ke alamat IP klien Anda saat ini, konfigurasikan aturan firewall di server Anda dengan perintah az postgres flexible-server firewall-rule create . Aturan ini memungkinkan akses lingkungan lokal Anda ke server.
IP_ADDRESS=<your IP address> az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --rule-name AllowMyIP \ --start-ip-address $IP_ADDRESS \ --end-ip-address $IP_ADDRESSPetunjuk / Saran
Gunakan alat atau situs web apa pun yang menunjukkan alamat IP Anda untuk menggantikan
<your IP address>di dalam perintah. Misalnya, Anda dapat menggunakan Apa Alamat IP Saya?.Buat database bernama
restaurantdi server dengan menggunakan perintah az postgres flexible-server execute .az postgres flexible-server execute \ --name $DB_SERVER_NAME \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --database-name postgres \ --querytext 'create database restaurant;'
Membuat koneksi layanan tanpa kata sandi
Gunakan az webapp connection create postgres-flexible untuk menambahkan konektor layanan yang menghubungkan aplikasi web Azure ke database Postgres menggunakan autentikasi identitas terkelola tanpa sandi. Perintah berikut mengonfigurasi Azure Database for PostgreSQL untuk menggunakan identitas terkelola dan Azure kontrol akses berbasis peran. Output perintah mencantumkan tindakan-tindakan yang dilakukan oleh Service Connector.
Perintah membuat variabel lingkungan bernama AZURE_POSTGRESQL_CONNECTIONSTRING yang menyediakan informasi koneksi database untuk aplikasi. Kode aplikasi mengakses variabel lingkungan aplikasi dengan pernyataan seperti os.environ.get('AZURE_POSTGRESQL_HOST'). Untuk informasi selengkapnya, lihat Mengakses variabel lingkungan.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--target-resource-group $RESOURCE_GROUP_NAME \
--server $DB_SERVER_NAME \
--database restaurant \
--client-type python \
--system-identity
Membuat dan menyambungkan ke akun penyimpanan
Gunakan az webapp connection create storage-blob untuk membuat akun penyimpanan Azure dan konektor layanan. Perintah mengambil tindakan berikut:
- Mengaktifkan identitas terkelola yang ditetapkan sistem pada aplikasi web.
- Menambahkan aplikasi web dengan peran Storage Blob Data Contributor ke akun penyimpanan baru.
- Mengonfigurasi jaringan akun penyimpanan untuk menerima akses dari aplikasi web.
- Membuat variabel lingkungan bernama
AZURE_STORAGEBLOB_RESOURCEENDPOINTuntuk akun Azure Storage.
Jalankan perintah berikut untuk membuat akun penyimpanan dan koneksi:
STORAGE_ACCOUNT_URL=$(az webapp connection create storage-blob \ --new true \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --client-type python \ --system-identity \ --query configurations[].value \ --output tsv) STORAGE_ACCOUNT_NAME=$(cut -d . -f1 <<< $(cut -d / -f3 <<< $STORAGE_ACCOUNT_URL))Perbarui akun penyimpanan untuk mengizinkan akses publik blob bagi pengguna aplikasi untuk mengakses foto.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --allow-blob-public-accessGunakan az storage container create untuk membuat kontainer yang disebut
photosdi akun penyimpanan, dan izinkan akses baca publik anonim ke blob di kontainer baru.# Set the BLOB_ENDPOINT variable BLOB_ENDPOINT=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "primaryEndpoints.blob" | sed 's/"//g') echo $BLOB_ENDPOINT # Create the storage container using the BLOB_ENDPOINT variable az storage container create \ --account-name $STORAGE_ACCOUNT_NAME \ --name photos \ --public-access blob \ --auth-mode login \ --blob-endpoint $BLOB_ENDPOINT
Menguji aplikasi web Python di Azure
Buka dan uji aplikasi web Azure Restaurant Review. Aplikasi ini menggunakan paket azure.identity dan kelasnya DefaultAzureCredential . Saat aplikasi berjalan di Azure, DefaultAzureCredential secara otomatis mendeteksi kapan identitas terkelola ada untuk App Service, dan menggunakannya untuk mengakses sumber daya Azure Storage dan Azure Database for PostgreSQL. Aplikasi ini tidak perlu menyediakan kunci penyimpanan, sertifikat, atau kredensial untuk mengakses sumber daya ini.
Untuk penginstalan Azure CLI lokal, Anda dapat menggunakan
az webapp browseuntuk membuka aplikasi di browser default Anda:az webapp browse --name $APP_SERVICE_NAME.azurewebsites.net --resource-group $RESOURCE_GROUP_NAMEAzure Cloud Shell tidak dapat membuka browser lokal, sehingga tidak mendukung perintah
az webapp browse. Dari Cloud Shell, cara termudah untuk membuka aplikasi web adalah memilih tautan domain Default di kanan atas halaman portal Azure dari aplikasi.
Diperlukan waktu satu atau dua menit agar aplikasi dapat dimulai. Jika Anda melihat halaman aplikasi default yang bukan aplikasi sampel, tunggu sebentar dan refresh browser.
Uji fungsionalitas aplikasi sampel dengan menambahkan restoran dan beberapa ulasan dengan foto. Aplikasi harus menyerupai cuplikan layar berikut:
Membersihkan sumber daya
Untuk menghindari biaya berkelanjutan, Anda dapat menghapus sumber daya yang Anda buat untuk tutorial ini dengan menghapus grup sumber daya yang mencakupnya. Pastikan Anda tidak lagi memerlukan aplikasi atau sumber daya sebelum menjalankan perintah.
az group delete --name $RESOURCE_GROUP_NAME --no-wait
Menghapus semua sumber daya bisa memakan waktu. Argumen --no-wait memungkinkan perintah untuk segera kembali.
Troubleshooting
Jika Anda mengalami masalah dalam menjalankan tutorial ini, lihat sumber daya berikut: