【问题标题】:How pass named arguments with parameters to aws batch?如何将带有参数的命名参数传递给aws batch?
【发布时间】:2018-11-15 03:08:14
【问题描述】:

考虑 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

【问题讨论】:

  • Paremers json 字段中的 param1 和 param2 值得一提,以便清楚地表明它们不是来自模板参数。
  • 为什么不将值传递为“java -jar my-application-SNAPSHOT.jar someValue1 someValue2”?

标签: amazon-web-services docker amazon-cloudformation aws-batch


【解决方案1】:

据我了解,AWS 批处理参数是通过查找 Ref:: 前缀来替换的。我只能找到一个thread,他们试图在更大的字符串中使用参数并且它有效。

鉴于此,以下应该可以工作

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"

【讨论】:

  • 这是错误的。批处理不支持字符串内的替换。仅适用于完整的论点。
【解决方案2】:

通过使用 !Sub 评估模板中的表达式:

MyJobDefinition:
Type: "AWS::Batch::JobDefinition"
Properties:
    Type: container
    Parameters: {}
    JobDefinitionName: "my-job-name"
    ContainerProperties:
        Command:
            - "java"
            - "-jar"
            - "my-application-SNAPSHOT.jar"
            - !Sub "--param1=${param1}"
            - !Sub "--param2=${param2}"

【讨论】:

  • 有文档链接吗?
  • 好的,那么这个答案需要更新,因为 OP 明确表示这些是 not CloudFormation 模板参数。如果他错了,你应该提到它。
  • 正确。我错过了他的最后一句话。我以前从未使用过批处理,但从我在他的链接中看到的内容来看,这些 Ref 是运行时参数,因此 cloudformation 不会提前知道要使用什么。除非它是静态的,否则 OP 可以将值作为 cfn 参数提供给作业定义
猜你喜欢
  • 2020-07-12
  • 2019-12-19
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
相关资源
最近更新 更多