terraform
data_error
ai_generated
true
错误:S3 中的状态数据没有预期内容:意外的 JSON 输入结束
Error: State data in S3 does not have the expected content: unexpected end of JSON input
ID: terraform/terraform-state-version-mismatch
70%修复率
80%置信度
1证据数
2024-03-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| Terraform v1.5 | active | — | — | — |
| Terraform v1.6 | active | — | — | — |
| Terraform v1.7 | active | — | — | — |
| Terraform v1.8 | active | — | — | — |
根因分析
后端中的状态文件为空、损坏或被截断,通常由并发写入或不完整上传引起。
English
The state file in the backend is empty, corrupted, or truncated, often due to concurrent writes or incomplete uploads.
官方文档
https://developer.hashicorp.com/terraform/language/state/backends#s3解决方案
-
Restore the state file from a previous backup version in S3 (if versioning is enabled) using AWS CLI: 'aws s3api get-object-version --bucket <bucket> --key <key> --version-id <version-id> terraform.tfstate.backup'.
-
If no backup exists, use 'terraform state pull' to download the current state, manually fix the JSON if possible, then push it back using 'terraform state push fixed.tfstate'.
无效尝试
常见但无效的做法:
-
90% 失败
Reinitialization does not fix a corrupted state file; it only reconfigures the backend connection.
-
80% 失败
Deleting the state file without a backup leads to complete loss of state, requiring manual re-import of all resources, which is error-prone.
-
95% 失败
'terraform state pull' only downloads the state as-is; it does not repair corrupted data.