ResourceNotFoundException terraform resource_error ai_generated true

错误:获取状态锁时出错:ResourceNotFoundException:请求的资源未找到

Error: Error acquiring the state lock: ResourceNotFoundException: Requested resource not found

ID: terraform/state-lock-dynamodb-table-not-found

其他格式: JSON · Markdown 中文 · English
92%修复率
87%置信度
1证据数
2023-07-10首次发现

版本兼容性

版本状态引入弃用备注
1.3.0 active
1.4.0 active
1.5.0 active

根因分析

为状态锁定指定的 DynamoDB 表在 AWS 账户或区域中不存在,阻止了锁的获取。

English

The DynamoDB table specified for state locking does not exist in the AWS account or region, preventing lock acquisition.

generic

官方文档

https://developer.hashicorp.com/terraform/language/settings/backends/s3#dynamodb-state-locking

解决方案

  1. 使用 AWS CLI 手动创建 DynamoDB 表:aws dynamodb create-table --table-name terraform-lock --attribute-definitions AttributeName=LockID,AttributeType=S --key-schema AttributeName=LockID,KeyType=HASH --billing-mode PAY_PER_REQUEST
  2. 在单独的配置中使用 Terraform 创建 DynamoDB 表,然后迁移后端。

无效尝试

常见但无效的做法:

  1. 95% 失败

    Running terraform init again does not create the DynamoDB table; it only configures the backend.

  2. 60% 失败

    Setting the lock table to an empty string or removing it from the backend config causes Terraform to skip locking, but this can lead to state corruption.