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

其他格式: JSON · Markdown 中文 · English
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.

generic

官方文档

https://developer.hashicorp.com/terraform/language/state/backends#s3

解决方案

  1. 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'.
  2. 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'.

无效尝试

常见但无效的做法:

  1. 90% 失败

    Reinitialization does not fix a corrupted state file; it only reconfigures the backend connection.

  2. 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.

  3. 95% 失败

    'terraform state pull' only downloads the state as-is; it does not repair corrupted data.