Как обусловить создание вложенного стека с помощью параметра CommaDelimitedList - PullRequest
0 голосов
/ 29 мая 2020

в моем AWS шаблоне CloudFormation, я хотел бы обусловить создание вложенного стека параметром CommaDelimitedList.

Я бы сделал это следующим образом:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "DeployNestedStacks": {
      "Description": "List of nested stack resources to deploy",
      "Type": "CommaDelimitedList",
      "AllowedValues": [
        "nestedStack1",
        "nestedStack2"
      ]
    }
  },
  "Conditions": {
    "DeployNestedStack1": { "Fn::Contains": [ { "Ref": "DeployNestedStacks" } , "nestedStack1" ] }
    "DeployNestedStack2": { "Fn::Contains": [ { "Ref": "DeployNestedStacks" } , "nestedStack2" ] }
  },
  "Resources": {
    "MyNestedStack1": {
      "Condition": "DeployNestedStack1",
      "Type": "AWS::CloudFormation::Stack",
      ... 
    },
    "MyNestedStack2": {
      "Condition": "DeployNestedStack2",
      "Type": "AWS::CloudFormation::Stack",
      ... 
    }
  }
}

к сожалению Fn: : Contains не является валидным Fn.

Тем не менее, я думаю, что это хорошо иллюстрирует то, чего я хотел бы достичь.

Как бы вы этого добились, пожалуйста?

1 Ответ

0 голосов
/ 29 мая 2020

К сожалению, такой функции нет в обычном CloudFormation (CFN). CFN не является языком программирования, и в нем нет циклов, поиска по спискам и многого другого, что можно найти в обычном языке программирования.

Однако есть некоторые возможные альтернативы , которые следует учитывать:

  • Использование макросов
  • Использование настраиваемые ресурсы

  • Использование CDK вместо CFN.

  • Изменение дизайна вашего шаблона для использования условий на основе обычные значения параметров, а не списки. Например, используя , выберите для сравнения на основе индекса.
...