首页 > 解决方案 > 如何使用 ResourcesManagementClient 从 API 获取 Azure 资源运行状况?

问题描述

我特别想获取此处描述的信息:https ://docs.microsoft.com/en-us/rest/api/resourcehealth/availabilitystatuses/listbysubscriptionid

ResourcesManagementClient要走的路吗?

如果是这样,我如何使用它从Microsoft.ResourceHealth提供程序获取可用性状态?

标签: c#azure.net-core

解决方案


关于这个问题,请参考以下步骤

  1. 创建服务主体并将 Azure RABC 角色分配给 sp

  2. 安装 SDK

    <PackageReference Include="Microsoft.Azure.Management.ResourceManager" Version="3.13.0-preview" />
    <PackageReference Include="Microsoft.Identity.Client" Version="4.30.1" />
  1. 代码
            var app = ConfidentialClientApplicationBuilder.Create(clientId)
                .WithClientSecret(clientSecret)
                .WithAuthority(String.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", tenantDomain))
                .Build();
            string[] scopes = new string[] { "https://management.azure.com/.default" };
            var result = await app.AcquireTokenForClient(scopes)
                     .ExecuteAsync();

            var cred = new TokenCredentials(result.AccessToken);

            ResourceManagementClient resourceManagementClient = new ResourceManagementClient(cred);
            resourceManagementClient.SubscriptionId = subscription;
            ///For example
            ///var resource = await resourceManagementClient.Resources.GetAsync(
            ///           "testdata",
            ///           "Microsoft.Compute",
            ///           "virtualMachines/testdocker" + "/providers/Microsoft.ResourceHealth",
            ///           "availabilityStatuses",
            ///           "current",
            ///           "2020-05-01"
            ///    );
            ///
            ///
            ///
            var resource = await resourceManagementClient.Resources.GetAsync(
                   "<the resource group of the resource your want to>",
                   "<the namesapce of the resource your want to>",
                   "<the resource path of the resource your want to>" + "/providers/Microsoft.ResourceHealth",
                   "availabilityStatuses",
                   "current",
                   "2020-05-01"

                );

            Console.WriteLine(resource.Properties);

在此处输入图像描述


推荐阅读