11

我有一个连接到 AWS 上的 PostgreSQL 的 Spring Boot 应用程序。我想在 AWS 参数存储中将数据库配置(如 DB URL、用户名和密码)存储为安全字符串。

我想像我们设置的那样从环境变量中的 AWS Parameter store 访问这些参数:

SERVER_PORT = 5000 
SPRING_DATASOURCE_PASSWORD = /dev/databases/postgresql/awsdbinstance/password 

/dev/databases/postgresql/awsdbinstance/passwordAWS 参数存储的名称在哪里。

我还向 EC2 实例添加了一个 IAM 策略以进行 SSMReadOnly 访问,但仍然无法访问这些值。我做错了什么,我该如何做到这一点?

另外,实现这一目标的标准方法是什么?

我不想在 YAML 文件中添加一个试图从 AWS 参数存储中检索值的属性,而是我认为如果该属性是通过 Elastic Beanstalk 环境变量本身注入的,它会更好。

4

1 回答 1

0

我也有同样的问题。我还没有一个可行的解决方案,但我总结了一些可能有助于其他人解决它的想法:

  1. 有一些包可以在你的环境中注入 SSM 参数(例如https://www.npmjs.com/package/@mschnee/ssm-env?activeTab=readme)你甚至可以创建一个脚本来自己做。

  2. 您可以在 ebextension 中调用此脚本,因此每次重新构建 env 时,都会在您的 env 中设置 env 变量。

我对第二点有点迷茫,但是,应该是这样的

container_commands:
  0100_inject_env_variables:
    command: /scripts/inject_env_variables.sh

inject_env_variables.sh文件:

ssm-env EXPORT "/variables-path1/" "/variables-path2/" -- node path/to/app.js > .env

正如我之前告诉过你的,我还没有正确的答案,但我认为这就是方法。让我们看看是否有经验更丰富的开发人员纠正我。

于 2021-11-23T23:23:45.493 回答