Transferir archivos con AzCopy: OAuth y token SAS

La automatización está presente en todas partes hoy en día en TI. Desde la provisión de máquinas virtuales hasta el despliegue de sitios web, la automatización es clave especialmente cuando necesitas manejar varios elementos. Incluso la gestión de archivos entre el almacenamiento de Azure y tu máquina local puede ser automatizada utilizando un programa de utilidad llamado AzCopy.

AzCopy es una utilidad independiente que permite la gestión del almacenamiento de Azure. Con AzCopy, se pueden realizar varias operaciones. En este artículo, nos centraremos en:

¡Comencemos!

Si aprendes mejor viendo videos, también puedes ver un video de TechSnips relacionado de cerca con lo que aprenderás en este artículo.

Prerrequisitos

Este artículo será un recorrido que demostrará varias tareas. Si deseas seguir adelante, asegúrate de cumplir con la siguiente lista de requisitos antes de comenzar.

Creación de nuevos contenedores de almacenamiento

En primer lugar, usemos AzCopy para crear nuevos contenedores de almacenamiento en una cuenta de almacenamiento existente. En el ejemplo que usarás, crearás dos nuevos contenedores llamados container1 y container2.

Nota: Antes de crear un nuevo contenedor, debes conocer la URL de punto final del contenedor. La URL de punto final sigue el formato: https://[nombredeCuentaDeAlmacenamiento].blob.core.windows.net/[nombre_del_contenedor].

Primero, define la URL de punto final. En este ejemplo, los contenedores se crearán en una cuenta de almacenamiento llamada storageaccount1207 creando dos URL de punto final:

Ahora que conoces las URL de punto final, usa el comando azcopy make pasando cada URL de punto final como parámetro como se muestra a continuación.

> azcopy make https://storageaccount1207.blob.core.windows.net/container1
> azcopy make https://storageaccount1207.blob.core.windows.net/container2
Creating new containers in the storageaccount1207 storage account

Copiando archivos hacia/desde contenedores de Azure

Una vez que tienes creado un contenedor de almacenamiento, probablemente te estés preguntando “¿Cómo subo archivos al almacenamiento de blobs de Azure?”. Puedes lograrlo con AzCopy utilizando el comando azcopy copy. Puedes usar AzCopy para copiar archivos PST, VHD y más.

Usando Autenticación OAuth

Cuando se utiliza AzCopy para copiar archivos a blobs, tienes un par de opciones para la autenticación. Dado que se presume que ya has autenticado en Azure Storage (ya que estaba en los requisitos previos), simplemente puedes ejecutar azcopy copy especificando una ruta de archivo local seguida de una URL de punto de conexión de contenedor como se muestra a continuación.

Al no especificar ningún otro parámetro, estás utilizando la autenticación de OAuth.

> azcopy copy c:\myDir\file1.txt https://storageaccount1207.blob.core.windows.net/container1
Upload file to Azure Storage using OAuth

¿Cómo sabes si el archivo se copió al contenedor de blobs de Azure? Puedes usar el comando azcopy list [url del contenedor]. Mira el ejemplo a continuación que muestra que el archivo file1.txt existe.

> azcopy list https://storageaccount1207.blob.core.windows.net/container1
List the contents of the Azure blob container

Para descargar un archivo del blob de Azure al directorio local, solo necesitas intercambiar los lugares de los argumentos de origen y destino. Mira el ejemplo a continuación.

> azcopy copy https://storageaccount1207.blob.core.windows.net/container1/file1.txt>c:\myDir
Download file from Azure Storage using OAuth authentication

Usando un Token de Firma de Acceso Compartido (SAS)

Para usar un token SAS, primero debes generar uno. Si no sabes cómo generar un token SAS, consulta el artículo Cómo Generar un Token SAS de Azure para Acceder a Cuentas de Almacenamiento.

Una vez que tengas un token SAS disponible, puedes agregar el token a la URL del contenedor de destino como un parámetro HTTP como se muestra a continuación.

> azcopy copy c:\myDir\file1.txt 'https://storageaccount1207.blob.core.windows.net/container1?sv=2019-02-02&sr=c&sig=LgFsqIRHZovsSjpAVNAyyyy4tnDJ%2BxNh%2B1Cq3rY4Gbk%3D&se=2019-12-09T06%3A34%3A30Z&sp=rw'

Si estás usando PowerShell y almacenaste el token en una variable (por ejemplo, $token), puedes pasar esa variable en lugar de la cadena completa del token como se muestra en el siguiente comando.

