如何优雅地基于列表变量生成AWS EKS托管节点组动态Map?
优化Terraform EKS托管节点组Map生成的写法
你可以直接用Terraform的map类型的for表达式来实现,只需要遍历一次可用区列表,比zipmap更简洁易读:
eks_managed_node_groups = { for az in var.availability_zones : "nodes_${az}" => { name = az # 其他节点组配置参数... } }
为什么这个写法更优雅?
- 只遍历
var.availability_zones一次,避免了原写法中两次循环的冗余 - 键和对应的值在同一个表达式块中定义,逻辑更连贯,一眼就能看出每个可用区对应的节点组配置关系
- 不需要额外调用
zipmap函数,代码结构更直观
效果示例
当var.availability_zones = ["a", "b", "c"]时,这个表达式会直接生成你需要的结构:
eks_managed_node_groups = { nodes_a = { name = "a" ... } nodes_b = { name = "b" ... } nodes_c = { name = "c" ... } }
内容的提问来源于stack exchange,提问作者Dirk Jablonski
相关产品推荐
相关产品推荐

