【问题标题】:Nested Mappings in Cloudformation templateCloudformation 模板中的嵌套映射
【发布时间】:2019-06-12 03:44:28
【问题描述】:

我的 cloudformation 模板中有一个 VPC 设置的映射,如果我喜欢它,它可以正常工作

SubnetConfig:
    VPC:
      CIDR: '10.1.0.0/16'
    PublicOne:
      CIDR: '10.1.0.0/22'
    PublicTwo:
      CIDR: '10.1.4.0/22'
    PrivateOne:
      CIDR: '10.1.8.0/22'
    PrivateTwo:
      CIDR: '10.1.12.0/22'

我可以使用!FindInMap ['SubnetConfig', 'VPC', 'CIDR'] OR !FindInMap ['SubnetConfig', 'PublicOne', 'CIDR'] 获取值。

但是,我希望根据 PRODNON-PROD 环境有不同的 CIDR 范围。在这种情况下,我的映射将是:

SubnetConfig:
    PROD:
      VPC:
        CIDR: '10.1.0.0/16'
      PublicOne:
        CIDR: '10.1.0.0/24'
      PublicTwo:
        CIDR: '10.1.1.0/24'
      PrivateOne:
        CIDR: '10.1.2.0/24'
      PrivateTwo:
        CIDR: '10.1.3.0/24'
    NON-PROD:
      VPC:
        CIDR: '10.2.0.0/16'
      PublicOne:
        CIDR: '10.2.0.0/22'
      PublicTwo:
        CIDR: '10.2.4.0/22'
      PrivateOne:
        CIDR: '10.2.8.0/22'
      PrivateTwo:
        CIDR: '10.2.12.0/22'

当然,cloudformation 不允许这种映射。有没有办法定义这个映射?我提到了这个post,但它没有帮助

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    一种替代方法可能是将映射展平一层,例如

    Mappings:
      SubnetConfig:
        PROD:
          VPCCIDR: '10.1.0.0/16'
          PublicOneCIDR: '10.1.0.0/24'
          PublicTwoCIDR: '10.1.1.0/24'
          PrivateOneCIDR: '10.1.2.0/24'
          PrivateTwoCIDR: '10.1.3.0/24'
        NON-PROD:
          VPCCIDR: '10.2.0.0/16'
          PublicOneCIDR: '10.2.0.0/22'
          PublicTwoCIDR: '10.2.4.0/22'
          PrivateOneCIDR: '10.2.8.0/22'
          PrivateTwoCIDR: '10.2.12.0/22'
    

    【讨论】:

      【解决方案2】:

      一种方法是您可以创建 2 个 JSON 格式的属性文件,其中 1 个具有 PROD 的范围,而另一个具有 NON PROD 的范围。然后,您可能可以让您的代码根据要部署的环境读取属性文件,选择合适的文件,读取值并在部署时将它们传递给您的 CF 模板。因此,无需在模板中硬编码 IP 范围,您可以将它们参数化并从您从代码传递给模板的输入参数中读取。

      【讨论】:

      • 您能否提供一个链接到这种实现,以便使用 CFN 模板读取 json 文件?
      猜你喜欢
      • 2021-04-30
      • 2017-10-17
      • 1970-01-01
      • 2017-10-18
      • 2018-08-30
      • 2018-02-03
      • 2019-07-13
      • 1970-01-01
      • 2020-12-04
      相关资源
      最近更新 更多