【问题标题】:How to use AWS ECS to get Database secrets from Parameter Store如何使用 AWS ECS 从 Parameter Store 获取数据库密钥
【发布时间】:2020-02-08 08:03:45
【问题描述】:

我正在使用 ECS 让 Spring Boot 微服务在 AWS 中运行。我们希望该服务从 Secrets Manager 或 Parameter Store 检索数据库用户名和密码值。我们正在使用所有 AWS 服务(CodeCommit、CodeBuild、CodeDeploy 等)

从 Parameter Store 读取这些值并将它们放入我们微服务的 application.properties 的最佳方法是什么?

我已尝试关注this guide on retrieving secrets。我能够读取这些秘密,但只能作为系统属性读取,我无法确定如何将它们放入 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 属性,则不应返回 JSON。如果它是一个字符串,您应该可以在 application.properties 文件中执行${rdsmasterusername}

标签: amazon-web-services spring-boot docker amazon-ecs aws-secrets-manager


【解决方案1】:

最后的陈述不清楚。 rdsmasterusername 是否包含用户名或密码或仅包含用户名?我猜它在 JSON 字符串中包含用户名和密码 - 根据您的最后一条注释。

如果您不想处理解析 JSON 字符串或创建稍后将被继承的新环境变量,您可以将用户名和密码存储在两个不同的秘密中,将它们注入您的 taskdef 文件,然后将它们设置在您的 @ 987654323@ 文件,如https://stackoverflow.com/a/35535138 中所述。

【讨论】:

    猜你喜欢
    • 2020-03-18
    • 2017-05-18
    • 2018-02-19
    • 2021-06-29
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多