terraform .% 和 .# 和 <computed> 意思

terraform .% and .# and <computed> meaning

创建资源和调用 terraform plan 时,我看到如下名称:

tags.%:                           "" => "1"
dns_servers.#:                    <computed>

我想知道 .%.# 是什么意思;值 "" => "1" 标签意味着什么。%

此外,值 computed 真正代表什么?

tags.%: 指的是资源的 tags 属性的部分数。

"" => "1" 表示这些部分的数量从申请前的 undefined 到申请后的 1。在此示例中,这可能意味着当前没有标签,如果您申请,将有 1 个标签。通常,计划中的 "foo" => "bar" 意味着 Terraform 检测到该值当前为 "foo" 并且在应用该计划后它将为 "bar".

dns_servers.# 表示 dns_servers 属性有多个部分,此行引用由该唯一编号标识的特定部分。比如你做几个tag,可以有多个tagtag.1tag.2等,这个编号由提供者决定。

<computed>表示实际申请后才能知道该值。例如,您创建一个 EIP 和一个使用该 EIP 的 EC2 实例,Terraform 会将 EIP 的 allocation_id 显示为 <COMPUTED>,因为在创建之前您无法知道这一点(即它是从 AWS 返回的) EIP创建)。 Terraform 的目标是在一个 运行 中收敛(即你不需要多次 运行 apply 来获得最终结果),这个目标的权衡是你不会看到这些创建资源之前 terraform plan 中的值。