Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft Azure Blob Storage consente di archiviare grandi quantità di dati oggetto non strutturati. È possibile usare l'archiviazione BLOB per raccogliere o esporre dati multimediali, contenuti o applicazioni agli 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 sull'archiviazione BLOB, vedere Introduzione all'archiviazione BLOB di Azure.
L'interfaccia della riga di comando di Azure (CLI) è multipiattaforma per la gestione delle risorse di Azure. È possibile usarla nel browser con Azure Cloud Shell. È anche possibile installarlo in macOS, Linux o Windows ed eseguirlo 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 è necessario un abbonamento Azure. Se non si ha già una sottoscrizione, creare un account gratuito prima di iniziare.
Tutto l'accesso all'Archiviazione di Azure avviene 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
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. 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 usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare 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 nell'archivio BLOB supportano il --auth-mode parametro , che consente di specificare come autorizzare una determinata operazione. Impostare il --auth-mode parametro su login per autorizzare 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 login comando per aprire un browser e connettersi alla sottoscrizione di Azure.
az login
Creare 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 az storage container create comando . 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 az storage container list comando 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 --prefix parametro.
Il --num-results parametro può essere usato per limitare il numero di contenitori restituiti dalla richiesta. Azure Storage limita il numero di contenitori restituiti da una singola operazione di listing a 5000. Questo limite garantisce che vengano recuperate quantità gestibili di dati. Se il numero di contenitori restituiti supera il --num-results valore o il limite del 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 --query parametro 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 ulteriori informazioni, vedere Come eseguire una query sull'output dei comandi di Azure CLI 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 contenitore del prefisso, specificando i valori per i --num-results parametri e --prefix . Infine, viene elencato un singolo contenitore specificando un nome di contenitore noto al --prefix parametro .
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 le proprietà e i metadati del contenitore
Un contenitore espone sia le proprietà di sistema che i metadati definiti dall'utente. Le proprietà di sistema esistono in 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 denominato. Successivamente, recupera tutti i contenitori con il prefisso demo-container- e li scorre, elencandone le proprietà. Ricordarsi di sostituire i valori segnaposto con i propri valori.
#!/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 az storage container metadata show comando . Per aggiornare i metadati, è necessario chiamare il az storage container metadata update comando . Il metodo accetta solo coppie chiave-valore separate da spazi. Per altre informazioni, vedere la documentazione relativa ai metadati del contenitore di archiviazione .
Il primo esempio seguente aggiorna e quindi recupera i metadati di un contenitore denominato. Il secondo esempio scorre l'elenco di contenitori corrispondenti 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 contenitori
A seconda del caso d'uso, è possibile eliminare un singolo contenitore o un gruppo di contenitori con il az storage container delete comando . Quando si elimina un elenco di contenitori, è necessario usare le operazioni condizionali, come illustrato negli esempi seguenti.
Avvertimento
L'esecuzione degli esempi seguenti può eliminare definitivamente contenitori e BLOB. Microsoft consiglia di abilitare il soft delete 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 --include-deleted parametro restituirà i contenitori eliminati entro il periodo di conservazione associato. Il --include-deleted parametro può essere usato solo per restituire i contenitori quando viene usato con il --prefix parametro . Per altre informazioni sull'eliminazione temporanea, vedere l'articolo Eliminazione temporanea per contenitori.
Usare 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 in modo temporaneo
Come indicato nella sezione Elenca contenitori , è 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 soft-eliminato con il comando az storage container restore. Sarà necessario specificare i valori per i --name parametri e --version per assicurarsi che venga ripristinata la versione corretta del contenitore. Se non si conosce il numero di versione, è possibile usare il az storage container list comando 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 ulteriori informazioni sull'opzione di protezione dati di eliminazione graduale, consultare l'articolo Eliminazione graduale 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 (SAS) offre un controllo granulare sul modo in cui un client può accedere ai dati. Ad esempio, è possibile specificare le risorse disponibili per il client. È anche possibile limitare i tipi di operazioni che il client può eseguire e specificare l'intervallo di validità della firma di accesso condiviso (SAS).
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 l'accesso limitato alle risorse di Archiviazione di Azure usando le firme di accesso condiviso .
Attenzione
Qualsiasi client che possiede una SAS valida può accedere ai dati nel tuo account di archiviazione, secondo quanto previsto da quella SAS. È importante proteggere una firma di accesso condiviso da eventi dannosi o imprevisti. Usare la discrezione nella distribuzione di una firma di accesso condiviso e disporre di un piano per revocare una firma di accesso condiviso compromessa.
L'esempio seguente illustra il processo di configurazione di un "Service SAS" 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 imposterà il SAS (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 SAS del servizio.
Copia e incolla il valore del token SAS di Blob in un luogo sicuro. Verrà visualizzato una sola volta e non può essere recuperato dopo la chiusura di Bash. Per costruire l'URL SAS, aggiungere il token SAS (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
Annotazioni
Il token SAS restituito dall'Azure CLI non include il carattere delimitatore ('?') per la stringa di query dell'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, hai imparato come gestire i contenitori nell'archiviazione Blob. Per altre informazioni sull'uso dell'archiviazione BLOB tramite l'interfaccia della riga di comando di Azure, selezionare un'opzione di seguito.