【问题标题】:Terraform + DynamoDB : Create attributes from variablesTerraform + DynamoDB:从变量创建属性
【发布时间】:2018-10-11 23:06:14
【问题描述】:

我想编写一个 terraform 模块来创建 dynamoDb 表。这些属性应从.tfvars 或默认变量中读取,而不是在资源指南here 中已在.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 plan/apply 期间遍历属性列表并创建属性{ }?属性块的数量不能像 terraform 文档中显示的那样是静态的,并且它们的名称必须从变量中读取。

【问题讨论】:

  • 你的问题到底是什么?
  • @ThomasVd Berge 已编辑

标签: amazon-dynamodb terraform terraform-provider-aws


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢@Mike。你是对的,这不是为了加载数据。我必须编写一个模块,其他人可以在他们必须创建一个仅更改变量文件中的值的 dynamodb 表时重复使用该模块。所以说,是否需要排序键是由vars.sort_key_name == "" ? 0:1决定的,然后为它创建一个属性块。
猜你喜欢
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 2021-08-01
  • 2020-03-16
  • 2019-07-27
  • 2019-11-20
  • 1970-01-01
相关资源
最近更新 更多