在 Terraform 中,“${element(aws_subnet.public.*.id, count.index)}”是什么?

-1 amazon-web-services terraform terraform-provider-aws

谁能解释一下这一行。

subnet_id      = "${element(aws_subnet.public.*.id, count.index)}"
Run Code Online (Sandbox Code Playgroud)

我在 terraform 代码中使用它来创建一个堆栈

Mar*_*cin 5

aws_subnet.public.*.id返回子网 ID 列表,例如:

["subnet-3232", "subnet-555", "subnet-6666"]
Run Code Online (Sandbox Code Playgroud)

因此,element(aws_subnet.public.*.id, count.index)将从列表中选择一个子网 ID,具体取决于 的值count.index。例如:

element(["subnet-3232", "subnet-555", "subnet-6666"], 0) # pick first one
element(["subnet-3232", "subnet-555", "subnet-6666"], 1) # pick second one
element(["subnet-3232", "subnet-555", "subnet-6666"], 2) # pick last one
element(["subnet-3232", "subnet-555", "subnet-6666"], 3) # pick first one again (aka wrap-around)
Run Code Online (Sandbox Code Playgroud)

此外,如果count.index大于元素的数量,则该元素将返回并从列表的头部开始(也称为 "wrap-around")。