Azure CLI kullanarak blob kapsayıcılarını yönetme

Microsoft Azure Blob Depolama, büyük miktarlarda yapılandırılmamış nesne verilerini depolamanıza olanak tanır. Blob depolamayı medya, içerik veya uygulama verilerini kullanıcılara toplamak veya kullanıma açmak için kullanabilirsiniz. Tüm blob verileri kapsayıcılar içinde depolandığından, verileri karşıya yüklemeye başlamadan önce bir depolama kapsayıcısı oluşturmanız gerekir. Blob depolama hakkında daha fazla bilgi edinmek için Bkz . Azure Blob depolamaya giriş.

Azure CLI, Azure'ın Azure kaynaklarını yönetmeye yönelik platformlar arası komut satırı deneyimidir. Azure Cloud Shell ile kendi tarayıcınızda da kullanabilirsiniz. Ayrıca macOS, Linux veya Windows'a yükleyebilir ve komut satırından yerel olarak çalıştırabilirsiniz.

Bu nasıl yapılır makalesinde, kapsayıcı nesneleriyle çalışmak için Bash ile Azure CLI kullanmayı öğreneceksiniz.

Önkoşullar

Azure Depolama erişmek için bir Azure aboneliğiniz olmalıdır. Henüz aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Azure Depolama erişimi bir depolama hesabı üzerinden gerçekleştirilir. Bu hızlı başlangıç için Azure portalını, Azure PowerShell'i veya Azure CLI'yı kullanarak bir depolama hesabı oluşturun. Depolama hesabı oluşturma konusunda yardım için bkz . Depolama hesabı oluşturma.

Ortamınızı Azure CLI’ye hazırlama

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Azure CLI'nın en son sürümünü yüklemek her zaman iyi bir fikirdir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Blob depolamaya erişimi yetkilendirme

Azure CLI'dan Blob depolamaya erişimi Microsoft Entra kimlik bilgileriyle veya depolama hesabı erişim anahtarını kullanarak yetkileyebilirsiniz. Microsoft Entra kimlik bilgilerinin kullanılması önerilir ve bu makalenin örneklerinde yalnızca Microsoft Entra Kimliği kullanılır.

Blob depolamaya karşı veri işlemleri için Azure CLI komutları, belirli bir işlemin nasıl yetkilendirileceğini belirtmenize olanak tanıyan parametresini destekler --auth-mode . Parametresini --auth-mode Microsoft Entra kimlik bilgileriyle yetkilendirmek için login olarak ayarlayın. Daha fazla bilgi için bkz . Azure CLI ile blob veya kuyruk verilerine erişimi yetkilendirme.

login Tarayıcıyı açmak ve Azure aboneliğinize bağlanmak için komutunu çalıştırın.

az login

Kapsayıcı oluşturma

Azure CLI ile kapsayıcı oluşturmak için az storage container create komutunu çağırın. Aşağıdaki örnekte, komutuyla blob kapsayıcıları oluşturmaya yönelik üç seçenek gösterilmektediraz storage container create. İlk yaklaşım tek bir kapsayıcı oluştururken, kalan iki yaklaşım kapsayıcı oluşturmayı otomatikleştirmek için Bash betik işlemlerini kullanır.

Bu örneği kullanmak için değişkenlerin değerlerini sağlayın ve oturum açtığınızdan emin olun. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın.

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

Kapsayıcıları listeleme

Depolama kapsayıcılarının az storage container list listesini almak için komutunu kullanın. Adları belirli bir karakter dizesiyle başlayan kapsayıcıların listesini döndürmek için dizeyi --prefix parametre değeri olarak geçirin.

parametresi, --num-results istek tarafından döndürülen kapsayıcı sayısını sınırlamak için kullanılabilir. Azure Depolama tek bir listeleme işlemi tarafından döndürülen kapsayıcı sayısını 5000 ile sınırlar. Bu sınır, yönetilebilir miktarda veri alınmasını sağlar. Döndürülen kapsayıcı sayısı değeri veya hizmet sınırını aşarsa --num-results , devam belirteci döndürülür. Bu belirteç, istediğiniz sayıda kapsayıcıyı almak için birden çok istek kullanmanıza olanak tanır.

Komut sonuçları üzerinde --query JMESPath sorgusu yürütmek için parametresini de kullanabilirsiniz. JMESPath, CLI çıkışından döndürülen verileri seçmenize ve değiştirmenize olanak tanıyan bir JSON sorgu dilidir. Sorgular biçimlendirilmeden önce JSON çıkışında yürütülür. Daha fazla bilgi için bkz . JMESPath sorgusu kullanarak Azure CLI komut çıktısını sorgulama.

