Come utilizzare lo storage Blob tramite Azure File Storage

Potresti trovarti nella necessità di una soluzione economica ma efficiente per archiviare i tuoi file in un momento specifico, ma dove trovi quella soluzione? Dai un’occhiata al Binary Large Object (blob) storage di Microsoft Azure! Il Blob storage è uno dei servizi di archiviazione di Azure e ti consente di archiviare grandi quantità di file di dati di testo e binari, contenuti in streaming o persino contenuti statici per la distribuzione.

In questo tutorial, imparerai come lavorare con il Blob storage in Azure seguendo alcuni esempi comuni.

Continua a leggere per approfondire!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri seguirci, assicurati di avere quanto segue installato e disponibile.

Costruzione di un ambiente Azure

Prima di utilizzare lo storage blob per memorizzare i tuoi file, dovrai prima importare i moduli di PowerShell Core, connetterti alla tua sottoscrizione Azure e costruire un ambiente Azure.

1. Avvia PowerShell 7 ed esegui il seguente comando per importare i moduli che utilizzerai per memorizzare i file nello storage blob.

Importing the necessary modules
# Az.Accounts - Fornisce cmdlet per la gestione delle credenziali
# Az.Resources - Fornisce cmdlet per lavorare con i provider di risorse Azure di alto livello, 
               # come le sottoscrizioni
# Az.Storage - Fornisce i cmdlet che ti aiuteranno a lavorare con 
             # diverse risorse di archiviazione, come i blob
Import-Module Az.Accounts, Az.Resources, Az.Storage

2. Successivamente, accedi al tuo tenant di Azure Active Directory (AD), quindi esegui il comando qui sotto per completare un’autenticazione interattiva nel tuo browser web, come mostrato di seguito.

Sebbene al di fuori dell’ambito di questo tutorial, esistono altri metodi di autenticazione, come un Service Principal o l’uso di un token di accesso.

Connect-AzAccount
Azure Portal interactive login.

Assicurati sempre che l’inquilino e l’iscrizione mostrati dopo l’accesso siano quelli che intendi utilizzare. Se necessario, puoi cambiare il tuo contesto.

3. Ora esegui il comando seguente per creare un nuovo gruppo di risorse chiamato demo, e aggiungici cinque numeri casuali (Get-Random -Maximum 99999). I gruppi di risorse sono gerarchicamente inferiori alle iscrizioni e contengono risorse che consentono una gestione più granulare.

Nota che la -Posizione del gruppo di risorse è impostata su Central US per questo esempio. Quando il comando è completato, memorizza il risultato nella variabile $resourceGroup.

$resourceGroup = New-AzResourceGroup "demo$(Get-Random -Maximum 99999)" -Location 'Central US'
Creating a new resource group

4. Esegui il comando di seguito per eseguire i seguenti compiti e creare un nuovo account di archiviazione Azure. Per questo esempio, l’account di archiviazione viene chiamato storage e viene aggiunto un numero casuale di cinque cifre (Get-Random -Maximum 99999). La variabile $storageAccount conterrà l’oggetto restituito dopo il completamento del comando.

# Passa il parametro -ResourceGroupName con la proprietà ResourceGroupName
# della variabile $resourceGroup creata nel passaggio tre.
# Aggiungi numeri casuali al nome dell'account di archiviazione -Name
# simile al gruppo di risorse.
# Imposta la stessa posizione -Location della proprietà Location della variabile $resourceGroup.
# Posizionare le risorse nella stessa area geografica del gruppo di risorse padre è una buona pratica.
# Specifica il nome dell'account di archiviazione -SkuName con
# archiviazione localmente ridondante (LRS) o un nome univoco a livello globale all'interno di Azure.

$storageAccount = New-AzStorageAccount `
 -ResourceGroupName $resourceGroup.ResourceGroupName `
 -Name storage$(Get-Random -Maximum 99999) `
 -Location $resourceGroup.Location `
 -SkuName Standard_LRS
Creating a new storage account

