Go kitaplıkları için Azure SDK genel bakış

Go için Azure SDK hem yönetim kitaplıklarını hem de veri düzlemi istemci kitaplıklarını içerir. Bu makalede, kitaplıkların ne olduğunu, Azure iş akışlarına nasıl sığdıklarını ve Go'ya özgü desenler için sonraki adımlarını anlamanızı sağlayan bir genel bakış sunulmaktadır.

Yönetim kitaplıkları

Azure kaynaklarını sağlamak, yapılandırmak ve yönetmek için yönetim kitaplıklarını kullanın. Bunlar, içinde depolanan veriler yerine kaynakları yönetmeye odaklanır. Yönetim kitaplıkları, Azure kaynaklarını ve hizmet yapılandırmasını yöneten control plane işlemleri gerçekleştirir. Tipik görevler şunlardır:

  • Kaynak gruplarını, sanal ağları veya sanal makineleri oluşturma veya güncelleştirme.
  • Güvenlik ayarlarını, kimlikleri, erişim ilkelerini ve tanılamayı yapılandırma.
  • Abonelik genelinde Azure kaynaklarını listeleme, etiketleme ve silme.
  • Dağıtım, temizleme, uyumluluk ve platform işlemlerini otomatikleştirme.

Yönetim kitaplığı paketlerinin , armcomputeve armnetworkgibi armkeyvaultadları vardır. Bir uygulama yaşam döngüsünün kurulum, yapılandırma ve idare aşamaları sırasında yönetim kitaplıklarını kullanın. Ayrıntılı paket belgeleri için pkg.go.dev üzerinde paketi arayın.

Müşteri kütüphaneleri

Go uygulamanızın, zaten sağlanmış bir Azure hizmeti içindeki veri veya çalışma zamanı kaynaklarıyla çalışması gerektiğinde istemci kütüphanelerini kullanın. İstemci kitaplıkları, bir hizmette depolanan veya hizmet üzerinden akan verilerle çalışan veri düzlemi işlemleri gerçekleştirir. Tipik görevler şunlardır:

  • Depolama hesabına blobları yükleme ve indirme.
  • Service Bus veya Event Hubs ile ileti gönderme ve alma.
  • Veritabanındaki kayıtları okuma, yazma veya silme.
  • Key Vault'tan gizli bilgiler alınıyor.
  • Sağlanan kaynaklarda sorguları veya işlemleri yürütme.

İstemci kitaplığı paketlerinin , , azblob, azstorageazsecretsve azservicebusgibi azeventhubsadları vardır. Yönetim kitaplıklarını kullanarak temel Azure hizmetini önceden sağladıktan sonra istemci kitaplıklarını kullanın. Ayrıntılı paket belgeleri için pkg.go.dev üzerinde paketi arayın.

Hem yönetim hem de istemci kitaplıklarını kullanma

Tek bir Go çözümü, denetim ve veri düzlemleri arasında hem yönetim hem de istemci kitaplıklarını kullanabilir. Örneğin, kurulum sırasında bir depolama hesabı (denetim düzlemi) oluşturmak için bir yönetim kitaplığı kullanabilir ve ardından blobları (veri düzlemi) karşıya yüklemek ve indirmek için uygulamada bir istemci kitaplığı kullanabilirsiniz. Ayrımı anlamak, iş akışınızdaki her görev için doğru kitaplığı seçmenize yardımcı olur.

Her düzlem için Go'ya özgü desenler ve örnekler için şu makalelere bakın:

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 çalıştırın go get .

Örneğin, armcompute paketini yüklemek için aşağıdaki komutu çalıştırın:

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ükleyin:

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

Go kodunuza paketleri aktarma

Paketleri indirdikten sonra import deyimini kullanarak bunları uygulamanıza aktarın.

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

Azure SDK kitaplıklarını kullanan Go uygulamaları, Azure Identity kitaplığı ile Microsoft Entra ID kullanarak kimlik doğrulaması yapmalıdır. Belirteç tabanlı kimlik doğrulaması, bağlantı dizelerine veya anahtarlara göre daha güvenli ve yönetilebilir. Önerilen kimlik bilgileri uygulamanın nerede çalıştığına bağlıdır: Azure barındırılan uygulamalar için yönetilen kimlikleri, yerel geliştirme için geliştirici kimlik bilgilerini veya hizmet sorumlusunu ve çoğu şirket içi senaryo için hizmet sorumlusunu kullanın.

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şturun:

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

Kimlik doğrulaması hakkında daha fazla bilgi için Azure SDK for Go kimlik doğrulaması sayfasına bakın.

Kaynak Yönetimi istemcisi oluşturma

