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.
Contoh ini menunjukkan cara menggunakan pustaka manajemen Azure SDK dalam skrip Python untuk membuat dan menyebarkan aplikasi web ke Azure App Service, dengan kode aplikasi yang ditarik dari repositori GitHub.
Azure SDK untuk Python menyertakan pustaka manajemen (namespace dimulai dengan azure-mgmt) yang memungkinkan Anda mengotomatiskan konfigurasi dan penyebaran sumber daya — mirip dengan apa yang dapat Anda lakukan dengan portal Microsoft Azure, Azure CLI, atau templat ARM. Lihat contoh di Panduan cepat : Menyebarkan aplikasi web Python (Django atau Flask) ke Azure App Service.
1: Menyiapkan lingkungan pengembangan lokal Anda
Jika Anda belum melakukannya, siapkan lingkungan tempat Anda dapat menjalankan kode ini. Berikut adalah beberapa opsi:
Konfigurasikan lingkungan virtual Python menggunakan
venvatau alat pilihan Anda. Untuk mulai menggunakan lingkungan virtual, pastikan untuk mengaktifkannya. Untuk menginstal python, lihat Menginstal Python.#!/bin/bash # Create a virtual environment python -m venv .venv # Activate the virtual environment source .venv/Scripts/activate # only required for Windows (Git Bash)Gunakan lingkungan kerja conda . Untuk menginstal Conda, lihat Menginstal Miniconda.
Gunakan Dev Container 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 lingkungan pengembangan lokal Anda, instal persyaratan menggunakan kode berikut:
pip install -r requirements.txt
3: Fork repositori contoh
Kunjungi https://github.com/Azure-Samples/python-docs-hello-world dan fork repositori ke akun GitHub Anda sendiri. Menggunakan fork memastikan bahwa Anda memiliki izin yang diperlukan untuk menyebarkan aplikasi ke Azure.
Selanjutnya, buat variabel lingkungan bernama
REPO_URLdan atur ke URL repositori fork Anda. Variabel ini diperlukan oleh kode contoh di bagian berikutnya.
export REPO_URL=<url_of_your_fork>
export AZURE_SUBSCRIPTION_ID=<subscription_id>
4: Menulis kode untuk membuat dan menyebarkan aplikasi web
Buat file Python bernama provision_deploy_web_app.py dan tambahkan kode berikut. Komentar sebaris menjelaskan apa yang dilakukan setiap bagian skrip. Variabel REPO_URL lingkungan dan AZURE_SUBSCRIPTION_ID harus sudah diatur pada langkah sebelumnya.
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
- AzureCliCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- WebSiteManagementClient (azure.mgmt.web impor)
5: Jalankan skrip
python provision_deploy_web_app.py
6: Memverifikasi penyebaran aplikasi web
Untuk melihat situs web yang disebarkan, jalankan perintah berikut:
az webapp browse --name <PythonAzureExample-WebApp-12345> --resource-group PythonAzureExample-WebApp-rg
Ganti nama aplikasi web (--name) dengan nilai yang dihasilkan oleh skrip.
Anda tidak perlu mengubah nama grup sumber daya (--resource-group) kecuali Anda mengubahnya dalam skrip. Ketika Anda membuka situs, Anda akan melihat "Halo, Dunia!" di browser Anda.
Petunjuk / Saran
Jika Anda tidak melihat output yang diharapkan, tunggu beberapa menit dan coba lagi.
Jika Anda masih belum melihat output yang diharapkan:
- Buka portal Microsoft Azure .
- Navigasi ke Grup sumber daya, dan temukan grup sumber daya yang Anda buat.
- Pilih grup sumber daya untuk melihat sumber dayanya. Pastikan mencakup Paket Layanan Aplikasi dan Layanan Aplikasi.
- Pilih App Service, lalu buka Pusat Penyebaran.
- Buka tab log untuk memeriksa log penyebaran untuk setiap kesalahan atau pembaruan status.
7: Menyebarkan ulang kode aplikasi web (opsional)
Skrip menyediakan semua sumber daya yang diperlukan untuk menghosting aplikasi web Anda dan mengonfigurasi sumber penyebaran untuk menggunakan repositori fork Anda menggunakan integrasi manual. Dengan integrasi manual, Anda perlu memicu aplikasi web secara manual untuk menarik pembaruan dari repositori dan cabang yang ditentukan.
Skrip menggunakan metode WebSiteManagementClient.web_apps.sync_repository untuk memicu aplikasi web untuk menarik kode dari repositori Anda. Jika Anda membuat perubahan lebih lanjut pada kode, Anda dapat menyebarkan ulang dengan memanggil API ini lagi, atau dengan menggunakan alat Azure lainnya seperti Azure CLI atau portal Microsoft Azure.
Anda dapat menyebarkan ulang kode Anda menggunakan Azure CLI dengan menjalankan perintah sinkronisasi sumber penyebaran webapp az :
az webapp deployment source sync --name <PythonAzureExample-WebApp-12345> --resource-group PythonAzureExample-WebApp-rg
Anda tidak perlu mengubah nama grup sumber daya (--resource-group) kecuali Anda mengubahnya dalam skrip.
Untuk menyebarkan kode Anda dari portal Microsoft Azure:
- Buka portal Microsoft Azure .
- Navigasi ke Grup sumber daya, dan temukan grup sumber daya yang Anda buat.
- Pilih nama grup sumber daya untuk melihat sumber dayanya. Pastikan mencakup Paket Layanan Aplikasi dan Layanan Aplikasi.
- Pilih App Service, lalu buka Pusat Penyebaran.
- Di menu atas, pilih Sinkronkan untuk memicu penyebaran kode Anda.
8: Membersihkan sumber daya
az group delete --name PythonAzureExample-WebApp-rg --no-wait
Anda tidak perlu mengubah nama grup sumber daya (--resource-group opsi) kecuali Anda mengubahnya dalam skrip.
Jika Anda tidak lagi memerlukan grup sumber daya yang dibuat dalam contoh ini, Anda dapat menghapusnya dengan menjalankan perintah az group delete . Meskipun grup sumber daya tidak menimbulkan beban biaya, adalah praktik yang baik untuk membersihkan sumber daya yang tidak digunakan.
--no-wait Gunakan argumen untuk segera mengembalikan kontrol ke baris perintah tanpa menunggu penghapusan selesai.
Anda juga dapat menghapus grup sumber daya secara terprogram menggunakan metode .ResourceManagementClient.resource_groups.begin_delete
Lihat juga
- Contoh : Membuat grup sumber daya
- Contoh : Mendaftar grup sumber daya dalam langganan
- Contoh : Membuat azure Storage
- Contoh : Menggunakan Azure Storage
- Contoh : Membuat dan mengkueri database MySQL
- Contoh : Membuat komputer virtual
- Menggunakan Disk Terkelola Azure dengan mesin virtual
- Menyelesaikan survei singkat tentang Azure SDK for Python