Použití Azure SDK pro Go pro operace roviny dat

Naučte se pracovat s daty uloženými v Azure službách prostřednictvím kódu programu pomocí Azure SDK klientských knihoven Go. Pokud chcete získat vyšší úroveň úvodního přehledu o tom, jak knihovny pro řízení a klientské knihovny spolupracují, podívejte se na Přehled knihoven pro řízení Azure SDK pro Go. Tento článek se zaměřuje na vzory roviny dat Go, které používáte po vytvoření prostředku, a odkazuje zpět na operace řídicí roviny pro zřizování a konfiguraci.

Co je datová vrstva Azure?

Rovina dat Azure je sada rozhraní API, která používáte k interakci s daty uvnitř Azure služeb, včetně nahrávání objektů blob, odesílání zpráv, dotazování databází a načítání tajných kódů. Zatímco řídicí rovina zřizuje a konfiguruje prostředky, rovina dat je to, co kód aplikace volá za běhu. Běžným pracovním postupem v Go je jednou použít kód řídicí části při nastavení nebo automatizaci a poté udržovat klienty datové části v pracovním procesu aplikace, který se spouští každý den.

Azure SDK for Go zveřejňuje rovinu dat prostřednictvím balíčků specifických pro službu, jako jsou azblob, azservicebus, azeventhubs, azsecrets a azcosmos. Každý balíček se připojí k již zřízenému prostředku a řídí se konzistentním vzorem:

  1. Ověřte se pomocí azidentity balíčku.
  2. Vytvořte typového klienta pomocí koncového bodu služby nebo připojovacího řetězce.
  3. Volání metod klienta ke čtení, zápisu nebo zpracování dat
  4. Řešte stránkované výsledky a chyby.

Mezi běžné scénáře operací roviny dat Go patří:

  • Nahrávání a stahování souborů z Blob Storage
  • Odesílání a příjem zpráv pomocí služby Service Bus nebo Event Hubs
  • Ukládání a dotazování dokumentů ve službě Cosmos DB
  • Načítání tajných kódů, klíčů a certifikátů z Key Vault
  • Monitorování výkonu aplikací pomocí Application Insights

Autentizace

Operace roviny dat podporují stejné typy přihlašovacích údajů z azidentity balíčku používaného pro operace řídicí roviny. Všechny typy přihlašovacích údajů implementují azcore.TokenCredential rozhraní, takže je můžete prohodit beze změny kódu klienta.

Klienti datové vrstvy používají koncový bod služby (adresu URL nebo obor názvů) a přihlašovací údaje místo ID předplatného.

// Create credential that auto-discovers authentication
cred, err := azidentity.NewDefaultAzureCredential(nil)

// Blob Storage - pass the storage account URL
blobClient, err := azblob.NewClient("https://mystorageaccount.blob.core.windows.net/", cred, nil)

// Key Vault secrets - pass the vault URL
secretClient, err := azsecrets.NewClient("https://mykeyvault.vault.azure.net/", cred, nil)

// Service Bus - pass the fully qualified namespace
sbClient, err := azservicebus.NewClient("mynamespace.servicebus.windows.net", cred, nil)

Některé služby také podporují připojovací řetězce pro prostředí, kde není k dispozici ověřování na základě tokenu:

// Connection string authentication (when token auth is not available)
client, err := azservicebus.NewClientFromConnectionString(connectionString, nil)

Pro produkční úlohy spuštěné v Azure použijte spravovanou identitu. Pro místní vývoj DefaultAzureCredential automaticky zjišťuje přihlašovací údaje z az loginproměnných prostředí nebo jiných zdrojů.

Úplnou příručku k typům přihlašovacích údajů a osvědčeným postupům najdete v tématu Authentication s Azure SDK for Go a dokumentaci k balíčku azidentity.

Stránkování

Mnoho operací datové vrstvy vrací kolekce, které mohou být velké. SDK používá vzor stránkování pro tyto operace:

// Create a pager for listing large result sets
pager := client.NewListSecretPropertiesPager(nil)

// Iterate through pages until no more results
for pager.More() {
	page, err := pager.NextPage(ctx)
	if err != nil {
		return err
	}

	for _, item := range page.Value {
		fmt.Println(*item.ID)
	}
}

Metody, které vracejí *Pager typy, se řídí stejným vzorem iterace ve všech balíčcích roviny dat.

Další podrobnosti o stránkování a dalších běžných vzorech najdete v Příkazy použití v Azure SDK for Go.

Zpracování chyb

Operace roviny dat vrací strukturované chyby, které můžete zkontrolovat u konkrétních kódů chyb:

import "github.com/Azure/azure-sdk-for-go/sdk/azcore"

// Check if the error is an Azure service error with structured details
var respErr *azcore.ResponseError
if errors.As(err, &respErr) {
	fmt.Printf("Error code: %s\n", respErr.ErrorCode)
	fmt.Printf("Status code: %d\n", respErr.StatusCode)
}

Běžné kódy chyb roviny dat zahrnují BlobNotFound, MessageLockLost, SecretNotFound, a RequestEntityTooLarge. Úplný seznam kódů chyb najdete v dokumentaci pro každou službu.

Nahrání příkladu objektu blob

Tento příklad ukazuje model připravený pro produkční prostředí: ověřování pomocí DefaultAzureCredential, vytvoření klienta objektu blob, nahrání dat s vypršením časového limitu a ověření. Tento model platí pro všechny klienty roviny dat. Záměnou koncového bodu služby a typu klienta jej přizpůsobíte pro Service Bus, Event Hubs, Cosmos DB nebo Key Vault.

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

