You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform v0.12.18中data块使用for_each报错问题咨询

问题解答

是的,这个错误确实是由Terraform v0.12.18版本的限制导致的。

原因分析

在Terraform v0.12.x版本中,for_each参数仅支持在顶级的resource或data块上使用,不能用于嵌套的子块(比如你代码里的filter块)。而嵌套块中使用for_each的功能是在Terraform v0.13及更高版本中才引入的,所以v0.12.18无法识别这种用法,从而抛出错误。

解决办法

针对v0.12.18版本,你可以使用dynamic块来生成多个filter子块,代码修改如下:

data "aws_identitystore_group" "AWSAdministratorAccess" {
  identity_store_id = tolist(data.aws_ssoadmin_instances.AWSAdministratorAccess.identity_store_ids)[0]
  
  dynamic "filter" {
    for_each = toset(["SupportAccess","AdminAccess"])
    content {
      attribute_path  = "DisplayName"
      attribute_value = filter.value
    }
  }
}

注意:dynamic块中迭代变量的名称是你定义的块名(这里是filter),所以用filter.value来引用每个元素。

如果条件允许,升级到Terraform v0.13及以上版本,就可以直接在嵌套块中使用for_each参数了。

内容的提问来源于stack exchange,提问作者Devang Sanghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:53:19