【问题标题】:Terraform Error: Error locking state: Error acquiring the state lock: 2 errors occurred:Terraform 错误:错误锁定状态:获取状态锁时出错:发生 2 个错误:
【发布时间】:2021-01-16 20:26:15
【问题描述】:

我尝试了 terraform 版本 v0.12.26 和 v0.13.3。都失败了。

地形规划

获取状态锁。这可能需要一些时间...

错误:错误锁定状态:获取状态锁定错误:发生 2 个错误: * ResourceNotFoundException: 未找到请求的资源 * ResourceNotFoundException: 未找到请求的资源

Terraform 获取状态锁以保护状态不被写入 多个用户同时使用。请解决上述问题并尝试 再次。对于大多数命令,您可以使用“-lock=false”禁用锁定 标记,但不建议这样做。

相关源码:

terraform {
  backend "s3" {
    encrypt        = false
    bucket         = "dev-terraform-state"
    key            = "dev/Oregon/eks/terraform.tfstate"
    region         = "us-west-2"
    dynamodb_table = "dev-lock-table"
  }
  required_version = ">= 0.12.0"
}

【问题讨论】:

  • 嗨。我注意到你有一堆问题的答案,但没有一个被接受。接受有帮助的问题是一种很好的做法,因为它可以帮助其他人将来遇到类似的问题。如果没有接受好的答案,它会提示人们提出重复的问题,并错误地假设给出的答案没有用处。
  • 我愿意接受这些答案。但是,如何接受?
  • 在upvote/downvote按钮下有一个“勾号”符号。
  • 我发现 dev-lock-table 不是通过运行 terraform init 和 plan 在 AWS dynamodb 表中创建的。但是,为什么不创建呢?
  • 我删除了 dynamodb_table = "dev-lock-table" 这一行。然后,“地形计划”起作用了。为什么?

标签: amazon-web-services terraform terraform0.12+


【解决方案1】:

错误为ResourceNotFoundException,表示你的dev-lock-table不存在。

Terraform 不会创建它。相反,它必须在您使用它之前存在。来自docs

dynamodb_table 字段到现有 DynamoDB 表名。

【讨论】:

  • 任何来自 Google 的人,确保您在提供程序配置中指定的区域中创建了表
  • 表需要主键作为LockID
  • 感谢@chris 发生在我身上,您的消息解决了我的问题!欣赏它
【解决方案2】:

我运行 terraform force-unlock <LOCK_ID> (docs) 来删除锁。

大量讨论here

【讨论】:

    【解决方案3】:

    确保创建的表和下面代码中指定的区域相同

    terraform { backend "s3" { bucket = "" key = "" region = "us-east-1" dynamodb_table =

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2021-02-17
      • 2020-09-23
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多