Partager via


Copier des données d’Amazon S3 vers Stockage Azure à l’aide d’AzCopy

AzCopy est un utilitaire de ligne de commande que vous pouvez utiliser pour copier des blobs ou des fichiers vers ou depuis un compte de stockage. Cet article vous aide à copier des objets, des répertoires et des compartiments d’Amazon Web Services (AWS) S3 vers Stockage Blob Azure à l’aide d’AzCopy.

Remarque

AzCopy prend en charge les URL de type hébergement virtuel ou de type chemin standard définies par AWS. Par exemple : https://bucket.s3.amazonaws.com ou https://s3.amazonaws.com/bucket.

Choisissez la façon dont vous fournirez des informations d’identification d’autorisation

  • Pour autoriser avec le stockage Azure, utilisez l’ID Microsoft Entra ou un jeton SAS (Shared Access Signature).

  • Pour autoriser avec AWS S3, utilisez une clé d’accès AWS et une clé d’accès secrète.

Autoriser avec stockage Azure

Consultez l’article Bien démarrer avec AzCopy pour télécharger AzCopy et choisissez la façon dont vous fournirez des informations d’identification d’autorisation au service de stockage.

Remarque

Les exemples de cet article supposent que vous authentifiez votre identité à l’aide de la AzCopy login commande. AzCopy utilise ensuite votre compte Microsoft Entra pour autoriser l’accès aux données dans le stockage Blob.

Si vous préférez utiliser un jeton SAS pour autoriser l’accès aux données d’objets blob, vous pouvez ajouter ce jeton à l’URL de ressource dans chaque commande AzCopy.

Par exemple : https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>.

Autoriser avec AWS S3

Rassemblez votre clé d’accès AWS et votre clé d’accès secrète, puis définissez ces variables d’environnement :

Système d’exploitation Commande
Windows PowerShell :$env:AWS_ACCESS_KEY_ID=<access-key>
$env:AWS_SECRET_ACCESS_KEY=<secret-access-key>
Dans une invite de commandes, tapez : set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-access-key>
Linux export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>
macOS export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

Ces informations d’identification sont utilisées pour générer des URL pré-signées utilisées pour copier des objets.

Copier des objets, des répertoires et des compartiments

AzCopy utilise l’API Put Block From URL . Les données sont donc copiées directement entre AWS S3 et les serveurs de stockage. Ces opérations de copie n’utilisent pas la bande passante réseau de votre ordinateur.

Conseil / Astuce

Dans les exemples de cette section, les arguments de chemin d’accès sont entre guillemets simples (' '). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe). Si vous utilisez une interface de commande Windows (cmd. exe), placez les arguments de chemin d’accès entre guillemets doubles (" ") au lieu de guillemets simples (' ').

Ces exemples fonctionnent également avec des comptes qui ont un espace de noms hiérarchique. L’accès à plusieurs protocoles sur Data Lake Storage vous permet d’utiliser la même syntaxe d’URL (blob.core.windows.net) sur ces comptes.

Copier un objet

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'

Exemple

azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

Remarque

