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

如何在Terraform另一模块中调用data资源获取的aws_ami ID

报错根因

你将AMI查询的data资源及对应的ami输出定义在了gitlab模块中,但父级main.tf给monitoring模块传参时,错误引用了module.monitoring.ami.id,monitoring模块未定义ami输出属性,因此触发属性不存在的报错。

修复方案

核心修改(必做)

修改父级main.tf中monitoring模块的参数引用逻辑,从gitlab模块获取AMI ID,示例如下:

module "monitoring" {
  # 替换原有错误的引用行
  ami_img_id = module.gitlab.ami.id
  # 其余原有monitoring模块配置保持不变
}

修改后执行terraform plan验证,无报错即可apply生效,配置完成后CloudWatch告警即可匹配到对应维度的指标数据,解决无数据的问题。

可选优化

如果不需要传递完整的AMI对象属性,建议直接在gitlab模块中仅输出AMI ID,减少不必要的属性传递:

  1. 修改gitlab模块的outputs.tf:
output "ami_id" {
  value = data.aws_ami.ami_img.id
}
  1. 对应修改父级main.tf的monitoring模块参数:
ami_img_id = module.gitlab.ami_id

该方案完全复用了gitlab模块已经查询到的AMI信息,不需要重复定义data资源,符合最优配置要求。

内容的提问来源于stack exchange,提问作者Thanatos-Delta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:09:03