微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cloudformation - 是否可以拆分字符串并分配给列表中的属性?

如何解决cloudformation - 是否可以拆分字符串并分配给列表中的属性?

如何拆分字符串并使用属性值?

例如,假设我有以下字符串:SomeRule1,SomeRule2

我想用这个字符串来填充 AWS::WAFv2::WebACL ManagedRuleGroupStatementexludedRules 属性excludedRules 是包含单个 Name 属性ExcludedRule 对象列表。如何将拆分后的字符串值用于 Name 属性

解决方法

遗憾的是,您不能通过使用简单的 CloudFormation 自动执行此操作,只需使用 SomeRule1,SomeRule2,因为 ExcludedRule 不是一个简单的字符串列表。它是对象列表,形式为:

  ExcludedRules: 
    - Name: SomeRule1
    - Name: SomeRule2

生成这样一个对象列表需要一些CloudFormation不支持的循环机制。您必须一一明确列出所有这些规则。

但如果您真的必须自动化这样的过程,您可以开发一个CloudFormation macro,让您能够循环和构建这样的结构。 Custom resources 也可用于自动执行此类操作。

宏和自定义资源都需要您开发一个特殊的 lambda 函数,该函数将根据您的 SomeRule1,SomeRule2 执行循环并构造有效的 ExcludedRules。 >

,

同意其他答案,不能动态添加规则,因为它不是简单的字符串列表。但如果我们知道确切的规则。我们可以使用拆分和选择。

让我们使用这个参数:

Parameters:
  Rules:
    Type: String
    Description: "list of rules seperate by comma"
    Default: "my-rule-1,my-rule-2"

我们可以这样使用它:

          ExcludedRules:
            - Name: !Select
                - 0
                - !Split [",",!Ref Rules]
            - Name: !Select
                - 1
                - !Split [",!Ref Rules]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。