func main() {
	accountURL := "https://<storage-account-name>.blob.core.windows.net/"
	containerName := "demo"
	blobName := "hello.txt"
	data := []byte("hello from Go")

	// Create credential that auto-discovers authentication
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		log.Fatalf("failed to create credential: %v", err)
	}

	// Set a timeout to prevent hanging on network issues
	ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
	defer cancel()

	// Create a client for the storage account
	client, err := azblob.NewClient(accountURL, cred, nil)
	if err != nil {
		log.Fatalf("failed to create blob client: %v", err)
	}

	// Upload data directly from a byte slice
	_, err = client.UploadBuffer(ctx, containerName, blobName, data, nil)
	if err != nil {
		log.Fatalf("failed to upload blob: %v", err)
	}

	fmt.Printf("uploaded %s to container %s\n", blobName, containerName)
}

Blob Storage

Balíček azblob poskytuje přístup k rovině dat k Azure Blob Storage, masivně škálovatelné službě úložiště objektů. Tento balíček je to, co vaše aplikace používá za běhu ke čtení a zápisu dat. K zřizování účtů úložiště a kontejnerů použijte samostatný armstorage balíček řídicí roviny.

Umožňuje nahrávat a stahovat soubory a dokumenty, vypisovat a spravovat objekty blob a kontejnery, nastavovat metadata a vlastnosti obsahu, implementovat paralelní nahrávání velkých souborů a vytvářet kanály zpracování dat.

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Pokud chcete začít, přečtěte si téma Quickstart: Azure Blob Storage klientský modul pro Go.

Dokumentaci k balíčku najdete v referenčních informacích k balíčku azblob.

Cosmos DB

Balíček azcosmos poskytuje přístup roviny dat k Azure Cosmos DB, globálně distribuované vícemodelové databázi. Můžete ho použít k vytváření aplikací, které potřebují čtení a zápisy s nízkou latencí v libovolném měřítku.

Umožňuje provádět operace CRUD s dokumenty, spouštět dotazy SQL na kontejnery, spravovat strategie dělení pro efektivní přístup k datům, zpracovávat stránkování nad velkými sadami výsledků a provádět dávkové operace s více položkami.

go get github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos

Pokud chcete začít, přečtěte si téma Quickstart: Použití Azure Cosmos DB pro NoSQL s Azure SDK pro Go.

Dokumentaci k balíčku najdete v referenčních informacích k balíčku azcosmos.

Centra událostí

Balíček azeventhubs poskytuje přístup k datové vrstvě Azure Event Hubs – službě pro příjem dat v reálném čase pro streamování událostí s vysokou propustností.

Slouží k odesílání událostí s dávkováním pro efektivní propustnost, přijímání a zpracování událostí pomocí skupin příjemců, správy přiřazení oddílů a kontrolních bodů, směrování událostí pomocí klíčů oddílů pro řazení záruk a vytváření kanálů příjmu protokolů a telemetrie.

go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs

Pokud chcete začít, přečtěte si článek Rychlý start: Odesílání událostí do služby Event Hubs nebo příjem událostí z Event Hubs pomocí Jazyka Go.

Dokumentaci k balíčku najdete v referenčních informacích k balíčku azeventhubs.

Trezor klíčů

Balíčky azsecrets, azkeys a azcertificates poskytují přístup na úrovni datového plánu k Azure Key Vault. Tyto balíčky, které vaše aplikace používá za běhu k načtení tajných kódů a provádění kryptografických operací. K zřizování a konfiguraci instancí trezoru použijte samostatný balíček řídicího plánu armkeyvault.

Použijte je k načítání a nastavování tajných kódů (hesla databáze, klíče rozhraní API), vytváření a správě kryptografických klíčů pro podepisování a šifrování, správa certifikátů TLS/SSL s automatickým obnovením, sledováním verzí tajných kódů a implementací strategií obměny a tajných kódů mezipaměti za účelem snížení latence a volání rozhraní API.

go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates

Pokud chcete začít s Key Vault, přečtěte si téma Quickstart: Azure Key Vault klientská knihovna certifikátů pro Go.

Dokumentaci k balíčku najdete v azsecrets, azkeys a azcertificates odkazy na balíčky.

Service Bus

Balíček azservicebus poskytuje přístup roviny dat k Azure Service Bus – plně spravovanému zprostředkovateli zpráv pro spolehlivou asynchronní komunikaci.

Slouží k odesílání a přijímání zpráv ve frontách pro komunikaci typu point-to-point, publikování a přihlášení k odběru témat pro rozvětvené vzory, odesílání dávek zpráv pro efektivní propustnost, plánování zpráv pro budoucí doručení a implementaci přijímačů dlouhého dotazování s dokončením a opuštěním zprávy.

go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus

Pokud chcete začít s Azure Service Bus, přečtěte si článek Quickstart: Odesílání zpráv a přijímání zpráv z front Azure Service Bus (Go).

Dokumentaci k balíčku najdete v referenčních informacích k balíčku azservicebus.

Application Insights

Modul ApplicationInsights-Go poskytuje integraci telemetrie se službou Aplikace Azure Insights – monitorování výkonu aplikací (APM) Azure.

Umožňuje sledovat vlastní události a metriky, monitorovat doby odezvy rozhraní API a selhání, implementovat distribuované trasování napříč službami, protokolovat výjimky s kontextovými vlastnostmi a řídit objem telemetrie vzorkováním.

go get github.com/microsoft/ApplicationInsights-Go

Dokumentaci ke službě najdete v přehledu Application Insights.

Další kroky