Terraform 错误:错误锁定状态:获取状态锁时出错:发生 2 个错误:
Posted
技术标签:
【中文标题】Terraform 错误:错误锁定状态:获取状态锁时出错:发生 2 个错误:【英文标题】:Terraform Error: Error locking state: Error acquiring the state lock: 2 errors occurred: 【发布时间】: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" 这一行。然后,“地形计划”起作用了。为什么? 【参考方案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 =
【讨论】:
以上是关于Terraform 错误:错误锁定状态:获取状态锁时出错:发生 2 个错误:的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google Cloud Platform 时 Terraform 状态锁定的机制是啥?
无法使用 localstack dynamoDB 锁定 terraform 状态:UnrecognizedClientException
Terraform EC2(根块设备加密错误未能达到目标状态)