快速入门:使用 .NET Core 运行你的第一个 Resource Graph 查询

使用 Azure Resource Graph 的第一步是确保为 .NET Core 安装了所需的包。 本快速入门将指导你完成将该包添加到 .NET Core 安装的过程。

在此过程结束时,你已将该包添加到 .NET Core 安装中,并将运行你的第一个 Resource Graph 查询。

先决条件

  • Azure 订阅。 如果没有 Azure 订阅,请在开始前创建一个试用版订阅帐户。
  • Azure 服务主体,包括 clientId 和 clientSecret 。 如果你没有与 Resource Graph 一起使用的服务主体,或想要创建一个新的服务主体,请参阅用于 .NET 身份验证的 Azure 管理库。 跳到安装 .NET Core 包的步骤,我们将在接下来的步骤中执行此安装。

创建 Resource Graph 项目

若要使 .NET Core 能够查询 Azure Resource Graph,请创建新的控制台应用程序并安装所需的包。

  1. 请确保安装最新的 .NET Core(至少为 3.1.5)。 如果尚未安装,请前往 dotnet.microsoft.com 下载。

  2. 初始化名为“argQuery”的新 .NET Core 控制台应用程序:

    dotnet new console --name "argQuery"
    
  3. 将目录切换到新项目文件夹,并安装 Azure Resource Graph 所需的包:

    # Add the Resource Graph package for .NET Core
    dotnet add package Microsoft.Azure.Management.ResourceGraph --version 2.0.0
    
    # Add the Azure app auth package for .NET Core
    dotnet add package Microsoft.Azure.Services.AppAuthentication --version 1.5.0
    
  4. 用以下代码替换默认的 program.cs,并保存更新的文件:

    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using Microsoft.Rest;
    using Microsoft.Azure.Management.ResourceGraph;
    using Microsoft.Azure.Management.ResourceGraph.Models;
    
    namespace argQuery
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                string strTenant = args[0];
                string strClientId = args[1];
                string strClientSecret = args[2];
                string strQuery = args[3];
    
                AuthenticationContext authContext = new AuthenticationContext("https://login.chinacloudapi.cn/" + strTenant);
                AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://management.core.chinacloudapi.cn", new ClientCredential(strClientId, strClientSecret));
                ServiceClientCredentials serviceClientCreds = new TokenCredentials(authResult.AccessToken);
    
                ResourceGraphClient argClient = new ResourceGraphClient(serviceClientCreds);
                QueryRequest request = new QueryRequest();
                request.Query = strQuery;
    
                QueryResponse response = argClient.Resources(request);
                Console.WriteLine("Records: " + response.Count);
                Console.WriteLine("Data:\n" + response.Data);
            }
        }
    }
    

    注意

    此代码创建基于租户的查询。 若要将查询限制在管理组或订阅,请在 QueryRequest 对象上设置 ManagementGroupsSubscriptions 属性。

  5. 生成并发布 argQuery 控制台应用程序:

    dotnet build
    dotnet publish -o {run-folder}
    

运行首个 Resource Graph 查询

生成并发布 .NET Core 控制台应用程序之后,即可尝试创建一个简单的基于租户的 Resource Graph 查询。 该查询返回前五个 Azure 资源,以及每个资源的名称和资源类型 。

在对 argQuery 的每次调用中,都包含替换为自己的值时需要使用的变量:

  • {tenantId} - 替换为租户 ID
  • {clientId} -替换为服务主体的客户端 ID
  • {clientSecret} -替换为服务主体的客户端机密
  1. 将目录更改为使用先前的 dotnet publish 命令定义的 {run-folder}

  2. 使用已编译的 .NET Core 控制台应用程序运行首个 Azure Resource Graph 查询:

    argQuery "{tenantId}" "{clientId}" "{clientSecret}" "Resources | project name, type | limit 5"
    

    注意

    由于此查询示例未提供排序修饰符(例如 order by),因此多次运行此查询可能会为每个请求生成一组不同的资源。

  3. 将最后一个参数更改为 argQuery.exe,并将查询更改为按 Name 属性应用 order by

    argQuery "{tenantId}" "{clientId}" "{clientSecret}" "Resources | project name, type | limit 5 | order by name asc"
    

    注意

    与第一个查询一样,多次运行此查询可能会为每个请求生成一组不同的资源。 查询命令的顺序非常重要。 在本例中,order by 位于 limit 之后。 命令按此顺序执行,首先会限制查询结果,然后对它们进行排序。

  4. 将最后一个参数更改为 argQuery.exe,并将查询更改为先按 Name 属性应用 order by,然后对前五个结果应用 limit

    argQuery "{tenantId}" "{clientId}" "{clientSecret}" "Resources | project name, type | order by name asc | limit 5"
    

假设环境中没有任何变化,则多次运行最后一个查询时,返回的结果将是一致的且按 Name 属性排序,但仍限制为前五个结果。

清理资源

如果要删除 .NETCore 控制台应用程序和已安装的包,可以通过删除 argQuery 项目文件夹来完成。

后续步骤

在此快速入门中,你已经创建了一个使用所需 Resource Graph 包的 .NET Core 控制台应用程序,并运行了第一个查询。 若要详细了解 Resource Graph 语言,请继续阅读查询语言详细信息页。