Správa kontejnerů objektů blob pomocí Azure CLI

Microsoft Azure Blob Storage umožňuje ukládat velké objemy nestrukturovaných dat objektů. Úložiště objektů blob můžete použít ke shromažďování nebo zveřejnění médií, obsahu nebo dat aplikací pro uživatele. Protože všechna data objektů blob jsou uložená v kontejnerech, musíte vytvořit kontejner úložiště, abyste mohli začít nahrávat data. Další informace o úložišti objektů blob najdete v tématu Úvod do služby Azure Blob Storage.

Azure CLI je prostředí příkazového řádku Azure pro různé platformy pro správu prostředků Azure. Můžete ho používat ve svém prohlížeči prostřednictvím služby Azure Cloud Shell. Můžete ho také nainstalovat do systému macOS, Linux nebo Windows a spustit ho místně z příkazového řádku.

V tomto článku s postupy se naučíte používat Azure CLI s Bashem k práci s objekty kontejneru.

Požadavky

Pro přístup ke službě Azure Storage budete potřebovat předplatné Azure. Pokud ještě nemáte předplatné, vytvořte si před zahájením bezplatný účet .

Veškerý přístup ke službě Azure Storage probíhá prostřednictvím účtu úložiště. Pro účely tohoto rychlého startu vytvořte účet úložiště pomocí webu Azure Portal, Azure PowerShellu nebo Azure CLI. Nápovědu k vytvoření účtu úložiště najdete v tématu Vytvoření účtu úložiště.

Příprava prostředí pro rozhraní příkazového řádku Azure

  • Vždy je vhodné nainstalovat nejnovější verzi Azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Autorizace přístupu k úložišti objektů blob

Přístup k úložišti objektů blob můžete autorizovat z Azure CLI pomocí přihlašovacích údajů Microsoft Entra nebo pomocí přístupového klíče účtu úložiště. Doporučuje se používat přihlašovací údaje Microsoft Entra a příklady tohoto článku používají výhradně ID Microsoft Entra.

Příkazy Azure CLI pro operace s daty v úložišti objektů blob podporují --auth-mode parametr, který umožňuje určit, jak autorizovat danou operaci. --auth-mode Nastavte parametr na login autorizaci pomocí přihlašovacích údajů Microsoft Entra. Další informace najdete v tématu Autorizace přístupu k datům objektů blob nebo front pomocí Azure CLI.

Spuštěním login příkazu otevřete prohlížeč a připojte se k předplatnému Azure.

az login

Vytvoření kontejneru

Pokud chcete vytvořit kontejner pomocí Azure CLI, zavolejte příkaz az storage container create . Následující příklad znázorňuje tři možnosti pro vytvoření kontejnerů objektů blob pomocí az storage container create příkazu. První přístup vytvoří jeden kontejner, zatímco zbývající dva přístupy používají skriptovací operace Bash k automatizaci vytváření kontejnerů.

Pokud chcete tento příklad použít, zadejte hodnoty proměnných a ujistěte se, že jste se přihlásili. Nezapomeňte nahradit zástupné hodnoty v hranatých závorkách vlastními hodnotami.

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

Výpis kontejnerů

az storage container list Pomocí příkazu načtěte seznam kontejnerů úložiště. Pokud chcete vrátit seznam kontejnerů, jejichž názvy začínají daným řetězcem znaků, předejte řetězec jako hodnotu parametru --prefix .

Parametr --num-results lze použít k omezení počtu kontejnerů vrácených požadavkem. Azure Storage omezuje počet kontejnerů vrácených jednou operací výpisu na 5 000. Tento limit zajišťuje načtení spravovatelných objemů dat. Pokud počet vrácených kontejnerů překročí --num-results hodnotu nebo limit služby, vrátí se token pro pokračování. Tento token umožňuje použít více požadavků k načtení libovolného počtu kontejnerů.