Azure Identity'den kimlik bilgilerini aldıktan sonra hedef Azure hizmetine bağlanmak için bir istemci oluşturun.

Örneğin, Azure Compute hizmetine bağlanmak istediğinizi varsayalım. Compute 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, sanal makineleri yönetmek üzere bir istemci oluşturmak için armcompute.NewVirtualMachinesClient türünü kullanır.

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

Go ile Azure kaynaklarını yönetme hakkında daha fazla bilgi için bkz. Denetim düzlemi işlemleri için Go için Azure SDK kullanma.

Diğer Azure hizmetlerine bağlanmak için aynı düzeni kullanın. Örneğin, armnetwork paketini yükleyin ve sanal ağ kaynaklarını yönetmek için bir virtual network 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("<subscription ID>", cred, nil)
    if err != nil {
        // handle error
    }
}

Azure hizmetleri için Go Azure SDK kullanma hakkında daha fazla bilgi için bkz. Veri düzlemi işlemleri için Go için Azure SDK kullanma.

Go için Azure SDK deposunu kullanma

bir istemci örneği oluşturdıktan sonra, Azure kaynaklarınıza API çağrıları yapmak için bu istemciyi kullanın. Kaynak yönetimi senaryolarında çoğu kullanım örneği CRUD (oluşturma, okuma, güncelleştirme, silme) işlemleridir.

Belirli bir türe ait işlemleri bulmak için Azure SDK Go GitHub deposundaki kaynağa göz atın. SDK kaynağı sdk/ dizini altında, sdk/resourcemanager/ altında yönetim kitaplıkları ve sdk/storage/ ve sdk/security/keyvault/ gibi hizmete özgü klasörlerdeki istemci kitaplıklarıyla düzenlenir.

Belirli bir türün kaynağını bulmak için şu adımları izleyin:

  1. GitHub'da Go deposu için Azure SDK gidin.
  2. sdk/resourcemanager/ yönetim kitaplıklarına veya sdk/ istemci kitaplıklarına git.
  3. Hizmet klasörünü ve ardından paket klasörünü açın. Örneğin, sdk/resourcemanager/compute/armcompute/.
  4. İhtiyacınız olan türü içeren kaynak dosyayı bulun. İstemci türleri ve yöntemleri, genellikle istemcinin adıyla uyumlu virtualmachines_client.go gibi dosyalarda bulunur.
  5. Kullanım bilgileri için türün açıklamalarını ve yöntem imzalarını okuyun.

URL'yi doğrudan da oluşturabilirsiniz. Örneğin, kaynak grubu işlem kaynağını bulmak için https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/resourcemanager/resources/armresources adresine gidin.

Bu örnekte, Azure kaynak grubu işlemleri için kaynağın nasıl bulunacakları gösterilmektedir:

  1. Azure SDK for Go deposuna GitHub'da gidin.
  2. sdk/resourcemanager/resources/armresources/ adresine gidin.
  3. resource_groups_client.go türünü ve ResourceGroupsClient yöntemini bulmak için CreateOrUpdate açın.
  4. API çağrısının nasıl yapılacağını anlamak için yöntemin açıklamalarını ve parametrelerini okuyun.

Oluşturulan başvuru belgeleri için pkg.go.dev üzerinde paketi arayın.

Uzun süreli işlemler

Bazı işlemlerin tamamlanması uzun sürer. Bu işlemleri yönetmek için yönetim kitaplıkları, zaman uyumsuz çağrılar aracılığıyla uzun süreli işlemleri (LRO) destekleyen işlevler sağlar. Bu işlev adları, Begin ile başlar, örneğin BeginCreate ve BeginDelete.

Bu işlevler zaman uyumsuz olduğundan, işlev görevini tamamlarken kodunuz engellemez. Bunun yerine işlevi hemen bir poller nesnesi döndürür. Kodunuz, ardından, orijinal zaman uyumsuz işlev tamamlandığında dönen 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. interval varsayılan olarak 30 saniyedir options parametresi nil verilirse, ancak ihtiyaçlarınıza göre ayarlayabilirsiniz.
  • 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ü LRO için daha gelişmiş bir örnek ve genel yönergelere sahiptir.

Desenler hakkında daha fazla bilgi için, Go için Azure SDK'daki Common kullanım desenlerine bakın.

Sonraki Adımlar

Kimlik doğrulama, istemci oluşturma, uzun süreli çalışma işlemleri ve hizmet kılavuz desenleri hakkında daha fazla bilgi için alanına özgü makalelere bakın.

Örnekler için bkz. GitHub'daki Azure SDK for Go örnekleri.