Migrez les données de Microsoft Azure Blob vers Amazon S3 à l'aide de Rclone - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migrez les données de Microsoft Azure Blob vers Amazon S3 à l'aide de Rclone

Créé par Suhas Basavaraj (AWS), Aidan Keane () et Corey Lane (AWS) AWS

Environnement : PoC ou pilote

Source : conteneur de stockage Microsoft Azure

Cible : compartiment Amazon S3

Type R : Replateforme

Charge de travail : Microsoft

Technologies : migration, stockage et sauvegarde

AWSservices : Amazon S3

Récapitulatif

Ce modèle décrit comment utiliser Rclone pour migrer des données depuis le stockage d'objets Microsoft Azure Blob vers un bucket Amazon Simple Storage Service (Amazon S3). Vous pouvez utiliser ce modèle pour effectuer une migration ponctuelle ou une synchronisation continue des données. Rclone est un programme de ligne de commande écrit en Go et utilisé pour déplacer des données entre différentes technologies de stockage proposées par des fournisseurs de cloud.

Conditions préalables et limitations

Prérequis

  • Un AWS compte actif

  • Données stockées dans le service de conteneur Azure Blob

Architecture

Pile technologique source

  • Conteneur de stockage Azure Blob

Pile technologique cible

  • Compartiment Amazon S3

  • Instance Linux Amazon Elastic Compute Cloud (AmazonEC2)

Architecture

Migration de données de Microsoft Azure vers Amazon S3

Outils

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • Rclone est un programme de ligne de commande open source inspiré de rsync. Il est utilisé pour gérer les fichiers sur de nombreuses plateformes de stockage cloud.

Bonnes pratiques

Lorsque vous migrez des données d'Azure vers Amazon S3, tenez compte de ces considérations afin d'éviter des coûts inutiles ou des vitesses de transfert lentes :

  • Créez votre AWS infrastructure dans la même région géographique que le compte de stockage Azure et le conteneur Blob, par exemple, la AWS région us-east-1 (Virginie du Nord) et la région Azure. East US

  • Évitez d'utiliser NAT Gateway si possible, car cela entraîne des frais de transfert de données pour la bande passante d'entrée et de sortie.

  • Utilisez un point de terminaison de VPC passerelle pour Amazon S3 afin d'améliorer les performances.

  • Envisagez d'utiliser une EC2 instance basée sur le processeur AWS Graviton2 (ARM) pour réduire les coûts et améliorer les performances par rapport aux instances Intel x86. Rclone est fortement compilé de manière croisée et fournit un binaire ARM précompilé.

Épopées

TâcheDescriptionCompétences requises

Préparez un compartiment S3 de destination.

Créez un nouveau compartiment S3 dans la AWS région appropriée ou choisissez un compartiment existant comme destination pour les données que vous souhaitez migrer.

AWSadministrateur

Créez un rôle d'IAMinstance pour AmazonEC2.

Créez un nouveau rôle AWS Identity and Access Management (IAM) pour Amazon EC2. Ce rôle donne à votre EC2 instance un accès en écriture au compartiment S3 de destination.

AWSadministrateur

Attachez une politique au rôle d'IAMinstance.

Utilisez la IAM console ou l'interface de ligne de AWS commande (AWSCLI) pour créer une politique en ligne pour le rôle d'EC2instance qui autorise les autorisations d'accès en écriture au compartiment S3 de destination. Pour un exemple de politique, consultez la section Informations supplémentaires.

AWSadministrateur

Lancez une instance EC2.

Lancez une EC2 instance Amazon Linux configurée pour utiliser le rôle de IAM service nouvellement créé. Cette instance devra également accéder aux API points de terminaison publics Azure via Internet. 

Remarque : pensez à utiliser des EC2instances AWS basées sur Graviton pour réduire les coûts. Rclone fournit des binaires ARM compilés.

AWSadministrateur

Créez un principal de service Azure AD.

Utilisez Azure CLI pour créer un principal de service Azure Active Directory (Azure AD) disposant d'un accès en lecture seule au conteneur de stockage Azure Blob source. Pour obtenir des instructions, consultez la section Informations supplémentaires. Stockez ces informations d'identification sur votre EC2 instance à cet emplacement~/azure-principal.json.

Administrateur du cloud, Azure
TâcheDescriptionCompétences requises

Téléchargez et installez Rclone.

Téléchargez et installez le programme de ligne de commande Rclone. Pour les instructions d'installation, consultez la documentation d'installation de Rclone.

GénéralAWS, administrateur du cloud

Configurez Rclone.

Copiez le fichier rclone.conf d'exemple suivant. AZStorageAccountRemplacez-le par le nom de votre compte Azure Storage et us-east-1 par la AWS région dans laquelle se trouve votre compartiment S3. Enregistrez ce fichier à l'emplacement ~/.config/rclone/rclone.conf de votre EC2 instance.