Pomocí parametru --query můžete také spustit dotaz JMESPath na výsledky příkazů. JMESPath je dotazovací jazyk JSON, který umožňuje vybrat a upravit data vrácená z výstupu rozhraní příkazového řádku. Před formátováním se dotazy spouštějí ve výstupu JSON. Další informace najdete v tématu Dotazování výstupu příkazu Azure CLI pomocí dotazu JMESPath.

Následující příklad nejprve uvádí maximální počet kontejnerů (s výhradou limitu služby). Dále vypíše tři kontejnery, jejichž názvy začínají kontejnerem předpony zadáním hodnot pro parametry --num-results a --prefix parametry. Nakonec se jeden kontejner zobrazí zadáním známého názvu kontejneru parametru --prefix .

Přečtěte si další informace o příkazu 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

Čtení vlastností kontejneru a metadat

Kontejner zveřejňuje systémové vlastnosti i uživatelsky definovaná metadata. Systémové vlastnosti existují pro každý prostředek úložiště objektů blob. Některé vlastnosti jsou jen pro čtení, zatímco jiné můžou být jen pro čtení nebo nastavení. Pod popisky se některé systémové vlastnosti mapují na určité standardní hlavičky HTTP.

Uživatelsky definovaná metadata se skládají z jednoho nebo více dvojic název-hodnota, které zadáte pro prostředek úložiště objektů blob. Metadata můžete použít k uložení dalších hodnot s prostředkem. Hodnoty metadat jsou určené jenom pro vaše vlastní účely a nemají vliv na chování prostředku.

Vlastnosti kontejneru

Pokud chcete zobrazit vlastnosti kontejneru pomocí Azure CLI, zavolejte příkaz az storage container show .

V následujícím příkladu první přístup zobrazí vlastnosti jednoho pojmenovaného kontejneru. Následně načte všechny kontejnery s předponou demo-container- a iteruje je a zobrazí jejich vlastnosti. Nezapomeňte nahradit zástupné hodnoty vlastními hodnotami.

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

Čtení a zápis metadat kontejneru

Uživatelé, kteří mají v účtu úložiště mnoho tisíc objektů, můžou rychle vyhledat konkrétní kontejnery na základě jejich metadat. Ke čtení metadat použijete az storage container metadata show příkaz. Pokud chcete aktualizovat metadata, budete muset volat az storage container metadata update příkaz. Metoda přijímá pouze páry klíč-hodnota oddělené mezerami. Další informace najdete v dokumentaci k metadatem kontejneru az storage.

První příklad níže aktualizuje a pak načte metadata pojmenovaného kontejneru. Druhý příklad iteruje seznam kontejnerů odpovídajících hodnotě -prefix . Kontejnery s názvy obsahujícími sudá čísla mají svá metadata nastavená s hodnotami obsaženými v proměnné metadat .

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

Odstraňování kontejnerů

V závislosti na vašem případu použití můžete pomocí příkazu odstranit jeden kontejner nebo skupinu kontejnerů az storage container delete . Při odstraňování seznamu kontejnerů budete muset použít podmíněné operace, jak je znázorněno v následujících příkladech.

Upozorňující

Spuštěním následujících příkladů můžete trvale odstranit kontejnery a objekty blob. Microsoft doporučuje povolit obnovitelné odstranění kontejneru, aby chránil kontejnery a objekty blob před náhodným odstraněním. Další informace najdete v tématu Obnovitelné odstranění kontejnerů.

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

Pokud máte pro účet úložiště povolené obnovitelné odstranění kontejneru, je možné načíst odstraněné kontejnery. Pokud je povolená možnost obnovitelného odstranění dat vašeho účtu úložiště, --include-deleted vrátí parametr kontejnery odstraněné během přidružené doby uchovávání. Tento --include-deleted parametr lze použít pouze k vrácení kontejnerů při použití s parametrem --prefix . Další informace o obnovitelném odstranění najdete v článku Obnovitelné odstranění kontejnerů .

Pomocí následujícího příkladu načtěte seznam kontejnerů odstraněných v přidružené době uchovávání účtu úložiště.

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

