最近增加一些GCP资源, 出现了一些奇怪的错误, unsupported attribute "app_engine"。 我当时搜索了一下运行文件夹, 没看到关键字 "app_engine", 又整个项目里边搜素了一下, 还是没有发现。
当时猜测可能是因为GCP Provider版本更新了之后, 原来的state 文件不能很好的读取了。 terraform state pull 下来查看state。 果然就是这个问题! 原来是从2.X 升级到3.X 版本后,有些字段不需要了。而Terraform又不能很好的去兼容。
解决的办法很简单,就是把这些不要字段删除掉, 包括:app_engine
, policy_data
& policy_etag, 然后再terraform state push 回去
当然, 你也可以采取另外一种方案, 就是把对应的 2.X 的state删除掉, 然后重新import 进来(按照3.X 的format)
(note: 记得更新 serial number: 也就是state文件的版本信息,每推一次 +1 就可以。)