Quickstart: Azure Blob Storage-clientbibliotheek voor Go

Ga aan de slag met de Azure Blob Storage-clientbibliotheek voor Go voor het beheren van blobs en containers. Volg deze stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen.

Broncodepakket voor API-referentiedocumentatiebibliotheek | | (pkg.go.dev)

Vereisten

Instellen

In deze sectie wordt uitgelegd hoe u een project voorbereidt voor gebruik met de Azure Blob Storage-clientbibliotheek voor Go.

De voorbeeldtoepassing downloaden

De voorbeeldtoepassing die in deze quickstart wordt gebruikt, is een Go-basistoepassing.

Gebruik git om een kopie van de toepassing naar uw ontwikkelomgeving te downloaden.

git clone https://github.com/Azure-Samples/storage-blobs-go-quickstart 

Met deze opdracht wordt de opslagplaats naar uw lokale git-map gekloond. Als u het Go-voorbeeld voor Blob Storage wilt openen, zoekt u het bestand met de naam storage-quickstart.go.

De pakketten installeren

Als u wilt werken met blob- en containerbronnen in een opslagaccount, installeert u het azblob-pakket met behulp van de volgende opdracht:

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

Als u wilt verifiëren met Microsoft Entra ID (aanbevolen), installeert u de azidentity-module met behulp van de volgende opdracht:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Verifiëren bij Azure en toegang tot blobgegevens autoriseren

Toepassingsaanvragen voor Azure Blob Storage moeten worden geautoriseerd. Het gebruik DefaultAzureCredential en de Azure Identity-clientbibliotheek is de aanbevolen methode voor het implementeren van wachtwoordloze verbindingen met Azure-services in uw code, waaronder Blob Storage.

U kunt aanvragen voor Azure Blob Storage ook autoriseren met behulp van de toegangssleutel voor het account. Deze aanpak moet echter met voorzichtigheid worden gebruikt. Ontwikkelaars moeten ijverig zijn om de toegangssleutel nooit beschikbaar te maken op een onbeveiligde locatie. Iedereen met de toegangssleutel kan aanvragen voor het opslagaccount autoriseren en heeft effectief toegang tot alle gegevens. DefaultAzureCredential biedt verbeterde beheer- en beveiligingsvoordelen ten opzichte van de accountsleutel om verificatie zonder wachtwoord mogelijk te maken. Beide opties worden in het volgende voorbeeld gedemonstreerd.

DefaultAzureCredential is een implementatie van de referentieketen die wordt geleverd door de Azure Identity-clientbibliotheek voor Go. DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.

Zie het overzicht van de Azure Identity-bibliotheek voor meer informatie over de volgorde en locaties waarin DefaultAzureCredential referenties worden gezocht.

Uw app kan bijvoorbeeld verifiëren met behulp van uw Azure CLI-aanmeldingsreferenties bij het lokaal ontwikkelen. Zodra deze is geïmplementeerd in Azure, kan uw app vervolgens een beheerde identiteit gebruiken. Voor deze overgang tussen omgevingen zijn geen codewijzigingen vereist.

Rollen toewijzen aan uw Microsoft Entra-gebruikersaccount

Zorg er bij het lokaal ontwikkelen voor dat het gebruikersaccount dat toegang heeft tot blobgegevens over de juiste machtigingen beschikt. U hebt Inzender voor Opslagblobgegevens nodig om blobgegevens te lezen en schrijven. Als u uzelf deze rol wilt toewijzen, moet u de rol Gebruikerstoegang Beheer istrator of een andere rol met de actie Microsoft.Authorization/roleAssignments/write toegewezen krijgen. U kunt Azure RBAC-rollen toewijzen aan een gebruiker met behulp van Azure Portal, Azure CLI of Azure PowerShell. Meer informatie over de beschikbare bereiken voor roltoewijzingen vindt u op de overzichtspagina van het bereik.

In dit scenario wijst u machtigingen toe aan uw gebruikersaccount, dat is afgestemd op het opslagaccount, om het principe van minimale bevoegdheden te volgen. Deze procedure biedt gebruikers alleen de minimale machtigingen die nodig zijn en maakt veiligere productieomgevingen.

In het volgende voorbeeld wordt de rol Inzender voor opslagblobgegevens toegewezen aan uw gebruikersaccount, dat zowel lees- als schrijftoegang biedt tot blobgegevens in uw opslagaccount.

Belangrijk

In de meeste gevallen duurt het een of twee minuten voordat de roltoewijzing is doorgegeven in Azure, maar in zeldzame gevallen kan het maximaal acht minuten duren. Als u verificatiefouten ontvangt wanneer u de code voor het eerst uitvoert, wacht u even en probeert u het opnieuw.

  1. Zoek uw opslagaccount in Azure Portal met behulp van de hoofdzoekbalk of linkernavigatiebalk.

  2. Selecteer op de overzichtspagina van het opslagaccount toegangsbeheer (IAM) in het menu aan de linkerkant.

  3. Selecteer op de pagina Toegangsbeheer (IAM) het tabblad Roltoewijzingen .

  4. Selecteer + Toevoegen in het bovenste menu en voeg vervolgens roltoewijzing toe in de resulterende vervolgkeuzelijst.

    A screenshot showing how to assign a role.

  5. Gebruik het zoekvak om de resultaten te filteren op de gewenste rol. Zoek in dit voorbeeld naar Inzender voor Opslagblobgegevens en selecteer het overeenkomende resultaat en kies vervolgens Volgende.

  6. Selecteer onder Toegang toewijzen de optie Gebruiker, groep of service-principal en kies vervolgens + Leden selecteren.

  7. Zoek in het dialoogvenster naar uw Microsoft Entra-gebruikersnaam (meestal uw user@domain e-mailadres) en kies Vervolgens onderaan het dialoogvenster Selecteren .

  8. Selecteer Beoordelen + toewijzen om naar de laatste pagina te gaan en vervolgens opnieuw beoordelen en toewijzen om het proces te voltooien.

Meld u aan en verbind uw app-code met Azure met behulp van DefaultAzureCredential

U kunt toegang tot gegevens in uw opslagaccount autoriseren met behulp van de volgende stappen:

  1. Zorg ervoor dat u bent geverifieerd met hetzelfde Microsoft Entra-account waaraan u de rol hebt toegewezen in uw opslagaccount. In het volgende voorbeeld ziet u hoe u zich verifieert via de Azure CLI:

    az login
    
  2. Als u wilt gebruiken DefaultAzureCredential in een Go-toepassing, installeert u de azidentity-module met behulp van de volgende opdracht:

    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    

Azure CLI-verificatie wordt niet aanbevolen voor toepassingen die worden uitgevoerd in Azure. Wanneer deze wordt geïmplementeerd in Azure, kunt u dezelfde code gebruiken om aanvragen naar Azure Storage te autoriseren vanuit een toepassing die wordt uitgevoerd in Azure. U moet echter beheerde identiteit inschakelen in uw app in Azure en uw opslagaccount configureren om die beheerde identiteit verbinding te laten maken. Zie de zelfstudie over verificatie van door Azure gehoste apps voor gedetailleerde instructies over het configureren van deze verbinding tussen Azure-services.

Raadpleeg Azure-verificatie met de Azure SDK voor Go voor meer informatie over verschillende verificatiemethoden.

De voorbeeldtoepassing uitvoeren

In het codevoorbeeld worden de volgende acties uitgevoerd:

  • Hiermee maakt u een clientobject dat is geautoriseerd voor gegevenstoegang via DefaultAzureCredential
  • Hiermee maakt u een container in een opslagaccount
  • Uploadt een blob naar de container
  • Een lijst met de blobs in de container
  • De blobgegevens in een buffer downloaden
  • Hiermee verwijdert u de blob- en containerbronnen die door de app zijn gemaakt

Voordat u het voorbeeld uitvoert, opent u het bestand storage-quickstart.go . Vervang door <storage-account-name> de naam van uw Azure-opslagaccount.

Voer vervolgens de toepassing uit met behulp van de volgende opdracht:

go run storage-quickstart.go

De uitvoer van de app lijkt op die in het volgende voorbeeld:

Azure Blob storage quick start sample
Creating a container named quickstart-sample-container
Uploading a blob named sample-blob
Listing the blobs in the container:
sample-blob
Blob contents:

Hello, world! This is a blob.

Press enter key to delete resources and exit the application.

Cleaning up.
Deleting the blob sample-blob
Deleting the container quickstart-sample-container

Wanneer u op enter drukt bij de prompt, verwijdert het voorbeeldprogramma de blob- en containerbronnen die door de app zijn gemaakt.

Fooi

U kunt ook een hulpprogramma zoals Azure Storage Explorer gebruiken om de bestanden in de Blob-opslag te bekijken. Azure Storage Explorer is een gratis hulpprogramma voor meerdere platforms waarmee u toegang hebt tot de gegevens van uw opslagaccount.

De voorbeeldcode begrijpen

Vervolgens doorlopen we de voorbeeldcode om te begrijpen hoe deze werkt.

Toegang autoriseren en een clientobject maken

Werken met een Azure-resource met behulp van de SDK begint met het maken van een clientobject. Als u het clientobject wilt maken, roept het codevoorbeeld azblob aan. NewClient met de volgende waarden:

  • serviceURL : de URL van het opslagaccount
  • cred - een Microsoft Entra-referentie verkregen via de azidentity module
  • opties - clientopties; pass nil om de standaardwaarden te accepteren

