Share via


使用 Azure SDK for Go 管理連結庫

如什麼是 Azure SDK for Go?一文所述,Azure SDK for Go 包含一組管理和客戶端連結庫。 管理連結庫會共用許多功能,例如 Azure 身分識別支援、HTTP 管線和錯誤處理。 您可以在 Azure SDK for Go 模組頁面上找到管理連結庫的完整清單。

在本文中,您將瞭解如何使用管理連結庫與 Azure 資源互動的基本步驟。

安裝 Go 套件

在大部分專案中,您將安裝 Go 套件以進行版本設定和相依性管理。

若要安裝 Go 套件,請使用 go get 命令。

例如,若要安裝 armcompute 套件,請在命令行執行下列命令:

go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute

在大部分的 Go 應用程式中,您將安裝下列套件以進行驗證:

  • github.com/Azure/azure-sdk-for-go/sdk/azcore/to
  • github.com/Azure/azure-sdk-for-go/sdk/azidentity

將套件匯入 Go 程式代碼

下載之後,套件會透過 import 語句匯入您的應用程式:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)

向 Azure 驗證

若要對 Azure 訂用帳戶執行程式代碼,您必須向 Azure 進行驗證。 azidentity 套件支援多個選項來向 Azure 進行驗證。 這些選項包括用戶端/秘密、憑證和受控識別。

默認驗證選項為 DefaultAzureCredential,其使用本文稍早設定的環境變數。 在 Go 程式代碼中,您將建立 azidentity 物件,如下所示:

cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
  // handle error
}

建立資源管理用戶端

從 Azure 身分識別取得認證之後,請建立用戶端以連線到目標 Azure 服務。

例如,假設您想要連線到 Azure 計算 服務。 計算套件是由一或多個客戶端所組成。 用戶端會將一組相關的 API 分組,以提供指定訂用帳戶內其功能的存取權。 您可以建立一或多個用戶端來存取所需的 API。

在下列代碼段中, armcompute。NewVirtualMachinesClient 類型 可用來建立用戶端來管理虛擬機:

client, err := armcompute.NewVirtualMachinesClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

相同的模式是用來與其他 Azure 服務連線。 例如,安裝 armnetwork 套件,並建立 VirtualNetwork 用戶端來管理虛擬網路 (VNET) 資源。

client, err := armnetwork.NewVirtualNetworksClient("<subscription ID>", cred, nil)
if err != nil {
  // handle error
}

程式代碼範例

package main

import (
	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
)

func main() {
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		// handle error
	}
	client, err := armcompute.NewVirtualMachinesClient("SubID", cred, nil)
	if err != nil {
        // handle error
    }
}

使用 Azure SDK for Go 參考檔

具現化之後,用戶端會用來對 Azure 資源進行 API 呼叫。 針對資源管理案例,大部分的使用案例都是 CRUD(建立/讀取/更新/刪除)作業。

若要查閱特定類型的作業,請執行下列步驟:

  1. 流覽至 Azure SDK for Go 參考檔
  2. 搜尋套件的頁面。 (按 <Ctrl+F> 會自動展開頁面上的所有節點以進行搜尋。
  3. 選取套件。
  4. 搜尋套件的頁面以取得類型。
  5. 在 Go 程式代碼中閱讀類型的描述和其使用方式的相關信息。

您也可以將封裝的名稱附加至 github.com/Azure/azure-sdk-for-go/sdk/,以手動建置URL。

例如,如果您要尋找 compute/armcompute 參考檔,則URL為 github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute

下列範例示範如何尋找 Azure 資源群組作業的參考檔:

  1. 流覽至 pkg.go.dev 的主要 Azure SDK for Go 參考檔
  2. 按下 <Ctrl+F> ,然後輸入 resourcemanager/resources/armresources。 當您輸入搜尋字詞時,您會看到與 resources/armresources 套件的相符專案。
  3. 為您的應用程式選取適當的套件。
  4. 閱讀「用戶入門」區段,或搜尋特定作業。 例如,搜尋 「resourcegroupsclient.create」 一詞(如果您想要建立資源群組),會帶您前往 CreateOrUpdate 函式
  5. 此時,您可以瞭解如何進行 API 呼叫以建立 Azure 資源群組。

長時間執行的作業

由於某些作業可能需要很長的時間才能完成,管理連結庫包含可透過異步呼叫支援長時間執行的作業 (LRO) 的函式。 這些函式名稱開頭為 Begin。 此模式的範例為 BeginCreateBeginDelete

由於這些函式是異步的,您的程式代碼在函式完成其工作之前不會封鎖。 相反地,函式會立即傳 回投票器 物件。 您的程式代碼接著會呼叫同步輪詢器函式,該函式會在原始異步函式完成時傳回。

下列代碼段顯示此模式的範例。

ctx := context.Background()
// Call an asynchronous function to create a client. The return value is a poller object.
poller, err := client.BeginCreate(ctx, "resource_identifier", "additional_parameter")

if err != nil {
	// handle error...
}

// Call the poller object's PollUntilDone function that will block until the poller object
// has been updated to indicate the task has completed.
resp, err = poller.PollUntilDone(ctx, nil)
if err != nil {
	// handle error...
}

// Print the fact that the LRO completed.
fmt.Printf("LRO done")

// Work with the response ("resp") object.

重點︰

  • PollUntilDone 式需要輪詢間隔,指定它應該嘗試取得狀態的頻率。
  • 間隔通常很短。 如需建議的間隔,請參閱特定 Azure 資源的檔。
  • Go Azure SDK 設計指導方針頁面 的 LRO 區段具有 LRO 的移動進階範例和一般指導方針。

下一步