Amazon dynamodb 地形+;DynamoDB:从变量创建属性

Amazon dynamodb 地形+;DynamoDB:从变量创建属性,amazon-dynamodb,terraform,terraform-provider-aws,Amazon Dynamodb,Terraform,Terraform Provider Aws,我想编写一个terraform模块,用于创建dynamoDb表。这些属性应该从.tfvars或默认变量中读取,而不是像《资源指南》中那样在.tf中已经命名 为了进一步解释,假设使用属性列表来实现此伪代码: resource "aws_dynamodb_table" "basic-dynamodb-table" { name = "GameScores" ... #Other required feilds ... ... # attributes is a list of names f

我想编写一个terraform模块,用于创建dynamoDb表。这些属性应该从
.tfvars
或默认变量中读取,而不是像《资源指南》中那样在
.tf
中已经命名

为了进一步解释,假设使用属性列表来实现此伪代码:

resource "aws_dynamodb_table" "basic-dynamodb-table" {
name = "GameScores"
... #Other required feilds
...
... 
#  attributes is a list of names
  for(attribute_name:${length(var.attributes)}){
    attribute {
      name = "${var.attributes[i]}"
      type = "N"
    }
  }
}

在地形规划/应用期间,如何迭代属性列表并创建属性{}?属性块的数量不能像terraform文档中显示的那样是静态的,它们的名称必须从变量中读取

创建DynamoDB表时,只需要指定分区键和排序键(可选)。所有其他属性都作为存储在表中的每个文档(或项目)的一部分存储

这同样适用于全局二级索引。您只需要为每个索引指定分区键和排序键

如果没有静态属性,则无法创建表。分区和排序键的名称在表/索引的生存期内必须相同


最后,问题还不清楚,但请不要使用Teraform将数据加载到表中。这不是合适的工具

你的问题到底是什么?@ThomasVdBerge现在编辑谢谢@Mike。你是对的,这不是用来加载数据的。我必须编写一个模块,其他人在创建dynamodb表时只要更改变量文件中的值,就可以重用这个模块。所以,比方说,是否需要排序键可以由
vars.sort\u key\u name==“”决定?0:1
,然后为其创建属性块。