In het volgende codevoorbeeld wordt een clientobject gemaakt voor interactie met container- en blob-resources in een opslagaccount:

// TODO: replace <storage-account-name> with your actual storage account name
url := "https://<storage-account-name>.blob.core.windows.net/"
ctx := context.Background()

credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)

client, err := azblob.NewClient(url, credential, nil)
handleError(err)

Een container maken

In het codevoorbeeld wordt een nieuwe containerresource gemaakt in het opslagaccount. Als er al een container met dezelfde naam bestaat, wordt er een ResourceExistsError gegenereerd.

Belangrijk

Containernamen moeten uit kleine letters bestaan. Zie Naamgeving en verwijzingen naar containers, blobs en metagegevens voor meer informatie over naamgevingsvereisten voor containers en blobs.

In het volgende codevoorbeeld wordt een nieuwe container gemaakt met de naam quickstart-sample-container in het opslagaccount:

// Create the container
containerName := "quickstart-sample-container"
fmt.Printf("Creating a container named %s\n", containerName)
_, err = client.CreateContainer(ctx, containerName, nil)
handleError(err)

Blobs uploaden naar de container

In het codevoorbeeld wordt een bytematrix met sommige gegevens gemaakt en worden de gegevens geüpload als buffer naar een nieuwe blobresource in de opgegeven container.

In het volgende codevoorbeeld worden de blobgegevens geüpload naar de opgegeven container met behulp van de methode UploadBuffer :

data := []byte("\nHello, world! This is a blob.\n")
blobName := "sample-blob"

// Upload to data to blob storage
fmt.Printf("Uploading a blob named %s\n", blobName)
_, err = client.UploadBuffer(ctx, containerName, blobName, data, &azblob.UploadBufferOptions{})
handleError(err)

Blobs in een container vermelden

In het codevoorbeeld worden de blobs in de opgegeven container vermeld. In dit voorbeeld wordt NewListBlobsFlatPager gebruikt, waarmee een pager wordt geretourneerd voor blobs die beginnen met de opgegeven markering. Hier gebruiken we een lege markering om de opsomming vanaf het begin te starten en door te gaan met paging totdat er geen resultaten meer zijn. Deze methode retourneert blobnamen in lexicografische volgorde.

In het volgende codevoorbeeld worden de blobs in de opgegeven container vermeld:

// List the blobs in the container
fmt.Println("Listing the blobs in the container:")

pager := client.NewListBlobsFlatPager(containerName, &azblob.ListBlobsFlatOptions{
	Include: azblob.ListBlobsInclude{Snapshots: true, Versions: true},
})

for pager.More() {
	resp, err := pager.NextPage(context.TODO())
	handleError(err)

	for _, blob := range resp.Segment.BlobItems {
		fmt.Println(*blob.Name)
	}
}

De blob downloaden

Het codevoorbeeld downloadt een blob met behulp van de DownloadStream-methode en maakt een lezer voor opnieuw proberen om gegevens te lezen. Als een verbinding mislukt tijdens het lezen, doet de lezer voor opnieuw proberen andere aanvragen om een verbinding tot stand te brengen en door te gaan met lezen. U kunt opties voor opnieuw proberen opgeven met behulp van de struct RetryReaderOptions .

In het volgende codevoorbeeld wordt een blob gedownload en wordt de inhoud naar de console geschreven:

// Download the blob
get, err := client.DownloadStream(ctx, containerName, blobName, nil)
handleError(err)

downloadedData := bytes.Buffer{}
retryReader := get.NewRetryReader(ctx, &azblob.RetryReaderOptions{})
_, err = downloadedData.ReadFrom(retryReader)
handleError(err)

err = retryReader.Close()
handleError(err)

// Print the contents of the blob we created
fmt.Println("Blob contents:")
fmt.Println(downloadedData.String())

Resources opschonen

Als u de blobs die in deze quickstart zijn geüpload niet meer nodig hebt, kunt u de afzonderlijke blob verwijderen met behulp van de methode DeleteBlob of de hele container en de inhoud ervan met behulp van de methode DeleteContainer .

// Delete the blob
fmt.Printf("Deleting the blob " + blobName + "\n")

_, err = client.DeleteBlob(ctx, containerName, blobName, nil)
handleError(err)

// Delete the container
fmt.Printf("Deleting the container " + containerName + "\n")
_, err = client.DeleteContainer(ctx, containerName, nil)
handleError(err)

Volgende stappen

In deze quickstart hebt u geleerd hoe u blobs uploadt, downloadt en vermeldt met behulp van Go.

Als u voorbeeld-apps voor Blob-opslag wilt zien, ga dan naar: