Я хотел создать цикл for_each, который перебирает только объекты в массиве, у которых есть определенная пара ключ: значение.
Мои входные переменные:
inputs = {
names = ["first", "second"]
lifecycle_rules = [
{
name = first
condition = {
age = "1"
}
action = {
type = "Delete"
}
},{
condition = {
age = "2"
}
action = {
type = "Delete"
}
},
{
name = second
condition = {
age = "3"
}
action = {
type = "Delete"
}
},{
condition = {
age = "4"
}
action = {
type = "Delete"
}
}
]
и в моем main.tf (кстати, для развертывания ведра gcp для справки) я хотел разделить жизненный цикл для каждого ведра и хотел применить только правила, в которых есть имя ведра.
Поэтому, если кто-нибудь знает, как изменить приведенный ниже код for_each, чтобы он работал, я был бы очень признателен. Я считаю, что нужно изменить только for_each, чтобы перебрать нужные элементы (скажем, только объекты в этом списке, у которых name = first). из набора var.lifecycle_rules
resource "google_storage_bucket" "buckets" {
count = length(var.names)
name = "${lower(element(var.names, count.index))}"
...
dynamic "lifecycle_rule" {
#for_each = length(lookup(lifecycle_rules[lookup(element(var.names, count.index))])
for_each = lifecycle_rules
content {
action {
type = lifecycle_rule.value.action.type
storage_class = lookup(lifecycle_rule.value.action, "storage_class", null)
}
condition {
#age = lifecycle_rule.value.name == element(var.names, count.index) ? lookup(lifecycle_rule.value.condition, "age", null) : null
age = lookup(lifecycle_rule.value.condition, "age", null) : null
...
lifecycle_rules
вместо использованияcount
для длины переменнойnames
? Затем вы можете использовать повторяющиеся значения карты для логики в блокеdynamic
, а также для определения того, должен ли он существовать вообще. Так было бы намного проще и чище. - person Matt Schuchard   schedule 29.07.2020...
точками) - это всего лишь один, сделанный в google, предопределенный, и не был уверен, как двойной for_each работает под собой - но будет тестировать - кроме этого, вы могли бы дать ссылку в документы? Я обязательно все проверил? доступные методы и не нашел ни одного, чтобы решить эту проблему - person potatopotato   schedule 30.07.2020