Aşağıdaki örnekte ilk olarak kapsayıcı sayısı üst sınırı (hizmet sınırına tabidir) listelenir. Ardından, ve --prefix parametreleri için değerler sağlayarak adları ön ek kapsayıcısıyla başlayan üç kapsayıcıyı--num-results listeler. Son olarak, parametresine bilinen bir kapsayıcı adı --prefix girilerek tek bir kapsayıcı listelenir.

az storage container list hakkında daha fazla bilgi edinin.

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

Kapsayıcı özelliklerini ve meta verilerini okuma

Kapsayıcı hem sistem özelliklerini hem de kullanıcı tanımlı meta verileri kullanıma sunar. Sistem özellikleri her blob depolama kaynağında bulunur. Bazı özellikler salt okunurken, diğerleri okunabilir veya ayarlanabilir. Bazı sistem özellikleri, kapakların altında belirli standart HTTP üst bilgileriyle eşleniyor.

Kullanıcı tanımlı meta veriler, blob depolama kaynağı için belirttiğiniz bir veya daha fazla ad-değer çiftini içerir. Kaynakla birlikte ek değerleri depolamak için meta verileri kullanabilirsiniz. Meta veri değerleri yalnızca sizin amaçlarınıza yöneliktir ve kaynağın davranışını etkilemez.

Kapsayıcı özellikleri

Azure CLI ile bir kapsayıcının özelliklerini görüntülemek için az storage container show komutunu çağırın.

Aşağıdaki örnekte, ilk yaklaşım tek bir adlandırılmış kapsayıcının özelliklerini görüntüler. Daha sonra demo-container- ön ekiyle tüm kapsayıcıları alır ve özelliklerini listeleyerek bunlar arasında yinelenir. Yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın.

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

Kapsayıcı meta verilerini okuma ve yazma

Depolama hesabı içinde binlerce nesnesi olan kullanıcılar, meta verilerine göre belirli kapsayıcıları hızla bulabilir. Meta verileri okumak için komutunu kullanacaksınız az storage container metadata show . Meta verileri güncelleştirmek için komutunu çağırmanız az storage container metadata update gerekir. yöntemi yalnızca boşlukla ayrılmış anahtar-değer çiftlerini kabul eder. Daha fazla bilgi için az storage container metadata belgelerine bakın.

Aşağıdaki ilk örnek, adlandırılmış kapsayıcının meta verilerini güncelleştirir ve alır. İkinci örnek, değerle eşleşen -prefix kapsayıcıların listesini yineler. Çift sayı içeren adları olan kapsayıcıların meta verileri meta veri değişkeninde bulunan değerlerle ayarlanmıştır.

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

Kapsayıcıları silme

Kullanım örneğine bağlı olarak, komutuyla az storage container delete tek bir kapsayıcıyı veya kapsayıcı grubunu silebilirsiniz. Kapsayıcı listesini silerken, aşağıdaki örneklerde gösterildiği gibi koşullu işlemleri kullanmanız gerekir.

Uyarı

Aşağıdaki örnekleri çalıştırmak kapsayıcıları ve blobları kalıcı olarak silebilir. Microsoft, kapsayıcıları ve blobları yanlışlıkla silinmeye karşı korumak için kapsayıcı geçici silmeyi etkinleştirmenizi önerir. Daha fazla bilgi için bkz . Kapsayıcılar için geçici silme.

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

Depolama hesabınız için kapsayıcı geçici silme özelliğini etkinleştirdiyseniz silinmiş kapsayıcıları almak mümkündür. Depolama hesabınızın geçici silme veri koruma seçeneği etkinse, --include-deleted parametresi ilişkili saklama süresi içinde silinen kapsayıcıları döndürür. --include-deleted parametresi yalnızca parametresiyle kullanıldığında kapsayıcıları döndürmek --prefix için kullanılabilir. Geçici silme hakkında daha fazla bilgi edinmek için Kapsayıcılar için geçici silme makalesine bakın.

Depolama hesabının ilişkili saklama süresi içinde silinen kapsayıcıların listesini almak için aşağıdaki örneği kullanın.

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

Geçici olarak silinen kapsayıcıyı geri yükleme

