你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

快速入门:使用 Go 运行你的第一个 Resource Graph 查询
  • 项目

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

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

先决条件

如果没有 Azure 订阅,请在开始之前创建一个免费帐户。

添加 Resource Graph 包

若要使 Go 能够查询 Azure Resource Graph,则必须添加该包。 此包适用于可使用 Go 的任何情况,包括 Windows 10 上的 bash 或本地安装的 bash。

az login
# Add the Resource Graph package for Go
go get -u github.com/Azure/azure-sdk-for-go/services/resourcegraph/mgmt/2021-03-01/resourcegraph

# Add the Azure auth package for Go
go get -u github.com/Azure/go-autorest/autorest/azure/auth

运行首个 Resource Graph 查询

将 Go 包添加到所选环境中后,即可尝试一个简单的 Resource Graph 查询。 该查询返回前五个 Azure 资源,以及每个资源的名称和资源类型 。

package main

import (
   "fmt"
   "os"
   "context"
   "strconv"
   arg "github.com/Azure/azure-sdk-for-go/services/resourcegraph/mgmt/2021-03-01/resourcegraph"
   "github.com/Azure/go-autorest/autorest/azure/auth"
)

func main() {
    // Get variables from command line arguments
    var query = os.Args[1]
    var subList = os.Args[2:]

    // Create and authorize a ResourceGraph client
    argClient := arg.New()
    authorizer, err := auth.NewAuthorizerFromCLI()
    if err == nil {
        argClient.Authorizer = authorizer
    } else {
        fmt.Printf(err.Error())
    }

    // Set options
    RequestOptions := arg.QueryRequestOptions {
        ResultFormat: "objectArray",
    }

    // Create the query request
    Request := arg.QueryRequest {
        Subscriptions: &subList,
        Query: &query,
        Options: &RequestOptions,
    }

    // Run the query and get the results
    var results, queryErr = argClient.Resources(context.Background(), Request)
    if queryErr == nil {
        fmt.Printf("Resources found: " + strconv.FormatInt(*results.TotalRecords, 10) + "\n")
        fmt.Printf("Results: " + fmt.Sprint(results.Data) + "\n")
    } else {
        fmt.Printf(queryErr.Error())
    }
}
go build argQuery.go
argQuery "Resources | project name, type | limit 5" "<SubID>"
argQuery "Resources | project name, type | limit 5 | order by name asc" "<SubID>"
argQuery "Resources | project name, type | order by name asc | limit 5" "<SubID>"

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

清理资源

如果希望从 Go 环境中删除已安装的包,可使用以下命令执行此操作:

# Remove the installed packages from the Go environment
go clean -i github.com/Azure/azure-sdk-for-go/services/resourcegraph/mgmt/2019-04-01/resourcegraph
go clean -i github.com/Azure/go-autorest/autorest/azure/auth

后续步骤

本快速入门介绍了如何将 Resource Graph 包添加到 Go 环境并运行第一个查询。 若要详细了解 Resource Graph 语言,请继续阅读查询语言详细信息页。