AWS CloudFormation 模板中的三级映射

4
如何在CloudFormation模板的mappings部分中创建和使用三层映射? Fn::FindInMap 只能用于两级映射。参考文献:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html 想要根据cellName、domain和realm确定资源类型,类似于以下内容:
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
1个回答

3
我该如何创建和使用三层映射?
很遗憾,你无法直接创建和使用三层映射,正如你已经注意到的那样,这是不支持的。唯一的解决方法可能是通过CloudFormation。你需要创建这样一个宏,将你的三级映射重新组织成有效的两层映射进行堆栈部署。

在我的情况下,属性cellName、domain和realm将作为参数传递。即使我能够创建一个两级映射,创建复合键也会变得混乱。这是因为我不能在“Fn::FindInMap”中使用“Fn::Join”或“Fn::Sub”。:( - Rohit Lakhotia
@RohitLakhotia 没关系。你不能有三级地图。 - Marcin
@RohitLakhotia CFN不是最用户友好的工具。它缺少其他IaC工具(例如Terraform)拥有的许多功能。正如我所写的,您可以为此制作宏,或重新设计架构,以便不需要这些3级映射。也可以使用CFN自定义资源。 - Marcin
@RohitLakhotia 你也可以看一下CDK工具来创建或部署你的CFN堆栈。CDK具有更多的灵活性。 - stijndepestel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接