Dela via


Använd Azure SDKs för Go för dataplansåtgärder

Lär dig hur du interagerar med data som lagras i Azure tjänster programmatiskt med hjälp av Azure SDKs för Go-klientbibliotek. En introduktion på högre nivå till hur hanteringsbibliotek och klientbibliotek passar ihop finns i Översikt över Azure SDKs för Go-hanteringsbibliotek. Den här artikeln fokuserar på go-dataplansmönster som du använder när en resurs redan finns och pekar tillbaka på kontrollplansåtgärder för etablering och konfigurationsarbete.

Vad är det Azure dataplanet?

Det Azure dataplanet är den uppsättning API:er som du använder för att interagera med data i Azure tjänster, inklusive att ladda upp blobar, skicka meddelanden, fråga databaser och hämta hemligheter. Medan kontrollplanet etablerar och konfigurerar resurser, är det dataplanet som programkoden anropar under körning. Ett vanligt arbetsflöde i Go är att använda kod för kontrollplanet en gång vid installation eller automatisering, och sedan ha klienterna för dataplatsen i den dagliga programflödet.

Azure SDKs för Go exponerar dataplanet via tjänstspecifika paket, till exempel azblob, azservicebus, azeventhubs, azsecrets och azcosmos. Varje paket ansluter till en redan etablerad resurs och följer ett konsekvent mönster:

  1. Autentisera azidentity med hjälp av paketet.
  2. Skapa en typad klient med hjälp av en tjänstslutpunkt eller anslutningssträng.
  3. Anropa metoder på klienten för att läsa, skriva eller bearbeta data.
  4. Hantera sidnumrerade resultat och fel.

Vanliga scenarier för operativa åtgärder med Go:s dataplan är:

  • Ladda upp och ladda ned filer från Blob Storage
  • Skicka och ta emot meddelanden med Service Bus eller Event Hubs
  • Lagra och fråga dokument i Cosmos DB
  • Hämtar hemligheter, nycklar och certifikat från Key Vault
  • Övervaka programprestanda med Application Insights

Authentication

Dataplanoperationer stöder samma typer av autentiseringsuppgifter från azidentity-paketet som används för kontrollplanoperationer. Alla typer av autentiseringsuppgifter implementerar azcore.TokenCredential gränssnittet så att du kan växla dem utan att ändra klientkoden.

Dataplansklienter tar en tjänstslutpunkt (URL eller namnområde) och en autentiseringsuppgift i stället för ett prenumerations-ID:

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

Vissa tjänster stöder även anslutningssträngar för miljöer där tokenbaserad autentisering inte är tillgänglig:

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

Använd hanterad identitet för produktionsarbetsbelastningar som körs i Azure. För lokal utveckling DefaultAzureCredential identifierar automatiskt autentiseringsuppgifter från az login, miljövariabler eller andra källor.

En fullständig guide om behörighetstyper och bästa praxis finns i Authentication with the Azure SDKs for Go och dokumentationen för azidentity-paketet.

Paginering

Många data plane-operatörer returnerar samlingar som kan vara omfattande. SDK använder ett pager-mönster för dessa åtgärder:

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

Metoder som returnerar *Pager typer följer samma iterationsmönster i alla dataplanspaket.

Mer information om sidnumrering och andra vanliga mönster finns i användningsmönstren Common i Azure SDKs för Go.

Felhantering

Dataplansåtgärder returnerar strukturerade fel som du kan kontrollera efter specifika felkoder:

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

Vanliga felkoder för dataplanet är BlobNotFound, MessageLockLost, SecretNotFoundoch RequestEntityTooLarge. I dokumentationen för varje tjänst finns en fullständig lista över felkoder.

Ladda upp ett blobexempel

Det här exemplet visar ett produktionsklart mönster: autentisera med hjälp DefaultAzureCredentialav , skapa en blobklient, ladda upp data med en timeout och verifiera. Det här mönstret gäller för alla dataplansklienter. Byt tjänstslutpunkt och klienttyp för att anpassa den för Service Bus, Event Hubs, Cosmos DB eller 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

