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
相关产品推荐
相关产品推荐

