如何解决Terraform中“No Update defined, must set ForceNew on”报错?
问题解答
1. Update定义说明
Terraform 自定义 Provider 中的资源需要实现CRUD(创建/读取/更新/删除)四个核心生命周期方法,Update就是对应原地更新已有资源的逻辑方法:当用户修改了某资源下标记为ForceNew: false的属性后,执行terraform apply时,SDK会自动调用该资源的Update方法,通过服务端API修改已有资源的配置,无需销毁重建资源。
2. 不设置ForceNew: true消除报错的方法
可以不设置ForceNew: true,前提是你需要为对应的资源实现完整的Update方法:
在Update方法中补充config_sensitive字段变更后的处理逻辑,调用对应服务的更新接口完成配置修改,通过SDK校验后重新编译代码,即可消除该报错。
报错本质原因
当前报错是Terraform Provider SDK的强制校验逻辑触发:你将config_sensitive字段设为ForceNew: false,相当于声明该字段支持修改后原地更新,但资源未实现Update方法,SDK无法处理该字段的变更场景,因此抛出错误。
内容的提问来源于stack exchange,提问作者Alex Kuzmin
相关产品推荐
相关产品推荐

