

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
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone"></a>

*Suhas Basavaraj, Aidan Keane y Corey Lane, Amazon Web Services*

## Resumen
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-summary"></a>

Este patrón describe cómo usar [Rclone](https://rclone.org/) 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
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Datos almacenados en el servicio de contenedor Blob de Azure

## Arquitectura
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-architecture"></a>

**Pila de tecnología de origen**
+ Contenedor de almacenamiento Blob de Azure

**Pila de tecnología de destino**
+ Bucket de Amazon S3
+ Instancia Linux de Amazon Elastic Compute Cloud (Amazon EC2)

**Arquitectura**

![\[Migración de datos de Microsoft Azure a Amazon S3\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6ead815d-7768-4726-b27d-97a70cd21081/images/abe69eee-632f-4ca2-abf6-3223f3f3ec94.png)


## Tools (Herramientas)
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Rclone](https://rclone.org/) 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
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-best-practices"></a>

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 infraestructura de AWS en la misma región geográfica que la cuenta de almacenamiento de Azure y el contenedor Blob, por ejemplo, en la región de AWS `us-east-1` (Virginia del Norte) y la región de Azure `East US`.
+ Evite usar puerta de enlace NAT si es posible, ya que genera tarifas de transferencia de datos tanto para el ancho de banda de entrada como para el de salida.
+ Use un [punto de conexión de puerta de enlace VPC para Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) 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 presenta compilación cruzada y proporciona un binario ARM precompilado.

## Epics
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-epics"></a>

### Prepare los recursos en la nube de AWS y Azure
<a name="prepare-aws-and-azure-cloud-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare un bucket de S3 de destino. | [Cree un nuevo bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la región de AWS correspondiente, o bien elija un bucket existente como destino de los datos que desee migrar. | Administrador de AWS | 
| Crea un rol de instancia de IAM para Amazon EC2. | [Cree un nuevo rol de AWS Identity and Access Management (IAM) para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#working-with-iam-roles). Esta función le da a la EC2 instancia acceso de escritura al bucket S3 de destino. | Administrador de AWS | 
| Adjunte una política al rol de la instancia de IAM. | Utilice la consola de IAM o la interfaz de línea de comandos de AWS (AWS CLI) para crear una política en línea para EC2 el rol de 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](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional). | Administrador de AWS | 
| Lance una instancia EC2 . | Lance una EC2 instancia de Amazon Linux configurada para usar el rol de servicio de IAM recién creado. Esta instancia también necesitará acceder a los puntos de conexión de la API pública de Azure a través de Internet. Considere usar [ EC2 instancias basadas en AWS Graviton](https://docs.aws.amazon.com/compute-optimizer/latest/ug/graviton-recommendations.html) para reducir los costos. Rclone proporciona binarios compilados en ARM. | Administrador de AWS | 
| Cree una entidad principal de servicio de Azure AD. | Use la CLI de Azure para crear una entidad principal de servicio de Azure Active Directory (Azure AD) con acceso de solo lectura al contenedor de almacenamiento Blob de Azure de origen. Para obtener instrucciones, consulte la sección [Información adicional](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional). Guarde estas credenciales en la EC2 instancia en la ubicación. `~/azure-principal.json` | Administrador de la nube, Azure | 

### Instalar y configurar Rclone
<a name="install-and-configure-rclone"></a>


| Tarea | Descripción | Habilidades 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](https://rclone.org/install/). | AWS general, administrador de la nube | 
| Configure Rclone. | Copie el siguiente archivo de ejemplo `rclone.conf`. Sustituya `AZStorageAccount` por el nombre de su cuenta de Azure Storage y `us-east-1` por la región de AWS en la que se encuentra su bucket de S3. Guarda este archivo en la ubicación `~/.config/rclone/rclone.conf` de la EC2 instancia.<pre>[AZStorageAccount]<br />type = azureblob<br />account = AZStorageAccount<br />service_principal_file = azure-principal.json<br /><br />[s3]<br />type = s3<br />provider = AWS<br />env_auth = true<br />region = us-east-1</pre> | AWS general, 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.html) | AWS general, administrador de la nube | 

### Migración de datos con Rclone
<a name="migrate-data-using-rclone"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los datos de sus contenedores. | Ejecute los comandos de Rclone [copy](https://rclone.org/commands/rclone_copy/) o [sync](https://rclone.org/commands/rclone_sync/).  **Ejemplo: copy**Este comando copia datos del contenedor Blob de Azure de origen al bucket de S3 de destino.<pre>rclone copy AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>**Ejemplo: sync**Este comando sincroniza los datos entre el contenedor Blob de Azure de origen y el bucket de S3 de destino. ****<pre>rclone sync AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>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. | AWS general, 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. | AWS general, 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](https://rclone.org/commands/rclone_lsd/) y [ls](https://rclone.org/commands/rclone_ls/) de Rclone. | AWS general, administrador de la nube | 

## Recursos relacionados
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-resources"></a>
+ [Guía del usuario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) (documentación de AWS)
+ [Funciones de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) (documentación de AWS)
+ [Creación de un contenedor Blob de Microsoft Azure](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) (documentación de Microsoft Azure)
+ [Comandos de Rclone](https://rclone.org/commands/) (documentación de Rclone)

## Información adicional
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional"></a>

**Ejemplo de política de roles para instancias EC2 **

Esta política otorga a tu EC2 instancia acceso de lectura y escritura a un segmento específico de tu cuenta. Si este bucket usa una clave administrada por el cliente para realizar el cifrado en el servidor, es posible que la política necesite obtener acceso adicional a AWS Key Management Service (AWS KMS).

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "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 (CLI) de Azure en tu estación de trabajo.

1. Cree una entidad principal de servicio y configúrela con acceso de [solo lectura](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#storage-blob-data-reader) a su cuenta de almacenamiento Blob de Azure. Guarde la salida JSON de este comando en un archivo local llamado `azure-principal.json`. El archivo se cargará en tu instancia. EC2 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}
   ```