Paketet azblob ger dataplansåtkomst till Azure Blob Storage, en mycket skalbar objektlagringstjänst. Det här paketet är vad din applikation använder vid runtime för att läsa och skriva data. Använd det separata armstorage kontrollplanspaketet för att konfigurera lagringskonton och containrar.

Använd den för att ladda upp och ladda ned filer och dokument, lista och hantera blobar och containrar, ange metadata och innehållsegenskaper, implementera parallella uppladdningar för stora filer och skapa pipelines för databearbetning.

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

Kom igång genom att läsa Quickstart: Azure Blob Storage klientmodul för Go.

I paketdokumentationen finns azblob-paketreferens.

Cosmos DB

Paketet azcosmos ger dataplansåtkomst till Azure Cosmos DB, en globalt distribuerad databas med flera modeller. Använd den för att skapa program som behöver läsningar och skrivningar med låg svarstid i valfri skala.

Använd den för att utföra CRUD-åtgärder på dokument, köra SQL-frågor mot containrar, hantera partitioneringsstrategier för effektiv dataåtkomst, hantera sidnumrering över stora resultatuppsättningar och köra batchåtgärder med flera objekt.

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

Kom igång genom att läsa Quickstart: Använd Azure Cosmos DB för NoSQL med Azure SDKs för Go.

I paketdokumentationen finns azcosmos-paketreferens.

Event Hubs

Paketet azeventhubs ger dataplansåtkomst till Azure Event Hubs – en datainmatningstjänst i realtid för händelseströmning med högt dataflöde.

Använd den för att skicka händelser med batchbearbetning för effektivt dataflöde, ta emot och bearbeta händelser med hjälp av konsumentgrupper, hantera partitionstilldelning och kontrollpunkter, dirigera händelser med hjälp av partitionsnycklar för att beställa garantier och skapa logginmatnings- och telemetripipelines.

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

Information om hur du kommer igång finns i Snabbstart: Skicka händelser till eller ta emot händelser från Event Hubs med Go.

I paketdokumentationen finns azeventhubs-paketreferens.

Nyckelvalv

Paketen azsecrets, azkeys och azcertificates ger dataplanet åtkomst till Azure Key Vault. Dessa paket som din applikation använder vid körning för att hämta säkerhetsnycklar och utföra kryptografiska åtgärder. Använd det separata armkeyvault kontrollplanspaketet för att etablera och konfigurera valvinstanser.

Använd dem för att hämta och ange hemligheter (databaslösenord, API-nycklar), skapa och hantera kryptografiska nycklar för signering och kryptering, hantera TLS/SSL-certifikat med automatisk förnyelse, spåra hemliga versioner och implementera rotationsstrategier och cachehemligheter för att minska svarstiden och API-anrop.

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

Kom igång med Key Vault genom att läsa Quickstart: Azure Key Vault certifikatklientbibliotek för Go.

I paketdokumentationen finns azsecrets, azkeys och azcertificates paketreferenser.

Service Bus

Paketet azservicebus ger dataåtkomst till Azure Service Bus – en fullständigt hanterad meddelandemäklare för tillförlitlig asynkron kommunikation.

Använd den för att skicka och ta emot meddelanden i köer för punkt-till-punkt-kommunikation, publicera och prenumerera på ämnen för fläktningsmönster, skicka grupper av meddelanden för effektiv genomströmning, schemalägga meddelanden för framtida leverans och implementera långpollingkonsumenter med fullföljande och övergivning av meddelanden.

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

Kom igång med Azure Service Bus genom att läsa Quickstart: Skicka meddelanden till och ta emot meddelanden från Azure Service Bus köer (Go).

I paketdokumentationen finns azservicebus-paketreferens.

Programinsikter

Modulen ApplicationInsights-Go tillhandahåller telemetriintegrering med Azure Application Insights – Azure tjänst för övervakning av programprestanda (APM).

Använd den för att spåra anpassade händelser och mått, övervaka API-svarstider och -fel, implementera distribuerad spårning mellan tjänster, logga undantag med kontextuella egenskaper och kontrollera telemetrivolym med sampling.

go get github.com/microsoft/ApplicationInsights-Go

För tjänstdokumentationen, se Översikt över Application Insights.

Nästa steg