如何在 Elastic Beanstalk 环境变量中使用 AWS Parameter store 变量?

Jay*_*ani 8 amazon-web-services amazon-elastic-beanstalk aws-parameter-store

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

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

SERVER_PORT = 5000 
SPRING_DATASOURCE_PASSWORD = /dev/databases/postgresql/awsdbinstance/password 
Run Code Online (Sandbox Code Playgroud)

其中/dev/databases/postgresql/awsdbinstance/password是 AWS 参数存储的名称。

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

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

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

Rub*_*ary 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
Run Code Online (Sandbox Code Playgroud)

inject_env_variables.sh文件:

ssm-env EXPORT "/variables-path1/" "/variables-path2/" -- node path/to/app.js > .env
Run Code Online (Sandbox Code Playgroud)

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