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

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

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

必备条件

创建 Resource Graph 项目

若要使 Java 能够查询 Azure Resource Graph,请创建新的应用程序,并使用 Maven 进行配置,然后安装必要的 Maven 包。

  1. 使用 Maven 原型初始化名为“argQuery”的新 Java 应用程序:

    mvn -B archetype:generate -DarchetypeGroupId="org.apache.maven.archetypes" -DgroupId="com.Fabrikam" -DartifactId="argQuery"
    
  2. 将目录更改为新的项目文件夹 argQuery,并在你喜爱的编辑器中打开 pom.xml。 在现有 <dependencies> 节点下添加以下 <dependency> 节点:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.2.4</version>
    </dependency>
    <dependency>
        <groupId>com.azure.resourcemanager</groupId>
        <artifactId>azure-resourcemanager-resourcegraph</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  3. pom.xml 文件中,将以下 <properties> 节点添加到基本 <project> 节点以更新源和目标版本:

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    
  4. 在该 pom.xml 文件中,将以下 <build> 节点添加到基本 <project> 节点以配置要运行的项目目标和 main 类。

    <build>
       <plugins>
           <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>exec-maven-plugin</artifactId>
               <version>1.2.1</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>java</goal>
                       </goals>
                   </execution>
               </executions>
               <configuration>
                   <mainClass>com.Fabrikam.App</mainClass>
               </configuration>
           </plugin>
       </plugins>
    </build>
    
  5. 用以下代码替换 \argQuery\src\main\java\com\Fabrikam 中默认的 App.java,并保存更新的文件:

    package com.Fabrikam;
    
    import java.util.Arrays;
    import java.util.List;
    import com.azure.core.management.AzureEnvironment;
    import com.azure.core.management.profile.AzureProfile;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.resourcemanager.resourcegraph.ResourceGraphManager;
    import com.azure.resourcemanager.resourcegraph.models.QueryRequest;
    import com.azure.resourcemanager.resourcegraph.models.QueryRequestOptions;
    import com.azure.resourcemanager.resourcegraph.models.QueryResponse;
    import com.azure.resourcemanager.resourcegraph.models.ResultFormat;
    
    public class App
    {
       public static void main( String[] args )
       {
           List<String> listSubscriptionIds = Arrays.asList(args[0]);
           String strQuery = args[1];
    
           ResourceGraphManager manager = ResourceGraphManager.authenticate(new DefaultAzureCredentialBuilder().build(), new AzureProfile(AzureEnvironment.AZURE));
    
           QueryRequest queryRequest = new QueryRequest()
               .withSubscriptions(listSubscriptionIds)
               .withQuery(strQuery);
    
           QueryResponse response = manager.resourceProviders().resources(queryRequest);
    
           System.out.println("Records: " + response.totalRecords());
           System.out.println("Data:\n" + response.data());
       }
    }
    
  6. 生成 argQuery 控制台应用程序:

    mvn package
    

运行首个 Resource Graph 查询

生成 Java 控制台应用程序后,即可尝试创建简单的 Resource Graph 查询。 该查询返回前五个 Azure 资源,以及每个资源的名称和资源类型 。

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

  • {subscriptionId} - 替换为订阅 ID
  • {query}:替换为 Azure Resource Graph 查询
  1. 使用 Azure CLI 对 az login 进行身份验证。

  2. 将目录更改为使用上述 mvn -B archetype:generate 命令创建的 argQuery 项目文件夹。

  3. 使用 Maven 运行第一个 Azure Resource Graph 查询,以便编译控制台应用程序并传递参数。 exec.args 属性通过空格标识参数。 若要将查询标识为一个参数,请使用单引号引起来 (')。

    mvn compile exec:java -Dexec.args "{subscriptionId} 'Resources | project name, type | limit 5'"
    

    注意

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

  4. 更改 argQuery.exe 的参数,并将查询更改为按“名称”属性 order by

    mvn compile exec:java -Dexec.args "{subscriptionId} 'Resources | project name, type | limit 5 | order by name asc'"
    

    注意

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

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

    mvn compile exec:java -Dexec.args "{subscriptionId} 'Resources | project name, type | order by name asc | limit 5'"
    

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

清理资源

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

后续步骤

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