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

Terraform如何获取ElastiCache集群cache_nodes的address属性?

解答

你给出的两种写法都无法正确获取到节点的address属性,核心原因是aws_elasticache_cluster资源导出的cache_nodes字段是对象列表类型,而非单个对象、也不是键值对map类型。

两种错误写法的问题说明

  • aws_elasticache_cluster.api.cache_nodes["address"]:列表类型仅支持整数索引,不支持字符串作为键取值,该写法会直接触发类型校验错误。
  • aws_elasticache_cluster.api.cache_nodes.address:列表本身不存在address属性,只有列表内存储的每个节点对象才包含address字段,该写法同样会报类型不匹配错误。

正确用法

你配置的是单节点集群(num_cache_nodes = 1),cache_nodes列表长度固定为1,直接取列表下标为0的元素,再读取其address属性即可:

output "redis_host" {
  value = aws_elasticache_cluster.api.cache_nodes[0].address
}

如果后续调整为多节点集群,需要获取所有节点地址时,可以使用splat表达式快速拿到所有节点的address列表:

output "redis_all_hosts" {
  value = aws_elasticache_cluster.api.cache_nodes[*].address
}

注:资源创建过程中cache_nodes会是未知值,上述写法不需要额外加显式依赖,Terraform会在集群部署完成、属性值可用后自动解析输出结果。


内容的提问来源于stack exchange,提问作者Christian Townsend

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:12:28