Terraform从for_循环内部定义键值?

Terraform从for_循环内部定义键值?,terraform,Terraform,示例代码 resource "null_resource" "send_instance_ips" { depends_on = [aws_instance.funskies] for_each = { for idx, instance in [aws_instance.funskies]: idx => instance idx.key = instance.public_ip idx

示例代码

resource "null_resource" "send_instance_ips" {
  
  depends_on = [aws_instance.funskies] 
  
  for_each = {
  
    for idx, instance in [aws_instance.funskies]: idx => instance
    
    idx.key = instance.public_ip
    idx.value = instance.private_ip
  }

  connection {
    type = "ssh"
    user = "fun-user"
    private_key = file("~/id_rsa")
    host = each.value.public_ip
  }
  
  provisioner "remote-exec" { 
     inline = [
        "echo 'Hello ${each.value}' > /home/centos/all_ip.txt"
    ]
  } 
我得到的错误

Error: Invalid 'for' expression

  on modules.tf line 9, in resource "null_resource" "send_instance_ips":
   5:   for_each = {
   6:
   7:     for idx, instance in [aws_instance.funskies]: idx => instance
   8:
   9:   idx.key = instance.public_ip

问题:如果要使用
key
value
,如何修改我的
每个
键值对以包含我的
实例的特定元素您的
null\u资源
应采用以下格式:

resource "null_resource" "send_instance_ips" {
  
  for_each = { for idx, instance in [aws_instance.funskies]:
               idx=> {key  = instance.public_ip
                      value = instance.private_ip}
             }
  
  connection {
   type = "ssh"
    user = "fun-user"
    private_key = file("~/id_rsa")
    host = each.value.key
  }  
  
  provisioner "remote-exec" { 
      inline = [
        "echo 'Hello ${each.value.value}' > /home/centos/all_ip.txt"
     ]
  }     
}
但是,由于您只有一个
aws\u实例
,因此在本例中,对于每个
实例,您实际上不需要

顺便说一下,如果您想消除
idx
并执行以下操作:

{ for idx, instance in [aws_instance.funskies]:
         instance.public_ip => instance.private_ip
}

它将不起作用,因为public_ip在之前是未知的。

如果删除for表达式的无关无效语法部分,它看起来将“按原样”起作用:
idx.key=instance.public_ip idx.value=instance.private_ip