Dela via


Hantera blobcontainrar med Azure CLI

Med Microsoft Azure Blob Storage kan du lagra stora mängder ostrukturerade objektdata. Du kan använda bloblagring för att samla in eller exponera media, innehåll eller programdata för användare. Eftersom alla blobdata lagras i containrar måste du skapa en lagringscontainer innan du kan börja ladda upp data. Mer information om bloblagring finns i Introduktion till Azure Blob Storage.

Azure CLI är Azures plattformsoberoende kommandoradsupplevelse för hantering av Azure-resurser. Du kan använda det i din webbläsare med Azure Cloud Shell. Du kan också installera den på macOS, Linux eller Windows och köra den lokalt från kommandoraden.

I den här instruktionsartikeln lär du dig att använda Azure CLI med Bash för att arbeta med containerobjekt.

Förutsättningar

Du behöver en Azure-prenumeration för att få åtkomst till Azure Storage. Om du inte redan har en prenumeration skapar du ett kostnadsfritt konto innan du börjar.

All åtkomst till Azure Storage sker via ett lagringskonto. För den här snabbstarten skapar du ett lagringskonto med hjälp av Azure-portalen, Azure PowerShell eller Azure CLI. Hjälp med att skapa ett lagringskonto finns i Skapa ett lagringskonto.

Förbereda din miljö för Azure CLI

  • Det är alltid en bra idé att installera den senaste versionen av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Auktorisera åtkomst till Blob Storage

Du kan auktorisera åtkomst till Blob Storage från Azure CLI antingen med Microsoft Entra-autentiseringsuppgifter eller med hjälp av åtkomstnyckeln för lagringskontot. Användning av Microsoft Entra-autentiseringsuppgifter rekommenderas, och i den här artikelns exempel används Microsoft Entra-ID exklusivt.

Azure CLI-kommandon för dataåtgärder mot Blob Storage stöder parametern --auth-mode , som gör att du kan ange hur du auktoriserar en viss åtgärd. Ange parametern --auth-mode till login för att auktorisera med Microsoft Entra-autentiseringsuppgifter. Mer information finns i Auktorisera åtkomst till blob- eller ködata med Azure CLI.

login Kör kommandot för att öppna en webbläsare och ansluta till din Azure-prenumeration.

az login

Skapa en container

Om du vill skapa en container med Azure CLI anropar du kommandot az storage container create . I följande exempel visas tre alternativ för att skapa blobcontainrar med az storage container create kommandot . Den första metoden skapar en enda container, medan de återstående två metoderna använder Bash-skriptåtgärder för att automatisera skapandet av containrar.

Om du vill använda det här exemplet anger du värden för variablerna och ser till att du har loggat in. Kom ihåg att ersätta platshållarvärdena inom hakparenteser med dina egna värden.

#!/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

Visa en lista med containrar

az storage container list Använd kommandot för att hämta en lista över lagringscontainrar. Om du vill returnera en lista över containrar vars namn börjar med en viss teckensträng skickar du strängen --prefix som parametervärde.

Parametern --num-results kan användas för att begränsa antalet containrar som returneras av begäran. Azure Storage begränsar antalet containrar som returneras av en enskild listningsåtgärd till 5 000. Den här gränsen säkerställer att hanterbara mängder data hämtas. Om antalet containrar som returneras överskrider antingen --num-results värdet eller tjänstgränsen returneras en fortsättningstoken. Med den här token kan du använda flera begäranden för att hämta valfritt antal containrar.

Du kan också använda parametern --query för att köra en JMESPath-fråga på resultatet av kommandon. JMESPath är ett frågespråk för JSON som gör att du kan välja och ändra data som returneras från CLI-utdata. Frågor körs på JSON-utdata innan de kan formateras. Mer information finns i Köra frågor mot Azure CLI-kommandoutdata med hjälp av en JMESPath-fråga.

I följande exempel visas först det maximala antalet containrar (beroende på tjänstgränsen). Därefter visas tre containrar vars namn börjar med prefixcontainern genom att ange värden för parametrarna --num-results och --prefix . Slutligen visas en enda container genom att ange ett känt containernamn till parametern --prefix .

Läs mer om listan az storage container.

#!/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

Läsa containeregenskaper och metadata

En container exponerar både systemegenskaper och användardefinierade metadata. Systemegenskaper finns på varje bloblagringsresurs. Vissa egenskaper är skrivskyddade, medan andra kan läsas eller ställas in. Under täcket mappas vissa systemegenskaper till vissa standard-HTTP-huvuden.

Användardefinierade metadata består av ett eller flera namn/värde-par som du anger för en bloblagringsresurs. Du kan använda metadata för att lagra ytterligare värden med resursen. Metadatavärden är endast för dina egna syften och påverkar inte hur resursen beter sig.

Egenskaper för container

Om du vill visa egenskaperna för en container med Azure CLI anropar du kommandot az storage container show .

I följande exempel visar den första metoden egenskaperna för en enda namngiven container. Därefter hämtas alla containrar med democontainerns prefix och itererar genom dem och visar deras egenskaper. Kom ihåg att ersätta platshållarvärdena med dina egna värden.

#!/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

Läsa och skriva containermetadata

