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 =
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?
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 enapplication.properties
. El mensaje de error sugiere que la extensión de archivo no es reconocida por ningúnPropertySourceLoader
.Para resolver este error, debes configurar correctamente la propiedad
spring.config.import
enapplication.properties
. La sintaxis correcta para esta propiedad esspring.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á aSecretsManagerPropertySourceLocator
para recuperar las propiedades de AWS Secrets Manager, y deberías poder acceder a las credenciales de la base de datos enapplication.properties
.Ejemplo:
Nota: Asegúrate de reemplazar
my-db-secrets
con el nombre del secreto que creaste en AWS Secrets Manager.