A Go Azure SDK használata adatsík-műveletekhez

Megtudhatja, hogyan kezelheti az Azure-szolgáltatásokban tárolt adatokat programozott módon a Go-ügyfélkódtárak Azure SDK használatával. A felügyeleti kódtárak és az ügyfélkódtárak egymáshoz való illeszkedésének magasabb szintű ismertetését a Go felügyeleti kódtárak Azure SDK Megtekintése című témakörben talál. Ez a cikk a már létező erőforrások Go adatsík mintáira összpontosít, és az irányításhoz szükséges kiépítési és konfigurációs műveletekre mutat vissza.

Mi az Azure adatsík?

Az Azure adatsík olyan API-k készlete, amelyekkel Azure szolgáltatásokban lévő adatokkal kommunikálhat, beleértve a blobok feltöltését, az üzenetek küldését, az adatbázisok lekérdezését és a titkos kulcsok lekérését. Bár a vezérlősík kiépít és konfigurál erőforrásokat, az adatsík az, amit az alkalmazáskód futásidőben hív meg. Egy gyakori Go-munkafolyamat az, hogy a beállítás vagy az automatizálás során egyszer használja a vezérlősík-kódot, majd az adatsík-ügyfeleket az alkalmazásfolyamatban tartja, amely minden nap fut.

A Go Azure SDK szolgáltatásspecifikus csomagokon keresztül teszi elérhetővé az adatsíkot, például azblob, azservicebus, azeventhubs, azsecrets és azcosmos. Minden csomag egy már kiépített erőforráshoz csatlakozik, és konzisztens mintát követ:

  1. Hitelesítés a azidentity csomag használatával.
  2. Írógépesített ügyfél létrehozása szolgáltatásvégpont vagy csatlakozási karakterlánc használatával.
  3. Metódusok meghívása az ügyfélen adatok olvasásához, írásához vagy feldolgozásához.
  4. Többoldalas eredmények és hibák kezelése.

A Go-adatsík műveleteinek gyakori forgatókönyvei a következők:

  • Fájlok feltöltése és letöltése a Blob Storage szolgáltatásból
  • Üzenetek küldése és fogadása Service Bus vagy Event Hubs használatával
  • Dokumentumok tárolása és lekérdezése a Cosmos DB-ben
  • Titkok, kulcsok és tanúsítványok lekérése a Key Vaultból
  • Az alkalmazás teljesítményének monitorozása az Application Insights használatával

Authentication

Az adatsík-műveletek ugyanazokat a hitelesítő adatokat támogatják a vezérlősík műveleteihez használt azidentitás csomagból. Az összes hitelesítő adattípus implementálja az azcore.TokenCredential interfészt, így az ügyfélkód módosítása nélkül felcserélheti őket.

Az adatsík-ügyfelek szolgáltatásvégpontot (URL-címet vagy névteret) és hitelesítő adatokat használnak előfizetés-azonosító helyett:

// 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)

Egyes szolgáltatások olyan környezetek kapcsolati sztringeit is támogatják, ahol a jogkivonatalapú hitelesítés nem érhető el:

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

Az Azure éles környezetben futó munkaterhelésekhez használjon felügyelt identitást. A helyi fejlesztéshez DefaultAzureCredential automatikusan felderíti a hitelesítő adatokat a környezeti változókból vagy más forrásokból az login.

A hitelesítő adatok típusairól és ajánlott eljárásairól a Hitelesítés a Go-hoz készült Azure SDK-val és az azidentity csomag dokumentációja nyújt teljes útmutatót.

Oldalszámozás

Számos adatsík-művelet nagy méretű gyűjteményeket ad vissza. Az SDK az alábbi műveletekhez használ lapozómintát:

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

A *Pager típusokat visszaadó metódusok ugyanazt az iterációs mintát követik az összes adatsík-csomagban.

A lapozásról és más gyakori mintákról további információt az Azure SDK-hoz Go Gyakori használati mintáiban talál.

Hibakezelés

Az adatsík-műveletek olyan strukturált hibákat adnak vissza, amelyeket meghatározott hibakódok vizsgálatára használhat:

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

Az adatsík gyakori hibakódjai a következők BlobNotFound: , MessageLockLost, SecretNotFoundés RequestEntityTooLarge. A hibakódok teljes listájáért tekintse meg az egyes szolgáltatások dokumentációját.

Blob feltöltési példa

Ez a példa egy éles üzemre kész mintát mutat be: a DefaultAzureCredential használatával történő hitelesítés, blob kliens létrehozása, adatok feltöltése időkorlátozással, és azok ellenőrzése. Ez a minta az összes adatsík-ügyfélre vonatkozik. Cserélje le a szolgáltatásvégpontot és az ügyféltípust a Service Bus, az Event Hubs, a Cosmos DB vagy a Key Vault módosításához.

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

A azblob csomag adatsík-hozzáférést biztosít a Azure Blob Storage, egy nagymértékben méretezhető objektumtárolási szolgáltatáshoz. Ezt a csomagot használja az alkalmazás futásidőben az adatok olvasásához és írásához. A különálló armstorage vezérlősík-csomag használatával tárfiókokat és tárolókat építhet ki.