Les exemples de cet article utilisent des URL de style chemin pour les compartiments AWS S3 (par exemple : http://s3.amazonaws.com/<bucket-name>).

Vous pouvez également utiliser des URL de style hébergé virtuel également (par exemple : http://bucket.s3.amazonaws.com).

Pour en savoir plus sur l’hébergement virtuel de compartiments, consultez Hébergement virtuel de compartiments.

Copier un répertoire

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Exemple

azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Remarque

Cet exemple ajoute l’indicateur --recursive pour copier des fichiers dans tous les sous-répertoires.

Copier le contenu d’un répertoire

Vous pouvez copier le contenu d’un répertoire sans copier le répertoire contenant lui-même à l’aide du symbole générique (*).

Syntaxe

azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Exemple

azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Copier un compartiment

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true

Exemple

azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true

Copier tous les compartiments dans toutes les régions

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Exemple

azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Copier tous les compartiments dans une région S3 spécifique

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.

Syntaxe

azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Exemple

azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Gérer les différences dans les règles d’affectation de noms d’objets

AWS S3 utilise un ensemble différent de conventions d’affectation de noms pour les noms de compartiments par rapport aux conteneurs d’objets blob Azure. Vous pouvez en savoir plus ici. Si vous choisissez de copier un groupe de compartiments dans un compte de stockage Azure, l’opération de copie peut échouer en raison des différences en matière d’attributions de noms.

AzCopy gère deux des problèmes les plus courants qui peuvent se présenter : les compartiments contenant des points et ceux contenant des tirets consécutifs. Les noms de compartiments AWS S3 peuvent contenir des points et des traits d’union consécutifs, mais un conteneur dans Azure ne peut pas. AzCopy remplace les points par des traits d’union et des traits d’union consécutifs par un nombre qui représente le nombre de traits d’union consécutifs (par exemple, un compartiment nommé my----bucket devient my-4-bucket).

Par ailleurs, lorsque AzCopy copie des fichiers, il recherche les collisions de nommage et tente de les résoudre. Par exemple, s'il existe des compartiments portant le nom bucket-name et bucket.name, AzCopy résout d'abord un compartiment nommé bucket.name en bucket-name, puis en bucket-name-2.

Gérer les différences dans les métadonnées d’objet

AWS S3 et Azure autorisent différents jeux de caractères dans les noms des clés d’objet. Vous pouvez en savoir plus sur les caractères utilisés ici par AWS S3. Côté Azure, les clés d’objet blob respectent les règles d’affectation de noms pour les identificateurs C#.

Dans le cadre d’une commande AzCopy copy , vous pouvez fournir une valeur pour l’indicateur facultatif s2s-handle-invalid-metadata qui spécifie comment gérer les fichiers où les métadonnées du fichier contiennent des noms de clés incompatibles. Le tableau suivant décrit chaque valeur d’indicateur.

Valeur de repère Description
ExcludeIfInvalid (Option par défaut) Les métadonnées ne sont pas incluses dans l’objet transféré. AzCopy enregistre un avertissement.
FailIfInvalid Les objets ne sont pas copiés. AzCopy enregistre une erreur et inclut cette erreur dans le nombre d’échecs qui apparaît dans le résumé du transfert.
RenameIfInvalid AzCopy résout la clé de métadonnées non valide et copie l’objet dans Azure à l’aide de la paire de valeurs de clé de métadonnées résolue. Pour savoir exactement quelles étapes AzCopy prend pour renommer des clés d’objet, consultez la section Comment AzCopy renomme les clés d’objet . Si AzCopy ne peut pas renommer la clé, l’objet n’est pas copié.

Comment AzCopy renomme les clés d’objet

AzCopy effectue les étapes suivantes :

  1. Remplace les caractères non valides par '_'.

  2. Ajoute la chaîne rename_ au début d’une nouvelle clé valide.

    Cette clé est utilisée pour enregistrer la valeur des métadonnées d’origine.

  3. Ajoute la chaîne rename_key_ au début d’une nouvelle clé valide. Cette clé est utilisée pour enregistrer les métadonnées d’origine invalides clé. Vous pouvez utiliser cette clé pour essayer de récupérer les métadonnées côté Azure, car la clé de métadonnées est conservée en tant que valeur sur le service de stockage d’objets blob.

Spécifier les types source et de destination

AzCopy utilise le --from-to paramètre pour définir explicitement les types de ressources source et de destination lorsque la détection automatique peut échouer, comme dans les scénarios de piping ou les émulateurs. Ce paramètre permet à AzCopy de comprendre le contexte du transfert et de l’optimiser en conséquence. Définissez ce paramètre sur S3Blob afin d'indiquer explicitement que la commande copie d'Amazon S3 vers le stockage Blob d'Azure.

Étapes suivantes

Vous trouverez plus d’exemples dans ces articles :

Consultez les articles suivants pour configurer les paramètres, optimiser les performances et résoudre les problèmes :