You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform使用for_each给AMI打标签时如何跳过null值

解决方案

aws_ec2_tag 资源的value参数不允许传入null值,且Terraform的for_each不会自动过滤map中值为null的键值对,因此会触发必填参数缺失报错。你可以通过for表达式预先过滤标签映射,自动剔除值为null的条目:

  1. 修改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 }
}
  1. 原有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 01:45:10