如何在UserData中的Cloudformation Fn :: Sub中添加两个变量

时间:2019-02-07 00:48:04

标签: amazon-web-services amazon-cloudformation

我能够添加1个变量,但不能添加第二个变量,我是系统管理员,对YAML的了解也不多

UserData:  
    Fn::Base64: !Sub  
       - |+  
        #!/bin/bash -xe  
        NEW_HOSTNAME=${test}  
       - test:   
             Fn::FindInMap: [Regions, !Ref "AWS::Region", Name]   

我想在测试后添加另一个FindInMap变量,但是我无法。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

UserData:
  Fn::Base64: !Sub
    - |
      #!/bin/bash -xe
      foo=${foo}
      baz=${baz}
    - foo: !FindInMap [FooMap, Foo, Value]
      baz: !FindInMap [FooMap, Baz, Value]

它也可以被格式化为:

UserData:
  Fn::Base64: !Sub
    - |
      #!/bin/bash -xe
      foo=${foo}
      baz=${baz}
    - {
        foo: !FindInMap [FooMap, Foo, Value],
        baz: !FindInMap [FooMap, Baz, Value]
      }

另请参阅Fn::FindInMap函数的文档。

请注意,我删除了|+-这是一项YAML功能,并表示保留结尾的换行符。此处实际上不是必需的。

答案 1 :(得分:1)

UserData: 
              Fn::Base64: !Sub
               - |
                  #!/bin/bash
                  NEW_HOSTNAME=${hostName}
               -  {
                  share: !FindInMap [Regions, !Ref "AWS::Region", SHARE],
                  hostName: !Join ["", [!Ref Name, !FindInMap [Regions, 
                                                         !Ref"AWS::Region",USERDATA] ] ]
                  }