Partager via


Déployer une application web Python (Django ou Flask) avec PostgreSQL dans Azure

Dans ce tutoriel, vous allez déployer une application web Python pilotée par les données (Django ou Flask) 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.

Diagramme d’architecture montrant un App Service avec une base données PostgreSQL dans Azure.

Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :

Passer à la fin

Avec Azure Developer CLI installé, vous pouvez déployer un exemple d’application entièrement configuré présenté dans ce tutoriel et le voir s’exécuter dans Azure. Exécutez simplement les commandes suivantes dans un répertoire de travail vide :

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

Exemple d’application

Des exemples d’applications Python utilisant l’infrastructure Flask et Django sont fournis pour vous aider à suivre ce tutoriel. Pour les déployer sans les exécuter localement, ignorez cette partie.

Pour lancer l’application localement, assurez-vous que Python 3.7 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-flask-postgresql-sample-app
cd msdocs-flask-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 :

pip install -r requirements.txt

Exécutez l’exemple d’application avec la commande suivante :

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

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 :

  1. Entrez « base de données d’application web » dans la barre de recherche située en haut du portail Azure.
  2. 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.

Capture d’écran montrant comment utiliser la zone de recherche dans la barre d’outils supérieure pour trouver l’Assistant de création Application web + Base de données (Flask).

Étape 2 : Dans la page Créer une application web + base de données, remplissez le formulaire comme suit.

  1. Groupe de ressources → Sélectionnez Créer et utilisez le nom msdocs-python-postgres-tutorial.
  2. Région → Toute région Azure près de chez vous.
  3. Nommsdocs-python-postgres-XYZ, où XYZ est un ensemble de trois caractères aléatoires quelconques. Ce nom doit être unique au sein d’Azure.
  4. Runtime stackPython 3.10.
  5. Base de donnéesPostgreSQL - 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.
  6. Plan d’hébergementDe base. Vous pourrez ultérieurement effectuer un scale-up vers un niveau tarifaire de production.
  7. Sélectionnez Revoir + créer.
  8. Une fois la validation terminée, sélectionnez Créer.

Capture d’écran montrant comment configurer une nouvelle application et une nouvelle base de données dans l’Assistant Application web + Base de données (Flask).

É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.

Capture d’écran du processus de déploiement effectué (Flask).

2. Secrets de la connexion sécurisée

L’Assistant Création a déjà généré la chaîne de connectivité de base de données pour vous en tant que paramètre d’application. Toutefois, la meilleure pratique de sécurité consiste à éliminer complètement les secrets d’App Service. Vous déplacez vos secrets vers un coffre de clés, et remplacer votre paramètre d’application par une référence Key Vault à l’aide des connecteurs de service.

Étape 1 : Récupérer la chaîne de connexion existante

  1. Dans le menu de gauche de la page App Service, sélectionnez Paramètres > Variables d’environnement.
  2. Sélectionnez AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Dans Ajouter/modifier le paramètre d’application, dans le champ Valeur, recherchez la partie Password= à la fin de la chaîne.
  4. Copiez la chaîne de mot de passe après Password= pour une utilisation ultérieure. Ce paramètre d’application vous permet de vous connecter à une base de données Postgres sécurisée derrière un point de terminaison privé. Toutefois, le secret est enregistré directement dans l’application App Service, ce qui n’est pas le meilleur. Vous allez changer ça.

Une capture d’écran montrant comment voir la valeur d’un paramètre de l’application.

Étape 2 : Créer un coffre de clés pour la gestion sécurisée des secrets

  1. Dans la barre de recherche supérieure, tapez « coffre de clés », puis sélectionnez Place de marché>Coffre de clés.
  2. Dans Groupe de ressources, sélectionnez msdocs-python-postgres-tutorial.
  3. Dans nom du coffre de clés, tapez un nom composé uniquement de lettres et de chiffres.
  4. Dans Région, définissez-la sur le même emplacement en tant que groupe de ressources.

Une capture d’écran montrant comment créer un coffre de clés.

Étape 3 : Sécuriser le coffre de clés avec un point de terminaison privé

  1. Sélectionnez l’onglet Réseau.
  2. Désélectionnez Activer l’accès public.
  3. Séllectionnez Créer un point de terminaison privé.
  4. Dans Groupe de ressources, sélectionnez msdocs-python-postgres-tutorial.
  5. Dans Nom, entrez un nom pour le point de terminaison privé composé uniquement de lettres et de chiffres.
  6. Dans Région, définissez-la sur le même emplacement en tant que groupe de ressources.
  7. Dans la boîte de dialogue, dans Emplacement,sélectionnez le même emplacement que votre application App Service.
  8. Dans Groupe de ressources, sélectionnez msdocs-python-postgres-tutorial.
  9. Dans Nom, tapez msdocs-python-postgres-XYZVaultEndpoint.
  10. Dans Réseau virtuel, sélectionnez msdocs-python-postgres-XYZVnet.
  11. Dans Sous-réseau, msdocs-python-postgres-XYZSubnet.
  12. Cliquez sur OK.
  13. Sélectionnez Vérifier + créer, puis sélectionnez Créer. Attendez que le déploiement du coffre de clés se termine. Vous devez voir « Votre déploiement est terminé ».

Capture d’écran montrant comment sécuriser un coffre de clés avec un point de terminaison privé.

Étape 4 : Configurer le connecteur de services

  1. Dans la principale barre de recherche, tapez msdocs-python-postgres, puis sélectionnez la ressource App Service appelée msdocs-python-postgres-XYZ.
  2. Sur la page App Service, dans le menu de gauche, sélectionnez Paramètres > Connecteur de services. Il existe déjà un connecteur, que l’Assistant création d’application a créé pour vous.
  3. Cochez la case en regard du connecteur, puis sélectionnez Modifier.
  4. Sous l’onglet Informations de base, sous Base de données PostgreSQL, sélectionnez la base de données PostgreSQL créée.
  5. Sélectionnez l’onglet Authentification.
  6. Dans Mot de passe, collez le mot de passe que vous avez copié précédemment.
  7. Sélectionnez Stocker le secret dans Key Vault.
  8. Sous Connexion du coffre de clés, sélectionnez Créer. Une boîte de dialogue Créer une connexion est ouverte en haut de la boîte de dialogue d’édition.

Une capture d’écran montrant comment modifier un connecteur de service avec une connexion de coffre de clés.

Étape 5 : Établir la connexion Key Vault

  1. Dans la boîte de dialogue Créer une connexion pour la connexion Key Vault, dans Key Vault, sélectionnez le coffre de clés que vous avez créé précédemment.
  2. Sélectionnez Vérifier + créer.
  3. Lorsque la validation terminée, sélectionnez Créer.

Une capture d’écran montrant comment configurer un connecteur de service de coffre-fort.

Étape 6 : Finaliser la configuration du connecteur de services

  1. Vous revenez dans la boîte de dialogue d’édition pour defaultConnector. Sous l’onglet Authentification, attendez que le connecteur de coffre de clés soit créé. Une fois l’opération terminée, la liste déroulante Connexion Key Vault effectue automatiquement la sélection.
  2. Sélectionnez Suivant : Réseau.
  3. Cliquez sur Enregistrer. Attendez que la notification Mise à jour réussie s’affiche.

Une capture d’écran montrant la connexion du coffre de clés sélectionnée dans defaultConnector.

Étape 7 : Vérifier l’intégration de Key Vault

  1. Dans le menu de gauche, sélectionnez à nouveau Paramètres > Variables d’environnement.
  2. À côté d’AZURE_POSTGRESQL_CONNECTIONSTRING, sélectionnez Afficher la valeur. La valeur doit être @Microsoft.KeyVault(...), ce qui signifie qu’il s’agit d’une référence coffre de clés, car le secret est maintenant managé dans le coffre de clés.

Capture d’écran montrant comment afficher la valeur de la variable d’environnement MySQL dans Azure.

Pour résumer, le processus impliquait la récupération de la chaîne de connexion PostgreSQL à partir des variables d’environnement d’App Service, la création d’un coffre de clés Azure Key Vault pour sécuriser la gestion des secrets avec un accès privé et la mise à jour du connecteur de services pour stocker le mot de passe dans le coffre de clés. Une connexion sécurisée entre l’application App Service et le coffre de clés a été établie à l’aide d’une identité managée affectée par le système, et la configuration a été vérifiée en confirmant que la chaîne de connexion utilise une référence Key Vault.

Vous rencontrez des problèmes ? Examinez la section Résolution des problèmes.


3. Déployer l’exemple de code

Dans cette étape, vous allez configurer 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 :

  1. Connectez-vous à votre compte GitHub.
  2. Accédez à https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. Sélectionnez Fork.
  4. Sélectionnez Créer la duplication.

Capture d’écran montrant comment créer une duplication (fork) du même exemple de dépôt GitHub (Flask).

Étape 2 : Dans la page GitHub, ouvrez Visual Studio Code dans le navigateur en appuyant sur la touche ..

Capture d’écran montrant comment ouvrir l’expérience de navigateur Visual Studio Code dans GitHub (Flask).

Étape 3 :Dans Visual Studio Code, ouvrez azureproject/production.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.

Capture d’écran montrant Visual Studio Code dans le navigateur et un fichier ouvert (Flask).

Étape 4 : De retour dans la page App Service, sélectionnez Centre de déploiement dans le menu de gauche.

Capture d’écran montrant comment ouvrir le centre de déploiement dans App Service (Flask).

Étape 5 : Dans la page Centre de déploiement :

  1. Dans Source, sélectionnez GitHub. Par défaut, GitHub Actions est sélectionné en tant que fournisseur de build.
  2. Connectez-vous à votre compte GitHub et suivez l’invite pour autoriser Azure.
  3. Dans Organisation, sélectionnez votre compte.
  4. Dans Référentiel, sélectionnez msdocs-flask-postgresql-sample-app.
  5. Dans Branche, sélectionnez principal.
  6. Conservez l’option sélectionnée par défaut pour Ajouter un flux de travail.
  7. Sous Type d’authentification, sélectionnez Identité affectée par l’utilisateur.
  8. 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.

Capture d’écran montrant comment configurer les pratiques CI/CD avec GitHub Actions (Flask).

Étape 6 : Dans la page Centre de déploiement :

  1. Sélectionnez Journaux d’activité. Une exécution de déploiement a déjà démarré.
  2. Dans l’élément de journal de l’exécution du déploiement, sélectionnez Générer/Déployer des journaux.

Capture d’écran montrant comment ouvrir les journaux de déploiement dans le centre de déploiement (Flask).

É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.

Capture d’écran montrant une exécution GitHub en cours (Flask).

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

Avec la base de données PostgreSQL protégée par le réseau virtuel, le moyen le plus simple d’exécuter les migrations de base de données Flask 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,

  1. Sélectionnez SSH.
  2. Sélectionnez Go.

Capture d’écran montrant comment ouvrir l’interpréteur de commandes SSH de votre application à partir du portail Azure (Flask).

Étape 2 : Dans le terminal SSH, exécutez flask db upgrade. 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.

Capture d’écran montrant les commandes à exécuter dans l’interpréteur de commandes SSH et ce qu’elles font (Flask).

5. Accéder à l’application

Étape 1 : Dans la page App Service :

  1. Dans le menu de gauche, sélectionnez Vue d’ensemble.
  2. Sélectionnez l’URL de votre application. Vous pouvez également naviguer directement vers https://<app-name>.azurewebsites.net.

Capture d’écran montrant comment lancer une application App Service à partir du portail Azure (Flask).

É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.

Capture d’écran de l’application web Flask avec PostgreSQL s’exécutant dans Azure montrant des restaurants et critiques de restaurants (Flask).

6. Diffuser les journaux de diagnostic

Azure App Service capture tous les messages qui s’affichent sur la console pour vous aider à diagnostiquer les problèmes liés à votre application. L’exemple d’application inclut des instructions print() pour montrer cette fonctionnalité, comme ci-dessous.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Étape 1 : Dans la page App Service :

  1. Dans le menu de gauche, sélectionnez Journaux App Service.
  2. Sous Application Logging, sélectionnez Système de fichiers.
  3. Dans le menu principal, sélectionnez Enregistrer.

Capture d’écran montrant comment activer les journaux natifs dans App Service à partir du portail Azure.

É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.

Capture d’écran montrant comment afficher le flux de journal dans le portail Azure.

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 :

  1. Entrez le nom du groupe de ressources.
  2. Sélectionnez le groupe de ressources.

Capture d’écran montrant comment rechercher un groupe de ressources dans le portail Azure et y accéder.

Étape 2 : Sur la page Groupe de ressources, sélectionnez Supprimer un groupe de ressources.

Capture d’écran montrant l’emplacement du bouton Supprimer le groupe de ressources dans le portail Azure.

Étape 3 :

  1. Entrer le nom du groupe de ressources pour confirmer la suppression.
  2. Sélectionnez Supprimer.

