1

我有一个用这个 Terraform 创建的 DynamoDB 表:

resource "aws_dynamodb_table" "materials_table" {
  name              = "materials"
  hash_key          = "MATERIAL"
  billing_mode      = "PROVISIONED"
  read_capacity     = 5
  write_capacity    = 5
  
  attribute {
    name = "MATERIAL"
    type = "S"
  }
}

该表已成功填充(有 4 条记录,如本文所述),但为了解决问题(在那篇文章中),我添加了一个字段PK并将其设置为hash_key字段,如下所示:

resource "aws_dynamodb_table" "materials_table" {
  name              = "materials"
  hash_key          = "PK"
  billing_mode      = "PROVISIONED"
  read_capacity     = 5
  write_capacity    = 5
  
  attribute {
    name = "PK"
    type = "S"
  }
}

这在运行时导致了以下错误terraform apply

Error: error creating DynamoDB Table: ResourceInUseException: Table already exists: materials

我需要做什么.tf才能让更改被接受?

4

1 回答 1

3

不允许更改 DynamoDB 中的某些属性,例如更改分区键、添加本地二级索引等。

当发生这种变化时,它将需要替换资源,并且要替换,它会尝试删除并重新创建资源。在这个过程中,如果表已经存在,就会失败。

唯一的选择是删除堆栈或手动删除 DynamoDB 表并让模板再次创建它。或重命名表。

文件称它将强制使用新资源

hash_key - (必需,强制新资源)用作散列(分区)键的属性。

于 2021-02-26T14:43:28.863 回答