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

Terraform获取子网ARN迭代关联AWS RAM资源共享配置问题

问题根因

你两次配置失败的核心原因是混淆了两个子网数据源的属性边界:

  • aws_subnets(复数形式)是列表类数据源,仅返回匹配过滤条件的子网ID集合,不包含ARN、可用区等单个子网的详细属性,自然不存在arn这个可读取字段
  • 你已经通过for_each循环创建了aws_subnet(单数形式)的数据源实例集合,这个集合里才存储了每个子网对应的完整属性,包括你需要的ARN值。你第一次尝试直接传入子网ID、第二次尝试从复数数据源读取不存在的ARN属性,都没有正确复用已经拿到的子网详情数据。
正确配置

直接遍历你已经定义完成的单数aws_subnet数据源集合即可,不需要额外做ARN拼接或者重复查询:

resource "aws_ram_resource_association" "example" {
  for_each = data.aws_subnet.dev_subnet

  resource_arn       = each.value.arn
  resource_share_arn = aws_ram_resource_share.share_subnets_with_dev_account.arn
}
逻辑说明
  • 你之前定义dev_subnet_arns输出时,就是从data.aws_subnet.dev_subnet集合中提取每个实例的arn属性,RAM资源关联的取值逻辑和这个输出完全一致
  • 该写法会自动复用之前已经拉取到的子网详情数据,不会重复发起API查询,执行效率更高
  • 传入的resource_arn是完整的子网ARN格式,完全符合RAM资源关联的参数要求,不会再出现MalformedArnException报错

内容的提问来源于stack exchange,提问作者Jason Stanley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:06:20