Azure.ResourceManager.ApiManagement 是 Azure API Management 的 .NET 管理平面 SDK,通过 Azure Resource Manager(ARM)预配和管理 Azure API Management 资源。它属于管理平面,用于创建服务、API、产品、订阅、策略、用户、组等;数据平面则是直接调用 APIM 网关终结点。
安装方式:
dotnet add package Azure.ResourceManager.ApiManagement dotnet add package Azure.Identity
当前版本为 v1.3.0。所需环境变量包括 AZURE_SUBSCRIPTION_ID;服务主体认证可选使用 AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET。
认证:SDK 建议始终使用 DefaultAzureCredential,通过 ArmClient 作为所有 ARM 操作的入口,并获取 SubscriptionResource。
资源层级:ArmClient 下依次为 SubscriptionResource、ResourceGroupResource、ApiManagementServiceResource;服务下包含 API(含操作、策略、架构、诊断)、产品(含 API、组、策略)、订阅、策略、用户、组、后端、网关、证书、命名值和日志记录器等。
核心工作流:
- 创建 API Management 服务:使用 ApiManagementServiceData 指定位置、SKU(如 Developer)与容量、发布者邮箱和名称,通过 CreateOrUpdateAsync 执行长时间运行操作,创建可能耗时 30 分钟以上。
- 创建 API:使用 ApiCreateOrUpdateContent 指定显示名、路径、协议与后端 ServiceUri。
- 创建产品:使用 ApiManagementProductData 配置显示名、描述、是否需订阅、是否需审批、订阅上限与状态,并将 API 加入产品。
- 创建订阅:使用 ApiManagementSubscriptionCreateOrUpdateContent 指定显示名、作用域与状态,并可获取主密钥。
- 设置 API 策略:以 XML 格式提供策略内容(如速率限制、设置请求头等),JSON 也受支持。
- 备份与还原:使用 ApiManagementServiceBackupRestoreContent 指定存储账户、容器和备份名称,可配合系统分配的托管标识,通过 BackupAsync 与 RestoreAsync 执行。
关键类型包括 ArmClient、ApiManagementServiceResource、ApiManagementServiceCollection、ApiResource、ApiManagementProductResource、ApiManagementSubscriptionResource、ApiManagementPolicyResource、ApiPolicyResource、ApiManagementUserResource、ApiManagementGroupResource、ApiManagementBackendResource、ApiManagementGatewayResource 等。
SKU 类型:Developer 用于开发测试(无 SLA),容量 1;Basic 为入门级生产,容量 1-2;Standard 面向中等负载,容量 1-4;Premium 支持高可用与多区域,每个区域容量 1-12;Consumption 为无服务器按调用付费。
最佳实践:对必须完成后再继续的操作使用 WaitUntil.Completed;对服务创建这类长时间操作使用 WaitUntil.Started;始终使用 DefaultAzureCredential,切勿硬编码密钥;处理 RequestFailedException;对幂等操作使用 CreateOrUpdateAsync;通过 Get* 方法导航层级;策略使用 XML 格式;测试时 Developer SKU 创建最快,约 15-30 分钟。
错误处理:可捕获 RequestFailedException,根据状态码(如 409 表示服务已存在、400 表示错误请求)分别处理,并读取 Status、ErrorCode 与 Message。
参考资料文件包括 references/service-management.md(服务 CRUD、SKU、网络、备份还原)、references/apis-operations.md(API、操作、架构、版本控制)、references/products-subscriptions.md(产品、订阅、访问控制)、references/policies.md(策略 XML 模式、作用域、常用策略)。需注意:此目录副本中 <support-root>/references/policies.md 不可用,请勿调用依赖该文件的步骤;应先获取原始材料并审查其依赖、许可与影响后再使用。独立的内联步骤和捆绑的辅助工具可在用户授权范围内继续执行。
适用场景:当任务明确需要以 .NET 通过 ARM 管理 Azure API Management 资源时使用。限制:仅在任务与上述范围明确匹配时使用;不应将输出视为环境特定验证、测试或专家评审的替代;若缺少必需输入、权限、安全边界或成功标准,应停止并寻求澄清。