Aracılığıyla paylaş


Go için Azure SDK yönetim kitaplıklarına genel bakış

Go için Azure SDK nedir? makalesinde açıklandığı gibi, Go için Azure SDK bir dizi yönetim ve istemci kitaplığı içerir. Yönetim kitaplıkları Azure Identity desteği, HTTP işlem hattı ve hata işleme gibi birçok özelliği paylaşır. Yönetim kitaplıklarının tam listesini Go için Azure SDK modül sayfasında bulabilirsiniz.

Bu makalede, Azure kaynaklarıyla etkileşimde bulunurken yönetim kitaplıklarını kullanmanın temel adımlarını öğreneceksiniz.

Go paketlerini yükleme

Çoğu projede sürüm oluşturma ve bağımlılık yönetimi için Go paketlerini yüklersiniz.

Go paketini yüklemek için komutunu kullanın go get .

Örneğin, paketi yüklemek armcompute için komut satırında aşağıdakileri çalıştırırsınız:

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

Go uygulamalarının çoğunda kimlik doğrulaması için aşağıdaki paketleri yüklersiniz:

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

Go kodunuz içine paketleri içeri aktarma

paket indirildikten sonra aşağıdaki deyim aracılığıyla import uygulamanıza aktarılır:

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'da kimlik doğrulaması

Azure aboneliğinde kod çalıştırmak için Azure'da kimlik doğrulaması yapmanız gerekir. azidentity paketi, Azure'da kimlik doğrulaması yapmak için birden çok seçeneği destekler. Bu seçenekler istemci/gizli dizi, sertifika ve yönetilen kimliktir.

Varsayılan kimlik doğrulama seçeneği, bu makalenin önceki bölümlerinde ayarlanan ortam değişkenlerini kullanan DefaultAzureCredential'dır. Go kodunuzda aşağıdaki gibi bir azidentity nesne oluşturursunuz:

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

Kaynak Yönetimi istemcisi oluşturma

Azure Identity'den kimlik bilgileriniz olduktan sonra, hedef Azure hizmetine bağlanmak için bir istemci oluşturun.

Örneğin, Azure İşlem hizmetine bağlanmak istediğinizi varsayalım. İşlem paketi bir veya daha fazla istemciden oluşur. İstemci, belirtilen abonelik içindeki işlevselliğine erişim sağlayan bir dizi ilgili API'yi gruplandırır. gereken API'lere erişmek için bir veya daha fazla istemci oluşturursunuz.

Aşağıdaki kod parçacığında armcompute. NewVirtualMachinesClient türü , sanal makineleri yönetmek üzere bir istemci oluşturmak için kullanılır:

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

Diğer Azure hizmetlerine bağlanmak için aynı desen kullanılır. Örneğin armnetwork paketini yükleyin ve sanal ağ (VNET) kaynaklarını yönetmek için bir sanal ağ istemcisi oluşturun.

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

Kod örneği:

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
    }
}

Go için Azure SDK başvuru belgelerini kullanma

Örnek eklendikten sonra istemciler, Azure kaynaklarınız için API çağrıları yapmak için kullanılır. Kaynak yönetimi senaryolarında kullanım örneklerinin çoğu CRUD (Oluşturma/Okuma/Güncelleştirme/Silme) işlemleridir.

Belirli bir türe yönelik işlemleri aramak için aşağıdaki adımları uygulayın:

  1. Go için Azure SDK başvuru belgelerine göz atın.
  2. Sayfada paketi arayın. (Basıldığında <Ctrl+F> tuşları sayfadaki arama için tüm düğümleri otomatik olarak genişletir.)
  3. Paketi seçin.
  4. Paketin sayfasında türü arayın.
  5. Go kodunuzda türün açıklamasını ve kullanımı hakkındaki bilgileri okuyun.

Ayrıca, paketin github.com/Azure/azure-sdk-for-go/sdk/adını öğesine ekleyerek URL'yi el ile de oluşturabilirsiniz.

Örneğin, başvuru belgelerini arıyorsanız compute/armcompute URL şeklindedir github.com/Azure/azure-sdk-for-go/sdk/compute/armcompute.

Aşağıdaki örnekte, Azure kaynak grubu işlemleri için başvuru belgelerinin nasıl bulunacakları gösterilmektedir:

  1. pkg.go.dev ile ilgili ana Go için Azure SDK başvuru belgelerine göz atın.
  2. Ctrl+F> tuşlarına basın <ve girinresourcemanager/resources/armresources. Arama terimini yazarken resources/armresources paketiyle yakın bir eşleşme görürsünüz.
  3. Uygulamanız için uygun paketi seçin.
  4. "Başlarken" bölümlerini okuyun veya belirli bir işlemi arayın. Örneğin, "resourcegroupsclient.create" terimini aramak (kaynak grubu oluşturmak istiyorsanız) sizi CreateOrUpdate işlevine yönlendirir.
  5. Bu noktada, Azure kaynak grubu oluşturmak için API çağrısı yapmayı okuyabilirsiniz.

Uzun süre çalışan işlemler

Bazı işlemlerin tamamlanması uzun zaman alabildiği için yönetim kitaplıkları, zaman uyumsuz çağrılar aracılığıyla uzun süre çalışan işlemleri (LRO) destekleyen işlevler içerir. Bu işlev adları ile Beginbaşlar. Bu desene örnek olarak ve BeginDeleteverilebilirBeginCreate.

Bu işlevler zaman uyumsuz olduğundan, işlev görevini tamamlayana kadar kodunuz engellemez. Bunun yerine işlevi hemen bir poller nesnesi döndürür. Kodunuz daha sonra özgün zaman uyumsuz işlev tamamlandığında döndüren zaman uyumlu bir poller işlevini çağırır.

Aşağıdaki kod parçacığında bu desenin bir örneği gösterilmektedir.

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.

Önemli noktalar:

  • İşlev, PollUntilDone durumu almak için ne sıklıkta denemesi gerektiğini belirten bir yoklama aralığı gerektirir.
  • Aralık genellikle kısadır. Önerilen aralıklar için belirli Azure kaynağının belgelerine bakın.
  • Go Azure SDK Tasarım Yönergeleri sayfasının LRO bölümünde bir taşıma gelişmiş örneği ve LRO için genel yönergeler bulunur.

Sonraki adımlar