Eventos
Realizar el desafío de Microsoft Learn
19 nov, 23 - 10 ene, 23
Ignite Edition: cree aptitudes en Microsoft Azure y obtenga un distintivo digital el 10 de enero.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
En este tutorial, aprenderá a compilar, configurar e implementar una aplicación de Spring Boot segura en Azure App Service que se conecta a una base de datos de MongoDB en Azure (en realidad, una base de datos de Cosmos DB con MongoDB API). Cuando haya terminado, tendrá una aplicación Java SE que se ejecuta en Azure App Service en Linux.
En este tutorial, aprenderá a:
Puede implementar rápidamente la aplicación de ejemplo en este tutorial y verla en ejecución en Azure. Solo tiene que ejecutar los siguientes comandos en Azure Cloud Shell y seguir la solicitud:
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
En primer lugar, configurará una aplicación controlada por datos de ejemplo como punto inicial. Para lograr mayor comodidad, el repositorio de ejemplo incluye una configuración de contenedor de desarrollo. El contenedor de desarrollo tiene todo lo que necesita para desarrollar una aplicación, incluida la base de datos de MongoDB, la memoria caché y todas las variables de entorno necesarias para la aplicación de ejemplo. El contenedor de desarrollo puede ejecutarse en un codespace de GitHub, lo que significa que puede ejecutar el ejemplo en cualquier equipo con un explorador web.
Paso 1: En una nueva ventana del navegador:
Paso 2: en la bifurcación de GitHub:
Paso 3: En el terminal de codespace:
mvn package spring-boot:run
.Your application running on port 8080 is available.
, seleccione Abrir en explorador.
Debería ver la aplicación de ejemplo en una nueva pestaña del explorador. Para detener el servidor Jetty, escriba Ctrl
+C
.Sugerencia
Puede preguntar a GitHub Copilot sobre este repositorio. Por ejemplo:
¿Tiene problemas? Consulte la sección Solución de problemas.
En primer lugar, creará los recursos de Azure. Los pasos que se usan en este tutorial crean un conjunto de recursos seguros de valor predeterminado que incluyen App Service y Azure Cosmos DB. En el proceso de creación, especifique lo siguiente:
https://<app-name>-<hash>.<region>.azurewebsites.net
.Inicie sesión en Azure Portal y siga estos pasos para crear los recursos de Azure App Service.
Paso 1: En el portal Azure:
Paso 2: In the páginaCrear aplicación web + base de datos, rellene el formulario de la siguiente manera.
Step 3:La implementación tarda unos minutos en completarse. Una vez completada la implementación, seleccione el botón Ir al recurso. Se le dirigirá directamente a la aplicación App Service, pero se crean los siguientes recursos:
¿Tiene problemas? Consulte la sección Solución de problemas.
El Asistente para la creación generó la cadena de conectividad para usted como configuración de la aplicación. Sin embargo, el procedimiento recomendado de seguridad es mantener completamente los secretos fuera de App Service. Moverá los secretos al almacén de claves y cambiará la configuración de la aplicación a una referencia de Key Vault con la ayuda de los conectores de seguridad.
Paso 1. En la página App Service:
Paso 2: Creación de un almacén de claves para la administración segura de secretos.
Paso 3:
Paso 4:
Paso 5: En el cuadro de diálogo Crear de conexión para la conexión de Key Vault:
Paso 6: Vuelve al cuadro de diálogo de edición de defaultConnector.
Paso 7: Para comprobar los cambios:
@Microsoft.KeyVault(...)
, lo que significa que es un referencia del almacén de claves porque el secreto ahora se administra en el almacén de claves.¿Tiene problemas? Consulte la sección Solución de problemas.
En este paso, configurará la implementación de GitHub mediante Acciones de GitHub. Es solo una de las muchas maneras de implementar en App Service, pero también una excelente manera de disponer de integración continua en el proceso de implementación. De forma predeterminada, cada uno de los repositorios git push
de GitHub inicia la acción de compilación e implementación.
Paso 1: En el menú de la izquierda, seleccione Implementación>Centro de implementación.
Paso 2: En la página Centro de implementación:
.github/workflows
.
De manera predeterminada, el centro de implementación crea una identidad asignada por el usuario para que el flujo de trabajo se autentique mediante Microsoft Entra (autenticación OIDC). Para obtener opciones de autenticación alternativas, consulte Implementación en App Service mediante Acciones de GitHub.Paso 3:
The string 'java21' is not valid SeVer notation for a Java version
. Si lo desea, seleccione el paso error compilación en la página para obtener más información.Paso 4: El error muestra que algo salió mal durante el flujo de trabajo de GitHub. Para corregirlo, extraiga primero los cambios más recientes en el espacio de código. De nuevo en el espacio de código de GitHub de la bifurcación de ejemplo, ejecute git pull origin starter-no-infra
.
Esto extrae el archivo de flujo de trabajo recién confirmado en el codespace.
Paso 5 (Opción 1: con GitHub Copilot):
Paso 5 (Opción 2: sin GitHub Copilot):
setup-java@v4
acción.java-version
a '21'
.Paso 6:
Fix error in java-version
. O bien, seleccione y deje que GitHub Copilot genere un mensaje de confirmación de manera automática.Paso 7: De vuelta en la página Centro de implementación en Azure portal:
Paso 8: Se le llevará al repositorio de GitHub, donde ve que la acción de GitHub se está ejecutando. El archivo de flujo de trabajo define dos fases independientes: compilación e implementación. Espere a que la ejecución de GitHub muestre el estado Completado.
¿Tiene problemas? Consulte la sección Solución de problemas.
Paso 1. En la página App Service:
Paso 2: Añadir algunas tareas a la lista. Enhorabuena, está ejecutando una aplicación web en Azure App Service, con conectividad segura con Azure Cosmos DB.
¿Tiene problemas? Consulte la sección Solución de problemas.
Azure App Service captura toda la salida de mensajes hacia la consola, para ayudarle a diagnosticar problemas de la aplicación. La aplicación de ejemplo incluye instrucciones de registro Log4j estándar para demostrar esta funcionalidad, como se muestra en el siguiente fragmento de código:
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();
}
Paso 1. En la página App Service:
Paso 2: En el menú de la izquierda, seleccione Flujo de registro. Verá los registros de la aplicación, incluidos los registros de plataforma y los registros de dentro del contenedor.
Para obtener más información sobre el registro de aplicaciones Java en la serie, consulte Habilitación de Azure Monitor OpenTelemetry para aplicaciones de .NET, Node.js, Python y Java.
¿Tiene problemas? Consulte la sección Solución de problemas.
Cuando acabe, puede eliminar todos los recursos de la suscripción de Azure mediante la eliminación del grupo de recursos.
Paso 1:En la barra de búsqueda de la parte superior de Azure Portal:
Paso 2: En la página del grupo de recursos, seleccione Borrar grupo de recursos.
Paso 3:
En este paso, creará los recursos de Azure e implementará una aplicación de ejemplo en App Service en Linux. Los pasos que se usan en este tutorial crean un conjunto de recursos seguros de valor predeterminado que incluyen App Service y Azure Cosmos DB.
El contenedor de desarrollo ya tiene Azure Developer CLI (AZD).
Desde la raíz del repositorio, ejecute azd init
.
azd init --template javase-app-service-cosmos-redis-infra
Cuando se le solicite, proporcione las siguientes respuestas:
Pregunta | Respuesta |
---|---|
El directorio actual no está vacío. ¿Desea inicializar un proyecto aquí en "<su directorio>"? | Y |
¿Qué quiere hacer con estos archivos? | Mantener mis archivos existentes sin cambios |
Escribir un nuevo nombre de entorno | Escriba un nombre único. La plantilla de AZD usa este nombre como parte del nombre DNS de la aplicación web en Azure (<app-name>-<hash>.azurewebsites.net ). Se permiten caracteres alfanuméricos y guiones. |
Inicie sesión en Azure mediante la ejecución del comando azd auth login
y siga la solicitud:
azd auth login
Cree los recursos de Azure necesarios e implemente el código de la aplicación con el comando azd up
. Siga la solicitud para seleccionar la suscripción y la ubicación deseadas para los recursos de Azure.
azd up
El comando azd up
tarda unos 15 minutos en completarse (la Redis Cache tarda más tiempo). También compila e implementa el código de la aplicación, pero modificará el código más adelante para trabajar con App Service. Mientras se ejecuta, el comando proporciona mensajes sobre el proceso de aprovisionamiento e implementación, incluido un vínculo a la implementación en Azure. Cuando termina, el comando también muestra un vínculo a la aplicación implementada.
Esta plantilla de AZD contiene archivos (azure.yaml y el directorio infra) que generarán una arquitectura segura de manera predeterminada con los siguientes recursos de Azure:
¿Tiene problemas? Consulte la sección Solución de problemas.
La plantilla de AZD que usa ya ha generado las variables de conectividad como valores de la aplicación y las envía al terminal para mayor comodidad. La configuración de la aplicación es una forma de mantener los secretos de conexión fuera del repositorio de código.
En la salida de AZD, busque el valor de la aplicación spring.data.mongodb.uri
. Solo se muestran los nombres de configuración. Tienen este aspecto en la salida de 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
contiene el URI de conexión a la base de datos de Cosmos DB en Azure. Es una variable de Spring Data estándar, que la aplicación ya usa en el archivo src/main/resources/application.properties.
En el explorador, vaya a src/main/resources/application.properties y vea que la aplicación de Spring Boot ya usa la spring.data.mongodb.uri
variable para acceder a los datos.
Para mayor comodidad, la salida de la plantilla de AZD muestra el vínculo directo a la página de configuración de la aplicación. Busque el vínculo y ábralo en una nueva pestaña del explorador.
Si observa el valor de spring.data.mongodb.uri
, debe ser @Microsoft.KeyVault(...)
, lo que significa que es una referencia de almacén de claves porque el secreto se administra en el almacén de claves.
¿Tiene problemas? Consulte la sección Solución de problemas.
En la salida de AZD, busque la dirección URL de la aplicación y vaya a ella en el explorador. La dirección URL tiene este aspecto en la salida de AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Agregue algunas tareas a la lista.
Enhorabuena, está ejecutando una aplicación web en Azure App Service, con conectividad segura con Azure Cosmos DB.
¿Tiene problemas? Consulte la sección Solución de problemas.
Azure App Service puede capturar registros de consola para ayudarle a diagnosticar problemas con la aplicación. Para mayor comodidad, la plantilla de AZD ya ha habilitado el registro en el sistema de archivos local y está enviando los registros a un área de trabajo de Log Analytics.
La aplicación de ejemplo incluye instrucciones de registro Log4j estándar para demostrar esta funcionalidad, como se muestra en el siguiente fragmento de código:
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();
}
En la salida de AZD, busque el vínculo para transmitir registros de App Service y vaya a él en el explorador. El vínculo tiene este aspecto en la salida de AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Para obtener más información sobre el registro de aplicaciones Java en la serie, consulte Habilitación de Azure Monitor OpenTelemetry para aplicaciones de .NET, Node.js, Python y Java.
¿Tiene problemas? Consulte la sección Solución de problemas.
Para eliminar todos los recursos de Azure en el entorno de implementación actual, ejecute azd down
y siga las indicaciones.
azd down
En función de la suscripción y la región que seleccione, es posible que vea el estado de implementación para que Azure Cosmos DB sea Conflict
, con el siguiente mensaje en Detalles de la operación:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
Lo más probable es que el error se deba a un límite de la suscripción para la región que seleccione. Pruebe a elegir otra región para la implementación.
Si ve una página Hey, Java developers!
en lugar de la aplicación de lista de tareas, es más probable que App Service siga cargando el contenedor actualizado desde la implementación de código más reciente. Espere unos minutos y actualice la página.
Los precios por los recursos creados son los siguientes:
El contenedor de Java SE en App Service ya tiene conectividad de red con Cosmos DB, pero no contiene ninguna herramienta de migración ni otras herramientas de MongoDB. Dispone de varias opciones:
Tomando como ejemplo el archivo de flujo de trabajo generado automáticamente de App Service: cada git push
inicia una nueva ejecución de compilación e implementación. Desde un clon local del repositorio de GitHub, realiza las actualizaciones deseadas y las inserta en GitHub. Por ejemplo:
git add .
git commit -m "<some-message>"
git push origin main
Consulte Configuración de la implementación de Acciones de GitHub desde el centro de implementación.
Es posible que observe que la vista de chat de GitHub Copilot ya estaba allí cuando creó el codespace. Para mayor comodidad, incluimos la extensión de chat de GitHub Copilot en la definición del contenedor (consulte .devcontainer/devcontainer.json). Sin embargo, necesita una cuenta de GitHub Copilot (versión de prueba gratuita de 30 días disponible).
Algunas sugerencias para usted al hablar con GitHub Copilot:
@workspace
. Para obtener más información, vea Use the @workspace agent.@workspace
) incluso donde realizar los cambios, pero no se permite realizar los cambios automáticamente. Es necesario agregar los cambios sugeridos y probarlos.Para obtener más información sobre la ejecución de aplicaciones Java en App Service, consulte la guía del desarrollador.
Obtenga información sobre cómo proteger la aplicación con un dominio personalizado y un certificado.
Eventos
Realizar el desafío de Microsoft Learn
19 nov, 23 - 10 ene, 23
Ignite Edition: cree aptitudes en Microsoft Azure y obtenga un distintivo digital el 10 de enero.
Regístrese ahora