使用Terraform创建Azure应用网关时遇InvalidResourceName错误求助
解决Azure Application Gateway Terraform创建时的InvalidResourceName错误
遇到这个问题别死磕自己写的名称,从这几个方向排查:
检查模块内部的名称处理逻辑
你用了嵌套模块,大概率是模块里对名称做了拼接或变量引用错误,导致最终传给Azure的名称不符合规则。打开模块的gateway/main.tf,看azurerm_application_gateway资源的name字段赋值逻辑,比如是不是写了name = "${var.gateway_name}-${var.env}"但env变量没传值,或者变量名拼写错误导致拼接出无效名称。用调试日志抓实际请求内容
执行TF_LOG=DEBUG terraform apply,在输出的日志里找发送给Azure的ApplicationGateways_CreateOrUpdate请求,看里面的name字段到底是什么——有时候你传入的名称会被模块里的其他逻辑覆盖,或者拼接出了空值、非法字符。排查名称里的隐形字符
复制粘贴的名称可能带空格、制表符这类不可见字符,肉眼看起来正常但Azure不认。把名称复制到VS Code(开启「控制字符可见」)这类编辑器,或者用echo -n "name-gateway-wgrkecswbk" | od -c命令检查有没有奇怪的控制字符。硬编码名称测试模块
直接在模块的azurerm_application_gateway资源里把name改成一个绝对合规的值(比如test-app-gateway-001),如果能创建成功,说明问题出在名称的传递或拼接环节,不是规则本身的问题。
内容的提问来源于stack exchange,提问作者Ezequiel Moreno
相关产品推荐
相关产品推荐

