Elastic Beanstalk Procfile 中不可用的环境变量
Posted
技术标签:
【中文标题】Elastic Beanstalk Procfile 中不可用的环境变量【英文标题】:Environment variables not available in Elastic Beanstalk Procfile 【发布时间】:2017-05-23 05:01:24 【问题描述】:我正在尝试通过 Procfile 使用环境变量配置我的弹性 beanstalk java 应用程序,如下所示:
web: ./bin/myservice -Dhttp.port=$PORT
PORT
环境变量是通过 AWS ui 在我的 beanstalk 环境的“软件配置”屏幕中设置的。
但是,日志表明 $PORT
没有被插值:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.whatever.services.myservice.Main.main(Main.scala)
Caused by: java.lang.NumberFormatException: For input string: "$PORT"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
将选项传递给我的应用程序的正确方法是什么?
编辑 1: 这似乎是与我用来创建项目的可分发 zip 存档的 sbt 本机打包程序插件有关的问题。它生成的 bin/myservice 文件按字面意思解释 $PORT 并将其传递给应用程序。
【问题讨论】:
我正在尝试做同样的事情,在我的 Procfile 中使用一个变量。你有过什么运气吗? 【参考方案1】:尝试从Procfile
中删除-Dhttp.port=$PORT
。
在“软件配置”的 ui 中,尝试将变量 JAVA_OPTS
设置为 -Dhttp.port=9000
(将 9000 替换为您的 nginx 代理使用的任何端口——我相信 5000 是默认值)。
【讨论】:
我在 beanstalk UI 中没有看到“JVM 命令行选项”。 您是否使用 Java SE 容器类型 @novon? docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 是的,这就是我选择的。 对不起——这曾经是一个选项——它仍然出现在我的旧应用程序中。我刚刚创建了一个新环境,但它不再存在。看看新方法是什么。 啊——好的。您可以使用软件配置进行设置,但尝试使用此键 => val: JAVA_OPTS: "-Dhttp.port=9000" (将 9000 替换为任何值)。 LMK 如果可行,我将更新答案以反映最新机制。以上是关于Elastic Beanstalk Procfile 中不可用的环境变量的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应
AWS Elastic Beanstalk CLI 安装错误