Azure Blob Storage: Uso de AzCopy para copiar blobs entre cuentas de almacenamiento de Azure con restricciones de red

En este artículo se presenta cómo copiar blobs entre cuentas de almacenamiento mediante la utilidad de línea de comandos AzCopy. También se explica cómo implementar la operación de copia cuando se configuran restricciones de red para las cuentas de almacenamiento.

Información previa

La copia de archivos de blobs entre dos cuentas de almacenamiento es un requisito común para muchos usuarios de Azure. Azure Storage admite la copia directa de blobs de una cuenta de almacenamiento a otra, que se pueden implementar mediante la utilidad de línea de comandos AzCopy. Los usuarios no necesitan descargar archivos en discos o búferes locales y, a continuación, cargarlos de nuevo.

La copia de blobs entre dos cuentas de almacenamiento mediante AzCopy no se basa en el ancho de banda de red del equipo local. Este método puede aprovechar el rendimiento de las cuentas de almacenamiento y azure Virtual Network para lograr un mejor rendimiento que descargar y cargar archivos. No hay cargos por ancho de banda si ambas cuentas de almacenamiento están en la misma región.

Comandos de AzCopy para copiar blobs entre cuentas de almacenamiento

  • Si proporciona credenciales de autorización mediante Microsoft Entra ID, use el siguiente comando:

    azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>'

    En este escenario, debe asegurarse de que la identidad de Microsoft Entra tenga las asignaciones de roles adecuadas para las cuentas de origen y de destino.

  • Si usa un token de firma de acceso compartido (SAS), use el siguiente comando:

    azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'

    En este escenario, debe anexar un token de SAS a la dirección URL de origen y de destino que se usa en los comandos de AzCopy.

Para más información, consulte Copia de blobs entre cuentas de Almacenamiento de Azure con AzCopy v10.

Copia de blobs entre cuentas de almacenamiento con restricción de acceso

Si necesita restringir el acceso a las cuentas de almacenamiento de origen y de destino a través del firewall de almacenamiento, es posible que necesite más configuraciones para copiar blobs entre cuentas de almacenamiento mediante AzCopy. Esto se debe a que la solicitud de copia entre dos cuentas de almacenamiento usa direcciones IP privadas y las direcciones IP son dinámicas.

Estos son dos escenarios admitidos:

Escenario 1: El cliente usa un punto de conexión público para acceder a las cuentas de almacenamiento

En este escenario, debe agregar la dirección IP pública del cliente o la red virtual (VNet) a la lista de permitidos del firewall en las cuentas de almacenamiento de origen y de destino.

En la imagen siguiente se muestra el proceso de copia de blobs entre cuentas de almacenamiento en este escenario:

Diagrama que muestra el proceso de administración de blobs entre cuentas de almacenamiento en el escenario 1.

Escenario 2: La red virtual del cliente tiene vínculos privados configurados y usa un punto de conexión privado para acceder a las cuentas de almacenamiento.

En este escenario, no se necesita la lista de permitidos del firewall.

En la imagen siguiente se muestra el proceso de copia de blobs entre cuentas de almacenamiento en este escenario:

Diagrama que muestra el proceso de administración de blobs entre cuentas de almacenamiento en el escenario 2.

Este es el proceso completo de este mecanismo para los dos escenarios:

  1. El cliente envía una solicitud PutBlockfromURL al almacenamiento de destino.
  2. El almacenamiento de destino recibe las solicitudes e intenta obtener bloques de la dirección URL de origen especificada. Sin embargo, dado que el firewall de origen no ha permitido el almacenamiento de destino, recibe un error "403 Prohibido".
  3. Una vez que el almacenamiento de destino recibe el error "403 Prohibido", envía otra solicitud GetBlob en nombre del cliente. Si el cliente tiene acceso al almacenamiento de origen, el destino podrá obtener los bloques del origen y devolver un código de respuesta correcta al cliente.
  4. El cliente envía PutBlockList al almacenamiento de destino para confirmar los bloques y finalizar el proceso después de recibir un código de respuesta correcta de la solicitud.

Copia de blobs entre cuentas de almacenamiento en una arquitectura en estrella tipo hub-spoke mediante puntos de conexión privados

Se produce un error 403 al usar AzCopy para copiar blobs entre cuentas de almacenamiento conectadas a puntos de conexión privados en redes virtuales de radio diferentes de una máquina virtual en una red virtual de concentrador. Puede encontrar un error "403 Esta solicitud no está autorizada para realizar esta operación: CannotVerfiyCopySource" en los registros de AzCopy o en los registros de Azure Storage. En el diagrama de arquitectura siguiente se muestra el escenario en el que se produce el error.

Diagrama que muestra el error 403 de copia de blobs entre cuentas de almacenamiento en una arquitectura de hub & spoke mediante puntos de conexión privados.

Solución alternativa 1: Creación de un punto de conexión privado para la cuenta de almacenamiento de destino en la red virtual de origen

Una posible solución alternativa es crear un punto de conexión privado para la cuenta de almacenamiento de destino en la red virtual de origen. Esta configuración permite a la máquina virtual copiar correctamente los blobs entre las cuentas de almacenamiento mediante AzCopy. En el diagrama de arquitectura siguiente se muestra el proceso de copia de blobs entre cuentas de almacenamiento en la solución alternativa 1.

Diagrama que muestra el proceso de copia de blobs entre cuentas de almacenamiento en la solución alternativa 1.

Solución alternativa 2: Coloque la máquina virtual en la misma red virtual que la cuenta de almacenamiento de origen y peere la red virtual con la red virtual de destino.

Otra opción es colocar la máquina virtual en la misma red virtual que la cuenta de almacenamiento de origen. A continuación, establezca el emparejamiento entre esta red virtual y la red virtual de destino. En el diagrama de arquitectura siguiente se muestra el proceso de copia de blobs entre cuentas de almacenamiento en la solución alternativa 2.

Diagrama que muestra el proceso de copia de blobs entre cuentas de almacenamiento en la solución alternativa 2.

Solución alternativa 3: Uso de una cuenta de almacenamiento provisional temporal para copiar los datos

Si no puede implementar las soluciones alternativas mencionadas anteriormente o tiene restricciones para cambiar la configuración de red existente de la cuenta de almacenamiento o la red virtual, puede usar una cuenta de almacenamiento provisional temporal para copiar los datos:

  1. Cree una cuenta de almacenamiento temporal en la misma región que la cuenta de almacenamiento de origen y la cuenta de almacenamiento de destino.
  2. Use AzCopy para copiar los datos de la cuenta de almacenamiento de origen en la cuenta de almacenamiento temporal.
  3. Copie los datos de la cuenta de almacenamiento temporal en la cuenta de almacenamiento de destino. Asegúrese de que la cuenta de almacenamiento temporal tiene un punto de conexión privado en la misma red virtual que la cuenta de almacenamiento de destino antes de realizar la transferencia de datos.

Solución alternativa 4: Use una máquina virtual, descargue los datos en la máquina virtual y, a continuación, cargue los datos en la cuenta de almacenamiento de destino.

Use esta solución alternativa solo si otros métodos no son factibles. Use una máquina virtual para descargar los datos de la cuenta de almacenamiento de origen y, a continuación, cárguelos en la cuenta de almacenamiento de destino. Esto se puede hacer con AzCopy. Asegúrese de que el tamaño y la capacidad del disco de la máquina virtual son adecuados para el proceso de transferencia de datos.