首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用多个标记创建单个dlm策略

如何使用多个标记创建单个dlm策略
EN

Stack Overflow用户
提问于 2022-03-14 04:44:04
回答 1查看 279关注 0票数 1

尝试创建一个DLM (数据生命周期管理)策略,每12小时拍摄一次ebs快照。AWS允许指定多个目标标记,以便将多个实例组合成一个策略。

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

target_tags似乎不需要多个映射值-

代码语言:javascript
复制
    target_tags = {
      Name = "g1n1",
      Name = "g1n2"
    }

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

代码语言:javascript
复制
  # 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个策略,但是有任何方法可以为多个实例创建单个策略吗?

代码语言:javascript
复制
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"
    }
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-14 05:02:53

在TF中似乎不可能。但是,与创建完全独立的aws_dlm_lifecycle_policy不同,您可以使用countfor_each

代码语言:javascript
复制
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]
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71463075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档