使用Azure Terrafy导出资源遇network.ServiceEndpointPoliciesClient反序列化错误
Azure Terrafy导出Azure资源时JSON反序列化错误处理
错误信息(翻译后)
错误:检索子网服务端点存储策略 "_e41f87a2_mi_xxx"(资源组 "xxxx")时出错:
network.ServiceEndpointPoliciesClient#Get: 响应请求失败:状态码=200 -- 原始错误:JSON反序列化时出错
Error = 'json: 无法将对象反序列化为Go结构体字段ServiceEndpointPolicyPropertiesFormat.contextualServiceEndpointPolicies的类型"id":
"/subscriptions/4xxxx/resourceGroups/xx/providers/Microsoft.Network/serviceEndpointPolicies/e41xxx
错误:检索子网服务端点存储策略时出错
network.ServiceEndpointPoliciesClient#Get: 响应请求失败:Error = 'json: 无法将对象反序列化为Go结构体字段ServiceEndpointPolicyPropertiesFormat.contextualServiceEndpointPolicies的类型
问题原因
Azure Terrafy依赖的Azure SDK for Go版本中,contextualServiceEndpointPolicies字段被定义为字符串类型(资源ID),但实际Azure API返回的JSON数据里该字段是对象类型,导致反序列化失败。
解决方法
- 升级Azure Terrafy到最新版:新版本会同步更新Azure SDK,修复字段类型不匹配问题。执行命令:
aztfy upgrade - 临时规避导出问题:导出时排除有问题的服务端点策略资源,后续手动编写该资源的Terraform配置。使用
--exclude参数指定资源ID:aztfy export --exclude "/subscriptions/4xxxx/resourceGroups/xx/providers/Microsoft.Network/serviceEndpointPolicies/e41xxx" - 手动修改代码(应急方案):找到Azure Terrafy依赖的SDK结构体定义文件,将
contextualServiceEndpointPolicies字段类型从string改为interface{}或对应对象结构体,重新编译aztfy。
内容的提问来源于stack exchange,提问作者balaganesh
相关产品推荐
相关产品推荐

