尝试创建一个DLM (数据生命周期管理)策略,每12小时拍摄一次ebs快照。AWS允许指定多个目标标记,以便将多个实例组合成一个策略。
试图使用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"
}
}
}发布于 2022-03-14 05:02:53
在TF中似乎不可能。但是,与创建完全独立的aws_dlm_lifecycle_policy不同,您可以使用count或for_each
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]
}
}https://stackoverflow.com/questions/71463075
复制相似问题