Я работаю над созданием микросервиса Spring Boot, работающего в AWS с использованием ECS. Мы хотим, чтобы служба получала значения имени пользователя и пароля для базы данных из Secrets Manager или Parameter Store. Мы используем все сервисы AWS (CodeCommit, CodeBuild, CodeDeploy и т. Д.)
Как лучше всего прочитать эти значения из хранилища параметров и передать их в application.properties
нашего микросервиса?
Я пытался следовать этому руководству по извлечению секретов . Я могу читать секреты, но только как Свойства системы, и я не могу определить, как получить их в файл application.properties
.
Вот та задача taskdef.json
{
"executionRoleArn": "arn:aws:iam::ACCOUNT_ID:role/profile-service",
"containerDefinitions": [
{
"name": "profile-service",
"image": "<IMAGE1_NAME>",
"essential": true,
"environment": [
{
"name": "SPRING_PROFILES_ACTIVE",
"value": "dev"
}
],
"portMappings": [
{
"protocol": "tcp",
"containerPort": 8080
}
],
"secrets": [
{
"valueFrom": "arn:aws:secretsmanager:us-east-1:ACCOUNT_ID:secret:PROJECT/dev/rds-Y3B26E",
"name": "rdsmasterusername"
}
],
....
}
Вотосновной файл Spring я использовал для тестирования. Он правильно печатает секреты. Я просто не уверен, что это лучший способ получить их в свойствах.
public static void main(String[] args) {
String test1 = System.getenv("rdsmasterusername");
System.out.println(test1); // Correctly prints the RDS username
SpringApplication.run(Startup.class, args);
}
Примечание. В настоящее время, когда я пытаюсь получить секрет, он дает мне какой-то объект, который имеет имя пользователяи пароль. Я не уверен, как разобрать тех, кто в Java.
Спасибо за любую помощь!