Kapsayıcıları listeleme bölümünde belirtildiği gibi, depolama hesabınızda geçici silme veri koruma seçeneğini yapılandırabilirsiniz. Etkinleştirildiğinde, ilişkili saklama süresi içinde silinen kapsayıcıları geri yüklemek mümkündür. Bu örneği takip edebilmeniz için önce geçici silmeyi etkinleştirmeniz ve depolama hesaplarınızdan en az birinde yapılandırmanız gerekir.

Aşağıdaki örneklerde, geçici olarak silinmiş bir kapsayıcının komutuyla nasıl geri yükleneceği az storage container restore açıklanmaktadır. Kapsayıcının doğru sürümünün geri yüklendiğinden --name emin olmak için ve --version parametreleri için değerler sağlamanız gerekir. Sürüm numarasını bilmiyorsanız, ilk örnekte gösterildiği gibi almak için komutunu kullanabilirsiniz az storage container list . İkinci örnek, belirli bir depolama hesabı içindeki tüm silinmiş kapsayıcıları bulur ve geri yükler.

Geçici silme veri koruma seçeneği hakkında daha fazla bilgi edinmek için Kapsayıcılar için geçici silme makalesine bakın.

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

Kapsayıcı için paylaşılan erişim imzası alma

Paylaşılan erişim imzası (SAS), Azure kaynaklarına temsilci erişimi sağlar. SAS, bir istemcinin verilerinize nasıl erişebileceği üzerinde ayrıntılı denetim sağlar. Örneğin, istemcinin kullanabileceği kaynakları belirtebilirsiniz. Ayrıca, istemcinin gerçekleştirebileceği işlem türlerini sınırlayabilir ve SAS'nin geçerli olduğu aralığı belirtebilirsiniz.

SAS genellikle normalde izinleri olmayan bir istemciye geçici ve güvenli erişim sağlamak için kullanılır. Hizmet veya hesap SAS'si oluşturmak için ve --account-key parametreleri için --account-name değerler sağlamanız gerekir. Bu senaryoya örnek olarak kullanıcıların kendi verilerini okumasına ve depolama hesabınıza yazmasına olanak tanıyan bir hizmet gösterilebilir.

Azure Depolama üç tür paylaşılan erişim imzası destekler: kullanıcı temsilcisi, hizmet ve hesap SAS'ı. Paylaşılan erişim imzaları hakkında daha fazla bilgi için Paylaşılan erişim imzalarını kullanarak Azure Depolama kaynaklarına sınırlı erişim verme makalesine bakın.

Dikkat

Geçerli bir SAS'ye sahip olan tüm istemciler, bu SAS'nin izin verdiği şekilde depolama hesabınızdaki verilere erişebilir. SAS'yi kötü amaçlı veya istenmeyen kullanıma karşı korumak önemlidir. SAS dağıtmak için isteğe bağlılığı kullanın ve güvenliği aşılmış SAS'yi iptal etmek için bir planınız var.

Aşağıdaki örnekte, komutunu kullanarak belirli bir kapsayıcı için hizmet SAS'sini yapılandırma işlemi gösterilmektedir az storage container generate-sas . Bir hizmet SAS'ı oluşturması nedeniyle, örnek önce değer olarak --account-key geçirmek üzere depolama hesabı anahtarını alır.

Örnek SAS'yi başlangıç ve süre sonu süreleri ile bir protokolle yapılandıracaktır. Ayrıca parametresini kullanarak SAS'deki silme, okuma, yazma ve listeleme izinlerini de --permissions belirtir. İzinlerin tam tablosuna Hizmet SAS'i oluşturma makalesinde başvurabilirsiniz.

Blob SAS belirteci değerini kopyalayıp güvenli bir konuma yapıştırın. Yalnızca bir kez görüntülenir ve Bash kapatıldıktan sonra alınamaz. SAS URL'sini oluşturmak için depolama hizmetinin URL'sine SAS belirtecini (URI) ekleyin.

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

Dekont

Azure CLI tarafından döndürülen SAS belirteci, URL sorgu dizesinin sınırlayıcı karakterini ('?') içermez. SAS belirtecini bir kaynak URL'sine ekliıyorsanız, SAS belirtecini eklemeden önce sınırlayıcı karakterini kaynak URL'sine eklemeyi unutmayın.

Sonraki adımlar

Bu nasıl yapılır makalesinde Blob Depolama kapsayıcıları yönetmeyi öğrendiniz. Azure CLI kullanarak blob depolama ile çalışma hakkında daha fazla bilgi edinmek için aşağıdaki bir seçeneği belirleyin.