在ebextension中添加私有IP地址作为JVM选项

时间:2019-02-01 19:48:42

标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk ebextensions

我正在AWS Elastic beantalk中运行Tomcat。我需要添加一个JVM选项,其中包括代码在其上运行的任何EC2实例的私有IP地址。

我需要添加此属性以启用JMX:-Djava.rmi.server.hostname=1.2.3.4

我尝试了这些不同的方法,但是它只是将文字字符串添加为env属性。如果我对IP地址进行硬编码,它就可以正常工作,但是它是自动缩放设置,因此IP总是不同的。

option_settings:
  aws:elasticbeanstalk:application:environment:
    java.rmi.server.hostname: { "Fn::GetAtt" : [ "AWS::EC2::Instance", "PrivateIp"] }
    java.rmi.server.hostname: '`Fn::GetAtt: [ AWS::EC2::Instance, PrivateIp ]`'

如果我无法在option_settings中进行操作,是否可以创建一个脚本来附加到CATALINA_OPTS变量中?我尝试过:

"/opt/elasticbeanstalk/hooks/appdeploy/post/HL_01_add_catalina_opts.sh":
    mode: "000771"
    content : |
      #!/bin/bash
      CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=$(hostname -I)

1 个答案:

答案 0 :(得分:0)

我可以通过添加以下ebextension使其起作用:

container_commands:
  add_catalina_opts:
    command: echo -e "\nCATALINA_OPTS=\"${CATALINA_OPTS} -Djava.rmi.server.hostname=$(hostname -I)\"\n" >> /usr/share/tomcat8/conf/tomcat8.conf

tomcat8.conf文件是在tomcat启动脚本中执行的,因此可以在部署tomcat之前将其他属性附加到该文件。