Terraform 为每个输出调用特定的

Terraform 为每个输出调用特定的,terraform,Terraform,我刚刚开始使用for_each循环,从我的理解来看,for_each不同于count,在这个意义上,计数输出aws_transfer_key的索引。transfer_key[1]vs for_each输出aws_transfer_key。transfer_key[value] 以后如何调用每个值的输出?来自示例 您引用动态块的名称,在本例中,它是入口。来自示例 引用动态块的名称,在本例中是入口。带有count参数集的资源或数据块以列表形式出现在表达式中,这就是您可以使用[0]、[1]等访问其实例

我刚刚开始使用for_each循环,从我的理解来看,for_each不同于count,在这个意义上,计数输出aws_transfer_key的索引。transfer_key[1]vs for_each输出aws_transfer_key。transfer_key[value]

以后如何调用每个值的输出?

来自示例

您引用动态块的名称,在本例中,它是入口。

来自示例

引用动态块的名称,在本例中是入口。

带有count参数集的资源或数据块以列表形式出现在表达式中,这就是您可以使用[0]、[1]等访问其实例的原因

类似地,带有for_each参数集的资源或数据块在表达式中显示为映射,所以您可以使用[foo]、[bar]等访问其实例

在这两种情况下,集合都是符合资源类型模式的对象,因此您可以使用.attribute语法来访问各个属性

因此,首先获取资源类型和名称,aws_transfer_key.transfer_key,这是一个映射。然后[value]从映射中访问所需的实例。然后使用.foo访问foo属性。总之,这就是aws\u transfer\u key.transfer\u key[value].foo

如果要访问所有实例中的所有foo属性,可以使用以下命令将对象映射投影到字符串映射中:

带有count参数集的资源或数据块在表达式中显示为列表,这就是为什么可以使用[0]、[1]等访问其实例的原因

类似地,带有for_each参数集的资源或数据块在表达式中显示为映射,所以您可以使用[foo]、[bar]等访问其实例

在这两种情况下,集合都是符合资源类型模式的对象,因此您可以使用.attribute语法来访问各个属性

因此,首先获取资源类型和名称,aws_transfer_key.transfer_key,这是一个映射。然后[value]从映射中访问所需的实例。然后使用.foo访问foo属性。总之,这就是aws\u transfer\u key.transfer\u key[value].foo

如果要访问所有实例中的所有foo属性,可以使用以下命令将对象映射投影到字符串映射中:


这就是我的想法,但是当我试图调用值aws\u transfer\u key.transfer\u key[value].foo时。我收到一个错误:资源aws\u s3\u bucket.ancb必须用一个数字值进行索引。我刚刚弄清楚了我收到该错误的原因。当我创建要调用的资源时,我使用的是以前部署中的count。谢谢你的帮助!这就是我的想法,但是当我试图调用值aws\u transfer\u key.transfer\u key[value].foo时。我收到一个错误:资源aws\u s3\u bucket.ancb必须用一个数字值进行索引。我刚刚弄清楚了我收到该错误的原因。当我创建要调用的资源时,我使用的是以前部署中的count。谢谢你的帮助!
resource "aws_security_group" "example" {
  name = "example" # can use expressions here

  dynamic "ingress" {
    for_each = var.service_ports
    content {
      from_port = ingress.value
      to_port   = ingress.value
      protocol  = "tcp"
    }
  }
}
{ for k, v in aws_transfer_key.transfer_key : k => v.foo }