Partage via


Tutoriel : Générer une application web Spring Boot Java avec Azure App Service sur Linux et Azure Cosmos DB

Dans ce tutoriel, vous allez apprendre à créer, à configurer et à déployer une application Spring Boot sécurisée dans Azure App Service qui se connecte à une base de données MongoDB dans Azure (en fait, une base de données Cosmos DB avec l’API MongoDB). Lorsque vous terminez, vous aurez une application Java SE fonctionnant sur Azure App Service sur Linux.

Capture d’écran de l’application Spring Boot stockant les données dans Cosmos DB.

Dans ce tutoriel, vous allez apprendre à :

  • Créer une architecture sécurisée par défaut pour Azure App Service et Azure Cosmos DB avec l’API MongoDB.
  • Sécuriser les secrets de connexion à l’aide d’une identité managée et de références Key Vault.
  • Déployer un exemple d’application Spring Boot sur App Service à partir d’un dépôt GitHub.
  • Accéder aux paramètres d’application App Service dans le code de l’application.
  • Effectuer des mises à jour et redéployer le code de l’application.
  • Diffuser en continu des journaux de diagnostic à partir d’App Service.
  • Gérer l’application dans le Portail Azure.
  • Approvisionner la même architecture et déployer avec Azure Developer CLI.
  • Optimiser votre workflow de développement avec GitHub Codespaces et GitHub Copilot.

Prérequis

  • Compte Azure avec un abonnement actif. Si vous ne possédez pas de compte Azure, vous pouvez créer un compte gratuit.
  • Un compte GitHub. Vous pouvez aussi en obtenir un gratuitement.
  • Connaissance de Java avec le développement Spring Framework.
  • (Facultatif) Pour essayer GitHub Copilot, un compte GitHub Copilot. Un essai gratuit de 30 jours est disponible.
  • 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 Java avec le développement Spring Framework.
  • (Facultatif) Pour essayer GitHub Copilot, un compte GitHub Copilot. Un essai gratuit de 30 jours est disponible.

Passer à la fin

Vous pouvez déployer rapidement l’exemple d’application dans ce tutoriel et le voir s’exécuter dans Azure. Exécutez simplement les commandes suivantes dans le Azure Cloud Shell, puis suivez l’invite :

mkdir msdocs-spring-boot-mongodb-sample-app
cd msdocs-spring-boot-mongodb-sample-app
azd init --template msdocs-spring-boot-mongodb-sample-app
azd up

1. Exécution de l'exemple

Tout d’abord, vous configurez un exemple d’application pilotée par les données comme point de départ. Pour plus de commodité, l’exemple de référentiel inclut une configuration de conteneur de développement. Le conteneur de développement dispose de tout ce dont vous avez besoin pour développer une application, notamment la base de données MongoDB, le cache et toutes les variables d’environnement nécessaires par l’exemple d’application. Le conteneur de développement peut s’exécuter dans un codespace GitHub, ce qui signifie que vous pouvez exécuter l’exemple sur n’importe quel ordinateur avec un navigateur web.

Étape 1 : Dans une nouvelle fenêtre de navigateur :

  1. Connectez-vous à votre compte GitHub.
  2. Accédez à https://github.com/Azure-Samples/msdocs-spring-boot-mongodb-sample-app/fork.
  3. Désélectionnez Copier la branche principale uniquement. Vous voulez toutes les branches.
  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.

Étape 2 : dans la fourche GitHub :

  1. Sélectionnez principal>starter-no-infra pour la branche de démarrage. Cette branche contient uniquement l’exemple de projet et aucun fichier ou configuration lié à Azure.
  2. Sélectionnez Code>Créer un codespace sur starter-no-infra. Il faut quelques minutes pour configurer le codespace.

Capture d’écran montrant comment créer un codespace dans GitHub.

Étape 3 : Dans le terminal codespace :

  1. Exécutez mvn package spring-boot:run.
  2. Lorsque la notification Your application running on port 8080 is available. s’affiche, sélectionnez Ouvrir dans le navigateur. Vous devez voir l’exemple d’application dans un nouvel onglet du navigateur. Pour arrêter le serveur Jetty, tapez Ctrl+C.

Capture d’écran montrant comment exécuter l’exemple d’application à l’intérieur du codespace GitHub.

Conseil

Vous pouvez interroger GitHub Copilot à propos de ce référentiel. Par exemple :

  • @workspace Que fait ce projet ?
  • @workspace Comment l’application se connecte-t-elle à la base de données ?
  • @workspace Que fait le dossier .devcontainer ?

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

