Déployer une application web FastAPI Python avec PostgreSQL dans Azure
Dans ce tutoriel, vous allez déployer une application web Python pilotée par les données (FastAPI) sur Azure App Service avec le service de base de données relationnelle Azure Database pour PostgreSQL. Azure App Service prend en charge Python dans un environnement serveur Linux. Si vous le souhaitez, consultez plutôt le tutoriel Flask ou le tutoriel Django.
Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :
- Compte Azure avec un abonnement actif. Si vous ne possédez pas de compte Azure, vous pouvez créer un compte gratuit.
- Connaissance de Python avec le développement FastAPI
- Compte Azure avec un abonnement actif. Si vous ne possédez pas de compte Azure, vous pouvez créer un compte gratuit.
- Azure Developer CLI installé. Vous pouvez suivre les étapes avec Azure Cloud Shell, car Azure Developer CLI est déjà installé.
- Connaissance de Python avec le développement FastAPI
Passer à la fin
Une fois Azure Developer CLI installé, vous pouvez passer à la fin du didacticiel en exécutant les commandes suivantes dans un répertoire de travail vide :
azd auth login
azd init --template msdocs-fastapi-postgresql-sample-app
azd up
Exemple d’application
Un exemple d’application Python utilisant l’infrastructure FastAPI est fourni pour vous aider à suivre ce tutoriel. Pour le déployer sans l’exécuter localement, ignorez cette partie.
Pour lancer l’application localement, vérifiez que Python 3.8 ou version ultérieure et PostgreSQL sont installés localement. Ensuite, clonez la branche starter-no-infra
de l’exemple de référentiel et passez à la racine de référentiel.
git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app
cd msdocs-fastapi-postgresql-sample-app
Créez un fichier .env comme montré ci-dessous en utilisant le fichier .env.sample comme guide. Définissez la valeur de DBNAME
sur le nom d’une base de données existante dans votre instance PostgreSQL locale. Définissez les valeurs de DBHOST
, DBUSER
et DBPASS
en fonction de votre instance PostgreSQL locale.
DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>
Créez un environnement virtuel pour l’application :
py -m venv .venv
.venv\scripts\activate
Installez les dépendances :
python3 -m pip install -r src/requirements.txt
Installez l’application en tant que package modifiable :
python3 -m pip install -e src
Exécutez l’exemple d’application avec la commande suivante :
# Run database migration
python3 src/fastapi_app/seed_data.py
# Run the app at http://127.0.0.1:8000
python3 -m uvicorn fastapi_app:app --reload --port=8000
1. Créer les instances App Service et PostgreSQL
Dans cette étape, vous créez les ressources Azure. La procédure indiquée dans ce tutoriel permet de créer un ensemble de ressources sécurisées par défaut qui incluent App Service et Azure DB pour PostgreSQL. Pour le processus de création, vous devez spécifier :
- Le nom de l’application web. Il s’agit du nom utilisé dans le cadre du nom DNS de votre application web sous la forme
https://<app-name>.azurewebsites.net
. - La Région du monde où l’application sera physiquement exécutée.
- La Pile du runtime de l’application. C’est là que vous sélectionnez la version de Python à utiliser pour votre application.
- Le Plan d’hébergement de l’application. Il s’agit du niveau tarifaire qui inclut l’ensemble des fonctionnalités et la scalabilité de l’application.
- Le groupe de ressources pour l’application. Un groupe de ressources vous permet de regrouper (dans un conteneur logique) toutes les ressources Azure nécessaires à l’application.
Connectez-vous au portail Azure et procédez comme suit pour créer vos ressources Azure App Service.
Étape 1 : Dans le Portail Azure :
- Entrez « base de données d’application web » dans la barre de recherche située en haut du portail Azure.
- Sélectionnez l’élément intitulé Application web + Base de données sous le titre Place de marché. Vous pouvez également accéder directement à l’Assistant de création.
Étape 2 : Dans la page Créer une application web + base de données, remplissez le formulaire comme suit.
- Groupe de ressources → Sélectionnez Créer et utilisez le nom msdocs-python-postgres-tutorial.
- Région → Toute région Azure près de chez vous.
- Nom → msdocs-python-postgres-XYZ, où XYZ est un ensemble de trois caractères aléatoires quelconques. Ce nom doit être unique au sein d’Azure.
- Runtime stack → Python 3.12.
- Base de données → PostgreSQL - Serveur Flexible est sélectionné par défaut comme moteur de base de données. Les noms du serveur et de la base de données sont aussi définis par défaut sur les valeurs appropriées.
- Plan d’hébergement → De base. Vous pourrez ultérieurement effectuer un scale-up vers un niveau tarifaire de production.
- Sélectionnez Revoir + créer.
- Une fois la validation terminée, sélectionnez Créer.
Étape 3 : Le déploiement prend quelques minutes. Une fois le déploiement terminé, sélectionnez le bouton Accéder à la ressource. L’application App Service s’ouvre automatiquement, mais les ressources suivantes sont créées :
- Groupe de ressources → Conteneur pour toutes les ressources créées.
- Plan App Service → Définit les ressources de calcul pour App Service. Un plan Linux est créé sur le niveau De base.
- App Service → Représente votre application et s’exécute dans le plan App Service.
- Réseau virtuel → Intégré à l’application App Service, isole le trafic réseau principal.
- Azure Database pour PostgreSQL - Serveur flexible → Accessible uniquement à partir du réseau virtuel. Une base de données et un utilisateur sont créés pour vous sur le serveur.
- Zone DNS privée → active la résolution DNS du serveur PostgreSQL dans le réseau virtuel.
Étape 4 : Pour les applications FastAPI, vous devez entrer une commande de démarrage afin qu’App Service puisse démarrer votre application. Dans la page App Service :
- Dans le menu de gauche, sous Paramètres, sélectionnez Configuration.
- Sous l’onglet Paramètres généraux de la page Configuration, entrez
src/entrypoint.sh
dans le champ Commande de démarrage sous Paramètres de la pile. - Cliquez sur Enregistrer. Lorsque vous y êtes invité, sélectionnez Continuer. Pour en savoir plus sur la configuration et le démarrage des applications dans App Service, consultez Configurer une application Python Linux pour Azure App Service.
2. Vérifier les paramètres de connexion
L’assistant de création a généré les variables de connectivité pour vous déjà en tant que paramètres d’application. Les paramètres d’application sont un moyen de préserver les secrets de connexion hors de votre référentiel de code. Lorsque vous êtes prêt à déplacer vos secrets vers un emplacement plus sécurisé, voici un article concernant le stockage dans Azure Key Vault.
Étape 1 : dans le menu de gauche de la page App Service, sélectionnez Variables d'environnement.
Étape 2 : dans l’onglet Paramètres de l’application de la page Variables d’environnement, vérifiez que AZURE_POSTGRESQL_CONNECTIONSTRING
est présent. La chaîne de connexion sera injectée dans l’environnement d’exécution en tant que variable d’environnement.
3. Déployer l’exemple de code
Dans cette étape, vous configurez le déploiement GitHub avec GitHub Actions. Cette méthode fait partie des nombreuses façons de déployer sur App Service, mais elle permet également de bénéficier d’une intégration continue dans votre processus de déploiement. Par défaut, chaque git push
dans votre dépôt GitHub lance l’action de build et de déploiement.
Étape 1 : Dans une nouvelle fenêtre de navigateur :
- Connectez-vous à votre compte GitHub.
- Accédez à https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app.
- Sélectionnez Fork.
- Sélectionnez Créer la duplication.
Étape 2 : Dans la page GitHub, ouvrez Visual Studio Code dans le navigateur en appuyant sur la touche .
.
Étape 3 : Dans Visual Studio Code dans le navigateur, ouvrez src/fastapi/models.py dans l’explorateur. Consultez les variables d’environnement utilisées dans l’environnement de production, notamment les paramètres d’application que vous avez vus dans la page de configuration.
Étape 4 : De retour à la page App Service, dans le menu de gauche, sous Déploiement, sélectionnez Centre de déploiement.
Étape 5 : Dans la page Centre de déploiement :
- Dans Source, sélectionnez GitHub. Par défaut, GitHub Actions est sélectionné en tant que fournisseur de build.
- Connectez-vous à votre compte GitHub et suivez l’invite pour autoriser Azure.
- Dans Organisation, sélectionnez votre compte.
- Dans Référentiel, sélectionnez msdocs-fastapi-postgresql-sample-app.
- Dans Branche, sélectionnez principal.
- Conservez l’option sélectionnée par défaut pour Ajouter un flux de travail.
- Sous Type d’authentification, sélectionnez Identité affectée par l’utilisateur.
- Dans le menu principal, sélectionnez Enregistrer. App Service valide un fichier de flux de travail dans le référentiel GitHub choisi, au sein du répertoire
.github/workflows
.
Étape 6 : Dans la page Centre de déploiement :
- Sélectionnez Journaux d’activité. Une exécution de déploiement a déjà démarré.
- Dans l’élément de journal de l’exécution du déploiement, sélectionnez Générer/Déployer des journaux.
Étape 7 : Vous êtes dirigé vers votre référentiel GitHub où vous voyez que l’action GitHub est en cours d’exécution. Le fichier de workflow définit deux étapes distinctes : la build et le déploiement. Attendez que l’exécution de GitHub affiche l’état Terminé. Cela prend environ 5 minutes.
Vous rencontrez des problèmes ? Consultez le Guide de résolution des problèmes.
4. Générer le schéma de la base de données
Dans la section précédente, vous avez ajouté src/entrypoint.sh en tant que commande de démarrage pour votre application.
entrypoint.sh contient la ligne suivante : python3 src/fastapi_app/seed_data.py
. Cette commande migre votre base de données. Dans l’exemple d’application, elle garantit uniquement que les tables appropriées sont créées dans votre base de données. Elle ne remplit pas ces tables avec des données.
Dans cette section, vous allez exécuter cette commande manuellement à des fins de démonstration. Avec la base de données PostgreSQL protégée par le réseau virtuel, le moyen le plus simple d’exécuter la commande est de le faire dans une session SSH avec le conteneur App Service.
Étape 1 : De retour dans la page App Service, dans le menu de gauche,
- Sélectionnez SSH.
- Sélectionnez Go.
Étape 2 : Dans le terminal SSH, exécutez python3 src/fastapi_app/seed_data.py
. Si cela réussit, App Service se connecte avec succès à la base de données.
Seules les modifications apportées aux fichiers dans /home
peuvent être conservées au-delà des redémarrages d’application. Les modifications effectuées en dehors de /home
ne sont pas conservées.
5. Accéder à l’application
Étape 1 : Dans la page App Service :
- Dans le menu de gauche, sélectionnez Vue d’ensemble.
- Sélectionnez l’URL de votre application. Vous pouvez également naviguer directement vers
https://<app-name>.azurewebsites.net
.
Étape 2 : Ajoutez quelques restaurants à la liste. Félicitations, vous exécutez une application web Flask dans Azure App Service, avec une connectivité sécurisée vers Azure Database pour PostgreSQL.
6. Diffuser les journaux de diagnostic
L’exemple d’application utilise le module de journalisation de la bibliothèque standard Python pour vous aider à diagnostiquer les problèmes liés à votre application. L’exemple d’application inclut des appels à l’enregistreur d’événements, comme indiqué dans le code suivant.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Étape 1 : Dans la page App Service :
- Dans le menu de gauche, sous Supervision, sélectionnez Journaux App Service.
- Sous Application Logging, sélectionnez Système de fichiers.
- Dans le menu principal, sélectionnez Enregistrer.
Étape 2 : Dans le menu de gauche, sélectionnez Flux de journaux. Les journaux de votre application (notamment les journaux de plateforme et ceux issus de l’intérieur du conteneur) apparaissent.
L’affichage des événements dans les journaux de diagnostic peut prendre plusieurs minutes. Apprenez-en davantage sur la journalisation dans les applications Python dans la série sur la configuration d’Azure Monitor pour votre application Python.
7. Nettoyer les ressources
Lorsque vous avez terminé, vous pouvez supprimer toutes les ressources de votre abonnement Azure en supprimant le groupe de ressources.
Étape 1 : Dans la barre de recherche située en haut du Portail Microsoft Azure :
- Entrez le nom du groupe de ressources.
- Sélectionnez le groupe de ressources.
Étape 2 : Sur la page Groupe de ressources, sélectionnez Supprimer un groupe de ressources.
Étape 3 :
- Entrer le nom du groupe de ressources pour confirmer la suppression.
- Sélectionnez Supprimer.
1. Créer des ressources Azure et déployer un exemple d’application
Dans cette étape, vous allez créer les ressources Azure et déployer un exemple d’application dans App Service sur Linux. La procédure indiquée dans ce tutoriel permet de créer un ensemble de ressources sécurisées par défaut qui incluent App Service et Azure DB pour PostgreSQL.
Si ce n’est déjà fait, clonez la branche
starter-no-infra
de l’exemple de référentiel dans un terminal local.git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app cd msdocs-fastapi-postgresql-sample-app
Cette branche clonée est votre point de départ. Il contient une simple application FastAPI de lecteur de données.
Depuis la racine du référentiel, exécutez
azd init
.azd init --template msdocs-fastapi-postgresql-sample-app
Lorsque vous y êtes invité, fournissez les réponses suivantes :
Question Réponse Le répertoire actif n’est pas vide. Voulez-vous initialiser un projet ici dans «<votre-répertoire>» ? Y Que souhaitez-vous faire de ces fichiers ? Conserver mes fichiers existants inchangés Entrer un nom pour le nouvel environnement Tapez un nom unique. Le modèle azd utilise ce nom dans le cadre du nom DNS de votre application web dans Azure ( <app-name>.azurewebsites.net
). Les caractères alphanumériques et les traits d’union sont autorisés.Exécutez la commande
azd up
pour provisionner les ressources Azure nécessaires et déployer le code de l’application. Si vous n’êtes pas encore connecté à Azure, le navigateur s’ouvre et vous invite à le faire. La commandeazd up
vous invite également à sélectionner l’abonnement et l’emplacement souhaités sur lesquels effectuer le déploiement.azd up
La commande
azd up
peut prendre plusieurs minutes. Elle compile et déploie également votre code d’application. Pendant son exécution, la commande fournit des messages sur le processus d’approvisionnement et de déploiement, y compris un lien vers le déploiement dans Azure. Une fois l’opération terminée, la commande affiche également un lien vers l’application de déploiement.Ce modèle azd contient des fichiers (azure.yaml et le répertoire infra) qui génèrent une architecture sécurisée par défaut avec les ressources Azure suivantes :
- Groupe de ressources → Conteneur pour toutes les ressources créées.
- Plan App Service → Définit les ressources de calcul pour App Service. Un plan Linux est spécifié dans le niveau B1.
- App Service → Représente votre application et s’exécute dans le plan App Service.
- Réseau virtuel → Intégré à l’application App Service, isole le trafic réseau principal.
- Azure Database pour PostgreSQL - Serveur flexible → Accessible uniquement à partir du réseau virtuel. Une base de données et un utilisateur sont créés pour vous sur le serveur.
- Zone DNS privée → active la résolution DNS du serveur PostgreSQL dans le réseau virtuel.
- L’espace de travail Log Analytics → agit comme le conteneur cible de votre application pour expédier ses journaux d’activité, dans lequel vous pouvez également interroger les journaux.
Une fois la commande
azd up
terminée, notez les valeurs de lID d’abonnement (GUID), de l’instance App Service et du Groupe de ressources dans la sortie. Vous les utiliserez dans les sections suivantes. La sortie ressemble à la sortie (partielle) suivante :Subscription: Your subscription name (1111111-1111-1111-1111-111111111111) Location: East US You can view detailed progress in the Azure Portal: https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2F1111111-1111-1111-1111-111111111111%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2Fyourenv-1721867673 (✓) Done: Resource group: yourenv-rg (✓) Done: Virtual Network: yourenv-e2najjk4vewf2-vnet (✓) Done: App Service plan: yourenv-e2najjk4vewf2-service-plan (✓) Done: Log Analytics workspace: yourenv-e2najjk4vewf2-workspace (✓) Done: Application Insights: yourenv-e2najjk4vewf2-appinsights (✓) Done: Portal dashboard: yourenv-e2najjk4vewf2-dashboard (✓) Done: App Service: yourenv-e2najjk4vewf2-app-service (✓) Done: Azure Database for PostgreSQL flexible server: yourenv-e2najjk4vewf2-postgres-server (✓) Done: Cache for Redis: yourenv-e2najjk4vewf2-redisCache (✓) Done: Private Endpoint: cache-privateEndpoint SUCCESS: Your application was provisioned in Azure in 32 minutes. You can view the resources created under the resource group yourenv-rg in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/yourenv-rg/overview Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://yourenv-e2najjk4vewf2-app-service.azurewebsites.net/
2. Examiner la chaîne de connexion de base de données
Le modèle azd génère les variables de connectivité pour vous en tant que paramètres d’application. Les paramètres d’application sont un moyen de préserver les secrets de connexion hors de votre référentiel de code.
Dans le fichier
infra/resources.bicep
, recherchez les paramètres de l’application et recherchez le paramètre pourAZURE_POSTGRESQL_CONNECTIONSTRING
.resource appSettings 'config' = { name: 'appsettings' properties: { SCM_DO_BUILD_DURING_DEPLOYMENT: 'true' AZURE_POSTGRESQL_CONNECTIONSTRING: 'dbname=${pythonAppDatabase.name} host=${postgresServer.name}.postgres.database.azure.com port=5432 sslmode=require user=${postgresServer.properties.administratorLogin} password=${databasePassword}' SECRET_KEY: secretKey AZURE_REDIS_CONNECTIONSTRING: 'rediss://:${redisCache.listKeys().primaryKey}@${redisCache.name}.redis.cache.windows.net:6380/0' } }
AZURE_POSTGRESQL_CONNECTIONSTRING
contient la chaîne de connexion à la base de données PostgreSQL dans Azure. Vous devez l’utiliser dans votre code pour vous y connecter. Vous trouverez le code qui utilise cette variable d’environnement dans src/fastapi/models.py :sql_url = "" if os.getenv("WEBSITE_HOSTNAME"): logger.info("Connecting to Azure PostgreSQL Flexible server based on AZURE_POSTGRESQL_CONNECTIONSTRING...") env_connection_string = os.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") if env_connection_string is None: logger.info("Missing environment variable AZURE_POSTGRESQL_CONNECTIONSTRING") else: # Parse the connection string details = dict(item.split('=') for item in env_connection_string.split()) # Properly format the URL for SQLAlchemy sql_url = ( f"postgresql://{quote_plus(details['user'])}:{quote_plus(details['password'])}" f"@{details['host']}:{details['port']}/{details['dbname']}?sslmode={details['sslmode']}" ) else: logger.info("Connecting to local PostgreSQL server based on .env file...") load_dotenv() POSTGRES_USERNAME = os.environ.get("DBUSER") POSTGRES_PASSWORD = os.environ.get("DBPASS") POSTGRES_HOST = os.environ.get("DBHOST") POSTGRES_DATABASE = os.environ.get("DBNAME") POSTGRES_PORT = os.environ.get("DBPORT", 5432) sql_url = f"postgresql://{POSTGRES_USERNAME}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" engine = create_engine(sql_url)
3. Examiner la commande de démarrage
Azure App Service nécessite une commande de démarrage pour exécuter votre application FastAPI. Le modèle azd définit cette commande pour vous dans votre instance App Service.
Dans le fichier
infra/resources.bicep
, recherchez la déclaration de votre site web, puis recherchez le paramètre pourappCommandLine
. Il s’agit du paramètre de votre commande de démarrage.resource web 'Microsoft.Web/sites@2022-03-01' = { name: '${prefix}-app-service' location: location tags: union(tags, { 'azd-service-name': 'web' }) kind: 'app,linux' properties: { serverFarmId: appServicePlan.id siteConfig: { alwaysOn: true linuxFxVersion: 'PYTHON|3.11' ftpsState: 'Disabled' appCommandLine: 'src/entrypoint.sh' minTlsVersion: '1.2' } httpsOnly: true } identity: { type: 'SystemAssigned' }
La commande de démarrage exécute le fichier src/entrypoint.sh. Examinez le code de ce fichier pour comprendre les commandes exécutées par App Service pour démarrer votre application :
#!/bin/bash set -e python3 -m pip install --upgrade pip python3 -m pip install -e src python3 src/fastapi_app/seed_data.py python3 -m gunicorn fastapi_app:app -c src/gunicorn.conf.py
Pour en savoir plus sur la configuration et le démarrage des applications dans App Service, consultez Configurer une application Python Linux pour Azure App Service.
4. Générer le schéma de la base de données
Vous avez peut-être remarqué dans la section précédente que entrypoint.sh contient la ligne suivante : python3 src/fastapi_app/seed_data.py
. Cette commande migre votre base de données. Dans l’exemple d’application, elle garantit uniquement que les tables appropriées sont créées dans votre base de données. Elle ne remplit pas ces tables avec des données.
Dans cette section, vous allez exécuter cette commande manuellement à des fins de démonstration. Avec la base de données PostgreSQL protégée par le réseau virtuel, le moyen le plus simple d’exécuter la commande est de le faire dans une session SSH avec le conteneur App Service.
Utilisez la valeur de l’instance App Service que vous avez notée précédemment dans la sortie azd et le modèle indiqué ci-dessous afin de construire l’URL de la session SSH et d’y accéder dans le navigateur :
https://<app-name>.scm.azurewebsites.net/webssh/host
Dans le terminal SSH, exécutez
python3 src/fastapi_app/seed_data.py
. Si cela réussit, App Service se connecte avec succès à la base de données.Remarque
Seules les modifications apportées aux fichiers dans
/home
peuvent être conservées au-delà des redémarrages d’application. Les modifications effectuées en dehors de/home
ne sont pas conservées.
5. Accéder à l’application
Dans la sortie azd, retrouvez l’URL de votre application et accédez-y dans le navigateur. L’URL ressemble à ceci dans la sortie AZD :
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Ajoutez quelques restaurants à la liste.
Félicitations, vous exécutez une application web Flask dans Azure App Service, avec une connectivité sécurisée vers Azure Database pour PostgreSQL.
6. Diffuser les journaux de diagnostic
Azure App Service peut capturer les journaux pour vous aider à diagnostiquer les problèmes liés à votre application. Pour plus de commodité, le modèle azd a déjà activé la journalisation sur le système de fichiers local.
L’exemple d’application utilise le module de journalisation de la bibliothèque Standard Python pour générer des journaux. L’exemple d’application inclut des appels à l’enregistreur d’événements, comme indiqué ci-dessous.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Utilisez les valeurs de l’ID d’abonnement (GUID), du Groupe de ressources et de l’instance App Service que vous avez notées précédemment dans la sortie azd et le modèle indiqué ci-dessous afin de construire l’URL pour diffuser les journaux App Service et d’y accéder dans le navigateur.
https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
L’affichage des événements dans les journaux de diagnostic peut prendre plusieurs minutes. Apprenez-en davantage sur la journalisation dans les applications Python dans la série sur la configuration d’Azure Monitor pour votre application Python.
7. Nettoyer les ressources
Pour supprimer toutes les ressources Azure dans le présent environnement de déploiement, exécutez azd down
.
azd down
Résolution des problèmes
Vous allez trouver ci-dessous les problèmes que vous pouvez rencontrer lorsque vous travaillez avec ce tutoriel et les étapes à suivre pour les résoudre.
Je n’arrive pas à me connecter à la session SSH
Si vous ne pouvez pas vous connecter à la session SSH, c’est que l’application elle-même n’a pas pu démarrer. Pour plus d’informations, consultez les journaux de diagnostic. Par exemple, si vous voyez une erreur du type KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'
, cela peut signifier que la variable d’environnement est manquante (vous pouvez avoir supprimé le paramètre de l’application).
Je reçois une erreur lors de l’exécution des migrations de bases de données
Si vous rencontrez des erreurs liées en lien avec la connexion à la base de données, vérifiez si les paramètres de l’application (AZURE_POSTGRESQL_CONNECTIONSTRING
) ont été modifiés. Sans cette chaîne de connexion, la commande de migration ne peut pas communiquer avec la base de données.
Forum aux questions
- Quel est le coût de cette configuration ?
- Comment se connecter au serveur PostgreSQL sécurisé derrière le réseau virtuel avec d’autres outils ?
- Comment le développement d’applications locales fonctionne-t-il avec GitHub Actions ?
Quel est le coût de cette configuration ?
Le prix des ressources créées est calculé comme suit :
- Le plan App Service est créé au niveau De base. Il peut faire l’objet d’un scale-up ou d’un scale-down. Consultez la tarification App Service.
- Le serveur flexible PostgreSQL est créé dans le plus bas niveau burstable Standard_B1ms, avec la taille minimale de stockage qui peut être augmentée ou diminuée. Consultez Tarifs d’Azure Database pour PostgreSQL.
- Le réseau virtuel n’entraîne pas de frais, sauf si vous configurez des fonctionnalités supplémentaires, telles que le peering. Consultez Tarification du réseau virtuel Azure.
- La zone DNS privée entraîne des frais minimes. Consultez la tarification d’Azure DNS.
Comment se connecter au serveur PostgreSQL sécurisé derrière le réseau virtuel avec d’autres outils ?
- Pour un accès de base à partir d’un outil en ligne de commande, vous pouvez exécuter
psql
à partir du terminal SSH de l’application. - Pour vous connecter à partir d’un outil de bureau, votre ordinateur doit se trouver dans le réseau virtuel. Par exemple, il peut s’agir d’une machine virtuelle Azure connectée à l’un des sous-réseaux ou d’une machine dans un réseau local disposant d’une connexion VPN de site à site avec le réseau virtuel Azure.
- Vous pouvez également intégrer Azure Cloud Shell au réseau virtuel.
Comment le développement d’applications locales fonctionne-t-il avec GitHub Actions ?
Grâce au fichier de flux de travail généré automatiquement à partir d’App Service comme exemple, chaque git push
démarre une nouvelle exécution de build et de déploiement. À partir d’un clone local du référentiel GitHub, vous effectuez les mises à jour souhaitées et poussez vers GitHub. Par exemple :
git add .
git commit -m "<some-message>"
git push origin main
Étapes suivantes
Passez au tutoriel suivant pour apprendre à sécuriser votre application avec un domaine personnalisé et un certificat.
Découvrez comment App Service exécute une application Python :