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.