2. Créer App Service et Cosmos DB

Vous créez au préalable 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 Cosmos DB. Pour le processus de création, vous devez spécifier :

  • Le nom de l’application web. Il est utilisé dans le cadre du nom DNS de votre application sous la forme https://<app-name>-<hash>.<region>.azurewebsites.net.
  • La Région du monde où l’application sera physiquement exécutée. Il est également utilisé dans le cadre du nom DNS de votre application.
  • La Pile du runtime de l’application. C’est là que vous sélectionnez la version de Java à 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.

É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-spring-cosmosdb-tutorial.
  2. Région : toute région Azure près de chez vous.
  3. Nom : msdocs-spring-cosmosdb-XYZXYZ correspond à trois caractères aléatoires. Ce nom doit être unique au sein d’Azure.
  4. Pile d’exécution : Java 21.
  5. Pile de serveurs web Java : Java SE (serveur web incorporé).
  6. Moteur : Cosmos DB API pour MongoDB. Cosmos DB est une base de données NoSQL, relationnelle et vectorielle complètement managée en tant que service.
  7. Nom du plan d’hébergement : Basic. Quand vous êtes prêt, vous pouvez effectuer un scale-up vers un niveau tarifaire de production.
  8. Sélectionnez Revoir + créer.
  9. 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.

É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 Cosmos DB : accessible uniquement derrière son point de terminaison privé. Une base de données est créée pour vous sur le compte de base de données.
  • Points de terminaison privés : points de terminaison d’accès pour le serveur de base de données et le cache Redis dans le réseau virtuel.
  • Zones DNS privées : activer la résolution DNS du serveur de base de données et du cache Redis dans le réseau virtuel.

Capture d’écran montrant le processus de déploiement effectué.

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

3. Secrets de la connexion sécurisée

L’Assistant Création a déjà généré la chaîne de connectivité 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 allez déplacer vos secrets vers un coffre de clés et remplacer votre paramètre d’application par une référence Key Vault à l’aide de connecteurs de service.

Étape 1 : Dans la page App Service :

  1. Dans le menu de gauche, sélectionnez Paramètres > Variables d’environnement.
  2. En regard de AZURE_COSMOS_CONNECTIONSTRING, sélectionnez Afficher la valeur. Cette chaîne de connexion vous permet de vous connecter à la base de données Cosmos DB 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-spring-cosmosdb-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 l’exemple d’emplacement en tant que groupe de ressources.

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

Étape 3 :

  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-spring-cosmosdb-tutorial.
  5. Dans nom du coffre de clés, tapez un nom composé uniquement de lettres et de chiffres.
  6. Dans région, définissez-la sur l’exemple d’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-spring-cosmosdb-tutorial.
  9. Sous Nom, tapez msdocs-spring-cosmosdb-XYZVvaultEndpoint.
  10. Dans Réseau virtuel, sélectionnez msdocs-spring-cosmosdb-XYZVnet.
  11. Dans Sous-réseau, msdocs-spring-cosmosdb-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 :

  1. Dans la barre de recherche supérieure, tapez msdocs-spring-cosmosdb, puis la ressource App Service appelée msdocs-spring-cosmosdb-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 De base, définissez le type de client sur SpringBoot. Cette option crée les variables d’environnement spécifiques à Spring Boot pour vous.
  5. Sélectionnez l’onglet Authentification.
  6. Sélectionnez Stocker le secret dans Key Vault.
  7. 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 : dans la boîte de dialogue Créer une connexion pour la connexion du coffre de clés :

  1. Dans Coffre de clés, sélectionnez le coffre de clés que vous avez créé précédemment.
  2. Sélectionnez Vérifier + créer. Vous devriez voir que l’identité managée attribuée au système est définie sur Sélectionnée.
  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 : Vous revenez dans la boîte de dialogue d’édition pour defaultConnector.

  1. 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. Sélectionnez Configurer des règles de pare-feu pour activer l’accès au service cible. Si vous voyez le message « Aucun point de terminaison privé sur le service cible », ignorez-le. L’Assistant création d’application a déjà sécurisé la base de données Cosmos DB avec un point de terminaison privé.
  4. 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 vos modifications :

  1. À partir du menu de gauche, sélectionnez Variables d’environnement de nouveau.
  2. Vérifiez que le paramètre d’application spring.data.mongodb.uri existe. Le connecteur par défaut l’a généré pour vous, et votre application Spring Boot utilise déjà la variable.
  3. En regard du paramètre d’application, 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.

Une capture d’écran montrant comment afficher la valeur de la variable d’environnement Spring Boot dans Azure.

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

4. 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 vers votre référentiel GitHub lance l’action de build et de déploiement.

Étape 1 : Dans le menu de gauche, sélectionnez Déploiement>Centre de déploiement.

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

Étape 2 : 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-spring-boot-mongodb-sample-app.
  5. Dans Branche, sélectionnez starter-no-infra. Il s’agit de la même branche que celle dans laquelle vous avez travaillé avec votre exemple d’application, sans fichiers ou configuration liés à Azure.
  6. Pour le Type d’authentification, sélectionnez Identité affectée par l’utilisateur.
  7. 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. Par défaut, le centre de déploiement crée une identité affectée par l’utilisateur pour que le flux de travail s’authentifie à l’aide de Microsoft Entra (authentification OIDC). Pour des options d’authentification alternatives, consultez Déployer sur App Service à l’aide de GitHub Actions.

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

Étape 3 :

  1. Sélectionnez l’onglet Journaux d’activité. Vérifiez qu’un nouveau déploiement est déjà exécuté, mais que l’état est Échec.
  2. Sélectionnez Build/Déployer les journaux. Un onglet de navigateur s’ouvre sur l’onglet Actions de votre référentiel de fourche dans GitHub. Dans Annotations, vous voyez l’erreur The string 'java21' is not valid SeVer notation for a Java version. Si vous le souhaitez, sélectionnez l’échec de l’étape build de la page pour obtenir plus d’informations.

Une capture d’écran montrant une erreur dans la page Journaux du Centre de déploiement.

Étape 4 : L’erreur indique qu’un problème s’est produit pendant le flux de travail GitHub. Pour résoudre ce problème, extrayez d’abord les dernières modifications dans votre espace de code. De retour dans le codespace GitHub de votre exemple de duplication, exécutez git pull origin starter-no-infra. Cela extrait le fichier de workflow nouvellement validé dans votre espace de code.

Capture d’écran montrant git pull à l’intérieur d’un codespace GitHub.

Étape 5 (Option 1 : avec GitHub Copilot) :

  1. Démarrez une nouvelle session de conversation en sélectionnant la vue Conversation, puis en sélectionnant +.
  2. Demandez, « @workspace Pourquoi j’obtiens l’erreur dans les actions GitHub : la chaîne « java21 » n’est pas valide notation SemVer pour une version Java. » ; Copilot peut vous donner une explication et même vous donner le lien vers le fichier du flux de travail que vous devez corriger.
  3. Ouvrez .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml dans l’Explorateur et apportez le correctif suggéré. GitHub Copilot ne vous donne pas la même réponse à chaque fois : il peut donc être nécessaire de poser d’autres questions pour affiner sa réponse. Pour obtenir des conseils, consultez Que puis-je faire avec GitHub Copilot dans mon codespace ?

Capture d’écran montrant comment poser une question dans une nouvelle session de conversation GitHub Copilot.

Étape 5 (Option 2 : sans GitHub Copilot) :

  1. Ouvrez .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml dans l’Explorateur et recherchez l’action setup-java@v4.
  2. Remplacez la valeur de java-version par '21'.

Une capture d’écran montrant un espace de code GitHub et le fichier de flux de travail autogénéré ouvert.

Étape 6 :

  1. Sélectionnez l’extension Contrôle de code source.
  2. Dans la zone de texte, tapez un message de commit comme Fix error in java-version. Vous pouvez également sélectionner , puis laisser GitHub Copilot générer un message de commit à votre place.
  3. Sélectionnez Valider, puis confirmez en choisissant Oui.
  4. Sélectionnez Synchroniser les modifications 1, puis confirmez en choisissant OK.

Capture d’écran montrant les modifications actuellement commitées et poussées vers GitHub.

Étape 7 : De retour dans la page Centre de déploiement du Portail Azure :

  1. Sous l’onglet Journaux d’activité, sélectionnez Actualiser. Une nouvelle exécution de déploiement a déjà démarré à partir de vos modifications commitées.
  2. Dans l’élément de journal de l’exécution du déploiement, sélectionnez l’entrée Générer/déployer des journaux avec l’horodatage le plus récent.

Une capture d’écran montrant un déploiement réussi dans la page Journaux du centre de déploiement.

Étape 8 : Vous êtes dirigé vers votre référentiel GitHub dans lequel vous voyez l’action GitHub 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é.

Une capture d’écran montrant une exécution réussie de GitHub.

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

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.

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

Étape 2 : Ajoutez quelques tâches à la liste. Félicitations, vous exécutez une application web dans Azure App Service, avec une connectivité sécurisée à Azure Cosmos DB.

Une capture d’écran de l’application web Spring Boot avec Cosmos DB s’exécutant dans Azure.

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

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 contient des instructions de journalisation Log4j standard pour montrer cette fonctionnalité, comme indiqué dans l’extrait suivant :

private static Logger logger = LoggerFactory.getLogger(TodoListController.class);

@Autowired
private TodoItemRepository todoItemRepository;

public TodoListController() {
}

/**
 * HTTP GET
 */
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
    logger.info("GET request access '/api/todolist/{}' path.", index);
    return todoItemRepository.findById(index).get();
}

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

En savoir plus sur la journalisation dans des applications Java dans des séries sur Activer Azure Monitor OpenTelemetry pour les applications .NET, Node.js, Java et Python.

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

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. Confirmez votre suppression en tapant le nom du groupe de ressources.
  2. Sélectionnez Supprimer.
  3. Confirmez à nouveau en choisissant Supprimer.

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

2. 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 Cosmos DB.

Le conteneur de développement dispose déjà d’Azure Developer CLI (AZD).

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

    azd init --template javase-app-service-cosmos-redis-infra
    
  2. 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>-<hash>.azurewebsites.net). Les caractères alphanumériques et les traits d’union sont autorisés.
  3. Connectez-vous à Azure en exécutant la commande azd auth login et en suivant l’invite :

    azd auth login
    
  4. Créez les ressources Azure nécessaires et déployer le code de l’application avec la commande azd up. Suivez l’invite pour sélectionner l’abonnement et l’emplacement souhaités pour les ressources Azure.

    azd up
    

    La commande azd up prend environ 15 minutes (le cache Redis prend le plus de temps). 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 créé sur 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.
    • Compte Azure Cosmos DB avec MongoDB API : accessible uniquement derrière son point de terminaison privé. Une base de données est créée pour vous sur le serveur.
    • Azure Cache pour Redis : Accessible uniquement à partir du réseau virtuel.
    • Coffre de clés : accessible uniquement derrière son point de terminaison privé. Permet de gérer les secrets de l’application App Service.
    • Points de terminaison privés : points de terminaison d’accès pour le coffre de clés, le serveur de base de données et le cache Redis dans le réseau virtuel.
    • Zones DNS privé : Activer la résolution DNS de la base de données Cosmos DB, du cache Redis et du coffre-fort 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.

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

3. Vérifier les chaînes de connexion

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 spring.data.mongodb.uri. Seuls les noms des paramètres sont affichés. Ils ressemblent à ceci dans la sortie AZD :

     App Service app has the following app settings:
             - spring.data.mongodb.uri
             - spring.data.mongodb.database
             - spring.redis.host
             - spring.redis.port
             - spring.redis.password
             - spring.redis.database
             - spring.redis.ssl
             - spring.cloud.azure.keyvault.secret.credential.managed_identity_enabled
             - spring.cloud.azure.keyvault.secret.endpoint
             - azure.keyvault.uri
             - azure.keyvault.scope
     

    spring.data.mongodb.uri contient l’URI de connexion à la base de données Cosmos DB dans Azure. Il s’agit d’une variable Spring Data standard, que votre application utilise déjà dans le fichier src/main/resources/application.properties.

  2. Dans l’Explorateur, accédez à src/main/resources/application.properties et voyez que votre application Spring Boot utilise déjà la variable spring.data.mongodb.uri pour accéder aux données.

  3. Pour vous faciliter la tâche, la sortie du modèle AZD vous indique le lien direct vers la page des paramètres de l’application. Recherchez le lien et ouvrez-le dans un nouvel onglet de navigateur.

    Si vous regardez la valeur de spring.data.mongodb.uri, elle devrait être @Microsoft.KeyVault(...), ce qui signifie qu’il s’agit d’une référence au coffre de clés, car le secret est géré dans le coffre de clés.

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

4. 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>-<hash>.azurewebsites.net/
     
  2. Ajoutez quelques tâches à la liste.

    Capture d’écran de l’application web Tomcat avec MySQL s’exécutant dans Azure qui montre des tâches.

    Félicitations, vous exécutez une application web dans Azure App Service, avec une connectivité sécurisée à Azure Cosmos DB.

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

5. Diffuser en continu 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 et expédie les journaux vers un espace de travail Log Analytics.

L’exemple d’application contient des instructions de journalisation Log4j standard pour montrer cette fonctionnalité, comme indiqué dans l’extrait suivant :

private static Logger logger = LoggerFactory.getLogger(TodoListController.class);

@Autowired
private TodoItemRepository todoItemRepository;

public TodoListController() {
}

/**
 * HTTP GET
 */
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
    logger.info("GET request access '/api/todolist/{}' path.", index);
    return todoItemRepository.findById(index).get();
}

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

En savoir plus sur la journalisation dans des applications Java dans des séries sur Activer Azure Monitor OpenTelemetry pour les applications .NET, Node.js, Java et Python.

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

6. Nettoyer les ressources

Pour supprimer toutes les ressources Azure dans le présent environnement de déploiement, exécutez azd down et suivez les invites.

azd down

Dépannage

Le portail de déploiement d’Azure Cosmos DB affiche un état de conflit

Selon votre abonnement et la région sélectionnée, vous pouvez voir que l’état du déploiement d’Azure Cosmos DB est Conflict ainsi que le message suivant dans les détails de l’opération :

Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.

L’erreur est probablement due à une limite de votre abonnement pour la région que vous sélectionnez. Essayez de choisir une autre région pour votre déploiement.

L’exemple d’application déployée n’affiche pas l’application de liste des tâches

Si vous voyez une page Hey, Java developers! au lieu de l’application de liste des tâches, App Service charge probablement le conteneur mis à jour à partir de votre déploiement de code le plus récent. Attendez quelques minutes, puis actualisez la page.

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 compte Azure Cosmos DB est créé dans le niveau serverless et il existe un petit coût associé à ce niveau. (cf. Tarification d’Azure Cosmos DB).
  • L’Azure Cache pour Redis est créé au niveau De base avec la taille minimale du cache. Ce niveau a un faible coût. Vous pouvez le mettre à l’échelle vers des niveaux de performances plus élevés pour une disponibilité, un clustering et d’autres fonctionnalités plus avancés. Consultez Prix Azure Cache pour Redis.
  • 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 exécuter la migration de base de données avec la base de données Cosmos DB derrière le réseau virtuel ?

Le conteneur Java SE dans App Service dispose déjà d’une connectivité réseau à Cosmos DB, mais ne contient aucun outil de migration ni d’autres outils MongoDB. Vous disposez de plusieurs options.

  • Exécutez automatiquement les migrations de base de données au démarrage de l’application, par exemple avec Hibernate et ou Flyway.
  • Dans la session SSHde l’application, installez un outil de migration comme CLI Flyway, puis exécutez le script de migration. N’oubliez pas que l’outil installé n’est pas conservé après le redémarrage d’une application, sauf s’il se trouve dans le répertoire /home.
  • Intégrer l’interpréteur de commandes cloud Azure au réseau virtuel et exécuter des migrations de base de données à partir de là.

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

Je n’ai pas les autorisations pour créer une identité affectée par l’utilisateur

Consultez Configurer le déploiement de GitHub Actions à partir du Centre de déploiement.

Que puis-je faire avec GitHub Copilot dans mon codespace ?

Vous pouvez peut-être remarquer que la vue de conversation GitHub Copilot était déjà là pour vous quand vous avez créé le codespace. Pour plus de commodité, nous incluons l’extension de conversation GitHub Copilot dans la définition du conteneur (consultez .devcontainer/devcontainer.json). Cependant, vous avez besoin d’un compte GitHub Copilot (essai gratuit de 30 jours disponible).

Quelques conseils à appliquer quand vous parlez à GitHub Copilot :

  • Dans une session de conversation unique, les questions et réponses s’appuient les unes sur les autres et vous pouvez ajuster vos questions pour affiner la réponse que vous obtenez.
  • Par défaut, GitHub Copilot n’a accès à aucun fichier de votre référentiel. Pour poser des questions sur un fichier, vous devez d’abord l’ouvrir dans l’éditeur.
  • Pour permettre à GitHub Copilot d’accéder à tous les fichiers du référentiel lors de la préparation de ses réponses, commencez votre question par @workspace. Pour plus d’informations, consultez Use the @workspace agent.
  • Dans la session de conversation, GitHub Copilot peut suggérer des modifications et même (avec @workspace) où apporter les modifications, mais il n’est pas autorisé à apporter les modifications pour vous. C’est à vous d’ajouter les changements suggérés et de les tester.

Étapes suivantes

En savoir plus sur l’exécution des applications Java sur App Service dans le guide du développeur.

Découvrez comment sécuriser votre application avec un domaine personnalisé et un certificat.