Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Informatie over het programmatisch werken met gegevens die zijn opgeslagen in Azure services met behulp van de Azure SDK voor Go-clientbibliotheken. Zie Overzicht van de Azure SDK voor Go-beheerbibliotheken voor een inleiding op een meer geavanceerd niveau. Dit artikel is gericht op de go-gegevensvlakpatronen die u gebruikt nadat een resource al bestaat en verwijst terug naar besturingsvlakbewerkingen voor inrichting en configuratie.
Wat is het Azure gegevensvlak?
Het Azure gegevensvlak is de set API's die u gebruikt om te communiceren met gegevens in Azure services, waaronder het uploaden van blobs, het verzenden van berichten, het opvragen van databases en het ophalen van geheimen. Terwijl het besturingsvlak resources indeelt en configureert, is het gegevensvlak wat uw toepassingscode tijdens runtime aanroept. Een veelgebruikte Go-werkstroom is om controlevlakcode één keer te gebruiken bij de installatie of automatisering en vervolgens datavlakclients te behouden in het toepassingspad dat elke dag draait.
De Azure SDK voor Go maakt het gegevensvlak beschikbaar via servicespecifieke pakketten zoals azblob, azservicebus, azeventhubs, azsecrets en azcosmos. Elk pakket maakt verbinding met een al ingerichte resource en volgt een consistent patroon:
- Verifieer met behulp van het
azidentitypakket. - Maak een getypte client met behulp van een service-eindpunt of verbindingsreeks.
- Roep methoden op de client aan om gegevens te lezen, schrijven of verwerken.
- Gepagineerde resultaten en fouten verwerken.
Veelvoorkomende scenario's voor Go-gegevensvlakbewerkingen zijn:
- Bestanden uploaden en downloaden van Blob Storage
- Berichten verzenden en ontvangen met Service Bus of Event Hubs
- Documenten opslaan en opvragen in Cosmos DB
- Geheimen, sleutels en certificaten ophalen uit Key Vault
- Toepassingsprestaties bewaken met Application Insights
Authentication
Gegevensvlakbewerkingen ondersteunen dezelfde referentietypen van het azidentity pakket dat wordt gebruikt voor besturingsvlakbewerkingen. Alle referentietypen implementeren de azcore.TokenCredential interface, zodat u deze kunt wisselen zonder clientcode te wijzigen.
Datavlak-clients gebruiken een service-eindpunt (URL of naamruimte) en inloggegevens in plaats van een abonnements-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)
Sommige services ondersteunen ook verbindingsreeksen voor omgevingen waar verificatie op basis van tokens niet beschikbaar is:
// Connection string authentication (when token auth is not available)
client, err := azservicebus.NewClientFromConnectionString(connectionString, nil)
Gebruik beheerde identiteit voor productieworkloads die worden uitgevoerd in Azure. Voor lokale ontwikkeling DefaultAzureCredential detecteert u automatisch referenties uit az login, omgevingsvariabelen of andere bronnen.
Zie Authentication with the Azure SDK for Go and the azidentity package documentation voor een volledige handleiding over referentietypen en aanbevolen procedures.
Pagina-indeling
Veel gegevensvlakbewerkingen retourneren verzamelingen die groot kunnen zijn. De SDK maakt gebruik van een pager-patroon voor deze bewerkingen:
// 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)
}
}
Methoden die typen retourneren *Pager , volgen hetzelfde iteratiepatroon voor alle gegevensvlakpakketten.
Zie de Common-gebruikspatronen in Azure SDK voor Go voor meer informatie over paginering en andere veelvoorkomende patronen.
Foutafhandeling
Gegevensvlakbewerkingen retourneren gestructureerde fouten die u kunt controleren op specifieke foutcodes:
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)
}
Veelvoorkomende foutcodes voor het gegevensvlak zijn onder andere BlobNotFound, MessageLockLost, SecretNotFounden RequestEntityTooLarge. Raadpleeg de documentatie voor elke service voor de volledige lijst met foutcodes.
Een blobvoorbeeld uploaden
In dit voorbeeld ziet u een patroon dat gereed is voor productie: verifiëren met behulp van DefaultAzureCredential, een blobclient maken, gegevens uploaden met een time-out en verifiëren. Dit patroon is van toepassing op alle gegevensvlakclients. Wissel het service-eindpunt en het clienttype om deze aan te passen voor Service Bus, Event Hubs, Cosmos DB of 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-opslag
Het pakket azblob biedt toegang tot Azure Blob Storage, een zeer schaalbare objectopslagservice. Dit pakket is wat uw toepassing tijdens runtime gebruikt om gegevens te lezen en te schrijven. Gebruik het afzonderlijke armstorage besturingsvlakpakket om opslagaccounts en containers in te richten.
Gebruik het om bestanden en documenten te uploaden en te downloaden, blobs en containers te vermelden en te beheren, metagegevens- en inhoudseigenschappen in te stellen, parallelle uploads voor grote bestanden te implementeren en pijplijnen voor gegevensverwerking te bouwen.
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Zie Quickstart: Azure Blob Storage clientmodule voor Go om aan de slag te gaan.
Zie de azblob-pakketreferenties voor de pakketdocumentatie.
Cosmos DB
Het pakket azcosmos biedt toegang tot Azure Cosmos DB, een wereldwijd gedistribueerde database met meerdere modellen. Gebruik deze om toepassingen te bouwen die lees- en schrijfbewerkingen met lage latentie nodig hebben op elke schaal.
Gebruik het om CRUD-bewerkingen uit te voeren op documenten, SQL-query's uit te voeren op containers, partitioneringsstrategieën te beheren voor efficiënte gegevenstoegang, paginering te verwerken over grote resultatensets en batchbewerkingen met meerdere items uit te voeren.
go get github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos
Zie Quickstart: Azure Cosmos DB gebruiken voor NoSQL met Azure SDK voor Go om aan de slag te gaan.
Zie de azcosmos-pakketreferentie voor de pakketdocumentatie.
Event Hubs
Het pakket azeventhubs biedt gegevensvlaktoegang tot Azure Event Hubs- een realtime service voor gegevensopname voor gebeurtenisstreaming met hoge doorvoer.
Gebruik het om gebeurtenissen te verzenden met batchverwerking voor efficiënte doorvoer, ontvangst en procesgebeurtenissen met behulp van consumentengroepen, het beheren van partitietoewijzing en controlepunten, het routeren van gebeurtenissen met behulp van partitiesleutels voor het ordenen van garanties en het bouwen van logboekopname en telemetriepijplijnen.
go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs
Zie Quickstart: Gebeurtenissen verzenden naar of ontvangen van Event Hubs met behulp van Go om aan de slag te gaan.
Zie de azeventhubs-pakketreferenties voor de pakketdocumentatie.
Key Vault
De azsecrets, azkeys en azcertificates bieden gegevensvlaktoegang tot Azure Key Vault. Deze pakketten die uw toepassing tijdens runtime gebruikt om geheimen op te halen en cryptografische bewerkingen uit te voeren. Gebruik het afzonderlijke armkeyvault besturingsvlakpakket om kluisexemplaren in te richten en te configureren.
Gebruik deze om geheimen op te halen en in te stellen (databasewachtwoorden, API-sleutels), cryptografische sleutels te maken en beheren voor ondertekening en versleuteling, TLS/SSL-certificaten te beheren met automatische verlenging, geheime versies bij te houden en rotatiestrategieën te implementeren, en geheimen in de cache op te slaan om latentie en API-aanroepen te verminderen.
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
Zie Quickstart: Azure Key Vault clientbibliotheek voor certificaten voor Go om aan de slag te gaan met Key Vault.
Zie voor de pakketdocumentatie de azsecrets, azkeys en azcertificates pakketreferenties.
Service Bus
Het pakket azservicebus biedt gegevensvlaktoegang tot Azure Service Bus- een volledig beheerde berichtenbroker voor betrouwbare asynchrone communicatie.
Gebruik het om berichten in wachtrijen te verzenden en te ontvangen voor punt-naar-punt-communicatie, publiceren en abonneren op onderwerpen voor fan-out patronen, batches berichten verzenden voor efficiënte doorvoer, berichten plannen voor toekomstige bezorging en lang peiling-consumenten implementeren met het voltooien en afbreken van berichten.
go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus
Zie Quickstart: Berichten verzenden naar en ontvangen van Azure Service Bus wachtrijen (Go) om aan de slag te gaan met Azure Service Bus.
Zie de azservicebus package reference voor de pakketdocumentatie.
Analyses van toepassingen
De module ApplicationInsights-Go biedt telemetrieintegratie met de APM-service (Application Performance Monitoring) van Azure-toepassing Insights - Azure.
Gebruik deze om aangepaste gebeurtenissen en metingen bij te houden, API-reactietijden en fouten te bewaken, gedistribueerde tracering over diensten heen te implementeren, uitzonderingen met contextuele eigenschappen te loggen, en het telemetrievolume door middel van steekproeven te beheren.
go get github.com/microsoft/ApplicationInsights-Go
Zie het overzicht van Application Insights voor de servicedocumentatie.