Copier des données depuis Amazon S3 vers le Stockage Azure avec 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 avec AzCopy.
Notes
AzCopy prend en charge les URL standard de style hébergé virtuel ou de style de chemin définies par AWS. Par exemple, https://bucket.s3.amazonaws.com
ou https://s3.amazonaws.com/bucket
.
Choisissez comment vous allez fournir des informations d’identification d’autorisation.
Pour effectuer une autorisation avec Stockage Azure, utilisez Microsoft Entra ID ou un jeton SAS (signature d’accès partagé).
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 Prise en main d’AzCopy pour télécharger AzCopy, et choisissez comment vous allez fournir les informations d’identification d’autorisation au service de stockage.
Notes
Les exemples de cet article partent du principe que vous vous êtes authentifié à l’aide de la commande AzCopy login
. AzCopy utilise ensuite votre compte Microsoft Entra pour autoriser l’accès aux données dans le stockage d’objets 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
Récupérez 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 Placer un bloc à partir d’une URL pour copier les données directement d’un serveur AWS S3 à un serveur de stockage. Ces opérations de copie n’utilisent pas la bande passante réseau de votre ordinateur.
Conseil
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 les comptes qui ont un espace de noms hiérarchique. L’accès multiprotocole 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'
Notes
Les exemples de cet article utilisent des URL de type chemin d’accès pour des compartiments AWS S3 (par exemple, http://s3.amazonaws.com/<bucket-name>
).
Vous pouvez également utiliser des URL hébergées virtuelles (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
Notes
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 proprement dit en utilisant le caractère 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’attributions de noms aux objets
AWS S3 possède un ensemble de conventions d’attribution de noms aux compartiments différent des conteneurs d’objets blob Azure. Vous pouvez les découvrir 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 communs : les compartiments contenant des points et ceux contenant plusieurs traits d’union à la suite. Les noms de compartiment AWS S3 peuvent contenir des points et des traits d’union consécutifs, ce qui n’est pas le cas d’un conteneur dans Azure. AzCopy remplace les points par des traits d’union et les 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
.
En outre, comme AzCopy copie les fichiers, il vérifie les collisions de noms et tente de les résoudre. Par exemple, s’il y a des compartiments nommés 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’objets
AWS S3 et Azure autorisent différents jeux de caractères dans les noms des clés d’objet. Vous pouvez en apprendre plus sur les caractères qu’utilise AWS S3 ici. Du côté d’Azure, les clés d’objets blob respectent les règles d’attribution de noms pour les identificateurs C#.
Dans le cadre d’une commande copy
AzCopy, vous pouvez fournir une valeur pour l’indicateur s2s-handle-invalid-metadata
facultatif qui spécifie comment vous voulez gérer les métadonnées du fichier qui contient les noms de clés incompatibles. La table suivante décrit chaque valeur d’indicateur.
Valeur d’indicateur | 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 l’inclut dans le nombre d’échecs qui apparaît dans le résumé de transfert. |
RenameIfInvalid | AzCopy résout la clé de métadonnées non valides et copie l’objet dans Azure à l’aide de la paire valeur/clé des métadonnées résolues. Pour connaître précisément les étapes suivies par AzCopy pour renommer les clés d’objet, consultez la section Comment AzCopy renomme les clés d’objet ci-dessous. Si AzCopy n’est pas en mesure de renommer la clé, l’objet n’est pas copié. |
Comment AzCopy renomme les clés d’objet
AzCopy suit cette procédure :
Remplace les caractères non valides par « _ ».
Ajoute la chaîne
rename_
au début d’une nouvelle clé valide.Cette clé doit être utilisée pour enregistrer la valeur d’origine des métadonnées.
Ajoute la chaîne
rename_key_
au début d’une nouvelle clé valide. Cette clé doit être utilisée pour enregistrer la clé invalide d’origine des métadonnées. Vous pouvez utiliser cette clé pour essayer de récupérer les métadonnées dans Azure, puisque la clé des métadonnées est conservée comme valeur dans le service de stockage d’objets blob.
Étapes suivantes
Vous trouverez plus d’exemples dans ces articles :
- Exemples : Charger
- Exemples : Téléchargement
- Exemples : Copier entre comptes
- Exemples : Synchroniser
- Exemples : Google Cloud Storage
- Exemples : Azure Files
- Tutoriel : Migrer des données locales vers un stockage cloud à l’aide d’AzCopy
Consultez les articles suivants pour configurer les paramètres, optimiser les performances et résoudre les problèmes :