Terraform创建多AWS实例后单独输出各实例ID报错求助
解决Terraform单独输出count创建的AWS实例ID的问题
首先,你的报错根源是错误的资源实例访问语法。当使用count参数创建多个资源实例时,Terraform会将该资源变为一个实例集合,你不能直接通过aws_instance.prod_server.1.id这种方式访问单个实例的属性,得用正确的列表索引语法。
针对你的Terraform版本,分两种情况修正:
情况1:Terraform 0.11及更早版本(你的代码用了旧插值语法,应该属于这个版本)
在旧版本中,需要先通过.*.id展开所有实例的ID属性得到一个列表,再通过索引访问列表元素:
output "server_id1" { value = "${aws_instance.prod_server.*.id[0]}" } output "server_id2" { value = "${aws_instance.prod_server.*.id[1]}" }
情况2:Terraform 0.12及以上版本
新版本支持更直观的索引访问,不需要包裹插值符号${},直接对资源集合用索引:
output "server_id1" { value = aws_instance.prod_server[0].id } output "server_id2" { value = aws_instance.prod_server[1].id }
额外验证点
确保你的var.instance_count确实被设置为2,这样索引0和1对应的实例才存在,避免出现索引越界的错误。
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

