Terraform创建Azure配置键报错:路径段数无法被2整除
问题原因
该报错是azurerm 2.x版本提供程序的隐式依赖识别失效导致的:
Terraform默认会并行处理无显式依赖关联的资源逻辑,在执行terraform plan阶段尝试拉取azurerm_app_configuration_key的现有状态时,关联的App Configuration实例还未完成创建,提供程序无法获取实例的完整元数据,拼接配置键资源ID时会错误地将label值直接作为路径段追加,最终生成的资源ID路径段数为奇数,不符合Azure资源ID「段名/段值」成对出现的格式要求,触发解析报错。
无论是否显式传入label参数,只要依赖顺序不对,提供程序都会在ID拼接阶段触发该错误,和label本身的取值、提供程序小版本bug无关。
修复方案
- 给所有
azurerm_app_configuration_key资源显式添加依赖声明,强制Terraform等待App Configuration实例完全创建完成后,再处理配置键相关的逻辑,修改后的配置键资源示例如下:
resource "azurerm_app_configuration_key" "MainAPI" { configuration_store_id = azurerm_app_configuration.appconf.id key = "MainAPI" value = var.picking_api_url type = "kv" label = var.environment_name # 显式声明对App Configuration实例的依赖 depends_on = [ azurerm_app_configuration.appconf ] }
其余省略的配置键资源也需要添加相同的depends_on配置。
- 清理本地状态中残留的错误资源记录,避免旧的异常ID缓存影响执行:
terraform state rm $(terraform state list | grep azurerm_app_configuration_key)
如果是在流水线环境中执行,可以直接清空工作目录下的.terraform缓存目录和旧的状态快照后重新初始化。 - 重新执行
terraform init、terraform plan验证逻辑,确认无报错后再执行terraform apply即可完成资源创建。
内容的提问来源于stack exchange,提问作者PhilPursglove
相关产品推荐
相关产品推荐

