Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie Sie die Azure SDK-Verwaltungsbibliotheken in einem Python-Skript verwenden, um eine Web-App in Azure App Service zu erstellen und bereitzustellen, wobei der App-Code aus einem GitHub-Repository abgerufen wird.
Das Azure SDK für Python umfasst Verwaltungsbibliotheken (Namespaces beginnend mit azure-mgmt
), mit denen Sie die Ressourcenkonfiguration und -bereitstellung automatisieren können – ähnlich wie mit dem Azure-Portal, azure CLI oder ARM-Vorlagen. Beispiele finden Sie unter Schnellstart: Bereitstellen einer Python-Web-App (Django oder Flask) in Azure App Service.
1: Einrichten Ihrer lokalen Entwicklungsumgebung
Falls noch nicht geschehen, richten Sie eine Umgebung ein, in der Sie diesen Code ausführen können. Hier sind einige Optionen:
Konfigurieren Sie eine virtuelle Python-Umgebung mit
venv
oder Ihrem Wahltool. Um mit der Verwendung der virtuellen Umgebung zu beginnen, müssen Sie sie aktivieren. Informationen zum Installieren von Python finden Sie unter Installieren von 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)
Verwenden Sie eine conda-Umgebung. Informationen zum Installieren von Conda finden Sie unter Installieren von Miniconda.
Verwenden Sie einen Dev Container in Visual Studio Code oder GitHub Codespaces.
2: Installieren der erforderlichen Azure-Bibliothekspakete
Erstellen Sie eine Datei mit dem Namen requirements.txt mit folgendem Inhalt:
azure-mgmt-resource
azure-mgmt-web
azure-identity
Installieren Sie in Ihrer lokalen Entwicklungsumgebung die Anforderungen mithilfe des folgenden Codes:
pip install -r requirements.txt
3: Verzweigung des Beispielrepositorys
Besuchen Sie https://github.com/Azure-Samples/python-docs-hello-world und forken Sie das Repository in Ihr eigenes GitHub-Konto. Die Verwendung eines Forks stellt sicher, dass Sie über die erforderlichen Berechtigungen zum Bereitstellen der App in Azure zu verfügen.
Erstellen Sie als Nächstes eine Umgebungsvariable namens
REPO_URL
, und legen Sie sie auf die URL Ihres verzweigten Repositorys fest. Diese Variable wird vom Beispielcode im nächsten Abschnitt benötigt.
export REPO_URL=<url_of_your_fork>
export AZURE_SUBSCRIPTION_ID=<subscription_id>
4: Schreiben von Code zum Erstellen und Bereitstellen einer Web-App
Erstellen Sie eine Python-Datei mit dem Namen provision_deploy_web_app.py , und fügen Sie den folgenden Code hinzu. In den Zeilenkommentaren wird erläutert, was jeder Teil des Skripts tut. Die REPO_URL
Variablen und AZURE_SUBSCRIPTION_ID
Umgebungsvariablen sollten bereits im vorherigen Schritt festgelegt werden.
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")
Dieser Code verwendet cli-basierte Authentifizierung (mit AzureCliCredential
), da er Aktionen veranschaulicht, die Sie andernfalls direkt mit der Azure CLI ausführen können. In beiden Fällen verwenden Sie dieselbe Identität für die Authentifizierung. Je nach Ihrer Umgebung müssen Sie möglicherweise zuerst az login
ausführen, um sich zu authentifizieren.
Um diesen Code in einem Produktionsskript (z. B. zum Automatisieren der VM-Verwaltung) zu verwenden, verwenden Sie DefaultAzureCredential
(empfohlen) mit einer dienstprinzipalbasierten Methode, wie in How to authenticate Python apps with Azure servicesbeschrieben.
Referenzlinks für klassen, die im Code verwendet werden
- AzureCliCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- WebSiteManagementClient (azure.mgmt.web import)
5: Ausführen des Skripts
python provision_deploy_web_app.py
6: Überprüfen der Web-App-Bereitstellung
Führen Sie den folgenden Befehl aus, um die bereitgestellte Website anzuzeigen:
az webapp browse --name <PythonAzureExample-WebApp-12345> --resource-group PythonAzureExample-WebApp-rg
Ersetzen Sie den Web-App-Namen (--name
) durch den vom Skript generierten Wert.
Sie müssen den Ressourcengruppennamen (--resource-group
) nur ändern, wenn Sie ihn im Skript geändert haben. Wenn Sie die Website öffnen, sollte "Hello, World!" angezeigt werden. in Ihrem Browser.
Tipp
Wenn die erwartete Ausgabe nicht angezeigt wird, warten Sie einige Minuten, und versuchen Sie es erneut.
Wenn das erwartete Ergebnis nach wie vor nicht angezeigt wird:
- Wechseln Sie zum Azure-Portal.
- Navigieren Sie zu Ressourcengruppen, und suchen Sie die von Ihnen erstellte Ressourcengruppe.
- Wählen Sie die Ressourcengruppe aus, um die zugehörigen Ressourcen anzuzeigen. Stellen Sie sicher, dass sie sowohl einen App-Dienstplan als auch einen App-Dienst enthält.
- Wählen Sie den App-Dienst aus, und wechseln Sie dann zum Deployment Center.
- Öffnen Sie die Registerkarte "Protokolle ", um die Bereitstellungsprotokolle auf Fehler oder Statusupdates zu überprüfen.
7: Web-App-Code erneut bereitstellen (optional)
Das Skript stellt alle erforderlichen Ressourcen bereit, um Ihre Web-App zu hosten, und konfiguriert die Bereitstellungsquelle für die Verwendung Ihres verzweigten Repositorys mithilfe der manuellen Integration. Bei der manuellen Integration müssen Sie die Web-App manuell auslösen, um Updates aus dem angegebenen Repository und Branch abzurufen.
Das Skript verwendet die WebSiteManagementClient.web_apps.sync_repository-Methode , um die Web-App zum Abrufen von Code aus Ihrem Repository auszulösen. Wenn Sie weitere Änderungen an Ihrem Code vornehmen, können Sie erneut bereitstellen, indem Sie diese API erneut aufrufen oder andere Azure-Tools wie die Azure CLI oder das Azure-Portal verwenden.
Sie können Ihren Code mithilfe der Azure CLI erneut bereitstellen, indem Sie den Befehl "az webapp deployment source sync " ausführen:
az webapp deployment source sync --name <PythonAzureExample-WebApp-12345> --resource-group PythonAzureExample-WebApp-rg
Sie müssen den Ressourcengruppennamen (--resource-group
) nur ändern, wenn Sie ihn im Skript geändert haben.
So stellen Sie Ihren Code über das Azure-Portal bereit:
- Wechseln Sie zum Azure-Portal.
- Navigieren Sie zu Ressourcengruppen, und suchen Sie die von Ihnen erstellte Ressourcengruppe.
- Wählen Sie den Namen der Ressourcengruppe aus, um die zugehörigen Ressourcen anzuzeigen. Stellen Sie sicher, dass sie sowohl einen App-Dienstplan als auch einen App-Dienst enthält.
- Wählen Sie den App-Dienst aus, und wechseln Sie dann zum Deployment Center.
- Wählen Sie im oberen Menü " Synchronisieren" aus, um die Bereitstellung Ihres Codes auszulösen.
8: Bereinigen von Ressourcen
az group delete --name PythonAzureExample-WebApp-rg --no-wait
Sie müssen den Ressourcengruppennamen (--resource-group
Option) nur ändern, wenn Sie ihn im Skript geändert haben.
Wenn Sie die in diesem Beispiel erstellte Ressourcengruppe nicht mehr benötigen, können Sie sie löschen, indem Sie den Befehl " az group delete " ausführen. Ressourcengruppen verursachen zwar keine laufenden Gebühren, es empfiehlt sich jedoch, nicht verwendete Ressourcen zu bereinigen. Verwenden Sie das --no-wait
Argument, um die Steuerung sofort an die Befehlszeile zurückzugeben, ohne auf den Abschluss des Löschvorgangs zu warten.
Sie können eine Ressourcengruppe auch programmgesteuert mithilfe der ResourceManagementClient.resource_groups.begin_delete
Methode löschen.
Siehe auch
- Beispiel: Erstellen einer Ressourcengruppe
- Beispiel: Auflisten von Ressourcengruppen in einem Abonnement
- Beispiel: Erstellen von Azure Storage-
- Beispiel: Verwenden von Azure Storage
- Beispiel: Erstellen und Abfragen einer MySQL-Datenbank
- Beispiel: Erstellen eines virtuellen Computers
- Verwenden von Azure Managed Disks mit virtuellen Computern
- Eine kurze Umfrage zum Azure SDK für Python abschließen