使用 .ebextensions 在 AWS beanstalk 中配置 tomcat

问题描述 投票:0回答:1

在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
amazon-web-services terraform amazon-elastic-beanstalk ebextensions
1个回答
0
投票

您可以使用命令功能,但是您必须将数据库的环境变量放在那里,这不会那么安全。

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
© www.soinside.com 2019 - 2024. All rights reserved.