Terraform使用for_each给AMI打标签时如何跳过null值
解决方案
aws_ec2_tag 资源的value参数不允许传入null值,且Terraform的for_each不会自动过滤map中值为null的键值对,因此会触发必填参数缺失报错。你可以通过for表达式预先过滤标签映射,自动剔除值为null的条目:
- 修改
locals块,新增原始标签到有效标签的过滤逻辑:
locals { # 原始全量标签映射 raw_tags = { docker_version = var.docker_version kubernetes = var.k8s_version cni_plugin_version = var.cni_plugin_version containerd_version = var.containerd_version target = var.target source_ami_id = var.source_ami_id Release = var.ami_release-version Description = var.ami_description Name = var.ami_name Creator = var.creator } # 过滤后仅保留值不为null的标签 tags = { for k, v in local.raw_tags : k => v if v != null } }
- 原有
aws_ec2_tag资源无需修改,直接使用过滤后的local.tags传入for_each即可,EKS专属标签为null时会被自动跳过,普通Ubuntu AMI场景也不会生成多余标签。
resource "aws_ec2_tag" "ami-taggging" { resource_id = data.aws_ami.ami_image.id for_each = local.tags key = each.key value = each.value }
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

