Zarządzanie kontenerami obiektów blob przy użyciu interfejsu wiersza polecenia platformy Azure
Usługa Microsoft Azure Blob Storage umożliwia przechowywanie dużych ilości danych obiektów bez struktury. Magazyn obiektów blob służy do zbierania lub uwidaczniania danych multimediów, zawartości lub aplikacji dla użytkowników. Ponieważ wszystkie dane obiektów blob są przechowywane w kontenerach, przed rozpoczęciem przekazywania danych należy utworzyć kontener magazynu. Aby dowiedzieć się więcej na temat magazynu obiektów blob, przeczytaj wprowadzenie do usługi Azure Blob Storage.
Interfejs wiersza polecenia platformy Azure to wieloplatformowe środowisko wiersza polecenia platformy Azure do zarządzania zasobami platformy Azure. Można używać go w przeglądarce za pośrednictwem usługi Azure Cloud Shell. Można go również zainstalować w systemie macOS, Linux lub Windows i uruchomić go lokalnie z poziomu wiersza polecenia.
W tym artykule z instrukcjami dowiesz się, jak używać interfejsu wiersza polecenia platformy Azure z powłoką Bash do pracy z obiektami kontenera.
Wymagania wstępne
Aby uzyskać dostęp do usługi Azure Storage, potrzebujesz subskrypcji platformy Azure. Jeśli nie masz jeszcze subskrypcji, przed rozpoczęciem utwórz bezpłatne konto .
Cały dostęp do usługi Azure Storage odbywa się za pośrednictwem konta magazynu. Na potrzeby tego samouczka Szybki start utwórz konto magazynu przy użyciu witryny Azure Portal, programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać pomoc dotyczącą tworzenia konta magazynu, zobacz Tworzenie konta magazynu.
Przygotowywanie środowiska dla interfejsu wiersza polecenia platformy Azure
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Zawsze dobrym pomysłem jest zainstalowanie najnowszej wersji interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.
Autoryzowanie dostępu do usługi Blob Storage
Dostęp do usługi Blob Storage można autoryzować za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu poświadczeń usługi Microsoft Entra lub klucza dostępu do konta magazynu. Korzystanie z poświadczeń firmy Microsoft Entra jest zalecane, a w przykładach tego artykułu są używane wyłącznie identyfikator Microsoft Entra ID.
Polecenia interfejsu wiersza polecenia platformy Azure dla operacji danych w usłudze Blob Storage obsługują --auth-mode
parametr, który umożliwia określenie sposobu autoryzowania danej operacji. Ustaw parametr na --auth-mode
wartość , aby login
autoryzować przy użyciu poświadczeń firmy Microsoft Entra. Aby uzyskać więcej informacji, zobacz Autoryzowanie dostępu do danych obiektów blob lub kolejek za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom polecenie , login
aby otworzyć przeglądarkę i połączyć się z subskrypcją platformy Azure.
az login
Tworzenie kontenera
Aby utworzyć kontener za pomocą interfejsu wiersza polecenia platformy Azure, wywołaj polecenie az storage container create . Poniższy przykład ilustruje trzy opcje tworzenia kontenerów obiektów blob za az storage container create
pomocą polecenia . Pierwsze podejście tworzy pojedynczy kontener, podczas gdy pozostałe dwa podejścia używają operacji skryptów powłoki Bash w celu zautomatyzowania tworzenia kontenera.
Aby użyć tego przykładu, podaj wartości zmiennych i upewnij się, że zalogowano się. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami.
#!/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
Wyświetlanie listy kontenerów
Użyj polecenia , az storage container list
aby pobrać listę kontenerów magazynu. Aby zwrócić listę kontenerów, których nazwy zaczynają się od danego ciągu znaków, przekaż ciąg jako wartość parametru --prefix
.
Parametr --num-results
może służyć do ograniczania liczby kontenerów zwracanych przez żądanie. Usługa Azure Storage ogranicza liczbę kontenerów zwracanych przez operację pojedynczej listy do 5000. Ten limit zapewnia pobieranie możliwych do zarządzania ilości danych. Jeśli liczba zwróconych kontenerów przekracza --num-results
wartość lub limit usługi, zwracany jest token kontynuacji. Ten token umożliwia pobranie dowolnej liczby kontenerów przy użyciu wielu żądań.
Możesz również użyć parametru --query
, aby wykonać zapytanie JMESPath na wynikach poleceń. JMESPath to język zapytań dla formatu JSON, który umożliwia wybieranie i modyfikowanie danych zwracanych z danych wyjściowych interfejsu wiersza polecenia. Zapytania są wykonywane na danych wyjściowych JSON, zanim będzie można je sformatować. Aby uzyskać więcej informacji, zobacz How to query Azure CLI command output using a JMESPath query (Jak wykonywać zapytania dotyczące poleceń interfejsu wiersza polecenia platformy Azure przy użyciu zapytania JMESPath).
W poniższym przykładzie najpierw wymieniono maksymalną liczbę kontenerów (podlega limitowi usługi). Następnie zostanie wyświetlona lista trzech kontenerów, których nazwy zaczynają się od prefiksu kontenera, podając wartości parametrów --num-results
i --prefix
. Na koniec jeden kontener jest wyświetlany przez podanie znanej nazwy kontenera do parametru --prefix
.
Dowiedz się więcej na temat listy 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
Odczytywanie właściwości i metadanych kontenera
Kontener uwidacznia zarówno właściwości systemu, jak i metadane zdefiniowane przez użytkownika. Właściwości systemu istnieją w każdym zasobie magazynu obiektów blob. Niektóre właściwości są tylko do odczytu, podczas gdy inne mogą być odczytywane lub ustawiane. Pod osłonami niektóre właściwości systemu są mapowanie na niektóre standardowe nagłówki HTTP.
Metadane zdefiniowane przez użytkownika składają się z co najmniej jednej pary nazwa-wartość określonej dla zasobu magazynu obiektów blob. Za pomocą metadanych można przechowywać dodatkowe wartości z zasobem. Wartości metadanych są przeznaczone tylko do własnych celów i nie mają wpływu na zachowanie zasobu.
Właściwości kontenera
Aby wyświetlić właściwości kontenera za pomocą interfejsu wiersza polecenia platformy Azure, wywołaj polecenie az storage container show .
W poniższym przykładzie pierwsze podejście wyświetla właściwości pojedynczego nazwanego kontenera. Następnie pobiera wszystkie kontenery z prefiksem demo-container- i iteruje je, wyświetlając ich właściwości. Pamiętaj, aby zastąpić wartości symboli zastępczych własnymi wartościami.
#!/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
Odczytywanie i zapisywanie metadanych kontenera
Użytkownicy, którzy mają wiele tysięcy obiektów na koncie magazynu, mogą szybko zlokalizować określone kontenery na podstawie ich metadanych. Aby odczytać metadane, użyjesz az storage container metadata show
polecenia . Aby zaktualizować metadane, należy wywołać az storage container metadata update
polecenie . Metoda akceptuje tylko pary klucz-wartość oddzielona spacją. Aby uzyskać więcej informacji, zobacz dokumentację az storage container metadata .
Pierwszy przykład poniżej aktualizuje, a następnie pobiera metadane nazwanego kontenera. Drugi przykład iteruje listę kontenerów pasujących do -prefix
wartości. Kontenery z nazwami zawierającymi liczby parzystych mają zestaw metadanych z wartościami zawartymi w zmiennej metadanych .
#!/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
Usuwanie kontenerów
W zależności od przypadku użycia można usunąć pojedynczy kontener lub grupę kontenerów za az storage container delete
pomocą polecenia . Podczas usuwania listy kontenerów należy użyć operacji warunkowych, jak pokazano w poniższych przykładach.
Ostrzeżenie
Uruchomienie poniższych przykładów może trwale usunąć kontenery i obiekty blob. Firma Microsoft zaleca włączenie usuwania nietrwałego kontenera w celu ochrony kontenerów i obiektów blob przed przypadkowym usunięciem. Aby uzyskać więcej informacji, zobacz Usuwanie nietrwałe dla kontenerów.
#!/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
Jeśli masz włączone usuwanie nietrwałe kontenera dla konta magazynu, możliwe jest pobranie kontenerów, które zostały usunięte. Jeśli opcja ochrony danych usuwania nietrwałego konta magazynu jest włączona, --include-deleted
parametr zwróci kontenery usunięte w skojarzonym okresie przechowywania. Parametr --include-deleted
może służyć tylko do zwracania kontenerów w przypadku użycia z parametrem --prefix
. Aby dowiedzieć się więcej na temat usuwania nietrwałego, zapoznaj się z artykułem Usuwanie nietrwałe dla kontenerów .
Skorzystaj z poniższego przykładu, aby pobrać listę kontenerów usuniętych w skojarzonym okresie przechowywania konta magazynu.
#!/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
Przywracanie kontenera usuniętego nietrwale
Jak wspomniano w sekcji Wyświetlanie kontenerów , możesz skonfigurować opcję ochrony danych usuwania nietrwałego na koncie magazynu. Po włączeniu można przywrócić kontenery usunięte w skojarzonym okresie przechowywania. Zanim będzie można skorzystać z tego przykładu, musisz włączyć usuwanie nietrwałe i skonfigurować je na co najmniej jednym z kont magazynu.
W poniższych przykładach wyjaśniono, jak przywrócić kontener usunięty nietrwale za az storage container restore
pomocą polecenia . Musisz podać wartości parametrów --name
i --version
, aby upewnić się, że została przywrócona poprawna wersja kontenera. Jeśli nie znasz numeru wersji, możesz użyć az storage container list
polecenia , aby pobrać go, jak pokazano w pierwszym przykładzie. Drugi przykład umożliwia znalezienie i przywrócenie wszystkich usuniętych kontenerów na określonym koncie magazynu.
Aby dowiedzieć się więcej na temat opcji ochrony danych usuwania nietrwałego, zapoznaj się z artykułem Usuwanie nietrwałe dla kontenerów .
#!/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
Uzyskiwanie sygnatury dostępu współdzielonego dla kontenera
Sygnatura dostępu współdzielonego (SAS) zapewnia delegowany dostęp do zasobów platformy Azure. Sygnatura dostępu współdzielonego zapewnia szczegółową kontrolę nad sposobem uzyskiwania dostępu do danych przez klienta. Można na przykład określić, które zasoby są dostępne dla klienta. Można również ograniczyć typy operacji, które klient może wykonać, i określić interwał, dla którego sygnatura dostępu współdzielonego jest prawidłowa.
Sygnatura dostępu współdzielonego jest często używana do zapewnienia tymczasowego i bezpiecznego dostępu do klienta, który normalnie nie ma uprawnień. Aby wygenerować sygnaturę dostępu współdzielonego usługi lub konta, musisz podać wartości parametrów --account-name
i --account-key
. Przykładem tego scenariusza jest usługa, która umożliwia użytkownikom odczytywanie i zapisywanie własnych danych na koncie magazynu.
Usługa Azure Storage obsługuje trzy typy sygnatur dostępu współdzielonego: delegowanie użytkownika, usługę i sygnaturę dostępu współdzielonego konta. Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz artykuł Udzielanie ograniczonego dostępu do zasobów usługi Azure Storage przy użyciu sygnatur dostępu współdzielonego.
Uwaga
Każdy klient, który posiada prawidłową sygnaturę dostępu współdzielonego, może uzyskać dostęp do danych na koncie magazynu zgodnie z zezwoleniem na ten sygnaturę dostępu współdzielonego. Ważne jest, aby chronić sygnaturę dostępu współdzielonego przed złośliwym lub niezamierzonym użyciem. Użyj uznania w dystrybucji sygnatury dostępu współdzielonego i zaplanuj odwołanie naruszonej sygnatury dostępu współdzielonego.
Poniższy przykład ilustruje proces konfigurowania sygnatury dostępu współdzielonego usługi dla określonego kontenera az storage container generate-sas
przy użyciu polecenia . Ponieważ generuje sygnaturę dostępu współdzielonego usługi, w przykładzie najpierw pobierany jest klucz konta magazynu, który zostanie przekazany jako --account-key
wartość.
W przykładzie zostanie skonfigurowana sygnatura dostępu współdzielonego z czasem rozpoczęcia i wygaśnięcia oraz protokołem. Określi również uprawnienia usuwania, odczytu, zapisu i listy w sygnaturze dostępu współdzielonego przy użyciu parametru --permissions
. Pełną tabelę uprawnień można uzyskać w artykule Tworzenie sygnatury dostępu współdzielonego usługi .
Skopiuj i wklej wartość tokenu SAS obiektu blob w bezpiecznej lokalizacji. Będzie on wyświetlany tylko raz i nie można go pobrać po zamknięciu powłoki Bash. Aby utworzyć adres URL sygnatury dostępu współdzielonego, dołącz token SAS (URI) do adresu URL usługi magazynu.
#!/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
Uwaga
Token SAS zwrócony przez interfejs wiersza polecenia platformy Azure nie zawiera znaku ogranicznika ('?') dla ciągu zapytania adresu URL. Jeśli dołączasz token SAS do adresu URL zasobu, pamiętaj, aby dołączyć znak ogranicznika do adresu URL zasobu przed dołączeniem tokenu SAS.
Następne kroki
W tym artykule z instrukcjami przedstawiono sposób zarządzania kontenerami w usłudze Blob Storage. Aby dowiedzieć się więcej na temat pracy z usługą Blob Storage przy użyciu interfejsu wiersza polecenia platformy Azure, wybierz opcję poniżej.