簡體   English   中英

如何在 Terraform 的動態塊中使用 for_each 和迭代器?

[英]How to use for_each with iterator in dynamic block in Terraform?

我基本上正在嘗試這樣做:

module "california" {
  source = "./themodule"
  # ...
}

module "oregon" {
  source = "./themodule"
  # ...
}

resource "aws_globalaccelerator_endpoint_group" "world" {
  # ...
  dynamic "endpoint_configuration" {
    for_each = [
      module.california.lb,
      module.oregon.lb
    ]
    iterator = lb
    content {
      endpoint_id = lb.arn
      weight = 100
    }
  }
}

# themodule/main.tf
resource "aws_lb" "lb" {
  # ...
}

output "lb" {
  value = aws_lb.lb
}

我正在從 Terraform 中的子模塊輸出lb ,並嘗試在for_each數組的父模塊中使用它,並使用自定義iterator名稱。 它給了我這個錯誤:

This object does not have an attribute named "arn".

但它確實具有該屬性,它是aws_lb 我在使用這個for_each和模塊設置時做錯了什么,我該如何解決? 非常感謝!

如果我將其更改為此它似乎可以工作:

resource "aws_globalaccelerator_endpoint_group" "world" {
  listener_arn = aws_globalaccelerator_listener.world.id

  endpoint_configuration {
    endpoint_id = module.california.lb.arn
    weight = 100
  }
}

文檔

迭代器 object(在上面的例子中設置)有兩個屬性

key是當前元素的 map 鍵或列表元素索引。 如果 for_each 表達式產生一個設置值,則 key 與 value 相同,不應使用。

value是當前元素的值。

基於此,在content中,您應該使用lb.value["arn"] ,如example 因此,可以嘗試以下方法:

    content {
      endpoint_id = lb.value["arn"]
      weight = 100
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM