Migración de datos de Microsoft Azure Blob a Amazon S3 mediante Rclone - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migración de datos de Microsoft Azure Blob a Amazon S3 mediante Rclone

Creada por Suhas Basavaraj (AWS), Aidan Keane () y Corey Lane (AWS) AWS

Entorno: PoC o piloto

Origen: contenedor de almacenamiento de Microsoft Azure

Destino: bucket de Amazon S3

Tipo R: redefinir la plataforma

Carga de trabajo: Microsoft

Tecnologías: migración, almacenamiento y copia de seguridad

AWSservicios: Amazon S3

Resumen

Este patrón describe cómo usar Rclone para migrar datos del almacenamiento de objetos Blob de Microsoft Azure a un bucket de Amazon Simple Storage Service (Amazon S3). Puede usar este patrón para realizar una migración única o una sincronización continua de los datos. Rclone es un programa de línea de comandos escrito en Go. Se usa para mover datos a través de diversas tecnologías de almacenamiento de los proveedores de la nube.

Requisitos previos y limitaciones

Requisitos previos 

  • Una AWS cuenta activa

  • Datos almacenados en el servicio de contenedor Blob de Azure

Arquitectura

Pila de tecnología de origen

  • Contenedor de almacenamiento Blob de Azure

Pila de tecnología de destino

  • Bucket de Amazon S3

  • Instancia de Amazon Elastic Compute Cloud (AmazonEC2) Linux

Arquitectura

Migración de datos de Microsoft Azure a Amazon S3

Herramientas

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

  • Rclone es un programa de línea de comandos de código abierto inspirado en rsync. Se usa para administrar archivos en numerosas plataformas de almacenamiento en la nube.

Prácticas recomendadas

Al migrar datos de Azure a Amazon S3, tenga en cuenta estas consideraciones para evitar costos innecesarios o lentitud en la velocidad de transferencia:

  • Cree su AWS infraestructura en la misma región geográfica que la cuenta de almacenamiento de Azure y el contenedor Blob, por ejemplo, en la AWS región us-east-1 (Virginia del Norte) y en la región de Azure. East US

  • Evite usar NAT Gateway si es posible, ya que acumula tarifas de transferencia de datos tanto para el ancho de banda de entrada como para el de salida.

  • Utilice un punto de VPC enlace de enlace para Amazon S3 a fin de aumentar el rendimiento.

  • Considere la posibilidad de utilizar una EC2 instancia basada en el procesador AWS Graviton2 (ARM) para reducir el coste y aumentar el rendimiento en comparación con las instancias x86 de Intel. Rclone está muy compilado de forma cruzada y proporciona un binario precompilado. ARM

Epics

TareaDescripciónHabilidades requeridas

Prepare un bucket de S3 de destino.

Cree un nuevo depósito de S3 en la AWS región correspondiente o elija un depósito existente como destino de los datos que desee migrar.

AWSadministrador

Crea un rol de IAM instancia para AmazonEC2.

Cree un nuevo rol de AWS Identity and Access Management (IAM) para Amazon EC2. Esta función le da a la EC2 instancia acceso de escritura al bucket S3 de destino.

AWSadministrador

Adjunta una política al rol de la IAM instancia.

Usa la IAM consola o la interfaz de línea de AWS comandos (AWSCLI) para crear una política en línea para el rol de EC2 instancia que permita permisos de acceso de escritura al bucket de S3 de destino. Para un ejemplo de política, consulte la sección Información adicional.

AWSadministrador

Lanza una EC2 instancia.

Lance una EC2 instancia de Amazon Linux configurada para usar el rol de IAM servicio recién creado. Esta instancia también necesitará acceder a los API puntos finales públicos de Azure a través de Internet. 

Nota: Considere la posibilidad de usar EC2instancias AWS basadas en Graviton para reducir los costos. Rclone proporciona ARM binarios compilados automáticamente.

AWSadministrador

Cree una entidad principal de servicio de Azure AD.

Use Azure CLI para crear un servidor principal de Azure Active Directory (Azure AD) que tenga acceso de solo lectura al contenedor de almacenamiento Blob de Azure de origen. Para obtener instrucciones, consulte la sección Información adicional. Guarde estas credenciales en la EC2 instancia en la ubicación. ~/azure-principal.json

Administrador de la nube, Azure
TareaDescripciónHabilidades requeridas

Descargar e instalar Rclone.

Descargue e instale el programa de línea de comandos Rclone. Para instrucciones sobre la instalación, consulte la documentación de instalación de Rclone.

GeneralAWS, administrador de la nube

Configure Rclone.

