Как сделать Fn :: Join вложенным в Fn :: If? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть сценарий bash, который я хочу запускать на своих экземплярах, но я хочу, чтобы вторая часть сценария запускалась только при значении true.Кроме того, я бы предпочел, чтобы в скрипте не было оператора if.

Parameters:
   #TestParameter = TRUE
Resource:
   UserData:  
      Fn::Sub: |
          echo "This is a test example"
          #If TestParameter is true:
          echo "Only is parameter is true"

1 Ответ

0 голосов
/ 06 февраля 2019

По моему мнению, лучше создать Sub параметр в сценарии:

UserData:
  Fn::Sub: |
    echo "This is a test example"
    if ${TestParameter}; then
        echo "Only is parameter is true"
    fi

Но так как вы не хотите иметь if внутри сценария, вам придется создатьтело сценария в шаблоне Cloudformation.Построение строк в CFN всегда грязно.Попробуйте что-то вроде этого:

UserData:
  Fn::Join: ["\n", ["echo 'This is a test example'",
                     ['Fn::If': [!Equals [!Ref TestParameter, "true"], "echo 'Parameter is true'", ""]]]]
...