5. Esegui il comando di seguito per eseguire un paio di compiti per l’assegnazione del Ruolo Azure AD:

  • Il valore -SignInName utilizza l’account con cui hai effettuato l’accesso tramite la proprietà UserID restituita dal cmdlet Get-AzAccessToken.
  • Il valore di -RoleDefinitionName è il ruolo predefinito Storage Blob Data Contributor che stai assegnando.
  • Il valore di -Scope imposta la portata dell’assegnazione del ruolo per l’account di archiviazione che hai creato (storage10029 mostrato di seguito) tramite la proprietà Id della variabile $storageAccount.

Puoi sempre fornire assegnazioni di ruolo più specifiche a singoli contenitori, se necessario.

New-AzRoleAssignment `
 -SignInName (Get-AzAccessToken).UserId`
 -RoleDefinitionName "Storage Blob Data Contributor"`
 -Scope $storageAccount.Id
Creating and verifying a new file

6. Infine, esegui la serie di comandi di seguito per creare un file chiamato temp.dat nel tuo sistema locale. Caricherai e scaricherai questo file dall’account di archiviazione nelle sezioni seguenti per mostrare come funziona l’archiviazione di blob.

# Carica la classe .NET FileStream
$file = New-Object System.IO.FileStream .\temp.dat,Create,ReadWrite
# Imposta la dimensione del file
$file.SetLength(10MB)
# Chiudi il file
$file.Close()
# Verifica la dimensione del file
(Get-ChildItem $file.Name).Length
Creating and verifying a new file

Caricamento dei file tramite PowerShell

Ora che hai creato un ambiente Azure e creato un file di esempio, iniziamo a caricare il file nello storage blob. Lo storage blob funziona in modo diverso rispetto ai filesystem standard. Ogni file nello storage blob è un oggetto e viene conservato all’interno dei contenitori.

La funzionalità principale dei blob è simile ad altri filesystem, ma ci sono casi d’uso in cui uno o l’altro potrebbe essere una soluzione migliore. I blob possono persino supportare filesystem virtuali (ad esempio, BlobFuse).

Microsoft offre diversi metodi per caricare file nei tuoi account di archiviazione tramite PowerShell, AzCopy e Azure Portal. Ma carichiamo il file di esempio (temp.dat) nello storage blob tramite PowerShell per iniziare. PowerShell ti consente un’esperienza coerente per lavorare con i tuoi account di archiviazione Azure.

Le azioni richieste per eseguire questa demo comporteranno costi. Monitora il consumo e elimina le risorse quando non hai più intenzione di usarle.

Esegui i comandi seguenti per creare un nuovo contenitore e caricare il file temp.dat ($file) come un oggetto. Il contenitore è chiamato demo per questo esempio, ma puoi darli un nome diverso se preferisci.

# Crea un contenitore all'interno di $storageAccount tramite la proprietà Context dell'account di archiviazione
# L'oggetto restituito viene quindi passato alla variabile $container
$container = New-AzStorageContainer -Name demo -Context $storageAccount.Context
# Carica il file temp.dat ($file) nel contenitore di demo ($container)
# Il nome del blob (-Blob) utilizzerà lo stesso nome del file che stai caricando (Get-ChildItem $file.Name)
Set-AzStorageBlobContent -File $file.Name -Container $container.Name -Blob (Get-ChildItem $file.Name).Name -Context $storageAccount.Context
Uploading a file to Azure Storage Account

Caricamento File tramite AzCopy

Forse hai casi d’uso più complessi, come sincronizzare contenuti o copiare contenuti tra account diversi su larga scala. In tal caso, lo strumento da riga di comando AzCopy è ciò di cui hai bisogno.

Esegui i comandi seguenti per effettuare l’accesso al tuo tenant Azure e copiare il tuo file locale ($file) all’endpoint URL del tuo contenitore. Stai effettuando l’accesso al tenant Azure poiché AzCopy non è consapevole delle credenziali che stai utilizzando con PowerShell.

# Accedi al tenant di Azure
& .\azcopy.exe login
# Copia il file locale all'URI completo del contenitore di destinazione $container
& .\azcopy.exe copy $file.Name $container.CloudBlobContainer.Uri.AbsoluteUri
Uploading to Azure Storage Account using AzCopy

Se invece di caricare, preferisci scaricare file tramite AzCopy. In tal caso, esegui il comando seguente per copiare i file specificati (temp.dat) dal tuo contenitore alla directory locale corrente: & .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat

Caricamento File tramite il Portale di Azure

Se preferisci un metodo grafico per caricare i tuoi file, allora Azure Storage Explorer è quello che fa per te. Azure Storage Explorer è uno dei migliori metodi grafici per gestire la tua archiviazione blob. Puoi accedere all’esploratore di archiviazione dalla risorsa dell’account di archiviazione nel portale di Azure.

1. Apre il tuo browser web preferito e accedi all’Esploratore di Archiviazione nel Portale di Azure.

2. Fai clic sul contenitore demo sotto CONTENITORI BLOB, come mostrato di seguito, quindi fai clic su Carica per accedere alla lama Carica blob (pannello destro).

3. Ora fai clic sull’icona della cartella nel pannello Carica blob per selezionare quali file caricare (temp.dat).

4. Infine, fai clic su Carica (pulsante blu) per caricare il tuo file.

Using the Upload blob blade in Azure Storage Explorer

Una volta completato il caricamento, puoi chiudere la finestra Carica blob e visualizzare il tuo blob caricato, come nell’immagine sottostante.

Viewing contents of a blob container in Azure Storage Explorer

Scaricare file tramite il portale di Azure

Come per l’upload di contenuti nello storage di blob, Azure supporta il download di contenuti in molti modi. Ma poiché hai appena caricato un file (temp.dat) tramite il portale di Azure, scarichiamo lo stesso file utilizzando Azure Storage Explorer nel portale di Azure.

Seleziona il file (temp.dat) da scaricare e fai clic sul pulsante Scarica in Azure Storage Explorer, come mostrato di seguito. Ciò aprirà una nuova finestra di dialogo per confermare il download che vedrai nel passaggio successivo.

Selecting Files to Download

Ora fai clic sul pulsante Fai clic qui per iniziare il download per scaricare i file selezionati.

Downloading Selected Files from the Blob Storage

Scaricare file tramite PowerShell

Come per l’upload di file, hai anche la possibilità di scaricare file dallo storage di blob eseguendo comandi in PowerShell. Con PowerShell, puoi elencare gli oggetti all’interno di un contenitore e quindi scaricarli.

Esegui i comandi seguenti per elencare tutti gli oggetti nel tuo contenitore e scaricare temp.dat nella tua directory locale.

# Elencare tutti gli oggetti all'interno del $container per verificare che il contenitore vuoto sia stato creato
Get-AzStorageBlob -Container $container.Name -Context $storageAccount.Context
# Scaricare l'oggetto temp.dat dal $container
Get-AzStorageBlobContent -Blob temp.dat -Container $container.Name -Context $storageAccount.Context
Downloading files from Azure Storage Account

Se preferisci utilizzare brevi link univoci per scaricare file, puoi utilizzare i token Shared Access Signature (SAS) per creare un collegamento preautorizzato per il download. Questi token sono unici e privati e puoi utilizzarli per verificare il tuo accesso.

Esegui i comandi seguenti per creare un nuovo link di download per il file (temp.dat) che desideri scaricare. Il link di download generato scade dopo 10 secondi e scaricherà (Invoke-WebRequest $uri) il contenuto utilizzando quel link nella variabile $temp.

# Genera un nuovo link di download valido per 10 minuti
$uri = New-AzStorageBlobSASToken -Context $storageAccount.Context -Container $container.Name -Blob temp.dat -Permission r -ExpiryTime (Get-Date).AddSeconds(10) -FullUri
# Utilizza il link per scaricare il file nella variabile $temp
$temp = Invoke-WebRequest $uri

# Oppure scrivi il file nella directory corrente
Invoke-WebRequest $uri -OutFile .\temp.dat
Download from Azure Storage Account using a SAS token

Ospitare una pagina Web su Internet pubblico da Archiviazione Blob

Fino a questo punto, hai visto casi d’uso di download di file da parte di utenti autenticati. Ma sapevi che l’archiviazione Blob può fornire un’ottima opzione anche per contenuti pubblici? Un esempio è utilizzare un blob per ospitare il contenuto della tua pagina web, cosa che realizzerai in questa demo.

Anche se i contenuti della tua pagina web sono crittografati sia in transito che a riposo, chiunque può accedere a quei contenuti se l’accesso pubblico è impostato.

Poiché stai configurando un caso d’uso diverso, utilizzerai uno dei principali vantaggi del cloud pubblico in termini di scala ed elasticità. Puoi creare un nuovo account di archiviazione per un caso d’uso specifico e limitare il rischio nell’utilizzo di contenitori pubblici.

1. Esegui il comando di seguito per creare un nuovo account di archiviazione come hai fatto nel passaggio quattro della sezione “Creazione di un ambiente Azure”. Ma questa volta, assegnerai l’oggetto restituito alla variabile $publicStorageAccount.

$publicStorageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup.ResourceGroupName -Name storage$(Get-Random -Maximum 99999) -Location $resourceGroup.Location -SkuName Standard_LRS
Creating a storage account

Ora hai un account di archiviazione dedicato per i tuoi contenuti pubblici e puoi configurarlo per ospitare contenuti web statici con il seguente comando.

2. Successivamente, esegui il cmdlet Enable-AzStorageStaticWebsite per configurare l’account di archiviazione ($publicStorageAccount) per il tuo nuovo caso d’uso. Il parametro -IndexDocument imposta la pagina web predefinita da mostrare agli utenti. Il parametro -Context sarà il nuovo account di archiviazione appena creato.

# Crea il contenitore $web e configura l'account di archiviazione
Enable-AzStorageStaticWebsite -IndexDocument index.html -Context $publicStorageAccount.Context
Enable storage account for website hosting

3. Esegui i comandi di seguito per creare un nuovo documento HTML nella tua directory corrente e caricare quel documento nel contenitore specifico per l’hosting di contenuti web. Il tipo di contenuto viene impostato su HTML (ContentType="text/html"), in modo che i browser web possano interpretare correttamente il documento.

Accedendo al documento su un browser web viene visualizzato il messaggio Hello from <nome dell’account di archiviazione>.

# Crea un semplice file HTML
"<body><h1>Hello from $($publicStorageAccount.StorageAccountName)!</h1></body>"|Out-File .\index.html
# Carica il file HTML nel contenitore di hosting web statico e imposta il ContentType su text/html
Set-AzStorageBlobContent -File .\index.html -Container "`$web" -Properties @{ContentType="text/html"} -Context $publicStorageAccount.Context
Create and upload an HTML document