Capture d’écran montrant la boîte de dialogue de confirmation de la suppression d’un groupe de ressources sur le Portail Azure. :

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.

  1. 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-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    Cette branche clonée est votre point de départ. Il contient une simple application Flask de lecteur de données.

  2. Depuis la racine du référentiel, exécutez azd init.

    azd init --template python-app-service-postgresql-infra
    
  3. 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.
  4. 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 déjà connecté à Azure, le navigateur s’ouvre et vous y invite. La commande azd up vous invite également à sélectionner l’abonnement et l’emplacement souhaités sur lesquels effectuer le déploiement.

    azd up
    

    L’exécution de la commande azd up peut prendre quelques instants. Il compile et déploie également le code de votre application, mais vous allez modifier votre code ultérieurement pour utiliser App Service. 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.

2. Utiliser la chaîne de connexion de base de données

Le modèle azd utilisé a généré les variables de connectivité pour vous en tant que paramètres d’application et les restitue sur le terminal pour plus de facilité. Les paramètres d’application sont un moyen de préserver les secrets de connexion hors de votre référentiel de code.

  1. Dans la sortie azd, retrouvez les paramètres de l’application et les paramètres AZURE_POSTGRESQL_CONNECTIONSTRING et AZURE_REDIS_CONNECTIONSTRING. Pour préserver la sécurité des secrets, seuls les noms des paramètres sont affichés. Ils ressemblent à ceci dans la sortie azd :

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRING contient la chaîne de connexion vers la base de données Postgres dans Azure et AZURE_REDIS_CONNECTIONSTRING contient la chaîne de connexion vers le cache Redis dans Azure. Vous devez les utiliser dans votre code pour vous y connecter. Ouvrez azureproject/production.py, supprimez les marques de commentaire dans les lignes suivantes et enregistrez le fichier :

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    Votre code d’application est désormais configuré pour se connecter à la base de données PostgreSQL dans Azure. Si vous le souhaitez, ouvrez app.py et voyez comment la variable d’environnement DATABASE_URI est utilisée.

  3. Dans le terminal, exécutez azd deploy.

    azd deploy
    

4. Générer le schéma de la base de données

Avec la base de données PostgreSQL protégée par le réseau virtuel, le moyen le plus simple d’exécuter les migrations de base de données Flask est de le faire dans une session SSH avec le conteneur App Service.

  1. Dans la sortie azd, retrouvez l’URL de la session SSH et accédez-y dans le navigateur. Cela ressemble à ceci dans la sortie :

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. Dans le terminal SSH, exécutez flask db upgrade. Si cela réussit, App Service se connecte avec succès à la base de données.

    Capture d’écran montrant les commandes à exécuter dans l’interpréteur de commandes SSH et ce qu’elles font (Flask).

    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

  1. 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/
     
  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

Azure App Service peut capturer les journaux de la console pour vous aider à diagnostiquer les problèmes liés à votre application. Pour plus de facilité, le modèle azd a déjà activé la journalisation sur le système de fichiers local, ainsi que leur expédition vers un espace de travail Log Analytics.

L’exemple d’application contient des instructions print() pour montrer cette fonctionnalité, comme illustré dans l’extrait suivant.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Dans la sortie azd, retrouvez le lien pour diffuser en continu les journaux App Service et accédez-y dans le navigateur. Le lien ressemble à ceci dans la sortie azd :

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

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 ?

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

Comment l’exemple Django est-il configuré pour fonctionner sur Azure App Service ?

Notes

Si vous suivez ce tutoriel avec votre propre application, consultez la description du fichier requirements.txt dans le fichier README.md de chaque projet (Flask, Django) pour voir les packages dont vous aurez besoin.

L’exemple d’application Django configure les paramètres dans le fichier azureproject/production.py afin qu’il puisse s’exécuter dans Azure App Service. Ces modifications sont courantes pour déployer Django en production et non spécifiques à App Service.

  • Django valide l’en-tête HTTP_HOST dans les requêtes entrantes. L’exemple de code utilise la variable d’environnement WEBSITE_HOSTNAME dans App Service pour ajouter le nom de domaine de l’application au paramètre ALLOWED_HOSTS de Django.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • Django ne prend pas en charge le traitement des fichiers statiques en production. Pour ce tutoriel, vous utilisez WhiteNoise pour permettre le traitement des fichiers. Le package WhiteNoise a déjà été installé avec requirements.txt, et son intergiciel est ajouté à la liste.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Ensuite, les paramètres de fichier statique sont configurés en fonction de la documentation Django.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Pour plus d’informations, consultez Paramètres de production des applications Django.

É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 :