# 错误：获取状态锁失败：ConditionalCheckFailedException：条件请求失败（服务：DynamoDb，状态码：400）

- **ID:** `cicd/terraform-lock-acquire-timeout`
- **领域:** cicd
- **类别:** runtime_error
- **错误码:** `LOCK_ACQUIRE_TIMEOUT`
- **验证级别:** ai_generated
- **修复率:** 85%

## 根因

由于对同一状态文件的并发操作，Terraform状态锁获取失败，通常发生在多个CI作业或团队成员同时针对同一后端（如DynamoDB表）运行terraform apply时。

## 解决方案

1. ```
   Use terraform force-unlock <LOCK_ID> after verifying no other operation is running. First, identify lock ID: terraform force-unlock -force <LOCK_ID>. Example: terraform force-unlock -force 12345-abcde-67890-fghij
   ```
2. ```
   Implement a mutex in CI pipeline using a dedicated lock mechanism (e.g., GitLab CI resource_group or GitHub Actions concurrency) to prevent concurrent terraform apply runs. Example GitHub Actions: concurrency: group: terraform-deploy cancel-in-progress: false
   ```

## 无效尝试

- **Delete the lock file manually from S3 or DynamoDB to force unlock** — Manual deletion can corrupt state if another operation is in progress, leading to data loss or inconsistent state. Terraform's force-unlock should be used instead. (60% 失败率)
- **Set parallelism=1 in terraform config to serialize all operations** — This only affects resource provisioning parallelism, not state lock contention from multiple processes; it does not prevent concurrent terraform apply commands. (90% 失败率)
