Dentro del apartado de Preview feaures, podemos activar este nuevo servicio:
En el momento que solicité acceso a la preview, tan sólo tardé unos minutos en recibir la activación vía email. A partir de este momento, tendremos una nueva URL para el servicio Azure Files, la cual podremos consultar en el DASHBOARD del Storage:
Antes de empezar a utilizar Azure Storage como recurso compartido, es necesario crear un directorio para que sea posible el mapeo. Podemos hacerlo a través de .NET o de PowerShell.
.NET
Haciendo uso del paquete WindowsAzure.Storage de Nuget, podemos crear los espacios compartidos a través del siguiente código:
using Microsoft.WindowsAzure.Storage; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AzureFiles { class Program { const string connectionString = "DefaultEndpointsProtocol=https;AccountName=[YOUR_ACCOUNT_NAME];AccountKey=[YOUR_ACCOUNT_KEY]"; const string shareFolder = "azurefilesfolder"; static void Main(string[] args) { var account = CloudStorageAccount.Parse(connectionString); var client = account.CreateCloudFileClient(); var share = client.GetShareReference(shareFolder); share.CreateIfNotExists(); Console.WriteLine("{0} folder created", shareFolder); var folders = client.ListShares(); foreach (var folder in folders) { Console.WriteLine("folder: {0}", folder.Name); } Console.ReadLine(); } } }
Powershell
Para realizar esta tarea desde PowerShell es necesario importar el módulo que podemos descargar desde el siguiente enlace.
Import-Module .AzureStorageFile.psd1 $context = New-AzureStorageContext YOUR_ACCOUNT YOUR_KEY New-AzureStorageShare azurefilesfolder -Context $context
Usando el recurso compartido
Cuando queremos acceder desde PaaS, podemos recuperar los recursos compartidos a través de GetShareReference, como veíamos en el código anterior, y trabajar de forma muy similar a como lo haríamos con los blobs.
foreach (var folder in folders) { Console.WriteLine("folder: {0}", folder.Name); var dir = folder.GetRootDirectoryReference(); foreach (var item in dir.ListFilesAndDirectories()) { var file = dir.GetFileReference(item.Uri.AbsolutePath); Console.WriteLine("File {0}", file.Name); } }
En el caso de IaaS es necesario montar la unidad en una o varias máquinas virtuales. La forma más sencilla de hacerlo es través del comando net use:
net use h: \\YOUR_ACCOUNT.file.core.windows.net\azurefilesfolder /u:YOUR_ACCOUNT STORAGE_KEY
Si quisiéramos subir archivos, con el fin de compartirlos entre las máquinas que tengan el recurso compartido, podemos hacer uso de AzCopy de la misma forma que lo haríamos en este post con los blobs.
AzCopy C:\videos https://azurefilesdemogis.file.core.windows.net/azurefilesfolder /destKey:YOUR_KEY /S
A día de hoy no está soportado el traspaso de archivos desde los blobs del Storage a Azure Files.
Para llevar a cabo esta acción, sería necesario descargarse los archivos y subirlos a la ubicación compartida (es posible que esta acción sea más rápida si hacemos la operación desde una máquina virtual ya en Azure).
AzCopy https://html5stuff.file.core.windows.net/videos/ C:\videos /sourceKey:YOUR_KEY /S AzCopy C:\videos https://azurefilesdemogis.file.core.windows.net/azurefilesfolder /destKey:YOUR_KEY /S
Espero que sea de utilidad.
¡Saludos!