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

使用Terraform数据资源获取Aurora集群快照ARN遇属性错误求助

解决Terraform获取Aurora全局集群快照ARN时的「Unsupported attribute」错误

问题根源

  1. 当用for_each声明数据源时,data.aws_db_cluster_snapshot.db是映射(map)类型,而非列表。直接使用[*]列表展开语法会导致Terraform无法正确解析属性,因为映射和列表的元素访问逻辑不同。
  2. 全局Aurora集群的自动快照关联的是主集群(new-test-db)而非全局数据库标识符(new-test),若数据源配置时指定了错误的集群ID,也可能导致属性读取异常。

修复方案

1. 修正属性访问语法

for_each生成的映射需先用values()函数提取所有元素,再用列表展开语法获取ARN:

# 错误写法
data.aws_db_cluster_snapshot.db[*].db_cluster_snapshot_arn

# 正确写法
values(data.aws_db_cluster_snapshot.db)[*].db_cluster_snapshot_arn

若需访问单个集群的快照ARN,直接通过for_each的键取值:

data.aws_db_cluster_snapshot.db["new-test-db"].db_cluster_snapshot_arn

2. 确保数据源配置正确

明确指定主集群ID和自动快照类型,避免筛选偏差:

data "aws_db_cluster_snapshot" "db" {
  for_each = var.rds_sources

  db_cluster_identifier = each.value # 传入主集群ID,如"new-test-db"
  snapshot_type         = "automated" # 限定只匹配自动快照
  most_recent           = true
}

注意:不能将全局数据库ID(new-test)用于db_cluster_identifier字段,必须使用主集群的标识符。

3. 验证Provider属性兼容性

执行以下命令,查看当前AWS Provider实际暴露的属性,确认db_cluster_snapshot_arn是否存在:

terraform providers schema -type=data.aws_db_cluster_snapshot

你使用的~>3.75版本AWS Provider确实支持该属性,此步骤主要用于排查拼写错误或版本异常。

完整示例配置

variable "rds_sources" {
  type    = set(string)
  default = ["new-test-db"]
}

data "aws_db_cluster_snapshot" "db" {
  for_each = var.rds_sources

  db_cluster_identifier = each.value
  snapshot_type         = "automated"
  most_recent           = true
}

output "snapshot_arns" {
  value = values(data.aws_db_cluster_snapshot.db)[*].db_cluster_snapshot_arn
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:01:20