使用Terraform创建Azure EventHub授权规则失败求助
Azure EventHub授权规则创建失败(Terraform)
问题详情
使用Terraform创建Azure EventHub授权规则时触发以下错误,更换azurerm provider版本至~>2.29.0后问题未解决:
Terraform代码
resource "azurerm_eventhub_authorization_rule" "jdBulkMessenger" { name = "jd-bulk-messenger" namespace_name = azurerm_eventhub_namespace.eventhub_ns.name eventhub_name = azurerm_eventhub.eventhub.name resource_group_name = data.azurerm_resource_group.rg.name listen = true send = false manage = false }
错误信息
Error: Error making Read request on Azure EventHub Authorization Rule : eventhub.EventHubsClient#GetAuthorizationRule: Invalid input: autorest/validation: validation failed: parameter=authorizationRuleName constraint=MinLength value="" details: value length must be greater than or equal to 1
解决方法
1. 强制设置资源依赖
确保授权规则在EventHub实例及Namespace创建完成后再执行,避免因资源未就绪导致的空值引用:
resource "azurerm_eventhub_authorization_rule" "jdBulkMessenger" { name = "jd-bulk-messenger" namespace_name = azurerm_eventhub_namespace.eventhub_ns.name eventhub_name = azurerm_eventhub.eventhub.name resource_group_name = data.azurerm_resource_group.rg.name listen = true send = false manage = false depends_on = [ azurerm_eventhub_namespace.eventhub_ns, azurerm_eventhub.eventhub ] }
2. 验证EventHub资源的name字段
检查azurerm_eventhub.eventhub资源的定义,确保其name为非空有效值,示例:
resource "azurerm_eventhub" "eventhub" { name = "your-valid-eventhub-name" namespace_name = azurerm_eventhub_namespace.eventhub_ns.name resource_group_name = data.azurerm_resource_group.rg.name partition_count = 2 message_retention = 1 }
3. 检查资源引用的实际值
通过Terraform控制台查看azurerm_eventhub.eventhub.name的实际返回值:
terraform console > azurerm_eventhub.eventhub.name
若返回空字符串,需修正EventHub资源的name配置;若返回有效值,继续下一步。
4. 清理状态并重新部署
若之前的Terraform状态存在残留数据,执行以下命令重置后重新部署:
terraform destroy terraform init -reconfigure terraform apply
内容的提问来源于stack exchange,提问作者Maryo David
相关产品推荐
相关产品推荐

