在AWS弹性beanstalk中,我想部署.war文件,我使用Tomcat 9的解决方案堆栈,为了使我的应用程序正常工作,我需要使用参数(db密码/用户,db url等)启动这个.war文件,如何使用 .ebextensions 配置 Tomcat 以使用这些参数启动我的工件?
像这样:
java -Ddatasource.dialect=$DB_DIALECT \
-Ddatasource.url=$DB_URL \
-Ddatasource.username=$DB_USERNAME \
-Ddatasource.password=$DB_PASSWORD \
-jar applicatin.war
您可以使用命令功能,但是您必须将数据库的环境变量放在那里,这不会那么安全。
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html 这个例子来自上面的链接。
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: "[ -x /usr/bin/python ]"
对你来说可能是这样的;
commands:
db_cmd:
command: java -Ddatasource.dialect=$DB_DIALECT \
-Ddatasource.url=$DB_URL \
-Ddatasource.username=$DB_USERNAME \
-Ddatasource.password=$DB_PASSWORD \
-jar applicatin.war
cwd: /home/ec2-user
env:
DB_DIALECT: myvarvalue
DB_USERNAME: xxx
DB_PASSWORD: xxx
我会将命令放入脚本中并像这样调用它;
commands:
db_cmd:
command: ./db.sh
cwd: /home/ec2-user
在脚本中,我将添加一些对机密管理器的调用以获取您需要的机密。我只添加了一个从机密管理器获取代码的示例,但当然,您需要获取所有三个。
#!/bin/bash
export DB_DIALECT=$(aws secretsmanager get-secret-value --secret-id dbdialect --region us-east-1 | jq -r '.SecretString' | jq -r '.your_secret_key')
java -Ddatasource.dialect=$DB_DIALECT \
-Ddatasource.url=$DB_URL \
-Ddatasource.username=$DB_USERNAME \
-Ddatasource.password=$DB_PASSWORD \
-jar applicatin.war