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

11

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

我希望从AWS参数存储中访问这些参数,并将它们设置为环境变量,就像我们设置的方式一样:

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

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

我还为EC2实例添加了SSMReadOnly访问权限的IAM策略,但是仍然无法访问这些值。 我做错了什么,如何才能实现这一点?

此外,达成此目标的标准方法是什么?

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


1
你解决了这个问题吗?其实我也遇到了同样的问题。 - Sanjay
2
@Sanjay,不好意思。我没有找到任何解决方案。 - Jayesh Mulwani
1个回答

0

我也遇到了同样的问题。虽然我还没有一个可行的解决方案,但我整理了一些想法,可能会帮助其他人解决它:

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

  2. 您可以在ebextension中调用此脚本,因此每次重建环境时,环境变量将在您的环境中设置。

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接