首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform使用数据资源获取集群快照?

Terraform使用数据资源获取集群快照?
EN

Stack Overflow用户
提问于 2022-09-12 19:25:40
回答 1查看 68关注 0票数 0

我有一个全球Aurora集群,每天自动快照。我的DB实例如下所示:

代码语言:javascript
复制
new-test ( Global Database )
   
new-test-db ( Primary Cluster )

new-test-db-0 ( Writer Instance )

我已经为数据库启用了自动快照。我想要实现的是使用ARN获取快照的data resource。我的ARN是这样的:

代码语言:javascript
复制
arn:aws:rds:us-west-2:123456789101:cluster-snapshot:rds:new-test-db-2022-08-23-08-06

这就是我的data资源的样子:-

代码语言:javascript
复制
data "aws_db_cluster_snapshot" "db" {
  for_each               = toset(var.rds_sources)
  db_cluster_identifier  = each.key
  most_recent            = true
}

其中var.rds_sources是一个字符串列表。但当我试图访问arn时,使用:-

代码语言:javascript
复制
data.aws_db_cluster_snapshot.db[*].db_cluster_snapshot_arn

我总是碰上

代码语言:javascript
复制
 Error: Unsupported attribute
│ 
│   on ../main.tf line 73, in resource "aws_iam_policy" "source_application":
│   73:     cluster_data_sources  = jsonencode(data.aws_db_cluster_snapshot.db[*].db_cluster_snapshot_arn)
│ 
│ This object does not have an attribute named "db_cluster_snapshot_arn".

这很奇怪,因为属性是在正式的文档中布局的。谢谢你的帮助。

这是我的提供者文件:-

代码语言:javascript
复制
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.75"
    }
    archive = "~> 2.2.0"
  }
  required_version = "~> 1.2.6"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-13 05:58:02

由于数据源使用的是for_each,因此结果将是键值对的映射。在terraform中,有一个内置函数values 1,它可以用来获取地图的值。返回值是一个列表,因此为了获取所有键的所有值,使用了splat操作符2。然后,由于数据源返回多个属性,并且只需要一个属性(即db_cluster_snapshot_arn),所需的最后表达式如下:

代码语言:javascript
复制
jsonencode(values(data.aws_db_cluster_snapshot.db)[*].db_cluster_snapshot_arn)

1

2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73694337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档