Я работаю над тем, чтобы микросервис Spring Boot работал в AWS с помощью ECS. Мы хотим, чтобы служба извлекала значения имени пользователя и пароля базы данных из диспетчера секретов или хранилища параметров. Мы используем все сервисы 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.
Спасибо за любую помощь!
/dev/rds-Y3B26E
является свойством String. Если это строка, вы можете просто сделать${rdsmasterusername}
в файле application.properties. - person Mark B   schedule 11.10.2019