Freigeben über


Azure Storage Data Movement Blobs-Clientbibliothek für .NET – Version 12.0.0-beta.3

Serverversion: 2020-04-08, 2020-02-10, 2019-12-12, 2019-07-07 und 2020-02-02-02

Azure Storage ist ein von Microsoft verwalteter Dienst, der hoch verfügbaren, sicheren, stabilen, skalierbaren und redundanten Cloudspeicher bereitstellt. Azure Storage umfasst Azure Blobs (Objekte), Azure Data Lake Storage Gen2, Azure Files und Azure-Warteschlangen.

Die Azure Storage Data Movement-Bibliothek ist für das Hochladen, Herunterladen und Kopieren von Kundendaten optimiert.

Die Azure.Storage.DataMovement.Blobs-Bibliothek stellt eine Infrastruktur bereit, die von den anderen Azure Storage-Clientbibliotheken gemeinsam genutzt wird.

Quellcode | Paket (NuGet) | API-Referenzdokumentation | DOKUMENTATION | ZUR REST-APIProduktdokumentation

Erste Schritte

Installieren des Pakets

Installieren Sie die Azure Storage-Clientbibliothek für .NET, die Sie mit NuGet verwenden möchten, und die Azure.Storage.DataMovement.Blobs Clientbibliothek wird enthalten sein:

dotnet add package Azure.Storage.DataMovement --prerelease
dotnet add package Azure.Storage.DataMovement.Blobs --prerelease

Voraussetzungen

Sie benötigen ein Azure-Abonnement und ein Speicherkonto , um dieses Paket verwenden zu können.

Um ein neues Speicherkonto zu erstellen, können Sie das Azure-Portal, Azure PowerShell oder die Azure CLI verwenden. Beispiel für die Verwendung der Azure-Befehlszeilenschnittstelle:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Authentifizieren des Clients

Die Azure.Storage.DataMovement.Blobs-Bibliothek verwendet Clients aus dem Azure.Storage.Blobs-Paket, um mit dem Azure Blob Storage-Dienst zu kommunizieren. Weitere Informationen finden Sie in der Dokumentation zur Azure.Storage.Blobs-Authentifizierung.

Wichtige Begriffe

Die Allgemeine Azure Storage-Clientbibliothek enthält freigegebene Infrastruktur wie [Authentifizierungsanmeldeinformationen][auth_credentials] und RequestFailedException.

Threadsicherheit

Wir garantieren, dass alle Client-instance Methoden threadsicher und unabhängig voneinander sind (Richtlinie). Dadurch wird sichergestellt, dass die Empfehlung, Clientinstanzen wiederzuverwenden, immer sicher ist, auch über Threads hinweg.

Zusätzliche Konzepte

Clientoptionen | Zugreifen auf die Antwort | Vorgänge | mit langer AusführungsdauerBehandeln von Fehlern | Diagnose | Spott | Clientlebensdauer

Beispiele

Beispiele für die Verwendung von BlobContainerClient-Erweiterungsmethoden zum Hochladen und Herunterladen von Verzeichnissen.

Instanziieren des BlobContainerClient

BlobServiceClient service = new BlobServiceClient(serviceUri, credential);

BlobContainerClient container = service.GetBlobContainerClient(containerName);

Hochladen eines lokalen Verzeichnisses in das Stammverzeichnis des Containers

DataTransfer transfer = await container.StartUploadDirectoryAsync(localPath);

await transfer.AwaitCompletion();

Hochladen eines lokalen Verzeichnisses in ein virtuelles Verzeichnis im Container durch Angeben eines Verzeichnispräfixes

DataTransfer transfer = await container.StartUploadDirectoryAsync(localPath, blobDirectoryPrefix);

await transfer.AwaitCompletion();

Hochladen eines lokalen Verzeichnisses in ein virtuelles Verzeichnis im Container mit erweiterten Optionen

BlobContainerClientTransferOptions options = new BlobContainerClientTransferOptions
{
    BlobContainerOptions = new BlobStorageResourceContainerOptions
    {
        DirectoryPrefix = blobDirectoryPrefix
    },
    TransferOptions = new TransferOptions()
    {
        CreateMode = StorageResourceCreateMode.Overwrite,
    }
};

DataTransfer transfer = await container.StartUploadDirectoryAsync(localPath, options);

await transfer.AwaitCompletion();

Herunterladen des gesamten Containers in ein lokales Verzeichnis

DataTransfer transfer = await container.StartDownloadToDirectoryAsync(localDirectoryPath);