Obnovení obnovitelně odstraněného kontejneru

Jak je uvedeno v části Seznam kontejnerů , můžete u svého účtu úložiště nakonfigurovat možnost ochrany dat obnovitelného odstranění. Pokud je tato možnost povolená, je možné obnovit kontejnery odstraněné během přidružené doby uchovávání informací. Než budete moct postupovat podle tohoto příkladu, budete muset povolit obnovitelné odstranění a nakonfigurovat ho alespoň na jednom z vašich účtů úložiště.

Následující příklady vysvětlují, jak pomocí příkazu obnovit obnovitelně odstraněný kontejner az storage container restore . Abyste zajistili, že se obnoví správná verze kontejneru, budete muset zadat hodnoty a --name--version parametry. Pokud číslo verze neznáte, můžete ho pomocí az storage container list příkazu načíst, jak je znázorněno v prvním příkladu. Druhý příklad najde a obnoví všechny odstraněné kontejnery v rámci konkrétního účtu úložiště.

Další informace o možnosti obnovitelného odstranění dat najdete v článku Obnovitelné odstranění kontejnerů .

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

Získání sdíleného přístupového podpisu pro kontejner

Sdílený přístupový podpis (SAS) poskytuje delegovaný přístup k prostředkům Azure. Sas poskytuje podrobnou kontrolu nad tím, jak může klient přistupovat k vašim datům. Můžete například určit, které prostředky mají klient k dispozici. Můžete také omezit typy operací, které může klient provádět, a zadat interval, po který je SAS platný.

Sdílený přístupový podpis se běžně používá k poskytování dočasného a zabezpečeného přístupu k klientovi, který by normálně neměl oprávnění. Pokud chcete vygenerovat SAS služby nebo účtu, budete muset zadat hodnoty pro parametry --account-name a --account-key hodnoty. Příkladem tohoto scénáře by byla služba, která uživatelům umožňuje číst a zapisovat vlastní data do vašeho účtu úložiště.

Azure Storage podporuje tři typy sdílených přístupových podpisů: delegování uživatele, službu a SAS účtu. Další informace o sdílených přístupových podpisech najdete v článku Udělení omezeného přístupu k prostředkům azure Storage pomocí sdílených přístupových podpisů .

Upozornění

Každý klient, který má platný SAS, má přístup k datům ve vašem účtu úložiště, jak to povoluje tento SAS. Je důležité chránit SAS před škodlivým nebo nezamýšleným použitím. Při distribuci sdíleného přístupového podpisu použijte vlastní uvážení a vytvořte plán pro odvolání ohroženého sdíleného přístupového podpisu.

Následující příklad ukazuje proces konfigurace SAS služby pro konkrétní kontejner pomocí az storage container generate-sas příkazu. Protože generuje SAS služby, příklad nejprve načte klíč účtu úložiště, který se má předat jako --account-key hodnota.

Příklad nakonfiguruje SAS s časy spuštění a vypršení platnosti a protokolem. Pomocí parametru také určí oprávnění k odstranění, čtení, zápisu a výpisu--permissions v SAS. Můžete odkazovat na úplnou tabulku oprávnění v článku Vytvoření SAS služby.

Zkopírujte a vložte hodnotu tokenu SAS objektu blob do zabezpečeného umístění. Zobrazí se jenom jednou a po zavření bashe se nedá načíst. Pokud chcete vytvořit adresu URL SAS, připojte token SAS (URI) k adrese URL služby úložiště.

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

Poznámka:

Token SAS vrácený Azure CLI neobsahuje znak oddělovače (?) řetězce dotazu adresy URL. Pokud k adrese URL prostředku připojujete token SAS, nezapomeňte před připojením tokenu SAS k adrese URL prostředku připojit znak oddělovače.

Další kroky

V tomto článku s postupy jste se naučili spravovat kontejnery ve službě Blob Storage. Pokud chcete získat další informace o práci s úložištěm objektů blob pomocí Azure CLI, vyberte níže požadovanou možnost.