4. Ora esegui il seguente comando per ottenere l’URL a cui gli utenti possono accedere per visualizzare i tuoi contenuti.

$publicStorageAccount.PrimaryEndpoints.Web
Get the URI of the endpoint

5. Infine, apri l’URL nel tuo browser, vedrai qualcosa di simile alla seguente schermata.

Accessing HTML Document from Blob Storage

Pulizia delle risorse

Ora che hai testato questi nuovi concetti sull’utilizzo dello storage blob, vorrai pulire le tue risorse. Perché? Farlo ti aiuta a mantenere pulita la tua sottoscrizione. Inoltre, smetti di incorrere in spese aggiuntive.

Dato che tutte le risorse utilizzate in questo tutorial si trovano in un singolo gruppo di risorse, puoi pulire tutte le risorse eliminando il gruppo di risorse.

Le risorse non saranno sempre contenute all’interno di un singolo gruppo di risorse, il che illustra perché un uso liberale della segmentazione logica può essere vantaggioso, specialmente durante i test o le iterazioni frequenti.

Esegui il cmdlet Remove-AzResourceGroup di seguito, specificando la proprietà ResourceGroupName della variabile $resourceGroup per eliminare il gruppo di risorse e tutte le risorse al suo interno.

Remove-AzResourceGroup -Name $resourceGroup.ResourceGroupName
Delete resource group and contents

Conclusione

In questo tutorial, hai trattato il caricamento e il download di file da e verso blob nello storage cloud su piattaforme diverse. Hai anche appreso che è possibile ospitare una pagina web dallo storage blob a cui gli utenti possono accedere pubblicamente.

Puoi fare molto di più con lo storage di blob e altri tipi di storage, quindi come potresti sviluppare su questi concetti? Forse lavorare con account di archiviazione di file, fornire sistemi di file serverless o utilizzare i blob di pagina per i dischi rigidi virtuali con le macchine virtuali Azure?

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