Användare som har tusentals objekt i sitt lagringskonto kan snabbt hitta specifika containrar baserat på deras metadata. Om du vill läsa metadata använder az storage container metadata show du kommandot . Om du vill uppdatera metadata måste du anropa az storage container metadata update kommandot. Metoden accepterar endast blankstegsavgränsade nyckel/värde-par. Mer information finns i dokumentationen om az storage-containermetadata .

Det första exemplet nedan uppdaterar och hämtar sedan en namngiven containers metadata. Det andra exemplet itererar listan över containrar som matchar -prefix värdet. Containrar med namn som innehåller jämna tal har sina metadata inställda med värden i metadatavariabeln .

#!/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

Ta bort containrar

Beroende på ditt användningsfall kan du ta bort en enda container eller en grupp containrar med az storage container delete kommandot . När du tar bort en lista med containrar måste du använda villkorsstyrda åtgärder enligt exemplen nedan.

Varning

Om du kör följande exempel kan containrar och blobar tas bort permanent. Microsoft rekommenderar att du aktiverar mjuk borttagning av containrar för att skydda containrar och blobar från oavsiktlig borttagning. Mer information finns i Mjuk borttagning för containrar.

#!/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

Om du har aktiverat mjuk borttagning av containrar för ditt lagringskonto går det att hämta containrar som har tagits bort. Om lagringskontots alternativ för mjuk borttagning av dataskydd är aktiverat returnerar parametern --include-deleted containrar som tagits bort inom den associerade kvarhållningsperioden. Parametern --include-deleted kan bara användas för att returnera containrar när den används med parametern --prefix . Mer information om mjuk borttagning finns i artikeln Mjuk borttagning för containrar .

Använd följande exempel för att hämta en lista över containrar som tagits bort inom lagringskontots associerade kvarhållningsperiod.

#!/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

Återställa en mjuk borttagningscontainer

Som du nämnde i avsnittet Listcontainrar kan du konfigurera alternativet mjuk borttagning av dataskydd på ditt lagringskonto. När det är aktiverat går det att återställa containrar som tagits bort inom den associerade kvarhållningsperioden. Innan du kan följa det här exemplet måste du aktivera mjuk borttagning och konfigurera den på minst ett av dina lagringskonton.

I följande exempel förklaras hur du återställer en mjuk borttagningscontainer med az storage container restore kommandot . Du måste ange värden för parametrarna --name och --version för att säkerställa att rätt version av containern återställs. Om du inte känner till versionsnumret kan du använda az storage container list kommandot för att hämta det som det visas i det första exemplet. Det andra exemplet hittar och återställer alla borttagna containrar i ett specifikt lagringskonto.

Mer information om dataskyddsalternativet mjuk borttagning finns i artikeln Mjuk borttagning för containrar .

#!/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

Hämta en signatur för delad åtkomst för en container

En signatur för delad åtkomst (SAS) ger delegerad åtkomst till Azure-resurser. En SAS ger dig detaljerad kontroll över hur en klient kan komma åt dina data. Du kan till exempel ange vilka resurser som är tillgängliga för klienten. Du kan också begränsa vilka typer av åtgärder som klienten kan utföra och ange det intervall som SAS är giltigt för.

En SAS används ofta för att ge tillfällig och säker åtkomst till en klient som normalt inte skulle ha behörighet. Om du vill generera antingen en tjänst eller konto-SAS måste du ange värden för parametrarna --account-name och --account-key . Ett exempel på det här scenariot är en tjänst som gör det möjligt för användare att läsa och skriva sina egna data till ditt lagringskonto.

Azure Storage har stöd för tre typer av signaturer för delad åtkomst: användardelegering, tjänst och konto-SAS. Mer information om signaturer för delad åtkomst finns i artikeln Bevilja begränsad åtkomst till Azure Storage-resurser med signaturer för delad åtkomst.

Varning

Alla klienter som har en giltig SAS kan komma åt data i ditt lagringskonto enligt sas-tillstånd. Det är viktigt att skydda en SAS från skadlig eller oavsiktlig användning. Använd diskretion när du distribuerar en SAS och ha en plan för att återkalla en komprometterad SAS.

I följande exempel visas hur du konfigurerar en tjänst-SAS för en specifik container med hjälp av az storage container generate-sas kommandot . Eftersom det genererar en tjänst-SAS hämtar exemplet först lagringskontonyckeln för att skickas som --account-key värdet.

Exemplet konfigurerar SAS med start- och utgångstider och ett protokoll. Den anger också behörigheterna ta bort, läsa, skriva och lista i SAS med hjälp av parametern --permissions . Du kan referera till den fullständiga behörighetstabellen i artikeln Skapa en tjänst-SAS .

Kopiera och klistra in värdet för Blob SAS-token på en säker plats. Den visas bara en gång och kan inte hämtas när Bash har stängts. Om du vill skapa SAS-URL:en lägger du till SAS-token (URI) i URL:en för lagringstjänsten.

#!/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

Kommentar

SAS-token som returneras av Azure CLI innehåller inte avgränsartecknet (?) för URL-frågesträngen. Om du lägger till SAS-token till en resurs-URL, kom ihåg att lägga till avgränsartecknet i resurs-URL:en innan du lägger till SAS-token.

Nästa steg

I den här artikeln har du lärt dig hur du hanterar containrar i Blob Storage. Om du vill veta mer om hur du arbetar med bloblagring med hjälp av Azure CLI väljer du ett alternativ nedan.