Contoh: Menggunakan pustaka Azure untuk membuat dan menyebarkan aplikasi web
Contoh ini menunjukkan cara menggunakan pustaka manajemen Azure SDK dalam skrip Python untuk membuat dan menyebarkan aplikasi web ke Azure App Service. Kode aplikasi disebarkan dari repositori GitHub.
Dengan pustaka manajemen (namespace dimulai dengan azure-mgmt
, misalnya, azure-mgmt-web
), Anda dapat menulis konfigurasi dan program penyebaran untuk melakukan tugas yang sama yang Dapat Anda lakukan melalui portal Azure, Azure CLI, atau alat manajemen sumber daya lainnya. Misalnya, lihat Mulai Cepat: Menyebarkan aplikasi web Python (Django atau Flask) ke Azure App Service. (Perintah Azure CLI yang setara diberikan nanti di artikel ini.)
Semua perintah dalam artikel ini bekerja secara sama di bash Linux/macOS dan shell perintah Windows kecuali ada catatan.
1: Siapkan lingkungan pengembangan lokal Anda
Jika Anda belum melakukannya, siapkan lingkungan tempat Anda dapat menjalankan kode ini. Berikut ini adalah beberapa opsi:
Mengonfigurasi lingkungan virtual Python. Anda dapat membuat lingkungan virtual secara lokal atau di Azure Cloud Shell dan menjalankan kode di sana. Pastikan untuk mengaktifkan lingkungan virtual untuk mulai menggunakannya.
Gunakan lingkungan conda.
Gunakan Kontainer Dev di Visual Studio Code atau GitHub Codespaces.
2: Menginstal paket pustaka Azure yang diperlukan
Buat file bernama requirements.txt dengan konten berikut:
azure-mgmt-resource
azure-mgmt-web
azure-identity
Di terminal atau command prompt dengan lingkungan virtual diaktifkan, instal persyaratan:
pip install -r requirements.txt
3: Fork repositori sampel
Kunjungi https://github.com/Azure-Samples/python-docs-hello-world dan fork repositori ke akun GitHub Anda sendiri. Anda akan menggunakan fork untuk memastikan bahwa Anda memiliki izin untuk menyebarkan repositori ke Azure.
Kemudian buat variabel lingkungan yang diberi nama REPO_URL
dengan URL fork Anda. Kode contoh di bagian berikutnya tergantung pada variabel lingkungan ini:
4: Menulis kode untuk membuat dan menyebarkan aplikasi web
Buat file Python bernama provision_deploy_web_app.py dengan kode berikut. Komentar menjelaskan detail kode. Pastikan untuk menentukan REPO_URL
variabel lingkungan dan AZURE_SUBSCRIPTION_ID
sebelum menjalankan skrip.
import random, os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.web import WebSiteManagementClient
# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()
# Retrieve subscription ID from environment variable
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Constants we need in multiple places: the resource group name and the region
# in which we provision resources. You can change these values however you want.
RESOURCE_GROUP_NAME = 'PythonAzureExample-WebApp-rg'
LOCATION = "centralus"
# Step 1: Provision the resource group.
resource_client = ResourceManagementClient(credential, subscription_id)
rg_result = resource_client.resource_groups.create_or_update(RESOURCE_GROUP_NAME,
{ "location": LOCATION })
print(f"Provisioned resource group {rg_result.name}")
# For details on the previous code, see Example: Provision a resource group
# at https://docs.microsoft.com/azure/developer/python/azure-sdk-example-resource-group
#Step 2: Provision the App Service plan, which defines the underlying VM for the web app.
# Names for the App Service plan and App Service. We use a random number with the
# latter to create a reasonably unique name. If you've already provisioned a
# web app and need to re-run the script, set the WEB_APP_NAME environment
# variable to that name instead.
SERVICE_PLAN_NAME = 'PythonAzureExample-WebApp-plan'
WEB_APP_NAME = os.environ.get("WEB_APP_NAME", f"PythonAzureExample-WebApp-{random.randint(1,100000):05}")
# Obtain the client object
app_service_client = WebSiteManagementClient(credential, subscription_id)
# Provision the plan; Linux is the default
poller = app_service_client.app_service_plans.begin_create_or_update(RESOURCE_GROUP_NAME,
SERVICE_PLAN_NAME,
{
"location": LOCATION,
"reserved": True,
"sku" : {"name" : "B1"}
}
)
plan_result = poller.result()
print(f"Provisioned App Service plan {plan_result.name}")
# Step 3: With the plan in place, provision the web app itself, which is the process that can host
# whatever code we want to deploy to it.
poller = app_service_client.web_apps.begin_create_or_update(RESOURCE_GROUP_NAME,
WEB_APP_NAME,
{
"location": LOCATION,
"server_farm_id": plan_result.id,
"site_config": {
"linux_fx_version": "python|3.8"
}
}
)
web_app_result = poller.result()
print(f"Provisioned web app {web_app_result.name} at {web_app_result.default_host_name}")
# Step 4: deploy code from a GitHub repository. For Python code, App Service on Linux runs
# the code inside a container that makes certain assumptions about the structure of the code.
# For more information, see How to configure Python apps,
# https://docs.microsoft.com/azure/app-service/containers/how-to-configure-python.
#
# The create_or_update_source_control method doesn't provision a web app. It only sets the
# source control configuration for the app. In this case we're simply pointing to
# a GitHub repository.
#
# You can call this method again to change the repo.
REPO_URL = os.environ["REPO_URL"]
poller = app_service_client.web_apps.begin_create_or_update_source_control(RESOURCE_GROUP_NAME,
WEB_APP_NAME,
{
"location": "GitHub",
"repo_url": REPO_URL,
"branch": "master",
"is_manual_integration": True
}
)
sc_result = poller.result()
print(f"Set source control on web app to {sc_result.branch} branch of {sc_result.repo_url}")
# Step 5: Deploy the code using the repository and branch configured in the previous step.
#
# If you push subsequent code changes to the repo and branch, you must call this method again
# or use another Azure tool like the Azure CLI or Azure portal to redeploy.
# Note: By default, the method returns None.
app_service_client.web_apps.sync_repository(RESOURCE_GROUP_NAME, WEB_APP_NAME)
print(f"Deploy code")
Kode ini menggunakan autentikasi berbasis-CLI (menggunakan AzureCliCredential
) karena menunjukkan tindakan yang mungkin Anda lakukan dengan Azure CLI secara langsung. Dalam kedua kasus, Anda menggunakan identitas yang sama untuk autentikasi. Bergantung pada lingkungan Anda, Anda mungkin perlu menjalankan az login
terlebih dahulu untuk mengautentikasi.
Untuk menggunakan kode tersebut dalam skrip produksi (misalnya, untuk mengotomatiskan manajemen VM), gunakan DefaultAzureCredential
(disarankan) dengan metode berbasis perwakilan layanan seperti yang dijelaskan dalam Cara mengautentikasi aplikasi Python dengan layanan Azure.
Tautan referensi untuk kelas yang digunakan dalam kode ini
- AzureCliCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- WebSiteManagementClient (azure.mgmt.web import)
5: Jalankan skrip
python provision_deploy_web_app.py
6: Verifikasi penyebaran aplikasi web
Kunjungi situs web yang disebarkan dengan menjalankan perintah berikut:
az webapp browse --name PythonAzureExample-WebApp-12345 --resource-group PythonAzureExample-WebApp-rg
Ganti nama aplikasi web (--name
opsi) dan nama grup sumber daya (--resource-group
opsi) dengan nilai yang Anda gunakan dalam skrip. Anda akan melihat "Hello, World!" di browser.
Jika Anda tidak melihat output yang diharapkan, tunggu beberapa menit dan coba lagi.
Jika Anda masih tidak melihat output yang diharapkan, maka:
- Buka portal Microsoft Azure.
- Pilih Grup sumber daya, dan temukan grup sumber daya yang Anda buat.
- Pilih nama grup sumber daya untuk melihat sumber daya yang dikandungnya. Secara khusus, verifikasi bahwa ada Paket App Service dan App Service.
- Pilih App Service, lalu pilih Pusat Penyebaran.
- Pilih tab log untuk melihat log penyebaran.
7: Menyebarkan ulang kode aplikasi web (opsional)
Skrip menyiapkan sumber daya yang diperlukan untuk menghosting aplikasi web Anda dan mengatur sumber penyebaran ke fork Anda menggunakan integrasi manual. Dengan integrasi manual, Anda harus memicu aplikasi web untuk menarik dari repositori dan cabang yang dikonfigurasi.
Skrip memanggil metode WebSiteManagementClient.web_apps.sync_repository untuk memicu penarikan dari aplikasi web. Jika Anda mendorong perubahan kode berikutnya ke repositori, Anda dapat menyebarkan ulang kode dengan memanggil API ini atau dengan menggunakan alat Azure lainnya seperti Azure CLI atau portal Azure.
Anda dapat menyebarkan kode Anda dengan Azure CLI dengan menjalankan perintah sinkronisasi sumber penyebaran webapp az:
az webapp deployment source sync --name PythonAzureExample-WebApp-12345 --resource-group PythonAzureExample-WebApp-rg
Ganti nama aplikasi web (--name
opsi) dan nama grup sumber daya (--resource-group
opsi) dengan nilai yang Anda gunakan dalam skrip.
Untuk menyebarkan kode Anda dari portal Azure:
- Buka portal Microsoft Azure.
- Pilih Grup sumber daya, dan temukan grup sumber daya yang Anda buat.
- Pilih nama grup sumber daya untuk melihat sumber daya yang dikandungnya. Secara khusus, verifikasi bahwa ada Paket App Service dan App Service.
- Pilih App Service, lalu pilih Pusat Penyebaran.
- Di menu atas, pilih Sinkronkan untuk menyebarkan kode Anda.
8: Membersihkan sumber daya
az group delete --name PythonAzureExample-WebApp-rg --no-wait
Jalankan perintah az group delete jika Anda tidak perlu membuat grup sumber daya dalam contoh ini. Grup sumber daya tidak dikenakan biaya berkelanjutan dalam langganan Anda, tetapi ini adalah praktik yang baik untuk membersihkan grup apa pun yang tidak Anda gunakan secara aktif. Argumen --no-wait
memungkinkan perintah untuk segera kembali alih-alih menunggu operasi selesai.
Anda juga dapat menggunakan metode ResourceManagementClient.resource_groups.begin_delete
untuk menghapus grup sumber daya dari kode.
Untuk referensi: perintah Azure CLI yang setara
Perintah Azure CLI berikut melengkapi langkah-langkah provisi yang sama dengan skrip Python:
rem Replace <your_github_user_name> with the account name of the fork.
set repoUrl=https://github.com/<your_github_user_name>/python-docs-hello-world
set appName=PythonAzureExample-WebApp-%random%
az group create -l centralus -n PythonAzureExample-WebApp-rg
az appservice plan create -n PythonAzureExample-WebApp-plan -g PythonAzureExample-WebApp-rg ^
--is-linux --sku F1
echo Creating app: %appName%
az webapp create -g PythonAzureExample-WebApp-rg -n %appName% ^
--plan PythonAzureExample-WebApp-plan --runtime "python|3.8"
rem You can use --deployment-source-url with the first create command. It is shown here
rem to match the sequence of the Python code.
az webapp create -n %appName% -g PythonAzureExample-WebApp-rg ^
--plan PythonAzureExample-WebApp-plan --runtime "python|3.8" ^
--deployment-source-url %repoUrl%
rem The previous command sets up External Git deployment from the specified repository. This
rem command triggers a pull from the repository.
az webapp deployment source sync --name %appName% --resource-group PythonAzureExample-WebApp-rg
Baca juga
- Contoh: Membuat grup sumber daya
- Contoh: Cantumkan grup sumber daya dalam langganan
- Contoh: Membuat Azure Storage
- Contoh: Menggunakan Azure Storage
- Contoh: Membuat dan mengkueri database MySQL
- Contoh: Membuat komputer virtual
- Gunakan Azure Managed Disks dengan mesin virtual
- Menyelesaikan survei singkat tentang SDK Azure untuk Python
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk