es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Importando secretos en una aplicación de Spring Boot desde AWS Secrets Manager.

Almacené las credenciales de mi base de datos MySQL en AWS Secrets Manager utilizando la opción “Credenciales para otras bases de datos”. Quiero importar estas credenciales en mi archivo “application.properties”. Según algunas respuestas que encontré en este hilo, hice lo siguiente:
1. Añadí la dependencia “spring-cloud-starter-aws-secrets-manager-config”.
2. Añadí “spring.application.name = ” y “spring.config.import = aws-secretsmanager:” en “application.properties”.
3. Utilicé claves secretas como marcadores de posición en las siguientes propiedades:

spring.datasource.url = jdbc:mysql://${host}:3306/nombre_db
spring.datasource.username=${username}
spring.datasource.password=${password}

Estoy obteniendo el siguiente error al ejecutar la aplicación:

java.lang.IllegalStateException: No se puede cargar datos de configuración desde 'aws-secretsmanager:'
Causado por: java.lang.IllegalStateException: La extensión de archivo no es conocida por ningún PropertySourceLoader. Si la ubicación es un directorio, debe terminar en '/' o File.separator

Primero, ¿es correcto el proceso que estoy siguiendo? Si es así, ¿a qué se refiere este error y cómo puedo resolverlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, el proceso que estás siguiendo es correcto. El error que estás obteniendo se debe a que la propiedad spring.config.import no está configurada correctamente en application.properties. El mensaje de error sugiere que la extensión de archivo no es reconocida por ningún PropertySourceLoader.

    Para resolver este error, debes configurar correctamente la propiedad spring.config.import en application.properties. La sintaxis correcta para esta propiedad es spring.config.import=aws-secretsmanager:<nombre-del-secreto>. Asegúrate de que <nombre-del-secreto> coincida con el nombre del secreto que creaste en AWS Secrets Manager.

    Además de esto, asegúrate de haber agregado la dependencia spring-cloud-starter-aws-secrets-manager-config en el archivo pom.xml de tu proyecto, si estás utilizando Maven.

    Una vez que hayas configurado correctamente la propiedad spring.config.import, se invocará a SecretsManagerPropertySourceLocator para recuperar las propiedades de AWS Secrets Manager, y deberías poder acceder a las credenciales de la base de datos en application.properties.

    Ejemplo:

    spring.application.name=my-app
    
    spring.profiles.active=dev
    
    spring.config.import=aws-secretsmanager:my-db-secrets
    
    spring.datasource.url=jdbc:mysql://${host}:3306/nombre_bd
    spring.datasource.username=${username}
    spring.datasource.password=${password}
    
    logging.level.root=INFO
    

    Nota: Asegúrate de reemplazar my-db-secrets con el nombre del secreto que creaste en AWS Secrets Manager.

Comments are closed.