Copier des données depuis Amazon S3 vers le Stockage Azure avec AzCopyCopy data from Amazon S3 to Azure Storage by using 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.AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. 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.This article helps you copy objects, directories, and buckets from Amazon Web Services (AWS) S3 to Azure blob storage by using AzCopy.

Choisissez comment vous allez fournir des informations d’identification d’autorisation.Choose how you'll provide authorization credentials

  • Pour autoriser avec Stockage Azure, utilisez Azure Active Directory (AD) ou un jeton SAS (signature d’accès partagé).To authorize with the Azure Storage, use Azure Active Directory (AD) or a Shared Access Signature (SAS) token.

  • Pour autoriser avec AWS S3, utilisez une clé d’accès AWS et une clé d’accès secrète.To authorize with AWS S3, use an AWS access key and a secret access key.

Autoriser avec Stockage AzureAuthorize with Azure Storage

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.See the Get started with AzCopy article to download AzCopy, and choose how you'll provide authorization credentials to the storage service.

Nota

Les exemples de cet article partent du principe que vous vous êtes authentifié à l’aide de la commande AzCopy login.The examples in this article assume that you've authenticated your identity by using the AzCopy login command. AzCopy utilise ensuite votre compte Azure AD pour autoriser l’accès aux données dans le stockage d’objet blob.AzCopy then uses your Azure AD account to authorize access to data in Blob storage.

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.If you'd rather use a SAS token to authorize access to blob data, then you can append that token to the resource URL in each AzCopy command.

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

Autoriser avec AWS S3Authorize with 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 :Gather your AWS access key and secret access key, and then set these environment variables:

Système d’exploitationOperating system CommandeCommand
WindowsWindows set AWS_ACCESS_KEY_ID=<access-key>
set AWS_SECRET_ACCESS_KEY=<secret-access-key>
LinuxLinux export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>
macOSmacOS export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-access-key>

Copier des objets, des répertoires et des compartimentsCopy objects, directories, and buckets

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.AzCopy uses the Put Block From URL API, so data is copied directly between AWS S3 and storage servers. Ces opérations de copie n’utilisent pas la bande passante réseau de votre ordinateur.These copy operations don't use the network bandwidth of your computer.

Sugerencia

Dans les exemples de cette section, les arguments de chemin d’accès sont entre guillemets simples (' ').The examples in this section enclose path arguments with single quotes (''). Utilisez des guillemets simples dans tous les interpréteurs de commandes, à l’exception de l’interface de commande Windows (cmd. exe).Use single quotes in all command shells except for the Windows Command Shell (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 (' ').If you're using a Windows Command Shell (cmd.exe), enclose path arguments with double quotes ("") instead of single quotes ('').

Ces exemples fonctionnent également avec les comptes qui ont un espace de noms hiérarchique.These examples also work with accounts that have a hierarchical namespace. 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.Multi-protocol access on Data Lake Storage enables you to use the same URL syntax (blob.core.windows.net) on those accounts.

Copier un objetCopy an object

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.Use the same URL syntax (blob.core.windows.net) for accounts that have a hierarchical namespace.

SyntaxeSyntax azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
ExempleExample azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Exemple (espace de noms hiérarchique)Example (hierarchical namespace) azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

Nota

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>).Examples in this article use path-style URLs for AWS S3 buckets (For example: http://s3.amazonaws.com/<bucket-name>).

Vous pouvez également utiliser des URL hébergées virtuelles (par exemple, http://bucket.s3.amazonaws.com).You can also use virtual hosted-style URLs as well (For example: http://bucket.s3.amazonaws.com).

Pour en savoir plus sur l’hébergement virtuel de compartiments, consultez [Hébergement virtuel de compartiments]](https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).To learn more about virtual hosting of buckets, see [Virtual Hosting of Buckets]](https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).

Copier un répertoireCopy a directory

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.Use the same URL syntax (blob.core.windows.net) for accounts that have a hierarchical namespace.

SyntaxeSyntax azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
ExempleExample azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Exemple (espace de noms hiérarchique)Example (hierarchical namespace) azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Nota

Cet exemple ajoute l’indicateur --recursive pour copier des fichiers dans tous les sous-répertoires.This example appends the --recursive flag to copy files in all sub-directories.

Copier le contenu d’un répertoireCopy the contents of a directory

Vous pouvez copier le contenu d’un répertoire sans copier le répertoire proprement dit en utilisant le caractère générique (*).You can copy the contents of a directory without copying the containing directory itself by using the wildcard symbol (*).

SyntaxeSyntax azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
ExempleExample azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Exemple (espace de noms hiérarchique)Example (hierarchical namespace) azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Copier un compartimentCopy a bucket

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.Use the same URL syntax (blob.core.windows.net) for accounts that have a hierarchical namespace.

