Blobcontainers beheren met behulp van Azure CLI
Met Microsoft Azure Blob Storage kunt u grote hoeveelheden ongestructureerde objectgegevens opslaan. U kunt blobopslag gebruiken om media, inhoud of toepassingsgegevens te verzamelen of beschikbaar te maken voor gebruikers. Omdat alle blobgegevens worden opgeslagen in containers, moet u een opslagcontainer maken voordat u gegevens kunt uploaden. Lees de inleiding tot Azure Blob Storage voor meer informatie over blobopslag.
De Azure CLI is de platformoverschrijdende opdrachtregelervaring van Azure voor het beheren van Azure-resources. U kunt deze gebruiken in uw browser met Azure Cloud Shell. U kunt het ook installeren op macOS, Linux of Windows en deze lokaal uitvoeren vanaf de opdrachtregel.
In dit artikel leert u hoe u de Azure CLI gebruikt met Bash om te werken met containerobjecten.
Vereisten
U hebt een Azure-abonnement nodig voor toegang tot Azure Storage. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
Alle toegang tot Azure Storage vindt plaats via een opslagaccount. Voor deze quickstart gaat u een opslagaccount maken met de Azure-portal, Azure PowerShell of Azure CLI. Zie voor meer informatie over het maken van een opslagaccount Een opslagaccount maken.
De omgeving voorbereiden op de Azure CLI
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Het is altijd een goed idee om de nieuwste versie van de Azure CLI te installeren. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
Toegang tot Blob Storage autoriseren
U kunt toegang tot Blob Storage vanuit de Azure CLI autoriseren met Microsoft Entra-referenties of met behulp van de toegangssleutel voor het opslagaccount. Het gebruik van Microsoft Entra-referenties wordt aanbevolen en in de voorbeelden van dit artikel wordt uitsluitend Microsoft Entra ID gebruikt.
Azure CLI-opdrachten voor gegevensbewerkingen voor Blob Storage ondersteunen de parameter --auth-mode
, waarmee u kunt opgeven hoe een bepaalde bewerking moet worden geautoriseerd. Stel de --auth-mode
parameter in om login
te autoriseren met Microsoft Entra-referenties. Zie Toegang verlenen tot blob- of wachtrijgegevens met Azure CLI voor meer informatie.
Voer de login
opdracht uit om een browser te openen en verbinding te maken met uw Azure-abonnement.
az login
Een container maken
Als u een container wilt maken met Azure CLI, roept u de opdracht az storage container create aan. In het volgende voorbeeld ziet u drie opties voor het maken van blobcontainers met de az storage container create
opdracht. Met de eerste benadering wordt één container gemaakt, terwijl de resterende twee benaderingen gebruikmaken van Bash-scriptbewerkingen om het maken van containers te automatiseren.
Als u dit voorbeeld wilt gebruiken, geeft u waarden op voor de variabelen en zorgt u ervoor dat u bent aangemeld. Vergeet niet om de tijdelijke aanduidingen tussen vierkante haken te vervangen door uw eigen waarden.
#!/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
Containers weergeven
Gebruik de az storage container list
opdracht om een lijst met opslagcontainers op te halen. Als u een lijst met containers wilt retourneren waarvan de namen beginnen met een bepaalde tekenreeks, geeft u de tekenreeks door als de --prefix
parameterwaarde.
De --num-results
parameter kan worden gebruikt om het aantal containers te beperken dat door de aanvraag wordt geretourneerd. Azure Storage beperkt het aantal containers dat wordt geretourneerd door één vermeldingsbewerking tot 5000. Deze limiet zorgt ervoor dat beheerbare hoeveelheden gegevens worden opgehaald. Als het aantal geretourneerde containers de --num-results
waarde of de servicelimiet overschrijdt, wordt een vervolgtoken geretourneerd. Met dit token kunt u meerdere aanvragen gebruiken om een willekeurig aantal containers op te halen.
U kunt de --query
parameter ook gebruiken om een JMESPath-query uit te voeren op de resultaten van opdrachten. JMESPath is een querytaal voor JSON waarmee u gegevens kunt selecteren en wijzigen die worden geretourneerd uit de CLI-uitvoer. Query's worden uitgevoerd op de JSON-uitvoer voordat deze kan worden opgemaakt. Zie De uitvoer van azure CLI-opdrachten opvragen met behulp van een JMESPath-query voor meer informatie.
In het volgende voorbeeld wordt eerst het maximum aantal containers vermeld (onderhevig aan de servicelimiet). Vervolgens worden drie containers weergegeven waarvan de namen beginnen met de voorvoegselcontainer door waarden voor de --num-results
en --prefix
parameters op te leveren. Ten slotte wordt één container weergegeven door een bekende containernaam op te geven aan de --prefix
parameter.
Lees meer over de 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
Containereigenschappen en metagegevens lezen
Een container bevat zowel systeemeigenschappen als door de gebruiker gedefinieerde metagegevens. Er bestaan systeemeigenschappen op elke blobopslagresource. Sommige eigenschappen zijn alleen-lezen, terwijl andere kunnen worden gelezen of ingesteld. Onder de covers zijn sommige systeemeigenschappen toegewezen aan bepaalde standaard HTTP-headers.
Door de gebruiker gedefinieerde metagegevens bestaan uit een of meer naam-waardeparen die u opgeeft voor een blobopslagresource. U kunt metagegevens gebruiken om extra waarden op te slaan met de resource. Metagegevenswaarden zijn alleen bedoeld voor uw eigen doeleinden en hebben geen invloed op het gedrag van de resource.
Eigenschappen van de container
Als u de eigenschappen van een container met Azure CLI wilt weergeven, roept u de opdracht az storage container show aan.
In het volgende voorbeeld worden met de eerste benadering de eigenschappen van één benoemde container weergegeven. Daarna worden alle containers opgehaald met het voorvoegsel democontainer en doorlopen ze, waarbij hun eigenschappen worden vermeld. Vergeet niet om de tijdelijke aanduidingen te vervangen door uw eigen waarden.
#!/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
Containermetagegevens lezen en schrijven
Gebruikers met veel duizenden objecten in hun opslagaccount kunnen snel specifieke containers vinden op basis van hun metagegevens. Als u de metagegevens wilt lezen, gebruikt u de az storage container metadata show
opdracht. Als u metagegevens wilt bijwerken, moet u de az storage container metadata update
opdracht aanroepen. De methode accepteert alleen door spaties gescheiden sleutel-waardeparen. Zie de documentatie voor az storage container metadata voor meer informatie.
Het eerste voorbeeld hieronder wordt bijgewerkt en haalt vervolgens de metagegevens van een benoemde container op. In het tweede voorbeeld wordt de lijst met containers herhaald die overeenkomen met de -prefix
waarde. Containers met namen met even getallen hebben hun metagegevens ingesteld met waarden in de metagegevensvariabele .
#!/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
Containers verwijderen
Afhankelijk van uw use-case kunt u één container of een groep containers met de az storage container delete
opdracht verwijderen. Wanneer u een lijst met containers verwijdert, moet u voorwaardelijke bewerkingen gebruiken, zoals wordt weergegeven in de onderstaande voorbeelden.
Waarschuwing
Als u de volgende voorbeelden uitvoert, kunnen containers en blobs permanent worden verwijderd. Microsoft raadt aan om voorlopig verwijderen van containers in te schakelen om containers en blobs te beschermen tegen onbedoelde verwijdering. Zie Voorlopig verwijderen voor containers voor meer informatie.
#!/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
Als u voorlopig verwijderen van containers hebt ingeschakeld voor uw opslagaccount, is het mogelijk om containers op te halen die zijn verwijderd. Als de optie voor gegevensbeveiliging voor voorlopig verwijderen van uw opslagaccount is ingeschakeld, retourneert de --include-deleted
parameter containers die zijn verwijderd binnen de bijbehorende bewaarperiode. De --include-deleted
parameter kan alleen worden gebruikt om containers te retourneren wanneer deze worden gebruikt met de --prefix
parameter. Raadpleeg het artikel Voorlopig verwijderen voor containers voor meer informatie over voorlopig verwijderen.
Gebruik het volgende voorbeeld om een lijst met containers op te halen die zijn verwijderd binnen de gekoppelde bewaarperiode van het opslagaccount.
#!/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
Een voorlopig verwijderde container herstellen
Zoals vermeld in de sectie Lijstcontainers , kunt u de optie voor gegevensbeveiliging voor voorlopig verwijderen configureren in uw opslagaccount. Wanneer deze optie is ingeschakeld, is het mogelijk om containers te herstellen die zijn verwijderd binnen de bijbehorende bewaarperiode. Voordat u dit voorbeeld kunt volgen, moet u voorlopig verwijderen inschakelen en configureren voor ten minste één van uw opslagaccounts.
In de volgende voorbeelden wordt uitgelegd hoe u een voorlopig verwijderde container herstelt met de az storage container restore
opdracht. U moet waarden opgeven voor de --name
en --version
parameters om ervoor te zorgen dat de juiste versie van de container wordt hersteld. Als u het versienummer niet weet, kunt u de az storage container list
opdracht gebruiken om het op te halen, zoals wordt weergegeven in het eerste voorbeeld. In het tweede voorbeeld worden alle verwijderde containers in een specifiek opslagaccount gevonden en hersteld.
Raadpleeg het artikel Voorlopig verwijderen voor containers voor meer informatie over de optie voor gegevensbescherming voor voorlopig verwijderen.
#!/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
Een handtekening voor gedeelde toegang voor een container ophalen
Een Shared Access Signature (SAS) biedt gedelegeerde toegang tot Azure-resources. Een SAS geeft u gedetailleerde controle over hoe een client toegang heeft tot uw gegevens. U kunt bijvoorbeeld opgeven welke resources beschikbaar zijn voor de client. U kunt ook de typen bewerkingen beperken die de client kan uitvoeren en het interval opgeven waarvoor de SAS geldig is.
Een SAS wordt vaak gebruikt om tijdelijke en veilige toegang te bieden tot een client die normaal gesproken niet over machtigingen beschikt. Als u een SERVICE- of account-SAS wilt genereren, moet u waarden opgeven voor de --account-name
en --account-key
parameters. Een voorbeeld van dit scenario is een service waarmee gebruikers hun eigen gegevens kunnen lezen en schrijven naar uw opslagaccount.
Azure Storage ondersteunt drie typen handtekeningen voor gedeelde toegang: sas voor gebruikersdelegering, service en account. Zie het artikel Beperkte toegang verlenen tot Azure Storage-resources met behulp van handtekeningen voor gedeelde toegang voor meer informatie over handtekeningen voor gedeelde toegang.
Let op
Elke client die een geldige SAS heeft, heeft toegang tot gegevens in uw opslagaccount, zoals toegestaan door die SAS. Het is belangrijk om een SAS te beschermen tegen schadelijk of onbedoeld gebruik. Gebruik discretie bij het distribueren van een SAS en een plan voor het intrekken van een gecompromitteerde SAS.
In het volgende voorbeeld ziet u het proces van het configureren van een service-SAS voor een specifieke container met behulp van de az storage container generate-sas
opdracht. Omdat er een service-SAS wordt gegenereerd, haalt het voorbeeld eerst de sleutel van het opslagaccount op om door te geven als de --account-key
waarde.
In het voorbeeld wordt de SAS geconfigureerd met begin- en verlooptijden en een protocol. Ook worden de machtigingen voor verwijderen, lezen, schrijven en lijsten in de SAS opgegeven met behulp van de --permissions
parameter. U kunt verwijzen naar de volledige tabel met machtigingen in het artikel Een service-SAS maken.
Kopieer en plak de blob SAS-tokenwaarde op een veilige locatie. Het wordt slechts eenmaal weergegeven en kan niet worden opgehaald zodra Bash is gesloten. Als u de SAS-URL wilt maken, voegt u het SAS-token (URI) toe aan de URL voor de opslagservice.
#!/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
Notitie
Het SAS-token dat door de Azure CLI wordt geretourneerd, bevat geen scheidingsteken ('?') voor de URL-querytekenreeks. Als u het SAS-token toevoegt aan een resource-URL, moet u het scheidingsteken toevoegen aan de resource-URL voordat u het SAS-token toevoegt.
Volgende stappen
In dit artikel hebt u geleerd hoe u containers beheert in Blob Storage. Als u meer wilt weten over het werken met blobopslag met behulp van Azure CLI, selecteert u hieronder een optie.