Copie el siguiente archivo de ejemplo rclone.conf. AZStorageAccountSustitúyalo por el nombre de tu cuenta de Azure Storage y us-east-1 por la AWS región en la que se encuentra tu depósito de S3. Guarde este archivo ~/.config/rclone/rclone.conf en la ubicación de su EC2 instancia.

[AZStorageAccount] type = azureblob account = AZStorageAccount service_principal_file = azure-principal.json [s3] type = s3 provider = AWS env_auth = true region = us-east-1
GeneralAWS, administrador de la nube

Verifique la configuración de Rclone.

Para confirmar que Rclone está configurado y que los permisos funcionan correctamente, compruebe que Rclone puede analizar el archivo de configuración y que los objetos del contenedor Blob de Azure y del bucket de S3 sean accesibles. Consulte a continuación algunos ejemplos de comandos de validación.

  • Enumere los controles remotos configurados en el archivo de configuración. Esto garantizará que el archivo de configuración se esté analizando correctamente. Revise el resultado para asegurarse de que coincide con su archivo rclone.conf.

    rclone listremotes AZStorageAccount: s3:
  • Enumere los contenedores Blob de Azure en la cuenta configurada. Sustituya AZStorageAccount por el nombre de la cuenta de almacenamiento que ha usado en el archivo rclone.conf.

    rclone lsd AZStorageAccount: 2020-04-29 08:29:26 docs
  • Enumere los archivos del contenedor Blob de Azure. Sustituya los documentos de este comando por un nombre de contenedor de Blob real en su cuenta de almacenamiento de Azure.

    rclone ls AZStorageAccount:docs 824884 administrator-en.a4.pdf
  • Haz una lista de los depósitos de tu AWS cuenta.

    [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
  • Enumere los archivos en el bucket de S3.

    [root@ip-10-0-20-157 ~]# rclone ls s3:examplebucket-01 template0.yaml template1.yaml
GeneralAWS, administrador de la nube
TareaDescripciónHabilidades requeridas

Migre los datos de sus contenedores.

Ejecute los comandos de Rclone copy o sync.  

Ejemplo: copy

Este comando copia datos del contenedor Blob de Azure de origen al bucket de S3 de destino.

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

Ejemplo: sync

Este comando sincroniza los datos entre el contenedor Blob de Azure de origen y el bucket de S3 de destino.

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

Importante: al usar el comando sync, los datos que no estén en el contenedor de origen se eliminarán del bucket de S3 de destino.

GeneralAWS, administrador de la nube

Sincronice sus contenedores.

Una vez completada la copia inicial, ejecute el comando de Rclone sync para continuar con la migración. Solo se copiarán los archivos nuevos que no estén ya en el bucket de S3 de destino.

GeneralAWS, administrador de la nube

Compruebe que los datos se hayan migrado correctamente.

Para comprobar que los datos se han copiado correctamente en el bucket de S3 de destino, ejecute los comandos lsd y ls de Rclone.

GeneralAWS, administrador de la nube

Recursos relacionados

Información adicional

Ejemplo de política de roles para EC2 instancias

Esta política otorga a tu EC2 instancia acceso de lectura y escritura a un segmento específico de tu cuenta. Si tu depósito usa una clave administrada por el cliente para el cifrado del lado del servidor, es posible que la política necesite un acceso adicional al Servicio de administración de AWS claves () 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:::*" } ] }

Crear una entidad principal de servicio de Azure AD de solo lectura

Una entidad principal de servicio de Azure es una identidad de seguridad que usan las aplicaciones, los servicios y las herramientas de automatización de los clientes para acceder a recursos específicos de Azure. Considérelo como una identidad de usuario (nombre de usuario y contraseña o certificado) con un rol específico, y con permisos estrictamente controlados para acceder a sus recursos. Para crear una entidad principal de servicio de solo lectura, con permisos de privilegio mínimo, y proteger los datos de Azure ante eliminaciones accidentales, siga estos pasos:

  1. Inicia sesión en el portal de tu cuenta en la nube de Microsoft Azure e inicia Cloud Shell PowerShell o usa la interfaz de línea de comandos de Azure (CLI) en tu estación de trabajo.

  2. Cree una entidad principal de servicio y configúrela con acceso de solo lectura a su cuenta de almacenamiento Blob de Azure. Guarda el JSON resultado de este comando en un archivo local llamado. azure-principal.json El archivo se cargará en su EC2 instancia. Sustituya las variables de marcador de posición que aparecen entre corchetes ({ y }) por el identificador de suscripción de Azure, el nombre del grupo de recursos y el nombre de la cuenta de almacenamiento.

    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}