Copier un blob à partir d’une URL d’objet source avec .NET
Cet article explique comment copier un blob d’une URL d’objet source à l’aide de la Bibliothèque de client Stockage Azure pour .NET. Vous pouvez copier un objet blob à partir d’une source du même compte de stockage, d’une source dans un autre compte de stockage ou de tout objet accessible récupéré via une requête HTTP GET sur une URL donnée.
Les méthodes de bibliothèque de client décrites dans cet article utilisent les opérations d’API REST Placer un blob à partir d’une URL et Placer un bloc à partir d’une URL. Ces méthodes sont recommandées pour les scénarios de copie dans lesquels vous souhaitez déplacer des données dans un compte de stockage et avoir une URL pour l’objet source. Pour les opérations de copie dans lesquelles vous souhaitez une planification asynchrone, consultez Copier un objet blob avec planification asynchrone à l’aide de .NET.
- Abonnement Azure : créez-en un gratuitement
- Compte de stockage Azure : créez un compte de stockage
- Dernière version du Kit de développement logiciel (SDK) .NET pour votre système d’exploitation. Veillez à disposer du Kit de développement logiciel (SDK), et non du runtime.
Si vous n’avez pas de projet existant, cette section vous montre comment configurer un projet pour travailler avec la bibliothèque de client Stockage Blob Azure pour .NET. Les étapes comprennent l’installation du package, l’ajout de directives using
et la création d’un objet client autorisé. Pour plus d’informations, consultez Prise en main du Stockage Blob Azure et de .NET.
À partir du répertoire du projet, installez les packages des bibliothèques de client Stockage Blob Azure et Azure Identity à l’aide de la commande dotnet add package
. Le package Azure.Identity est nécessaire pour les connexions sans mot de passe aux services Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Ajoutez ces directives using
au début de votre fichier de code :
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Certains exemples de code de cet article peuvent nécessiter des directives using
supplémentaires.
Pour connecter une application au Stockage Blob, créez une instance de BlobServiceClient. L’exemple suivant montre comment créer un objet client à l’aide de DefaultAzureCredential
pour l’autorisation :
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Vous pouvez inscrire un client de service pour l’injection de dépendances dans une application .NET.
Vous pouvez également créer des objets clients pour des conteneurs ou des objets blob spécifiques. Pour en savoir plus sur la création et la gestion d’objets clients, consultez Créer et gérer des objets clients qui interagissent avec des ressources de données.
Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour effectuer une opération de copie. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Contributeur aux données Blob du stockage. Pour en savoir plus, consultez les conseils d’autorisation pour les opérations Put Blob From URL (API REST) et Put Block From URL (API REST).
L’opération Put Blob From URL
crée un objet blob de blocs où le contenu du blob est lu à partir d’une URL donnée. L’opération se termine de manière synchrone.
La source peut être n’importe quel objet récupérable via une requête HTTP GET standard sur l’URL donnée. Cela inclut les objets blob de blocs, les objets blob d’ajout, les objets blob de pages, les instantanés d’objets blob, les versions d’objets blob ou tout objet accessible à l’intérieur ou à l’extérieur d’Azure.
Lorsque l’objet source est un objet blob de blocs, tout le contenu de l’objet blob validé est copié. La liste de blocs n’est toutefois pas conservée et les blocs non validés ne sont pas copiés. Le contenu de l’objet blob de destination est identique à celui de la source, mais la liste de blocs validée n’est pas conservée.
La destination est toujours un objet blob de blocs, existant ou nouveau créé par l’opération. Le contenu d’un blob existant est remplacé par le contenu du nouveau blob.
L’opération Put Blob From URL
copie toujours l’intégralité du blob source. La copie d’une plage d’octets ou d’un ensemble de blocs n’est pas prise en charge. Pour effectuer des mises à jour partielles du contenu d’un objet blob de blocs à l’aide d’une URL source, utilisez l’API Placer un bloc à partir d’une URL avec Put Block List.
Pour en savoir plus sur l’opération Put Blob From URL
, y compris les limitations de taille d’objet blob et les considérations relatives à la facturation, consultez Remarques sur la mise en place d’un objet blob à partir d’une URL.
Cette section donne une vue d’ensemble des méthodes fournies par la bibliothèque de client Stockage Azure pour .NET afin d’effectuer une opération de copie à partir d’une URL d’objet source.
Les méthodes suivantes encapsulent l’opération d’API REST Put Blob From URL et créent un objet blob de blocs où le contenu de l’objet blob est lu à partir d’une URL donnée :
Ces méthodes sont recommandées pour les scénarios où vous souhaitez déplacer des données dans un compte de stockage et avoir une URL pour l’objet source.
Pour les objets volumineux, vous pouvez choisir d’utiliser des blocs individuels. Les méthodes suivantes encapsulent l’opération d’API REST Placer un bloc à partir d’une URL. Ces méthodes créent un bloc à commiter dans le cadre d’un objet blob où le contenu est lu à partir d’une URL source :
Si vous copiez un objet blob depuis une source dans Azure, l’accès à l’objet blob source peut être autorisé au travers de Microsoft Entra ID, une signature d’accès partagé (SAS) ou une clé de compte.
L’exemple suivant illustre un scénario de copie depuis un objet blob source dans Azure. La méthode SyncUploadFromUriAsync peut éventuellement accepter un paramètre booléen pour indiquer si un objet blob existant doit être remplacé, comme indiqué dans l’exemple. Par défaut, la valeur du paramètre overwrite
est false.
//-------------------------------------------------
// Copy a blob from the same storage account
//-------------------------------------------------
public static async Task CopyWithinStorageAccountAsync(
BlobClient sourceBlob,
BlockBlobClient destinationBlob)
{
// Get the source blob URI and create the destination blob
// overwrite param defaults to false
await destinationBlob.SyncUploadFromUriAsync(sourceBlob.Uri/*, overwrite: false*/);
}
La méthode SyncUploadFromUriAsync peut également accepter un paramètre BlobSyncUploadFromUriOptions pour spécifier d’autres options pour l’opération.
Vous pouvez effectuer une opération de copie sur n’importe quel objet source qui peut être récupéré via une requête HTTP GET sur une URL donnée, y compris les objets accessibles extérieurs à Azure. L’exemple suivant illustre un scénario de copie d’un blob à partir d’une URL d’objet source accessible.
//-------------------------------------------------
// Copy a blob from an external source
//-------------------------------------------------
public static async Task CopyFromExternalSourceAsync(
string sourceLocation,
BlockBlobClient destinationBlob)
{
Uri sourceUri = new(sourceLocation);
// Create the destination blob from the source URL
// overwrite param defaults to false
await destinationBlob.SyncUploadFromUriAsync(sourceUri/*, overwrite: false*/);
}
Pour en savoir plus sur la copie d’objets blob à l’aide de la bibliothèque de client Stockage Blob Azure pour .NET, consultez les ressources suivantes.
Le Kit de développement logiciel (SDK) Azure pour .NET contient des bibliothèques qui s’appuient sur l’API REST Azure et vous permettant d’interagir avec des opérations de l’API REST par le biais de paradigmes .NET familiers. Les méthodes de bibliothèque de client décrites dans cet article utilisent les opérations d’API REST suivantes :
- Put Blob From URL (API REST)
- Placer un bloc à partir d’une URL (API REST)
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (NuGet)
- Cet article fait partie du guide du développeur Stockage Blob pour .NET. Pour en savoir plus, consultez la liste complète des articles du guide du développeur dans Générer votre application .NET.