> azcopy copy c:\myDir\file1.txt "https://storageaccount1207.blob.core.windows.net/container1?$token"
Copy file to Azure Container using SAS Token Authentication

Usando el mismo token (asumiendo que aún está dentro de su período de validez), también puedes descargar archivos desde el almacenamiento de Azure al almacenamiento local. El ejemplo a continuación copia el archivo file1.txt desde el almacenamiento de Azure con un token SAS.

En el código a continuación, puedes ver que esta vez en lugar de agregar el token después del nombre del contenedor, se agrega primero el nombre del archivo. Esto indica a AzCopy que copie un archivo específico usando la autenticación SAS.

> azcopy copy ('https://storageaccount1207.blob.core.windows.net/container1/file1.txt'+$token) C:\MyDir\
Copy file from Azure Container with SAS Token

Copiando un directorio hacia/desde el almacenamiento de Azure

Si tienes muchos archivos para transferir o descargar desde Azure, también puedes copiar directorios enteros de una vez usando azcopy copy. El comando para hacerlo no es muy diferente de lo que usas para copiar archivos individuales.

A continuación puedes ver un comando que copia recursivamente C:\\MyDir al contenedor de blobs container1. El parámetro --recursive es clave aquí. La bandera --recursive al final del comando indica que se copiarán todos los contenidos del directorio principal y subdirectorios que puedan existir.

> azcopy copy C:\MyDir\ https://storageaccount1207.blob.core.windows.net/container1/ --recursive

A continuación, puedes ver que diez archivos dentro de la carpeta C:\MyDir fueron copiados correctamente según el resumen del trabajo.

Copying a directory and its contents

Copiando archivos entre contenedores de almacenamiento de Azure

A lo largo de este artículo, has estado utilizando bastante el comando azcopy copy. ¡No hay necesidad de detenerse ahora! No solo puedes copiar directorios y archivos de/a local, sino que también puedes copiar blobs entre contenedores de almacenamiento.

En lugar de usar una ruta de archivo local, cambiarías los parámetros para usar una URL de un contenedor de blobs como origen y otra URL de un contenedor de blobs como destino.

Ya has creado dos contenedores de almacenamiento llamados container1 y container2. En esta sección, vamos a copiar archivos, directorios e incluso el contenedor de blobs completo de container1 a container2.

Para copiar archivos de un contenedor a otro, primero, genera un nuevo token SAS. Dado que los dos contenedores pertenecen a la misma cuenta de almacenamiento, el mismo token se puede usar para el origen y el destino.

Suponiendo que hayas guardado la cadena del token en una variable llamada $token (si estás ejecutando azcopy con PowerShell), puedes copiar fácilmente todos los datos de un contenedor de almacenamiento al otro como se muestra a continuación.

Recordatorio: Echa un vistazo al artículo Cómo Generar un Token SAS de Azure para Acceder a Cuentas de Almacenamiento si no sabes cómo generar un token SAS.

> azcopy copy ('https://storageaccount1207.blob.core.windows.net/container1'+$token) ('https://storageaccount1207.blob.core.windows.net/container2'+$token) --recursive
Copying data between containers using SAS Token authentication

Otras Operaciones Útiles de AzCopy

Además de copiar archivos y carpetas, hay otras operaciones de copia que puedes realizar con AzCopy. Algunas de estas son:

  • Copiar archivos específicos (filtrados).
  • Copiar un directorio dentro de otro directorio en el contenedor de blobs.
  • Copiar desde Amazon AWS a Azure Storage.

Si deseas aprender todo lo que AzCopy puede hacer, consulta el contenido de ayuda ejecutando azcopy -h. Encontrarás muchos otros comandos útiles además del comando copy en el que te has enfocado únicamente en este artículo. Puedes ver una captura de pantalla de estos comandos a continuación.

List of AzCopy Commands

Para obtener más información, visita la página AzCopy Copy. Luego puedes probarlos por tu cuenta utilizando las técnicas que aprendiste en este artículo.

Resumen

En este artículo, aprendiste cómo usar AzCopy para transferir archivos entre el almacenamiento local y el de Azure. También aprendiste cómo realizar estas tareas mientras usas OAuth y Shared Access Signature Token para la autenticación. Has visto qué otros comandos de AzCopy están disponibles y cómo encontrarlos.

I hope this article has helped you get started with AzCopy and sparked your interest in using it more as part of your administration or development tasks. Thank you!

Source:
https://adamtheautomator.com/azcopy-storage/