Segítségével fájlokat és dokumentumokat tölthet fel és tölthet le, blobokat és tárolókat listázhat és kezelhet, metaadatokat és tartalomtulajdonságokat állíthat be, párhuzamos feltöltéseket hajthat végre nagy fájlokhoz, és adatfeldolgozási folyamatokat hozhat létre.

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

Első lépésként tekintse meg a Bevezető: Azure Blob Storage ügyfélmodul Go-hoz.

A csomag dokumentációját lásd a azblob csomagra vonatkozó referenciájában.

Cosmos DB

A azcosmos csomag adatsík-hozzáférést biztosít a Azure Cosmos DB, egy globálisan elosztott, többmodelles adatbázishoz. Segítségével olyan alkalmazásokat hozhat létre, amelyek kis késésű olvasást és írást igényelnek bármilyen léptékben.

Használatával CRUD-műveleteket hajthat végre dokumentumokon, SQL-lekérdezéseket futtathat tárolókon, particionálási stratégiákat kezelhet a hatékony adathozzáférés érdekében, kezelheti a lapozást nagy eredményhalmazokon, és többelemes kötegműveleteket hajthat végre.

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

Első lépésként tekintse meg a Gyorsútmutatót: Az Azure Cosmos DB NoSQL használata a Go-hoz készült Azure SDK-val.

A csomag dokumentációját a azcosmos csomag referenciájában találja.

Event Hubs

A azeventhubs csomag adatsík-hozzáférést biztosít a Azure Event Hubs - egy valós idejű adatbetöltési szolgáltatáshoz a nagy átviteli sebességű eseménystreameléshez.

Használatával eseményeket küldhet kötegeléssel a hatékony átviteli sebesség érdekében, fogadhatja és feldolgozhatja az eseményeket fogyasztói csoportok használatával, kezelheti a partíció-hozzárendelést és az ellenőrzőpontozást, az eseményeket partíciókulcsokkal irányíthatja a garanciák megrendeléséhez, valamint naplóbetöltési és telemetriai folyamatokat hozhat létre.

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

Első lépésként tekintse meg a Rövid útmutatót: Események küldése vagy fogadása az Event Hubsból a Go használatával.

A csomag dokumentációját a azeventhubs csomagreferenciájában találja.

Key Vault

A azsecrets, azkeys és azcertificates csomagok adatsík-hozzáférést biztosítanak a Azure Key Vault. Ezek a csomagok, amelyet az alkalmazás futásidőben használ a titkos kódok lekérésére és titkosítási műveletek végrehajtására. A tárhelypéldányok kiépítéséhez és konfigurálásához használja a különálló vezérlősík-csomagot armkeyvault.

Segítségével lekérheti és beállíthatja a titkos kulcsokat (adatbázisjelszavak, API-kulcsok), titkosítási kulcsokat hozhat létre és kezelhet aláíráshoz és titkosításhoz, TLS-/SSL-tanúsítványokat kezelhet automatikus megújítással, nyomon követheti a titkos verziókat, és rotációs stratégiákat implementálhat, valamint gyorsítótár-titkos kulcsokat hozhat létre a késés és az API-hívások csökkentése érdekében.

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

A Key Vault használatbavételéhez tekintse meg a Felolvasási útmutatót: Azure Key Vault Tanúsítványügyfél-kódtár a Go számára.

A csomag dokumentációját a azsecrets, azkeys és azcertificates csomaghivatkozásokban találja.

Service Bus

A azservicebus csomag adatsík-hozzáférést biztosít a Azure Service Bus - egy teljes körűen felügyelt üzenetközvetítőhöz a megbízható aszinkron kommunikációhoz.

Segítségével üzeneteket küldhet és fogadhat az üzenetsorokon pont–pont kommunikációhoz, közzéteheti és feliratkozhat a rajongói minták témáira, üzenetkötegeket küldhet a hatékony átviteli sebesség érdekében, üzeneteket ütemezhet a jövőbeli kézbesítéshez, és hosszú távú lekérdezéseket hajthat végre az üzenetek befejezésével és megszakításával.

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

Az Azure Service Bus használatának megkezdéséhez tekintse meg Gyors kezdés: Üzenetek küldése Azure Service Bus üzenetsorokba és fogadása az azokból (Go).

A csomag dokumentációját a azservicebus csomagreferenciájában találja.

Application Insights

A ApplicationInsights-Go modul telemetriai integrációt biztosít Azure-alkalmazás Insights – Azure alkalmazásteljesítmény-monitorozási (APM) szolgáltatásával.

Segítségével nyomon követheti az egyéni eseményeket és metrikákat, monitorozhatja az API válaszideit és hibáit, implementálhatja az elosztott nyomkövetést a szolgáltatások között, naplózhatja a környezetfüggő tulajdonságokkal rendelkező kivételeket, és mintavételezéssel vezérelheti a telemetriai kötetet.

go get github.com/microsoft/ApplicationInsights-Go

A szolgáltatás dokumentációját az Application Insights áttekintésében találja.

Következő lépések