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

Terraform同文件中如何通过其他块数据引用多实例

Terraform多实例关联引用问题解决方法

你的核心问题是用for_each创建的多实例资源不能直接通过.id引用——这类资源本质是键值对映射,Terraform无法自动识别你要取哪个实例的属性。另外你额外定义的data "xxiam_service_id"完全多余,直接引用已创建的xxiam_service_id.service实例即可。

修正后的代码如下:

resource "xxiam_access_group" "acc" {
  for_each     = toset(var.ag_name)
  name         = each.key
  description  = var.ag_description
}

resource "xxiam_service_id" "service" {
  for_each     = toset(var.ag_name)
  name         = "service_id_${each.key}"
  description  = "Service accessing ag ${each.key}"
}

resource "xxiam_access_group_members" "acname" {
  # 与前面的资源使用相同的for_each键集,保证每个访问组对应一个成员关联
  for_each           = toset(var.ag_name)
  access_group_id    = xxiam_access_group.acc[each.key].id
  # 直接引用对应key的service_id实例ID
  iam_service_ids    = [xxiam_service_id.service[each.key].id]
}

关键说明:

  • 所有需要关联的资源必须使用相同的for_each键集合(这里是toset(var.ag_name)),这样每个each.key就能对应到一组关联的access_group和service_id实例。
  • 引用多实例资源的属性时,必须通过[each.key]指定具体实例,比如xxiam_access_group.acc[each.key].id,而不是直接写xxiam_access_group.acc.id。
  • 移除不必要的data块:既然已经通过resource创建了service_id实例,直接引用其属性即可,不需要再用data源查询,避免资源定义冗余和可能的状态不一致。

内容的提问来源于stack exchange,提问作者X T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:52:13