Azure Mgmt Apimanagement Dotnet

作者 microsoft354361d83247MIT收錄於 2026年10月8日更新於 2026年10月8日

Azure Resource Manager SDK for API Management in .NET. Use for MANAGEMENT PLANE operations: creating/managing APIM services, APIs, products, subscriptions, policies, users, groups, gateways, and backends via Azure Resource Manager. Triggers: "API Management", "APIM service", "create APIM", "manage APIs", "ApiManagementServiceResource", "API policies", "APIM products", "APIM subscriptions".

精選僅含說明DevOps & Cloud
AI 產生的概覽

指導透過 Azure Resource Manager 以 .NET 管理平面佈建 Azure API Management 服務、API、產品、訂閱與原則。

功能
此技能提供透過 Azure Resource Manager SDK(Azure.ResourceManager.ApiManagement)管理 Azure API Management 的 .NET 程式碼模式。內容涵蓋使用 DefaultAzureCredential 進行驗證、ARM 資源階層,以及建立或更新 APIM 服務、API、產品、訂閱、原則、使用者、群組、閘道與後端。也說明 SKU 類型、備份與還原、以 RequestFailedException 處理錯誤,以及 WaitUntil 用法等最佳做法。參考檔案涵蓋服務管理、API 與作業,以及產品與訂閱。
適用情境
適用於撰寫在管理平面佈建或管理 Azure API Management 資源的 .NET 程式碼,例如建立 APIM 服務、發佈 API 或附加原則。不適用於直接對 APIM 閘道端點進行資料平面呼叫。
執行需求
需要 .NET SDK 以及 Azure.ResourceManager.ApiManagement 與 Azure.Identity NuGet 套件、一個 Azure 訂閱和認證(例如 AZURE_SUBSCRIPTION_ID 等環境變數,以及租用戶/用戶端/密鑰或受控識別)。需要連線至 Azure Resource Manager 的網路存取。不隨附指令碼,僅為指示與參考文件。

Azure.ResourceManager.ApiManagement (.NET)

Management plane SDK for provisioning and managing Azure API Management resources via Azure Resource Manager.

⚠️ Management vs Data Plane

  • This SDK (Azure.ResourceManager.ApiManagement): Create services, APIs, products, subscriptions, policies, users, groups
  • Data Plane: Direct API calls to your APIM gateway endpoints

Installation

bash
dotnet add package Azure.ResourceManager.ApiManagementdotnet add package Azure.Identity

Current Version: v1.3.0

Environment Variables

bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription IDAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in productionAZURE_TENANT_ID=<tenant-id> # For service principal auth (optional)AZURE_CLIENT_ID=<client-id> # For service principal auth (optional)AZURE_CLIENT_SECRET=<client-secret> # For service principal auth (optional)

Authentication

csharp
using Azure.Identity;using Azure.ResourceManager;using Azure.ResourceManager.ApiManagement;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>var credential = new DefaultAzureCredential(    DefaultAzureCredential.DefaultEnvironmentVariableName);// Or use a specific credential directly in production:// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes// var credential = new ManagedIdentityCredential();var armClient = new ArmClient(credential);
// Get subscriptionvar subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");var subscription = armClient.GetSubscriptionResource(    new ResourceIdentifier($"/subscriptions/{subscriptionId}"));

Resource Hierarchy

ArmClient└── SubscriptionResource    └── ResourceGroupResource        └── ApiManagementServiceResource            ├── ApiResource            │   ├── ApiOperationResource            │   │   └── ApiOperationPolicyResource            │   ├── ApiPolicyResource            │   ├── ApiSchemaResource            │   └── ApiDiagnosticResource            ├── ApiManagementProductResource            │   ├── ProductApiResource            │   ├── ProductGroupResource            │   └── ProductPolicyResource            ├── ApiManagementSubscriptionResource            ├── ApiManagementPolicyResource            ├── ApiManagementUserResource            ├── ApiManagementGroupResource            ├── ApiManagementBackendResource            ├── ApiManagementGatewayResource            ├── ApiManagementCertificateResource            ├── ApiManagementNamedValueResource            └── ApiManagementLoggerResource

Core Workflow

1. Create API Management Service

csharp
using Azure.ResourceManager.ApiManagement;using Azure.ResourceManager.ApiManagement.Models;
// Get resource groupvar resourceGroup = await subscription    .GetResourceGroupAsync("my-resource-group");
// Define servicevar serviceData = new ApiManagementServiceData(    location: AzureLocation.EastUS,    sku: new ApiManagementServiceSkuProperties(        ApiManagementServiceSkuType.Developer,         capacity: 1),    publisherEmail: "[email protected]",    publisherName: "Contoso");
// Create service (long-running operation - can take 30+ minutes)var serviceCollection = resourceGroup.Value.GetApiManagementServices();var operation = await serviceCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-apim-service",    serviceData);
ApiManagementServiceResource service = operation.Value;

2. Create an API

