如何在Azure API Management中为Product添加策略
Azure APIM 产品(Product)策略添加操作方案
以下分别提供PowerShell、Azure CLI、Azure DevOps三种场景下的实现方式:
1. PowerShell 实现
前提:已安装Az.ApiManagement模块,操作账号对目标APIM资源有对应操作权限
- 安装依赖模块:
Install-Module -Name Az.ApiManagement -Force -AllowClobber
- 登录Azure并获取APIM上下文:
# 登录Azure Connect-AzAccount # 替换为实际资源信息获取APIM上下文 $apimContext = New-AzApiManagementContext -ResourceGroupName "<资源组名称>" -ServiceName "<APIM服务名称>"
- 为指定产品添加策略,支持直接传入策略内容或者读取本地XML文件:
# 方式1:直接传入策略XML内容 Set-AzApiManagementProductPolicy -Context $apimContext -ProductId "<目标产品ID>" -PolicyContent '<?xml version="1.0" encoding="utf-8"?> <policies> <inbound> <base /> <!-- 此处添加你的入站策略,比如限流、IP过滤等 --> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>' # 方式2:读取本地保存的策略XML文件 Set-AzApiManagementProductPolicy -Context $apimContext -ProductId "<目标产品ID>" -PolicyFilePath "C:\path\to\your\policy.xml"
注意:替换所有尖括号包裹的占位符为你的实际资源信息
2. Azure CLI 实现
前提:已安装Azure CLI,操作账号已完成Azure登录
- 执行产品策略添加命令,支持读取本地文件或者直接传入策略内容:
# 先登录Azure az login # 方式1:读取本地策略XML文件,@后面接本地文件路径 az apim product policy create --resource-group <资源组名称> --service-name <APIM服务名称> --product-id <目标产品ID> --value "@/path/to/your/policy.xml" # 方式2:直接传入策略XML内容 az apim product policy create --resource-group <资源组名称> --service-name <APIM服务名称> --product-id <目标产品ID> --value '<?xml version="1.0" encoding="utf-8"?> <policies> <inbound> <rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Request.IpAddress)" /> </inbound> </policies>'
如果是在非交互环境执行,可通过服务主体登录Azure CLI,无需手动输入账号信息
3. Azure DevOps 实现
推荐使用基础设施即代码的方式管理,操作步骤如下:
- 提前将APIM产品策略XML文件上传到你的代码仓库中,和流水线定义一起做版本管理
- 在Azure DevOps项目中配置有权限操作目标APIM资源的Azure服务连接,权限需至少为API管理贡献者
- 编辑发布/构建流水线,添加「Azure CLI」任务,选择你配置好的服务连接,在脚本框中填入上面Azure CLI的操作命令,所有敏感/可变参数使用DevOps流水线变量管理,避免硬编码
- 如果你习惯用ARM/Bicep模板部署,可在模板中定义
Microsoft.ApiManagement/service/products/policies类型的资源,把策略内容直接写在模板中,流水线添加「ARM模板部署」任务执行发布即可,这种方式更适合多环境批量部署的场景
内容的提问来源于stack exchange,提问作者Madhu
相关产品推荐
相关产品推荐

