Amazon dynamodb terraform与DynamoDB后端:创建新工作区时有400个错误请求

Amazon dynamodb terraform与DynamoDB后端:创建新工作区时有400个错误请求,amazon-dynamodb,terraform,terraform-provider-aws,Amazon Dynamodb,Terraform,Terraform Provider Aws,我有terraform stack,它在DynamoDB中保持锁: terraform { backend "s3" { bucket = "bucketname" key = "my_key" encrypt = "true" role_arn = "arn:aws:iam::11111111:role/my_role" dynamodb_t

我有terraform stack,它在DynamoDB中保持锁:

terraform {
  backend "s3" {
    bucket  = "bucketname"
    key     = "my_key"
    encrypt = "true"
    role_arn = "arn:aws:iam::11111111:role/my_role"
    dynamodb_table = "tf-remote-state-lock"
  }
}
当我运行
terraform workspace new test
时,它会失败,并出现(相当误导性的)错误:

如果我打开
TF_LOG=DEBUG
,我会看到
400错误请求
(更多详细信息)


我做错了什么以及如何修复它?

可能您没有创建AWS资源。下面是关于s3存储桶的说明:

这假设我们创建了一个名为mybucket的bucket

我认为第二条消息来自DynamoDb表,它没有创建或配置正确。文档中介绍了使用DynamoDb实现锁定和一致性的以下内容:

dynamodb_表-(可选)用于状态的dynamodb表的名称 锁定和一致性。该表必须具有名为的主键 具有字符串类型的LockID。如果未配置,则将禁用状态锁定 残疾人


可能您没有创建AWS资源。下面是关于s3存储桶的说明:

这假设我们创建了一个名为mybucket的bucket

我认为第二条消息来自DynamoDb表,它没有创建或配置正确。文档中介绍了使用DynamoDb实现锁定和一致性的以下内容:

dynamodb_表-(可选)用于状态的dynamodb表的名称 锁定和一致性。该表必须具有名为的主键 具有字符串类型的LockID。如果未配置,则将禁用状态锁定 残疾人


解决方案:
terraform工作区
应仅在
terraform init
之后运行。如果您设置了
TF_工作区
,则在
TF init
期间可能会出现错误,表示工作区还不存在,因此您可能会在
TF init
之前尝试使用
TF ws new
。不要这样做,只需在
TF init
之后设置
TF_工作区
解决方案:
terraform WORKSPACE无论什么
都应该在
terraform init
之后运行。如果您设置了
TF_工作区
,则在
TF init
期间可能会出现错误,表示工作区还不存在,因此您可能会在
TF init
之前尝试使用
TF ws new
。不要这样做,只需在
TF init

您的帐户中是否存在该表之后设置
TF\u工作区
?那个角色可以访问它吗?当然可以。这个表存在于你的帐户中吗?那个角色可以访问它吗?当然可以。
failed to lock s3 state: 2 errors occurred:
* ResourceNotFoundException: Requested resource not found
* ResourceNotFoundException: Requested resource not found