You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform校验和不匹配时,如何解决状态文件相关错误?

Terraform Plan 报错:S3状态文件与DynamoDB校验和不匹配

执行terraform plan时出现如下错误:

Error: error loading state: state data in S3 does not have the expected content. 
│ The checksum calculated for the state stored in S3 does not match the checksum 
│ stored in DynamoDB. 
│ 
│ Bucket: bucketname 
│ Key:    path/terraform.tfstate 
│ Calculated checksum: 
│ Stored checksum:     xxshjkxxxxxxxxxxxxxxxxxxxx

问题原因

这个错误的核心是S3中的Terraform状态文件被删除或损坏,导致Terraform计算出的文件校验和,和DynamoDB里存的校验记录对不上——DynamoDB在这里负责状态锁和校验信息的同步。

解决方法

  • 优先恢复备份:先检查S3桶里的path/terraform.tfstate文件,如果文件已删,从S3版本备份(开了版本控制的话)或本地备份恢复;如果文件存在,验证内容是否完整、有没有被篡改。
  • 重置校验记录(无备份时):
    1. 登录DynamoDB控制台,找到对应Terraform状态锁的表(表名可以在你的Terraform配置backend "s3"块里查到)。
    2. 在表中搜索匹配Bucket为bucketname、Key为path/terraform.tfstate的条目。
    3. 删除该条目后,重新执行terraform init初始化,再运行terraform plan。注意:操作前要确认没有其他协作者在操作基础设施,避免冲突。
  • 后续预防:给存状态文件的S3桶开版本控制,同时启用桶日志,防止状态文件意外丢失或损坏后没法恢复。

内容的提问来源于stack exchange,提问作者Santosh Garole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:10:10