csharp
var apiData = new ApiCreateOrUpdateContent{    DisplayName = "My API",    Path = "myapi",    Protocols = { ApiOperationInvokableProtocol.Https },    ServiceUri = new Uri("https://backend.contoso.com/api")};
var apiCollection = service.GetApis();var apiOperation = await apiCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-api",    apiData);
ApiResource api = apiOperation.Value;

3. Create a Product

csharp
var productData = new ApiManagementProductData{    DisplayName = "Starter",    Description = "Starter tier with limited access",    IsSubscriptionRequired = true,    IsApprovalRequired = false,    SubscriptionsLimit = 1,    State = ApiManagementProductState.Published};
var productCollection = service.GetApiManagementProducts();var productOperation = await productCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "starter",    productData);
ApiManagementProductResource product = productOperation.Value;
// Add API to productawait product.GetProductApis().CreateOrUpdateAsync(    WaitUntil.Completed,    "my-api");

4. Create a Subscription

csharp
var subscriptionData = new ApiManagementSubscriptionCreateOrUpdateContent{    DisplayName = "My Subscription",    Scope = $"/products/{product.Data.Name}",    State = ApiManagementSubscriptionState.Active};
var subscriptionCollection = service.GetApiManagementSubscriptions();var subOperation = await subscriptionCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-subscription",    subscriptionData);
ApiManagementSubscriptionResource subscription = subOperation.Value;
// Get subscription keysvar keys = await subscription.GetSecretsAsync();Console.WriteLine($"Primary Key: {keys.Value.PrimaryKey}");

5. Set API Policy

csharp
var policyXml = @"<policies>    <inbound>        <rate-limit calls=""100"" renewal-period=""60"" />        <set-header name=""X-Custom-Header"" exists-action=""override"">            <value>CustomValue</value>        </set-header>        <base />    </inbound>    <backend>        <base />    </backend>    <outbound>        <base />    </outbound>    <on-error>        <base />    </on-error></policies>";
var policyData = new PolicyContractData{    Value = policyXml,    Format = PolicyContentFormat.Xml};
await api.GetApiPolicy().CreateOrUpdateAsync(    WaitUntil.Completed,    policyData);

6. Backup and Restore

csharp
// Backupvar backupParams = new ApiManagementServiceBackupRestoreContent(    storageAccount: "mystorageaccount",    containerName: "apim-backups",    backupName: "backup-2024-01-15"){    AccessType = StorageAccountAccessType.SystemAssignedManagedIdentity};
await service.BackupAsync(WaitUntil.Completed, backupParams);
// Restoreawait service.RestoreAsync(WaitUntil.Completed, backupParams);

Key Types Reference

TypePurpose
ArmClientEntry point for all ARM operations
ApiManagementServiceResourceRepresents an APIM service instance
ApiManagementServiceCollectionCollection for service CRUD
ApiResourceRepresents an API
ApiManagementProductResourceRepresents a product
ApiManagementSubscriptionResourceRepresents a subscription
ApiManagementPolicyResourceService-level policy
ApiPolicyResourceAPI-level policy
ApiManagementUserResourceRepresents a user
ApiManagementGroupResourceRepresents a group
ApiManagementBackendResourceRepresents a backend service
ApiManagementGatewayResourceRepresents a self-hosted gateway

SKU Types

SKUPurposeCapacity
DeveloperDevelopment/testing (no SLA)1
BasicEntry-level production1-2
StandardMedium workloads1-4
PremiumHigh availability, multi-region1-12 per region
ConsumptionServerless, pay-per-callN/A

Best Practices

  1. Use WaitUntil.Completed for operations that must finish before proceeding
  2. Use WaitUntil.Started for long operations like service creation (30+ min)
  3. Always use DefaultAzureCredential — never hardcode keys
  4. Handle RequestFailedException for ARM API errors
  5. Use CreateOrUpdateAsync for idempotent operations
  6. Navigate hierarchy via Get* methods (e.g., service.GetApis())
  7. Policy format — Use XML format for policies; JSON is also supported
  8. Service creation — Developer SKU is fastest for testing (~15-30 min)

Error Handling

csharp
using Azure;
try{    var operation = await serviceCollection.CreateOrUpdateAsync(        WaitUntil.Completed, serviceName, serviceData);}catch (RequestFailedException ex) when (ex.Status == 409){    Console.WriteLine("Service already exists");}catch (RequestFailedException ex) when (ex.Status == 400){    Console.WriteLine($"Bad request: {ex.Message}");}catch (RequestFailedException ex){    Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");}

Reference Files

FileWhen to Read
references/service-management.md [blocked]Service CRUD, SKUs, networking, backup/restore
references/apis-operations.md [blocked]APIs, operations, schemas, versioning
references/products-subscriptions.md [blocked]Products, subscriptions, access control
references/policies.md [blocked]Policy XML patterns, scopes, common policies

Related Resources

ResourcePurpose
API Management DocumentationOfficial Azure docs
Policy ReferenceComplete policy reference
SDK Reference.NET API reference

來源與署名

來源:microsoft/skills位於.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-apimanagement-dotnet提交354361d

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架