【问题标题】:Three level mapping in AWS CloudFormation templateAWS CloudFormation 模板中的三级映射
【发布时间】:2021-09-21 11:39:03
【问题描述】:

如何在 CloudFormation 模板的映射部分创建和使用三级地图?

Fn::FindInMap只能用于两级地图。参考:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html

想要根据 cellName、域和领域来确定资源类型。 比如:

Mappings:
  ElastiCacheNodeTypeMapping:
    cell1:
      beta:
        us-east-1: cache.m6g.large
        us-west-2: cache.m6g.large
        eu-west-1: cache.m6g.2xlarge
      prod:
        us-east-1: cache.r6g.24xlarge
    cell2:
      beta:
        us-east-1: cache.m6g.large
        us-west-2: cache.m6g.large
        eu-west-1: cache.m6g.large
      prod:
        us-east-1: cache.r6g.24xlarge

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    如何创建和使用三级地图

    很遗憾,你不能。正如您已经注意到的,这是不支持。解决它的唯一方法可能是通过 CloudFormation macro。您必须创建这样一个宏,它将获取您的三级地图,并将其重新组织为有效的两级地图以进行堆栈部署。

    【讨论】:

    • 在我的例子中,属性 cellName、domain 和 realm 将作为参数传递。即使我能够创建一个两级映射,创建复合键也会很麻烦。这是因为我不能在Fn::FindInMap 中使用Fn::JoinFn::Sub。 :( 参考:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
    • @RohitLakhotia 没关系。你不能有 3 个级别的地图。
    • @RohitLakhotia CFN 不是最用户友好的工具。它缺少很多其他 IaC 工具(例如 Terraform)所拥有的东西。正如我所写的那样,您可以为此制作宏,或者重新设计您的架构,以便不需要这些 3 级地图。也可以使用 CFN 自定义资源。
    • @RohitLakhotia 您还可以查看用于创建或部署 CFN 堆栈的 CDK 工具。 CDK 具有更大的灵活性。
    猜你喜欢
    • 2018-08-30
    • 2018-02-03
    • 1970-01-01
    • 2017-02-14
    • 2021-04-30
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多