Herunterladen eines Blobs mit Go
In diesem Artikel wird beschrieben, wie ein Blob mithilfe des Azure Storage-Clientmoduls für Go heruntergeladen wird. Sie können Blobdaten an verschiedene Ziele herunterladen, einschließlich einen lokalen Dateipfad, einen Stream oder eine Textzeichenfolge.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Go 1.18+
Erstellen Ihrer Umgebung
Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit dem Azure Blob Storage-Clientmodul für Go einrichten. Die Schritte umfassen die Modulinstallation, das Hinzufügen von import
-Pfaden und das Erstellen eines autorisierten Clientobjekts. Ausführlichere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage und Go.
Installieren von Modulen
Verwenden Sie den folgenden Befehl, um das Modul azblob zu installieren:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Um sich mit Microsoft Entra ID zu authentifizieren (empfohlen), installieren Sie das azidentity
-Modul mit dem folgenden Befehl:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Hinzufügen von Importpfaden
Fügen Sie in der Codedatei die folgenden Importpfade hinzu:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
Dies sind die Importpfade, die mindestens für die ersten Schritte erforderlich sind. Einige Codebeispiele in diesem Artikel erfordern möglicherweise zusätzliche Importpfade. Spezifische Details und eine Beispielverwendung finden Sie unter Codebeispiele.
Erstellen eines Clientobjekts
Um eine App mit Blob Storage zu verbinden, erstellen Sie ein Clientobjekt mithilfe von azblob.NewClient. Das folgende Beispiel zeigt, wie Sie ein Clientobjekt mithilfe von DefaultAzureCredential
für die Autorisierung erstellen:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
Autorisierung
Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Ausführen eines Downloadvorgangs verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Storage-Blobdatenleser. Weitere Informationen finden Sie im Autorisierungsleitfaden für Abrufen des Blobs (REST-API).
Herunterladen eines Blobs
Sie können eine der folgenden Methoden verwenden, um ein Blob herunterzuladen:
Herunterladen in einen Dateipfad
Das folgende Beispiel lädt ein Blob in einen Dateipfad herunter:
func downloadBlobToFile(client *azblob.Client, containerName string, blobName string) {
// Create or open a local file where we can download the blob
file, err := os.Create("path/to/sample/file")
handleError(err)
// Download the blob to the local file
_, err = client.DownloadFile(context.TODO(), containerName, blobName, file, nil)
handleError(err)
}
Herunterladen in einen Stream
Das folgende Beispiel lädt ein Blob in einen Datenstrom herunter und liest aus dem Datenstrom, indem die NewRetryReader-Methode aufgerufen wird.
func downloadBlobToStream(client *azblob.Client, containerName string, blobName string) {
// Download the blob
get, err := client.DownloadStream(context.TODO(), containerName, blobName, nil)
handleError(err)
downloadedData := bytes.Buffer{}
retryReader := get.NewRetryReader(context.TODO(), &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())
}
Angeben von Datenübertragungsoptionen für den Download
Sie können beim Herunterladen eines Blobs Konfigurationsoptionen festlegen, um die Leistung zu optimieren. Die folgenden Konfigurationsoptionen stehen für Downloadvorgänge zur Verfügung:
BlockSize
: Die Größe jedes Blocks beim Herunterladen eines Blockblobs. Der Standardwert ist 4 MB.Concurrency
: Die maximale Anzahl paralleler Verbindungen, die während des Downloads verwendet werden sollen. Der Standardwert ist 5.
Diese Optionen stehen beim Herunterladen mit den folgenden Methoden zur Verfügung:
Die DownloadStream-Methode unterstützt diese Optionen nicht und lädt Daten in einer einzigen Anforderung herunter.
Weitere Informationen zu Grenzwerten im Zusammenhang mit der Übertragungsgröße für Blob Storage finden Sie unter Skalierbarkeitsziele für Blob Storage.
Das folgende Codebeispiel zeigt, wie Sie Datenübertragungsoptionen mithilfe von DownloadFileOptions angeben. Die in diesem Beispiel angegebenen Werte sind nicht als Empfehlungen zu verstehen. Zur ordnungsgemäßen Optimierung dieser Werte müssen die spezifischen Anforderungen Ihrer App berücksichtigt werden.
func downloadBlobTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Create or open a local file where we can download the blob
file, err := os.Create("path/to/sample/file")
handleError(err)
// Download the blob to the local file
_, err = client.DownloadFile(context.TODO(), containerName, blobName, file,
&azblob.DownloadFileOptions{
BlockSize: int64(4 * 1024 * 1024), // 4 MiB
Concurrency: uint16(2),
})
handleError(err)
}
Weitere Informationen zur Feinabstimmung von Datenübertragungsoptionen finden Sie unter Leistungsoptimierung für Uploads und Downloads mit Go.
Hinweis
Die Codebeispiele in diesem Leitfaden sollen Ihnen bei den ersten Schritten mit Azure Blob Storage und Go helfen. Sie sollten die Fehlerbehandlung und Context
-Werte so ändern, dass sie den Anforderungen Ihrer Anwendung entsprechen.
Ressourcen
Weitere Informationen zum Herunterladen von Blobs mithilfe des Azure Blob Storage-Clientmoduls für Go finden Sie in den folgenden Ressourcen.
Codebeispiele
- Anzeigen von Codebeispielen aus diesem Artikel (GitHub)
REST-API-Vorgänge
Das Azure SDK für Go enthält Bibliotheken, die auf der Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Go-Paradigmen. Die Methoden der Clientbibliothek zum Herunterladen von Blobs verwenden den folgenden REST-API-Vorgang:
- Get Blob (REST-API)
Clientmodulressourcen
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Go. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Go-App.