Gestire i contenitori BLOB con l'interfaccia della riga di comando di Azure
Archiviazione BLOB di Microsoft Azure consente di archiviare grandi quantità di dati di oggetti non strutturati. È possibile usare l'archiviazione BLOB per raccogliere o esporre file multimediali, contenuti o applicazioni per gli utenti. Poiché tutti i dati BLOB vengono archiviati all'interno di contenitori, è necessario creare un contenitore di archiviazione prima di iniziare a caricare i dati. Per altre informazioni su archiviazione BLOB, leggere l'Introduzione all'archiviazione BLOB di Azure.
L'interfaccia della riga di comando di Azure è l'esperienza di riga di comando multipiattaforma Azure per la gestione delle risorse di Azure. È possibile usarla nel browser con Azure Cloud Shell. È anche possibile installarla in macOS, Linux o Windows ed eseguirla localmente dalla riga di comando.
Questo articolo illustra come usare l'interfaccia della riga di comando di Azure con Bash per usare gli oggetti contenitore.
Prerequisiti
Per accedere ad Archiviazione di Azure è necessaria una sottoscrizione di Azure. Se non si ha già una sottoscrizione, creare un account gratuito prima di iniziare.
L'accesso ad Archiviazione di Azure viene eseguito esclusivamente tramite un account di archiviazione. Per questa guida introduttiva, creare rapidamente un account di archiviazione usando il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. Per informazioni sulla creazione di un account di archiviazione, vedere Creare un account di archiviazione.
Preparare l'ambiente per l'interfaccia della riga di comando di Azure
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- È sempre consigliabile installare la versione più recente dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Autorizzare l'accesso all'archiviazione BLOB
È possibile autorizzare l'accesso all'archiviazione BLOB dall'interfaccia della riga di comando di Azure con le credenziali di Microsoft Entra o usando la chiave di accesso dell'account di archiviazione. È consigliabile usare le credenziali di Microsoft Entra e gli esempi di questo articolo usano esclusivamente l'ID Microsoft Entra.
I comandi dell'interfaccia della riga di comando di Azure per le operazioni sui dati dell'archiviazione BLOB supportano il parametro --auth-mode
, che consente di specificare come autorizzare una determinata operazione. Impostare il parametro --auth-mode
su login
per autorizzare l'accesso con le credenziali di Microsoft Entra. Per altre informazioni, vedere Autorizzare l'accesso ai dati di BLOB o code con l'interfaccia della riga di comando di Azure.
Eseguire il comando login
per aprire un browser e connettersi alla sottoscrizione di Azure.
az login
Creazione di un contenitore
Per creare un contenitore con l'interfaccia della riga di comando di Azure, chiamare il comando az storage container create. Nell'esempio seguente vengono illustrate tre opzioni per la creazione di contenitori BLOB con il comando az storage container create
. Il primo approccio crea un singolo contenitore, mentre i due approcci rimanenti usano operazioni di scripting Bash per automatizzare la creazione di contenitori.
Per usare questo esempio, specificare i valori per le variabili e assicurarsi di aver eseguito l'accesso. Ricordare di sostituire i valori segnaposto tra parentesi con i valori personalizzati.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Approach 1: Create a container
az storage container create \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Approach 2: Create containers with a loop
for value in {2..5}
do
az storage container create \
--name $containerPrefix$value \
--account-name $storageAccount \
--auth-mode login
done
# Approach 3: Create containers by splitting multiple values
containerList="${containerPrefix}6 ${containerPrefix}7 ${containerPrefix}8"
for container in $containerList
do
az storage container create \
--name $container \
--account-name $storageAccount \
--auth-mode login
done
Elencare i contenitori
Usare il comando az storage container list
per recuperare un elenco di contenitori di archiviazione. Per restituire un elenco di contenitori i cui nomi iniziano con una determinata stringa di caratteri, passare la stringa come valore del parametro --prefix
.
Il parametro --num-results
può essere usato per limitare il numero di contenitori restituiti dalla richiesta. Archiviazione di Azure limita il numero di contenitori restituiti da una singola operazione di elenco a 5000. Questo limite garantisce che vengano recuperate quantità gestibili di dati. Se il numero di contenitori restituiti supera il valore --num-results
o il limite di servizio, viene restituito un token di continuazione. Questo token consente di usare più richieste per recuperare un numero qualsiasi di contenitori.
È anche possibile usare il parametro --query
per eseguire una query JMESPath sui risultati dei comandi. JMESPath è un linguaggio di query per JSON che consente di selezionare e modificare i dati restituiti dall'output dell'interfaccia della riga di comando. Le query vengono eseguite nell'output JSON prima di poter essere formattate. Per altre informazioni, vedere Come eseguire query sull'output dei comandi dell'interfaccia della riga di comando di Azure usando una query JMESPath.
Nell'esempio seguente viene innanzitutto elencato il numero massimo di contenitori (soggetto al limite del servizio). Elenca quindi tre contenitori i cui nomi iniziano con il prefisso container- specificando i valori per i parametri --num-results
e --prefix
. Infine, viene elencato un singolo contenitore specificando un nome di contenitore noto al parametro --prefix
.
Altre informazioni su az storage container list.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
numResults="3"
# Approach 1: List maximum containers
az storage container list \
--account-name $storageAccount \
--auth-mode login
# Approach 2: List a defined number of named containers
az storage container list \
--prefix $containerPrefix \
--num-results $numResults \
--account-name $storageAccount \
--auth-mode login
# Approach 3: List an individual container
az storage container list \
--prefix $containerPrefix \
--query "[?name=='$containerName']" \
--account-name $storageAccount \
--auth-mode login
Leggere i metadati e le proprietà del contenitore
Un contenitore restituisce sia le proprietà di sistema che i metadati definiti dall'utente. Le proprietà di sistema esistono su ogni risorsa di archiviazione BLOB. Alcune proprietà sono di sola lettura, mentre altre possono essere lette o impostate. Anche se in modo non esplicito, alcune proprietà di sistema eseguono il mapping a determinate intestazioni HTTP standard.
I metadati definiti dall'utente sono costituiti da una o più coppie nome-valore specificate per una risorsa di archiviazione BLOB. È possibile usare i metadati per archiviare valori aggiuntivi con la risorsa. I valori dei metadati sono solo per gli scopi dell'utente e non influiscono sul comportamento della risorsa.
Proprietà del contenitore
Per visualizzare le proprietà di un contenitore con l'interfaccia della riga di comando di Azure, chiamare il comando az storage container show.
Nell'esempio seguente, il primo approccio visualizza le proprietà di un singolo contenitore con nome. Successivamente, recupera tutti i contenitori con il prefisso demo-container- e ne esegue l'iterazione, elencandone le proprietà. Ricordarsi di sostituire i valori segnaposto con valori personalizzati.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
# Show a named container's properties
az storage container show \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# List several containers and show their properties
containerList=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
for row in $containerList
do
tmpRow=$(echo $row | sed -e 's/\r//g')
az storage container show --name $tmpRow --account-name $storageAccount --auth-mode login
done
Leggere e scrivere i metadati del contenitore
Gli utenti che hanno molte migliaia di oggetti all'interno dell'account di archiviazione possono individuare rapidamente contenitori specifici in base ai metadati. Per leggere i metadati, si userà il comando az storage container metadata show
. Per aggiornare i metadati, è necessario chiamare il comando az storage container metadata update
. Il metodo accetta solo coppie chiave-valore separate da spazi. Per altre informazioni, vedere la documentazione su az storage container metadata.
Il primo esempio seguente aggiorna e quindi recupera i metadati di un contenitore con nome. Il secondo esempio esegue l'iterazione dell'elenco di contenitori che corrispondono al valore -prefix
. I contenitori con nomi contenenti numeri pari hanno il set di metadati con i valori contenuti nella variabile di metadati.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Create metadata string
metadata="key=value pie=delicious"
# Update named container metadata
az storage container metadata update \
--name $containerName \
--metadata $metadata \
--account-name $storageAccount \
--auth-mode login
# Display metadata
az storage container metadata show \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Get list of containers
containerList=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
# Update and display metadata
for row in $containerList
do
#Get the container's number
tmpName=$(echo $row | sed -e 's/\r//g')
if [ `expr ${tmpName: ${#containerPrefix}} % 2` == 0 ]
then
az storage container metadata update \
--name $tmpName \
--metadata $metadata \
--account-name $storageAccount \
--auth-mode login
echo $tmpName
az storage container metadata show \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
fi
done
Eliminare i contenitori
A seconda del caso d'uso, è possibile eliminare un singolo contenitore o un gruppo di contenitori con il comando az storage container delete
. Quando si elimina un elenco di contenitori, è necessario usare le operazioni condizionali, come illustrato negli esempi seguenti.
Avviso
L'esecuzione degli esempi seguenti può eliminare definitivamente contenitori e BLOB. Microsoft consiglia di abilitare l'eliminazione temporanea dei contenitori per proteggere i contenitori e i BLOB dall'eliminazione accidentale. Per altre informazioni, vedere Eliminazione temporanea per i contenitori.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Delete a single named container
az storage container delete \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Delete containers by iterating a loop
list=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
for row in $list
do
tmpName=$(echo $row | sed -e 's/\r//g')
az storage container delete \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
done
Se l'eliminazione temporanea del contenitore è abilitata per l'account di archiviazione, è possibile recuperare i contenitori eliminati. Se l'opzione di protezione dei dati di eliminazione temporanea dell'account di archiviazione è abilitata, il parametro --include-deleted
restituirà i contenitori eliminati entro il periodo di conservazione associato. Il parametro --include-deleted
può essere usato solo per restituire contenitori quando viene usato con il parametro --prefix
. Per altre informazioni sull'eliminazione temporanea, vedere l'articolo Eliminazione temporanea per contenitori.
Considerare l'esempio seguente per recuperare un elenco di contenitori eliminati entro il periodo di conservazione associato all'account di archiviazione.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
# Retrieve a list of containers including those recently deleted
az storage container list \
--prefix $containerPrefix \
--include-deleted \
--account-name $storageAccount\
--auth-mode login
Ripristinare un contenitore eliminato predefinito
Come indicato nella sezione Contenitori di elenco, è possibile configurare l'opzione di protezione dei dati di eliminazione temporanea nell'account di archiviazione. Se abilitata, è possibile ripristinare i contenitori eliminati entro il periodo di conservazione associato. Prima di seguire questo esempio, è necessario abilitare l'eliminazione temporanea e configurarla in almeno uno degli account di archiviazione.
Gli esempi seguenti illustrano come ripristinare un contenitore eliminato predefinito con il comando az storage container restore
. È necessario specificare i valori per i parametri --name
e --version
per assicurarsi che venga ripristinata la versione corretta del contenitore. Se non si conosce il numero di versione, è possibile usare il comando az storage container list
per recuperarlo come illustrato nel primo esempio. Il secondo esempio trova e ripristina tutti i contenitori eliminati all'interno di un account di archiviazione specifico.
Per altre informazioni sull'opzione di protezione dei dati di eliminazione temporanea, vedere l'articolo Eliminazione temporanea per contenitori.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
# Restore an individual named container
containerVersion=$(az storage container list \
--account-name $storageAccount \
--query "[?name=='$containerName'].[version]" \
--auth-mode login \
--output tsv \
--include-deleted | sed -e 's/\r//g')
az storage container restore \
--name $containerName \
--deleted-version $containerVersion \
--account-name $storageAccount \
--auth-mode login
# Restore a list of deleted containers
containerList=$(az storage container list \
--account-name $storageAccount \
--include-deleted \
--auth-mode login \
--query "[?deleted].{name:name,version:version}" \
-o json)
for row in $(echo "${containerList}" | jq -c '.[]' )
do
tmpName=$(echo $row | jq -r '.name')
tmpVersion=$(echo $row | jq -r '.version')
az storage container restore \
--account-name $storageAccount \
--name $tmpName \
--deleted-version $tmpVersion \
--auth-mode login
done
Ottenere una firma di accesso condiviso per un contenitore
Una firma di accesso condiviso fornisce l'accesso delegato alle risorse di Azure. Una firma di accesso condiviso offre un controllo granulare sul modo in cui un client può accedere ai dati. Ad esempio, è possibile specificare le risorse disponibili per il client. Inoltre è possibile limitare i tipi di operazioni che il client può eseguire e specificare l'intervallo in cui la firma di accesso condiviso è valida.
Una firma di accesso condiviso viene comunemente usata per fornire l'accesso temporaneo e sicuro a un client che normalmente non dispone delle autorizzazioni. Per generare una firma di accesso condiviso del servizio o dell'account, è necessario specificare i valori per i parametri --account-name
e --account-key
. Un esempio di questo scenario è un servizio che consente agli utenti di leggere e scrivere i propri dati nell'account di archiviazione.
Archiviazione di Azure supporta tre tipi di firme di accesso condiviso: delega utente, servizio e firma di accesso condiviso dell'account. Per altre informazioni sulle firme di accesso condiviso, vedere l'articolo Concedere accesso limitato alle risorse di archiviazione di Azure tramite firme di accesso condiviso.
Attenzione
Qualsiasi client che disponga di una firma di accesso condiviso valida può accedere ai dati nell'account di archiviazione, in base alle autorizzazioni di tale firma. È importante proteggere una firma di accesso condiviso da eventi dannosi o imprevisti. Prestare attenzione durante la distribuzione di una firma di accesso condiviso e predisporre un piano di revoca di eventuali firme di accesso condiviso compromesse.
L'esempio seguente illustra il processo di configurazione di una firma di accesso condiviso del servizio per un contenitore specifico usando il comando az storage container generate-sas
. Poiché genera una firma di accesso condiviso del servizio, l'esempio recupera prima la chiave dell'account di archiviazione da passare come valore --account-key
.
L'esempio configurerà la firma di accesso condiviso con orari di inizio e scadenza e un protocollo. Specifica inoltre le autorizzazioni di eliminazione, lettura, scrittura ed elenco nella firma di accesso condiviso usando il parametro --permissions
. È possibile fare riferimento alla tabella completa delle autorizzazioni nell'articolo Creare una firma di accesso condiviso del servizio.
Copiare e incollare il valore del token di firma di accesso condiviso BLOB in un percorso sicuro. Verrà visualizzato una sola volta e non può essere recuperato dopo la chiusura di Bash. Per creare l'URL di firma di accesso condiviso, accodare il token di firma di accesso condiviso (URI) all'URL del servizio di archiviazione.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
permissions="drwl"
expiry=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'`
accountKey=$(az storage account keys list \
--account-name $storageAccount \
--query "[?permissions == 'FULL'].[value]" \
--output tsv)
accountKey=$( echo $accountKey | cut -d' ' -f1 )
az storage container generate-sas \
--name $containerName \
--https-only \
--permissions dlrw \
--expiry $expiry \
--account-key $accountKey \
--account-name $storageAccount
Nota
Il token di firma di accesso condiviso restituito dall'interfaccia della riga di comando di Azure non include il carattere delimitatore ('?') per la stringa di query URL. Se si aggiunge il token di firma di accesso condiviso a un URL della risorsa, ricordarsi di aggiungere il carattere delimitatore all'URL della risorsa prima di aggiungere il token di firma di accesso condiviso.
Passaggi successivi
In questo articolo si è appreso come gestire i contenitori in Archiviazione BLOB. Per altre informazioni sull'uso dell'archiviazione BLOB tramite l'interfaccia della riga di comando di Azure, selezionare un'opzione di seguito.