Share via


Bibliothèque cliente Azure Storage Data Movement Blobs pour .NET - version 12.0.0-beta.3

Version du serveur : 08/04-2020, 2020-02-10, 2019-12-12, 2019-07-07 et 2020-02-02

Stockage Azure est un service géré par Microsoft qui fournit un stockage cloud hautement disponible, sécurisé, durable, évolutif et redondant. Stockage Azure inclut des objets blob Azure, des Azure Data Lake Storage Gen2, des Azure Files et des files d’attente Azure.

La bibliothèque de déplacement des données de stockage Azure est optimisée pour le chargement, le téléchargement et la copie des données client.

La bibliothèque Azure.Storage.DataMovement.Blobs fournit une infrastructure partagée par les autres bibliothèques clientes Stockage Azure.

| Code sourcePackage (NuGet) | Documentation de référence sur les | APIDocumentation | sur l’API RESTDocumentation produit

Prise en main

Installer le package

Installez la bibliothèque cliente stockage Azure pour .NET que vous souhaitez utiliser avec NuGet et la Azure.Storage.DataMovement.Blobs bibliothèque cliente sera incluse :

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

Prérequis

Vous avez besoin d’un abonnement Azure et d’un compte de stockage pour utiliser ce package.

Pour créer un compte de stockage, vous pouvez utiliser le portail Azure, Azure PowerShell ou Azure CLI. Voici un exemple utilisant Azure CLI :

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

Authentifier le client

La bibliothèque Azure.Storage.DataMovement.Blobs utilise les clients du package Azure.Storage.Blobs pour communiquer avec le service Stockage Blob Azure. Pour plus d’informations, consultez la documentation sur l’authentification Azure.Storage.Blobs.

Concepts clés

La bibliothèque de client Common Storage Azure contient une infrastructure partagée comme [informations d’identification d’authentification][auth_credentials] et RequestFailedException.

Sécurité des threads

Nous garantissons que toutes les méthodes de instance client sont sécurisées pour les threads et indépendantes les unes des autres (recommandations). Cela garantit que la recommandation de réutilisation des instances clientes est toujours sécurisée, même entre les threads.

Concepts supplémentaires

Options clientes | Accès à la réponse | Opérations de longue durée | Gestion des défaillances | Diagnostics | Moqueur | Durée de vie du client

Exemples

Exemples utilisant des méthodes d’extension BlobContainerClient pour charger et télécharger des répertoires.

Instancier blobContainerClient

BlobServiceClient service = new BlobServiceClient(serviceUri, credential);

BlobContainerClient container = service.GetBlobContainerClient(containerName);

Charger un répertoire local à la racine du conteneur

DataTransfer transfer = await container.StartUploadDirectoryAsync(localPath);

await transfer.AwaitCompletion();

Charger un répertoire local dans un répertoire virtuel dans le conteneur en spécifiant un préfixe de répertoire

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

await transfer.AwaitCompletion();

Charger un répertoire local dans un répertoire virtuel dans le conteneur en spécifiant des options plus avancées

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();

Télécharger l’intégralité du conteneur dans un répertoire local

DataTransfer transfer = await container.StartDownloadToDirectoryAsync(localDirectoryPath);

await transfer.AwaitCompletion();

Télécharger un répertoire dans le conteneur en spécifiant un préfixe de répertoire

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

await tranfer.AwaitCompletion();

Télécharger à partir du conteneur en spécifiant des options plus avancées

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();

Exemples utilisant des méthodes d’extension BlobContainerClient pour charger et télécharger des répertoires.

Créer une instance de TransferManager avec options

// 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);

Démarrer le chargement à partir d’un fichier local vers un objet blob de blocs

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

Appliquer des options à bloquer le téléchargement d’objets blob

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

Démarrer le chargement d’annuaires

// 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);

Démarrer le téléchargement du répertoire

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

Exemple d’enregistreur d’événements simple pour les options du gestionnaire de transfert

// 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;
};

Délégation d’événements ayant échoué simple pour les options de transfert de conteneur

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;
};

Résolution des problèmes

Tous les services de stockage Azure lèvent une exception RequestFailedException avec des s utilesErrorCode.

Étapes suivantes

Prise en main de nos exemples Blob DataMovement.

Contribution

Consultez la CONTRIBUTING.md stockage pour plus d’informations sur la création, le test et la contribution à ces bibliothèques.

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, consultez cla.microsoft.com.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.

Impressions