考虑 AWS 批处理作业定义的一部分:
MyJobDefinition:
Type: "AWS::Batch::JobDefinition"
Properties:
Type: container
Parameters: {}
JobDefinitionName: "my-job-name"
ContainerProperties:
Command:
- "java"
- "-jar"
- "my-application-SNAPSHOT.jar"
- "--param1"
- "Ref::param1"
- "--param2"
- "Ref::param2"
调用哪个结果:
java -jar my-application-SNAPSHOT.jar --param1 someValue1 --param2 someValue2
如何更改工作定义以使其成为这样? (注意 =
符号):
java -jar my-application-SNAPSHOT.jar --param1=someValue1 --param2=someValue2
请注意,Ref::param1
不是cloudformation模板参数,而是aws batch job params .
最佳答案
在 Java 中,从命令行运行应用程序时,您可以使用 -D 选项传递环境变量。将 param1 替换为环境变量的名称,将 param1_value 替换为您要分配给它的实际值。
MyJobDefinition:
Type: "AWS::Batch::JobDefinition"
Properties:
Type: container
Parameters: {}
JobDefinitionName: "my-job-name"
ContainerProperties:
Command:
- "java"
- "-Dparam1=${param1_value}"
- "-Dparam2={param2_value}"
- "-Dparam3={param2_value}"
- "-jar"
- "my-application-SNAPSHOT.jar"
例如,如果您有一个名为 DATABASE_URL 的环境变量,并且希望将其值传递给 Java 应用程序,则可以使用:
java -DDATABASE_URL=jdbc:mysql://localhost:3306/dbname -jar YourApplication.jar
在 Java 应用程序中,您可以使用 System.getProperty() 方法访问环境变量值:
String databaseUrl = System.getProperty("DATABASE_URL");
databaseUrl 变量将包含从命令行传递的值。希望这会有所帮助。
关于amazon-web-services - 如何将带参数的命名参数传递给 aws 批处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703311/