await transfer.AwaitCompletion();

Laden Sie ein Verzeichnis in den Container herunter, indem Sie ein Verzeichnispräfix angeben.

DataTransfer tranfer = await container.StartDownloadToDirectoryAsync(localDirectoryPath2, blobDirectoryPrefix);

await tranfer.AwaitCompletion();

Herunterladen aus dem Container mit erweiterten Optionen

BlobContainerClientTransferOptions options = new BlobContainerClientTransferOptions
{
    BlobContainerOptions = new BlobStorageResourceContainerOptions
    {
        DirectoryPrefix = blobDirectoryPrefix
    },
    TransferOptions = new TransferOptions()
    {
        CreateMode = StorageResourceCreateMode.Overwrite,
    }
};

DataTransfer tranfer = await container.StartDownloadToDirectoryAsync(localDirectoryPath2, options);

await tranfer.AwaitCompletion();

Beispiele für die Verwendung von BlobContainerClient-Erweiterungsmethoden zum Hochladen und Herunterladen von Verzeichnissen.

Erstellen einer TransferManager-Instanz mit Optionen

// Create BlobTransferManager with event handler in Options bag
TransferManagerOptions transferManagerOptions = new TransferManagerOptions();
TransferOptions options = new TransferOptions()
{
    MaximumTransferChunkSize = 4 * Constants.MB,
    CreateMode = StorageResourceCreateMode.Overwrite,
};
TransferManager transferManager = new TransferManager(transferManagerOptions);

Starten des Hochladens aus lokaler Datei zum Blockieren des Blobs

DataTransfer dataTransfer = await transferManager.StartTransferAsync(
    sourceResource: new LocalFileStorageResource(sourceLocalPath),
    destinationResource: new BlockBlobStorageResource(destinationBlob));
await dataTransfer.AwaitCompletion();

Anwenden von Optionen zum Blockieren des Blobdownloads

await transferManager.StartTransferAsync(
    sourceResource: new BlockBlobStorageResource(sourceBlob, new BlockBlobStorageResourceOptions()
    {
        DestinationConditions = new BlobRequestConditions(){ LeaseId = "xyz" }
    }),
    destinationResource: new LocalFileStorageResource(downloadPath2));

Verzeichnisupload starten

// Create simple transfer directory upload job which uploads the directory and the contents of that directory
DataTransfer dataTransfer = await transferManager.StartTransferAsync(
    sourceResource: new LocalDirectoryStorageResourceContainer(sourcePath),
    destinationResource: new BlobStorageResourceContainer(
        container,
        new BlobStorageResourceContainerOptions() { DirectoryPrefix = "sample-directory2" }),
    transferOptions: options);

Verzeichnisdownload starten

DataTransfer downloadDirectoryJobId2 = await transferManager.StartTransferAsync(
    sourceDirectory2,
    destinationDirectory2);

Einfaches Protokollierbeispiel für Übertragungs-Manager-Optionen

// Create BlobTransferManager with event handler in Options bag
TransferManagerOptions options = new TransferManagerOptions();
TransferOptions transferOptions = new TransferOptions();
transferOptions.SingleTransferCompleted += (SingleTransferCompletedEventArgs args) =>
{
    using (StreamWriter logStream = File.AppendText(logFile))
    {
        logStream.WriteLine($"File Completed Transfer: {args.SourceResource.Path}");
    }
    return Task.CompletedTask;
};

Einfache fehlgeschlagene Ereignisdelegierung für Containerübertragungsoptionen

transferOptions.TransferFailed += (TransferFailedEventArgs args) =>
{
    using (StreamWriter logStream = File.AppendText(logFile))
    {
        // Specifying specific resources that failed, since its a directory transfer
        // maybe only one file failed out of many
        logStream.WriteLine($"Exception occured with TransferId: {args.TransferId}," +
            $"Source Resource: {args.SourceResource.Path}, +" +
            $"Destination Resource: {args.DestinationResource.Path}," +
            $"Exception Message: {args.Exception.Message}");
    }
    return Task.CompletedTask;
};

Problembehandlung

Alle Azure Storage-Dienste lösen eine RequestFailedException mit hilfreichenErrorCode s aus.

Nächste Schritte

Erste Schritte mit unseren Blob DataMovement-Beispielen.

Mitwirken

Weitere Informationen zum Erstellen, Testen und Mitwirken zu diesen Bibliotheken finden Sie unter Storage CONTRIBUTING.md .

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Weitere Informationen finden Sie unter cla.microsoft.com.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.

Aufrufe