如何阻止Terraform中APIM产品自动创建默认订阅?
解决APIM产品自动生成默认订阅的问题
问题分析
部署APIM产品时自动生成了默认订阅,与手动创建的订阅重复。即使设置subscription_required = false或移除该配置,问题仍存在。
解决方案
1. 调整产品的订阅要求配置
将产品的subscription_required设置为true,强制访问产品下的API必须通过订阅。此时APIM不会自动生成默认订阅,只会保留你通过azurerm_api_management_subscription创建的订阅。
修改后的产品代码:
# Product abcd resource "azurerm_api_management_product" "product8" { product_id = var.product8_id api_management_name = var.api_management_name resource_group_name = var.resource_group_name display_name = var.product8_id description = "abcd" subscription_required = true # 改为true approval_required = false published = true }
2. 清理残留的自动订阅
如果之前的部署已生成默认订阅,需要完成以下清理:
- 登录Azure门户,进入APIM实例的「订阅」页面,删除自动生成的默认订阅。
- 运行
terraform state list查看是否存在未在配置中定义的订阅资源,若有则执行terraform state rm <resource-address>从状态文件中移除。
3. 排查其他订阅创建逻辑
检查所有Terraform配置文件,确认没有其他模块、脚本或资源自动创建订阅,比如第三方模块的默认订阅生成逻辑、循环创建订阅的代码片段等。
验证部署
修改配置后重新执行terraform apply,此时APIM只会创建你定义的azurerm_api_management_subscription.abcd订阅,不会生成额外的默认订阅。
内容的提问来源于stack exchange,提问作者Obaidur Rahman Syed
相关产品推荐
相关产品推荐