SyntaxeSyntax azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true
ExempleExample azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true
Exemple (espace de noms hiérarchique)Example (hierarchical namespace) azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Copier tous les compartiments dans toutes les régionsCopy all buckets in all regions

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.Use the same URL syntax (blob.core.windows.net) for accounts that have a hierarchical namespace.

SyntaxeSyntax azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
ExempleExample azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Exemple (espace de noms hiérarchique)Example (hierarchical namespace) azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Copier tous les compartiments dans une région S3 spécifiqueCopy all buckets in a specific S3 region

Utilisez la même syntaxe d’URL (blob.core.windows.net) pour les comptes qui ont un espace de noms hiérarchique.Use the same URL syntax (blob.core.windows.net) for accounts that have a hierarchical namespace.

SyntaxeSyntax azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
ExempleExample azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Exemple (espace de noms hiérarchique)Example (hierarchical namespace) azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Gérer les différences dans les règles d’attributions de noms aux objetsHandle differences in object naming rules

AWS S3 possède un ensemble de conventions d’attribution de noms aux compartiments différent des conteneurs d’objets blob Azure.AWS S3 has a different set of naming conventions for bucket names as compared to Azure blob containers. Vous pouvez les découvrir ici.You can read about them here. 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.If you choose to copy a group of buckets to an Azure storage account, the copy operation might fail because of naming differences.

AzCopy gère deux des problèmes les plus communs : les compartiments contenant des points et ceux contenant plusieurs traits d’union à la suite.AzCopy handles two of the most common issues that can arise; buckets that contain periods and buckets that contain consecutive hyphens. 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.AWS S3 bucket names can contain periods and consecutive hyphens, but a container in Azure can't. 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.AzCopy replaces periods with hyphens and consecutive hyphens with a number that represents the number of consecutive hyphens (For example: a bucket named my----bucket becomes my-4-bucket.

En outre, comme AzCopy copie les fichiers, il vérifie les collisions de noms et tente de les résoudre.Also, as AzCopy copies over files, it checks for naming collisions and attempts to resolve them. 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.For example, if there are buckets with the name bucket-name and bucket.name, AzCopy resolves a bucket named bucket.name first to bucket-name and then to bucket-name-2.

Gérer les différences dans les métadonnées d’objetsHandle differences in object metadata

AWS S3 et Azure autorisent différents jeux de caractères dans les noms des clés d’objet.AWS S3 and Azure allow different sets of characters in the names of object keys. Vous pouvez en apprendre plus sur les caractères qu’utilise AWS S3 ici.You can read about the characters that AWS S3 uses here. Du côté d’Azure, les clés d’objets blob respectent les règles d’attribution de noms pour les identificateurs C#.On the Azure side, blob object keys adhere to the naming rules for C# identifiers.

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.As part of an AzCopy copy command, you can provide a value for optional the s2s-handle-invalid-metadata flag that specifies how you would like to handle files where the metadata of the file contains incompatible key names. La table suivante décrit chaque valeur d’indicateur.The following table describes each flag value.

Valeur d’indicateurFlag value DescriptionDescription
ExcludeIfInvalidExcludeIfInvalid (Option par défaut) Les métadonnées ne sont pas incluses dans l’objet transféré.(Default option) The metadata isn't included in the transferred object. AzCopy enregistre un avertissement.AzCopy logs a warning.
FailIfInvalidFailIfInvalid Les objets ne sont pas copiés.Objects aren't copied. AzCopy enregistre une erreur et l’inclut dans le nombre d’échecs qui apparaît dans le résumé de transfert.AzCopy logs an error and includes that error in the failed count that appears in the transfer summary.
RenameIfInvalidRenameIfInvalid 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.AzCopy resolves the invalid metadata key, and copies the object to Azure using the resolved metadata key value pair. 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.To learn exactly what steps AzCopy takes to rename object keys, see the How AzCopy renames object keys section below. Si AzCopy n’est pas en mesure de renommer la clé, l’objet n’est pas copié.If AzCopy is unable to rename the key, then the object won't be copied.

Comment AzCopy renomme les clés d’objetHow AzCopy renames object keys

AzCopy suit cette procédure :AzCopy performs these steps:

  1. Remplace les caractères non valides par « _ ».Replaces invalid characters with '_'.

  2. Ajoute la chaîne rename_ au début d’une nouvelle clé valide.Adds the string rename_ to the beginning of a new valid key.

    Cette clé doit être utilisée pour enregistrer la valeur d’origine des métadonnées.This key will be used to save the original metadata value.

  3. Ajoute la chaîne rename_key_ au début d’une nouvelle clé valide.Adds the string rename_key_ to the beginning of a new valid key. Cette clé doit être utilisée pour enregistrer la clé invalide d’origine des métadonnées.This key will be used to save original metadata invalid key. 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.You can use this key to try to recover the metadata in Azure side since metadata key is preserved as a value on the Blob storage service.

Étapes suivantesNext steps

Plus d’exemples dans ces articles :Find more examples in any of these articles: