子和联接逗号分隔列表上

时间:2019-01-27 07:45:51

标签: amazon-cloudformation

我正在尝试构建使用传递给Command的可变数量的环境变量的ECS(Fargate)任务定义。每个变量名称都与SecretsManager中的一个秘密匹配。

我很难以有意义的方式组合这些功能。下面的代码只是将所有变量作为字符串列表传递给Command。

public YourActivity extends AppCompatActivity implements ReceiverCallback{

      // Your Activity code 

      public void updateUI() {     //<-- You want this to get Triggered 
             // Update UI code 
      }

      @Override
      public void doSomething(Object object){     
            updateUI();            //<-- Callback does that
      }

}

但是,我需要将列表中的项目解析为JSON机密。解决秘密的方法如下:

 SpecEnvVars:
   Type: CommaDelimitedList
   Default: "greeting,name,title,rank"
   Description: |
     The Environmental Variables to pull into the container, defined by their
     associated Secrets names

 ContainerDefinitions:
   - Name: !Ref 'ServiceName'
     Command: !Split
       - ','
       - !Join
         - ','
         - !Ref SpecEnvVars

如何将Fn :: Sub与Split / Join集成在一起以返回SecretsManager JSON字符串列表?

1 个答案:

答案 0 :(得分:2)

我花了一段时间才找到正确的功能组合,但我做到了:

ContainerDefinitions:
  - Name: !Ref 'ServiceName'
    Command: !Split
      - ','
      - !Sub
        - '{{resolve:secretsmanager:test/${inner}}}'
        - inner: !Join
          - '}},{{resolve:secretsmanager:test/'
          - Ref: "SpecEnvVars"

我想为这个答案提供支撑:https://stackoverflow.com/a/50060983/9671763,因为它实际上给了我答案-我只需要针对我的用例进行调整即可。