【问题标题】:Adding multiple DynamoDB items through terraform通过 terraform 添加多个 DynamoDB 项目
【发布时间】:2022-04-06 17:42:16
【问题描述】:

如何在dynamoDB表中添加多个项目?

  table_name = "${var.environment}-kaleidos-dynamodb-MappingConfig"
  hash_key   = "eventType"
  item = <<EOF
   json
EOF
}````

DynamoDB always expects one item. Is there a way to provide multiple items?

【问题讨论】:

  • 您能否编辑您的问题以包含导致您的问题的 Terraform 代码的 minimal reproducible example 并包含完整的错误输出?

标签: amazon-dynamodb terraform


【解决方案1】:

无法使用单个 resource "aws_dynamodb_table_item" 添加多个项目。你可以在同一个文件中有多个resource 语句,只要你给它们起不同的名字,例如:

resource "aws_dynamodb_table_item" "item1" {
  ...
}

resource "aws_dynamodb_table_item" "item2" {
  ...
}

如果您尝试基于数组或映射或特定数字创建项目,您可以使用countfor_eachfor_each 在 0.12.6 中引入)

count 示例:

resource "aws_dynamodb_table_item" "items" {
  count = 4
  item <<EOF
{
  "pk": {"S": "${count.index}"}
}
EOF

for_each 示例:

resource "aws_dynamodb_table_item" "items" {
  for_each = {
    item1 = {
      something = "hello"
    }
    item2 = {
      something = "hello2"
    }
  }
  item = <<EOF
{
  "pk": {"S": "${each.key}"},
  "something": {"S": "${each.value.something}"}
}
EOF
}

【讨论】:

  • something 何时设置数据类型有什么建议吗?
【解决方案2】:

如果有人想在这里插入集合数据类型是一个例子

resource "aws_dynamodb_table_item" "employee" {
  table_name = "${var.environment}-employee"
  hash_key   = "id"
  for_each = {
    "1234abcd" = {
      fistName             = "Jack"
      lastName             = "Dorsey"
      projects             =  ["Twiter", "Square]
    }
    "34589fsd" = {
      fistName             = "Jack"
      lastName             = "MA"
      projects             =  ["Alibaba", "Ant"]
    }
  }
  item = <<ITEM
{
  "id": { "S": "${each.key}" },
  "fistName":  { "S":"${each.value.fistName}" },
  "lastName": { "S": "${each.value.lastName}"},
  "projects": {"SS": ${jsonencode(each.value.projects)}}
}
ITEM
}

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多