Terraform 如何将包含n个元素和字符串的元组组合到列表中?

Terraform 如何将包含n个元素和字符串的元组组合到列表中?,terraform,Terraform,对于我的AWS备份选择,我尝试在备份选择中添加一个EFS文件系统和两个RDS实例 resource "aws_backup_selection" "backup" { name = "${var.name}-backup-selection" iam_role_arn = aws_iam_role.backup.arn plan_id = aws_backup_plan.backup.id resources = [ concat([aws

对于我的AWS备份选择,我尝试在备份选择中添加一个EFS文件系统和两个RDS实例

resource "aws_backup_selection" "backup" {
  name         = "${var.name}-backup-selection"
  iam_role_arn = aws_iam_role.backup.arn
  plan_id      = aws_backup_plan.backup.id

  resources = [  
    concat([aws_efs_file_system.files.arn], aws_rds_cluster_instance.cluster_instances.*.arn)
  ]

}
显示的“concat”是我已经尝试过的混合错误消息的变体之一。这个给了我这个:

Error: Incorrect attribute value type

  on backup.tf line 51, in resource "aws_backup_selection" "backup":
  51:   resources = [  
  52:     concat([aws_efs_file_system.files.arn], aws_rds_cluster_instance.cluster_instances.*.arn)
  53:   ]
    |----------------
    | aws_efs_file_system.files.arn is "arn:aws:elasticfilesystem:eu-central-1:xxx:file-system/fs-xxx"
    | aws_rds_cluster_instance.cluster_instances is tuple with 2 elements

Inappropriate value for attribute "resources": element 0: string required.
如何将ARN字符串和两个实例的列表合并为resources元素所需的列表格式


谢谢。

由于concat返回一个列表,您可以直接将其分配给资源,而无需附加括号:

resource "aws_backup_selection" "backup" {
  name         = "${var.name}-backup-selection"
  iam_role_arn = aws_iam_role.backup.arn
  plan_id      = aws_backup_plan.backup.id

  resources =
    concat([aws_efs_file_system.files.arn], aws_rds_cluster_instance.cluster_instances[*].arn)
}
附加的括号将concat的列表结果转换为列表列表,这不是您想要的

我还将
aws\u rds\u cluster\u instance.cluster\u instances.*.arn
转换为
aws\u rds\u cluster\u instances.cluster\u instances.[*].arn
,因为[legacy(仅属性)splat表达式已弃用][1]


[1] :l

由于concat返回一个列表,因此您可以直接将其分配给资源,而无需附加括号:

resource "aws_backup_selection" "backup" {
  name         = "${var.name}-backup-selection"
  iam_role_arn = aws_iam_role.backup.arn
  plan_id      = aws_backup_plan.backup.id

  resources =
    concat([aws_efs_file_system.files.arn], aws_rds_cluster_instance.cluster_instances[*].arn)
}
附加的括号将concat的列表结果转换为列表列表,这不是您想要的

我还将
aws\u rds\u cluster\u instance.cluster\u instances.*.arn
转换为
aws\u rds\u cluster\u instances.cluster\u instances.[*].arn
,因为[legacy(仅属性)splat表达式已弃用][1]

[1] :l

这不是你需要的吗?