[AZStorageAccount] type = azureblob account = AZStorageAccount service_principal_file = azure-principal.json [s3] type = s3 provider = AWS env_auth = true region = us-east-1
GénéralAWS, administrateur du cloud

Vérifiez la configuration de Rclone.

Pour vérifier que Rclone est configuré et que les autorisations fonctionnent correctement, vérifiez que Rclone peut analyser votre fichier de configuration et que les objets de votre conteneur Azure Blob et de votre compartiment S3 sont accessibles. Consultez les exemples de commandes de validation suivants.

  • Répertoriez les télécommandes configurées dans le fichier de configuration. Cela permettra de s'assurer que votre fichier de configuration est correctement analysé. Vérifiez le résultat pour vous assurer qu'il correspond à votre rclone.conf fichier.

    rclone listremotes AZStorageAccount: s3:
  • Répertoriez les conteneurs Azure Blob dans le compte configuré. AZStorageAccountRemplacez-le par le nom du compte de stockage que vous avez utilisé dans le rclone.conf fichier.

    rclone lsd AZStorageAccount: 2020-04-29 08:29:26 docs
  • Répertoriez les fichiers dans le conteneur Azure Blob. Remplacez les documents de cette commande par un véritable nom de conteneur Blob dans votre compte de stockage Azure.

    rclone ls AZStorageAccount:docs 824884 administrator-en.a4.pdf
  • Répertoriez les buckets de votre AWS compte.

    [root@ip-10-0-20-157 ~]# rclone lsd s3: 2022-03-07 01:44:40 examplebucket-01 2022-03-07 01:45:16 examplebucket-02 2022-03-07 02:12:07 examplebucket-03
  • Répertoriez les fichiers du compartiment S3.

    [root@ip-10-0-20-157 ~]# rclone ls s3:examplebucket-01 template0.yaml template1.yaml
GénéralAWS, administrateur du cloud
TâcheDescriptionCompétences requises

Migrez les données de vos conteneurs.

Exécutez la commande Rclone copy or sync.  

Exemple : copie

Cette commande copie les données du conteneur Azure Blob source vers le compartiment S3 de destination.

rclone copy AZStorageAccount:blob-container s3:examplebucket-01

Exemple : synchronisation

Cette commande synchronise les données entre le conteneur Azure Blob source et le compartiment S3 de destination.

rclone sync AZStorageAccount:blob-container s3:examplebucket-01

Important : Lorsque vous utilisez la commande de synchronisation, les données absentes du conteneur source sont supprimées du compartiment S3 de destination.

GénéralAWS, administrateur du cloud

Synchronisez vos conteneurs.

Une fois la copie initiale terminée, exécutez la commande Rclone sync pour poursuivre la migration afin que seuls les nouveaux fichiers manquants dans le compartiment S3 de destination soient copiés.

GénéralAWS, administrateur du cloud

Vérifiez que les données ont bien été migrées.

Pour vérifier que les données ont bien été copiées dans le compartiment S3 de destination, exécutez les commandes Rclone lsd et ls.

GénéralAWS, administrateur du cloud

Ressources connexes

Informations supplémentaires

Exemple de politique de rôle pour les EC2 instances

Cette politique donne à votre EC2 instance un accès en lecture et en écriture à un compartiment spécifique de votre compte. Si votre compartiment utilise une clé gérée par le client pour le chiffrement côté serveur, la politique peut nécessiter un accès supplémentaire au service de gestion des AWS clés () AWSKMS.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME/*", "arn:aws:s3:::BUCKET_NAME" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "arn:aws:s3:::*" } ] }

Création d'un principal de service Azure AD en lecture seule

Un principal de service Azure est une identité de sécurité utilisée par les applications, les services et les outils d'automatisation des clients pour accéder à des ressources Azure spécifiques. Considérez-le comme une identité d'utilisateur (identifiant et mot de passe ou certificat) dotée d'un rôle spécifique et d'autorisations étroitement contrôlées pour accéder à vos ressources. Pour créer un principal de service en lecture seule afin de respecter les autorisations du moindre privilège et de protéger les données dans Azure contre les suppressions accidentelles, procédez comme suit :

  1. Connectez-vous au portail de votre compte cloud Microsoft Azure et lancez Cloud Shell PowerShell ou utilisez l'interface de ligne de commande Azure (CLI) sur votre poste de travail.

  2. Créez un principal de service et configurez-le avec un accès en lecture seule à votre compte de stockage Azure Blob. Enregistrez le JSON résultat de cette commande dans un fichier local appeléazure-principal.json. Le fichier sera chargé sur votre EC2 instance. Remplacez les variables d'espace réservé indiquées entre accolades ({et}) par votre ID d'abonnement Azure, le nom du groupe de ressources et le nom de votre compte de stockage.

    az ad sp create-for-rbac ` --name AWS-Rclone-Reader ` --role "Storage Blob Data Reader" ` --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}