如何创建具有多个标签的单个 dlm 策略

how to create single dlm policy with multiple tags

正在尝试创建 DLM(数据生命周期管理)策略以每 12 小时拍摄一次 ebs 快照。 AWS UI 允许指定多个目标标签以将多个实例合并到一个策略中。

尝试使用 terraform 创建相同的内容,https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dlm_lifecycle_policy#target_tags

target_tags 似乎没有采用多个映射值 -

    target_tags = {
      Name = "g1n1",
      Name = "g1n2"
    }

Terraform 计划正在从列表中获取最后一个地图值 -

  # aws_dlm_lifecycle_policy.example has changed
  ~ resource "aws_dlm_lifecycle_policy" "example" {
        id                 = "policy-0719fc4b498671592"
        tags               = {}
        # (5 unchanged attributes hidden)

      ~ policy_details {
          ~ target_tags    = {
              ~ "Name" = "g1n1" -> "g1n2"
            }
            # (1 unchanged attribute hidden)

            # (1 unchanged block hidden)
        }
    }

为了克服这个问题,我为每个实例创建了 2 个策略,但是有什么方法可以为多个实例创建单个策略吗?

resource "aws_dlm_lifecycle_policy" "DLM_g1n1" {
    description = "DLM_g1n1"
    execution_role_arn = "AWSDataLifecycleManagerDefaultRole"
    policy_details {
      resource_types = ["INSTANCE"]
      schedule {
        name = "snapshot-every12hours"
        create_rule {
          interval      = 12
          interval_unit = "HOURS"
          times         = ["04:30"]
        }         
      retain_rule { count = 28 }
      copy_tags = false
    }
    target_tags = {
      Name = "g1n1"
    }
   }
}
resource "aws_dlm_lifecycle_policy" "DLM_g1n2" {
    description = "DLM_g1n2"
    execution_role_arn = "AWSDataLifecycleManagerDefaultRole"
    policy_details {
      resource_types = ["INSTANCE"]
      schedule {
        name = "cedcas-snapshot-every12hours"
        create_rule {
          interval      = 12
          interval_unit = "HOURS"
          times         = ["04:30"]
        }         
      retain_rule { count = 28 }
      copy_tags = false
    }
    target_tags = {
      Name = "g1n2"
    }
   }
}

TF里好像不行。但是您可以使用 countfor_each:

而不是创建完全独立的 aws_dlm_lifecycle_policy
variable "tags" {
    default = [{Name = "g1n1"}, {Name = "g1n2"}]
}

resource "aws_dlm_lifecycle_policy" "DLM_g1" {

    count = length(var.tags)

    description = "DLM_g1n${count.index}"
    execution_role_arn = "AWSDataLifecycleManagerDefaultRole"
    policy_details {
      resource_types = ["INSTANCE"]
      schedule {
        name = "snapshot-every12hours"
        create_rule {
          interval      = 12
          interval_unit = "HOURS"
          times         = ["04:30"]
        }         
      retain_rule { count = 28 }
      copy_tags = false
    }
    target_tags = var.tags[count.index]
   }
}