Índice

  1. Creación de cuenta Storage y claves
  2. Acceso a ficheros en Azure File
  3. Creación de token y acceso SAS
  4. Conclusión

 

1. Creación de cuenta Storage y claves

Microsoft Azure Storage es un servicio en la nube administrado por Microsoft que proporciona almacenamiento altamente disponible, seguro, duradero y escalable.

Dentro de Microsoft Azure Storage hay diferentes opciones: Blobs, Table, Queue y File. Azure Files ofrece recursos compartidos de archivos en la nube con SSD para conseguir el rendimiento más rápido. Microsoft se encarga del mantenimiento.

Azure Files permite configurar recursos compartidos de archivos de red de alta disponibilidad a los que se puede acceder mediante el protocolo Bloque de mensajes del servidor (SMB) estándar. Esto significa que varias máquinas virtuales pueden compartir los mismos archivos con acceso de lectura y escritura.

En este post lo primero que haremos será crearnos una cuenta de Azure Storage y poder acceder a un archivo dentro de Azure Files. Una vez que consigamos esto, accederemos mediante SAS o firmas de acceso compartido (Shared Access Signatures).

Desde nuestro panel de Azure nos crearemos una cuenta de Azure Storage (Storage Account). El nombre es universal, por lo que tendremos que elegir uno que esté disponible, en mi caso «cuentapruebafile».

Accedemos al recurso creado, y en File nos creamos un nuevo directorio «direjemplo» de cuota 1 GB (la facturación se realiza por acceso, no por almacenamiento) y subimos un fichero de texto de plano de prueba. También tendremos que copiar en el portapapeles la cadena de conexión, la cual se encuentra dentro del apartado «Access keys».

sas1

Ahora nos vamos a Visual Studio. Creamos un proyecto de tipo MVC .NET Framework, en el cual tendremos que incluir los paquetes Nuget WindowsAzure.Storage, WindowsAzure.ServiceBus y Microsoft.WindowsAzure.ConfigurationManager para poder trabajar con nuestra cuenta de Azure Storage.

En nuestro fichero Web.config tendremos que añadir una nueva propiedad en appSettings. Esta propiedad tendrá por nombre cadenaConexion, y por valor la cadena de conexión copiada anteriormente.

sas2

 

2. Acceso a ficheros en Azure File

En nuestro proyecto MVC tendremos una única vista, su controlador y dos modelos. Uno de los modelos simulará el Web API desde el cual se debería obtener el token para acceder mediante SAS a Azure File.

Primero accederemos mediante la cadena de conexión a un fichero de muestra y cargaremos su contenido. En el ActionResult de Index realizaremos todos los pasos necesarios para obtener el texto de ese fichero de prueba.

Comenzaremos recuperando la cadena de conexión en un string. La forma de acceder a un recurso de Azure Storage es muy similar, ya sea Azure File u otro elemento cualquiera: creación de un objeto para acceder a la cuenta, creación de un cliente del tipo de recurso deseado y accedemos al recurso.

Desde el recurso tenemos que posicionarnos en la raíz, acceder al fichero por su nombre y leerlo de forma asíncrona.

sas3

 

3. Creación de token y acceso SAS

En este momento cambiaremos la forma de acceder a nuestra cuenta Storage. Obtendremos un token mediante el cual podremos acceder (SAS).

Creamos un modelo que nos haga las funciones del Web API que nos genere dicho token. El modelo tendrá un método de tipo Uri que devuelve una url con el token generado a partir de la cadena de conexión. Como el propósito de este proyecto es probar el acceso SAS, no persistiremos el token en el cliente, aunque sería recomendable implementarlo. También es recomendable generar diferentes token según el cliente, variando los permisos de cada uno.

Como puede verse en la siguiente imagen, hay que acceder a la cuenta de forma similar a lo hecho anteriormente, con la salvedad de generar el token y dotarle de permisos.

sas4

Mediante SAS podremos hacer las mismas opciones que mediante la cadena de conexión. En este caso dejaremos el acceso al fichero de muestra mediante la forma anterior, y la creación, eliminación y obtención del listado de ficheros con SAS.

Todo lo haremos de forma asíncrona en el controlador, para simular así el acceso al Web API, con los métodos en el modelo. Para la creación de ficheros creamos directamente un objeto para acceder al recurso compartido mediante el token. Obtenemos el directorio y subimos mediante UploadFromStream el fichero obtenido mediante un formulario básico.

sas5

La obtención del listado de ficheros existentes en nuestra cuenta se hará de forma similar. Para descargar el listado, utilizamos el método ListFilesAndDirectories() de nuestro directorio.

sas6

Para eliminar ficheros, una vez que tengamos la referencia de nuestro fichero, ejecutamos el método DeleteIfExists().

sas7

 

4. Conclusión

El acceso SAS a un recurso en Azure Storage es muy similar al acceso mediante la cadena de conexión, con la ventaja de que es personalizable (configuración de tiempo de acceso y permisos) y más seguro (no tienes que compartir la cadena de conexión a tu cuenta).

El código de los elementos básicos está en un repositorio GitHub para que podáis consultarlo. Tanto mi cuenta de Azure como Visual Studio los tengo configurados en inglés, por lo que en el vídeo es posible que haya opciones diferentes. Al finalizar la realización de este tutorial, he reiniciado las claves de mi cuenta Storage por seguridad.

 


 

Autor: José Ramón Landriz

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin + SharePoint

Centro: Tajamar

Año académico: 2017-2018

Enlaces: GitHub | LinkedIn

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.