如何通过CommaDelimitedList参数有条件地创建嵌套栈。

问题描述 投票:0回答:1

在我的 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不是一个valide Fn。

不过,我认为它还是很好地说明了我想实现的目标。

请问您是如何实现的呢?

amazon-web-services amazon-cloudformation nested-stack
1个回答
0
投票

不幸的是,有 无此功能 在普通的CloudFormation(CFN)中。CFN不是一种编程语言,它没有循环、在列表中搜索和许多其他常规编程语言中的东西。

然而,有一些 可能的替代品 要考虑。

  • 使用
  • 使用 定制资源

  • 使用 CDK而不是CFN。

  • 重新设计你的模板,使其具有基于常规参数值的条件,而不是列表。例如,使用 选择 来进行基于指数的比较。
© www.soinside.com 2019 - 2024. All rights reserved.