Blobun erişim katmanını aşağıdaki yollardan herhangi biriyle ayarlayabilirsiniz:
Depolama hesabı için hesabın varsayılan erişim katmanı ayarını yaparak. Hesaptaki bloblar, tek bir blob için ayarı açıkça geçersiz kılmadığınız sürece bu erişim katmanını devralır.
Karşıya yükleme sırasında bir blob katmanını açıkça ayarlayarak. Sık erişimli, seyrek erişimli, soğuk veya arşiv katmanında blob oluşturabilirsiniz.
Mevcut bir blob katmanını Blob Katmanını Ayarla işlemiyle değiştirerek. Genellikle, bu işlemi daha sıcak bir katmandan daha serin bir katmana geçmek için kullanırsınız.
Blob Kopyalama işlemi yaparak bir blob kopyalayın. Genellikle, bu işlemi daha serin bir katmandan daha sıcak bir katmana geçmek için kullanırsınız.
Bu makalede, çevrimiçi erişim katmanında blobu yönetme açıklanmaktadır. Blobu arşiv katmanına taşıma hakkında daha fazla bilgi için bkz. Blobu arşivle. Bir blobu arşiv katmanından yeniden doldurma hakkında daha fazla bilgi için bkz. Arşivlenmiş blobu çevrimiçi katmana yeniden doldurma.
Blobların erişim katmanları hakkında daha fazla bilgi için bkz. Blob verileri için erişim katmanları.
Depolama hesabı için varsayılan erişim katmanını ayarlama
Genel amaçlı v2 depolama hesabı için varsayılan erişim katmanı ayarı, yeni blob'un varsayılan olarak hangi çevrimiçi katmanda oluşturulduğunu belirler. Hesabı oluşturduğunuz sırada veya mevcut bir hesabın yapılandırmasını güncelleştirerek genel amaçlı v2 depolama hesabı için varsayılan erişim katmanını ayarlayabilirsiniz.
Mevcut genel amaçlı v2 depolama hesabı için varsayılan erişim katmanı ayarını değiştirdiğinizde, bu değişiklik erişim katmanının açıkça ayarlanmadığı hesaptaki tüm bloblar için geçerlidir. Varsayılan erişim katmanını değiştirmek faturalamayı etkileyebilir. Ayrıntılar için bkz. Varsayılan hesap erişim katmanı ayarı.
Akıllı katman genel önizlemeden yararlanan depolama hesapları için nesneleri akıllı katmana taşımak yalnızca varsayılan hesap erişim katmanı ayarıyla mümkündür. Akıllı katmandaki nesneler, bir nesne için açıkça farklı bir katman ayarlanarak ayrı ayrı farklı katmanlara taşınabilir. Açık bir katmana taşındıktan sonra nesneler akıllı katmana geri katmanlanamaz. Daha fazla bilgi için bkz . Akıllı katmanla maliyetleri iyileştirme.
Azure portalında oluşturma zamanında bir depolama hesabının varsayılan erişim katmanını ayarlamak için şu adımları izleyin:
Depolama hesapları sayfasına gidin ve Oluştur düğmesini seçin.
Temel Bilgiler sekmesini doldurun.
Gelişmiş sekmesindeki Blob depolama'nın altında Erişim katmanınıSık Erişimli, Seyrek Erişimli veya Soğuk olarak ayarlayın. Varsayılan ayar Sıcak.
Ayarlarınızı doğrulamak ve depolama hesabınızı oluşturmak için Gözden Geçir + Oluştur'u seçin.
Azure portalında mevcut bir depolama hesabının varsayılan erişim katmanını güncelleştirmek için şu adımları izleyin:
Azure portalında depolama hesabına gidin.
Ayarlar bölümünde Yapılandırma‘yı seçin.
Blob erişim katmanı (varsayılan) ayarını bulun ve Sık Erişimli, Az Kullanılan veya Soğuk'u seçin. Bu özelliği daha önce ayarlamadıysanız, varsayılan ayar Sık Erişimli'dir.
Değişikliklerinizi kaydedin.
PowerShell ile bir depolama hesabının varsayılan erişim katmanı ayarını değiştirmek için, yeni varsayılan erişim katmanını belirterek Set-AzStorageAccount komutunu çağırın.
$rgName = <resource-group>
$accountName = <storage-account>
# Change the storage account tier to cool
Set-AzStorageAccount -ResourceGroupName $rgName -Name $accountName -AccessTier Cool
PowerShell ile bir depolama hesabının varsayılan erişim katmanı ayarını değiştirmek için, yeni varsayılan erişim katmanını belirterek Set-AzStorageAccount komutunu çağırın.
# Change the storage account tier to cool
az storage account update \
--resource-group <resource-group> \
--name <storage-account> \
--access-tier Cool
Yükleme sırasında bir blob'un katmanını ayarla
Bir blobu Azure Depolama'ya yüklediğinizde, karşıya yükleme sırasında blob katmanını ayarlamak için iki seçeneğiniz vardır:
- Blob'un oluşturulacağı katmanı açıkça belirtebilirsiniz. Bu ayar, depolama hesabı için varsayılan erişim katmanını geçersiz kılar. Bir blob veya blob kümesi için yükleme sırasında katmanı sık erişimli, seyrek erişimli, soğuk veya arşiv olarak ayarlayabilirsiniz.
- Katman belirtmeden blobu karşıya yükleyebilirsiniz. Bu durumda blob, depolama hesabı için belirtilen varsayılan erişim katmanında (sık erişimli veya seyrek erişimli) oluşturulur.
Şifreleme kapsamı kullanan yeni bir blobu karşıya yüklüyorsanız, bu blob için erişim katmanını değiştiremezsiniz.
Aşağıdaki bölümlerde blob'un sık erişimli veya seyrek erişimli katmana yüklendiğini belirtme işlemi açıklanmaktadır. Karşıya yüklemede bir blobu arşivleme hakkında daha fazla bilgi için bkz. Karşıya yüklemede blobları arşivleme.
Blobu belirli bir çevrimiçi katmana yükleme
Sık erişimli, seyrek erişimli veya soğuk katmanda blob oluşturmak için blobu oluştururken bu katmanı belirtin. Karşıya yüklemede belirtilen erişim katmanı, depolama hesabı için varsayılan erişim katmanını geçersiz kılar.
Azure portalından belirli bir katmana blob veya blob kümesi yüklemek için şu adımları izleyin:
Hedef kapsayıcıya gidin.
Yükle düğmesini seçin.
Karşıya yüklenecek dosyayı veya dosyaları seçin.
Gelişmiş bölümünü genişletin ve Erişim katmanınıSık Erişimli veya Seyrek Erişimli olarak ayarlayın.
Yükle düğmesini seçin.
Bir blobu veya blob kümesini PowerShell ile belirli bir katmana yüklemek için, aşağıdaki örnekte gösterildiği gibi Set-AzStorageBlobContent komutunu çağırın. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:
$rgName = <resource-group>
$storageAccount = <storage-account>
$containerName = <container>
# tier can be hot, cool, cold, or archive
$tier = <tier>
# Get context object
$ctx = New-AzStorageContext -StorageAccountName $storageAccount -UseConnectedAccount
# Create new container.
New-AzStorageContainer -Name $containerName -Context $ctx
# Upload a single file named blob1.txt to the cool tier.
Set-AzStorageBlobContent -Container $containerName `
-File "blob1.txt" `
-Blob "blob1.txt" `
-Context $ctx `
-StandardBlobTier Cool
# Upload the contents of a sample-blobs directory to the cool tier, recursively.
Get-ChildItem -Path "C:\sample-blobs" -File -Recurse |
Set-AzStorageBlobContent -Container $containerName `
-Context $ctx `
-StandardBlobTier $tier
Azure CLI ile belirli bir katmana blob yüklemek için aşağıdaki örnekte gösterildiği gibi az storage blob upload komutunu çağırın. Köşeli parantez içindeki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın. Yer tutucuyu <tier>, hot, cool, cold veya archive ile değiştirin.
az storage blob upload \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--file <file> \
--tier <tier> \
--auth-mode login
Azure CLI ile belirli bir katmana blob kümesi yüklemek için aşağıdaki örnekte gösterildiği gibi az storage blob upload-batch komutunu çağırın. Köşeli parantez içindeki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın. Yer tutucuyu <tier> ile hot, cool, cold veya archive değiştirin.
az storage blob upload-batch \
--destination <container> \
--source <source-directory> \
--account-name <storage-account> \
--tier <tier> \
--auth-mode login
AzCopy kullanarak blobu belirli bir katmana yüklemek için azcopy copy komutunu kullanın ve parametresini , --block-blob-tierveya hotolarak coolayarlayınarchive.
Note
Bu örnek, yol bağımsız değişkenlerini tek tırnak işaretleri ('') içine alır. Windows Komut Kabuğu (cmd.exe) dışında tüm komut kabuklarında tek tırnak işareti kullanın. Windows Komut Kabuğu (cmd.exe) kullanıyorsanız, yol isimlerini tek tırnak ('') yerine çift tırnak ("") içine alın.
Bu örnek, Microsoft Entra Id kullanarak yetkilendirme kimlik bilgilerini sağladığınızı varsaydığından SAS belirtecini dışlar. Depolama hizmetine yetkilendirme kimlik bilgilerini sağlama yolları hakkında bilgi edinmek için AzCopy'yi kullanmaya başlama makalesine bakın.
azcopy copy '<local-file-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier>
AzCopy kullanarak belirli bir katmana blob kümesi yüklemek için yerel dizine veya yerel dizin içeriğine başvurun ve komutuna ekleyin --recursive=true .
Yerel dizin örneği
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Yerel dizin içeriği örneği
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Blobu varsayılan katmana yükleme
Depolama hesaplarının, yeni blob'un hangi çevrimiçi katmanda oluşturulduğunu gösteren varsayılan bir erişim katmanı ayarı vardır. Varsayılan erişim katmanı ayarı sık erişimli veya seyrek erişimli olarak ayarlanabilir. Bu ayarın davranışı, depolama hesabının türüne bağlı olarak biraz farklıdır:
- Yeni bir genel amaçlı v2 depolama hesabı için varsayılan erişim katmanı varsayılan olarak sık erişim katmanına ayarlanır. Depolama hesabı oluşturduğunuzda veya oluşturulduktan sonra varsayılan erişim katmanı ayarını değiştirebilirsiniz.
- Eski bir Blob Depolama hesabı oluşturduğunuzda, depolama hesabını oluştururken varsayılan erişim katmanı ayarını sık erişimli veya seyrek erişimli olarak belirtmeniz gerekir. Depolama hesabı oluşturulduktan sonra varsayılan erişim katmanı ayarını değiştirebilirsiniz.
Açıkça atanmış bir katmana sahip olmayan blob, katmanını varsayılan hesap erişim katmanı ayarından çıkartır. Azure portalını, PowerShell'i veya Azure CLI'yı kullanarak bir blob'un erişim katmanının çıkarsandığını belirleyebilirsiniz.
Bir blob'un erişim katmanı varsayılan hesap erişim katmanı ayarından çıkarsandıysa, Azure portalı erişim katmanını Sık Erişimli (çıkarılmış), Seyrek Erişimli (çıkarılmış) veya Soğuk (çıkarılmış) olarak görüntüler.
Bir blob'un erişim katmanını ve Azure PowerShell'den çıkarılıp çıkarılmadığını belirlemek için blobu alın, ardından AccessTier ve AccessTierInferred özelliklerini denetleyin.
$rgName = "<resource-group>"
$storageAccount = "<storage-account>"
$containerName = "<container>"
$blobName = "<blob>"
# Get the storage account context.
$ctx = New-AzStorageContext -StorageAccountName $storageAccount -UseConnectedAccount
# Get the blob from the service.
$blob = Get-AzStorageBlob -Context $ctx -Container $containerName -Blob $blobName
# Check the AccessTier and AccessTierInferred properties.
# If the access tier is inferred, that property returns true.
$blob.BlobProperties.AccessTier
$blob.BlobProperties.AccessTierInferred
Bir blob'un erişim katmanını ve Azure CLI'dan çıkarılıp çıkarılmadığını belirlemek için, blobu alın, ardından blobTier ve blobTierInferred özelliklerini denetleyin.
az storage blob show \
--container-name <container> \
--name <blob> \
--account-name <storage-account> \
--query '[properties.blobTier, properties.blobTierInferred]' \
--output tsv \
--auth-mode login
Blobu farklı bir çevrimiçi katmana taşıma
Blobu iki yoldan biriyle farklı bir çevrimiçi katmana taşıyabilirsiniz:
- Erişim katmanını değiştirerek.
- Blobu farklı bir çevrimiçi katmana kopyalayarak.
Bu seçeneklerin her biri hakkında daha fazla bilgi için bkz. Blobun katmanını ayarlama veya değiştirme.
Blobu farklı bir katmana taşımak için PowerShell, Azure CLI, AzCopy v10 veya Azure Depolama istemci kitaplıklarından birini kullanın.
Blob katmanını değiştirme
Blobun katmanını değiştirdiğinizde, Blob KatmanıNı Ayarla işlemini çağırarak (doğrudan veya bir yaşam döngüsü yönetim ilkesi aracılığıyla) veya AzCopy ile azcopy set-properties komutunu kullanarak bu blobu ve tüm verilerini hedef katmana taşırsınız. Bu seçenek genellikle blob katmanını daha sıcak katmandan daha serin bir katmana değiştirirken en iyisidir.
Tip
Bir depolama görevi kullanarak, tanımladığınız bir dizi koşula göre birden çok depolama hesabında blobların uygun ölçekteki erişim katmanını değiştirebilirsiniz. Depolama görevi, Azure Depolama Eylemleri'nde kullanılabilen bir kaynaktır; birden çok depolama hesabında milyonlarca nesne üzerinde ortak veri işlemleri gerçekleştirmek için kullanabileceğiniz sunucusuz bir çerçevedir. Daha fazla bilgi edinmek için bkz . Azure Depolama Eylemleri nedir?.
Azure portalında blob katmanını daha serin bir katmana dönüştürmek için şu adımları izleyin:
Katmanını değiştirmek istediğiniz bloba gidin.
Blobu ve ardından Katmanı değiştir düğmesini seçin.
Katmanı değiştir iletişim kutusunda hedef katmanı seçin.
Kaydet düğmesini seçin.
PowerShell ile blob katmanını daha serin bir katmana değiştirmek için blob'un BlobClient özelliğini kullanarak bloba bir .NET başvurusu döndürebilirsiniz ve ardından bu başvuruda SetAccessTier yöntemini çağırın. Açılı köşeli ayraçlardaki yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$blobName = "<blob>"
$tier = "<tier>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Change the blob's access tier.
$blob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$blob.BlobClient.SetAccessTier($tier, $null, "Standard")
Azure CLI ile blob katmanını daha serin bir katmana dönüştürmek için az storage blob set-tier komutunu çağırın. Açılı köşeli ayraçlardaki yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın:
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier <tier> \
--auth-mode login
Blob katmanını daha serin bir katmana değiştirmek için azcopy set-properties komutunu kullanın ve parametresini -block-blob-tier ayarlayın.
Important
Blob erişim katmanını değiştirmek için AzCopy kullanmak şu anda ÖNİzLEME aşamasındadır.
Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Note
Bu örnek, yol bağımsız değişkenlerini tek tırnak işaretleri ('') içine alır. Windows Komut Kabuğu (cmd.exe) dışında tüm komut kabuklarında tek tırnak işareti kullanın. Windows Komut Kabuğu (cmd.exe) kullanıyorsanız, yol isimlerini tek tırnak ('') yerine çift tırnak ("") içine alın.
Bu örnek, Microsoft Entra Id kullanarak yetkilendirme kimlik bilgilerini sağladığınızı varsaydığından SAS belirtecini dışlar. Depolama hizmetine yetkilendirme kimlik bilgilerini sağlama yolları hakkında bilgi edinmek için AzCopy'yi kullanmaya başlama makalesine bakın.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier=<tier>
Bir sanal dizindeki tüm blobların erişim katmanını değiştirmek için blob adı yerine sanal dizin adına başvurun ve komutuna ekleyin --recursive=true .
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/myvirtualdirectory' --block-blob-tier=<tier> --recursive=true
Blobu farklı bir çevrimiçi katmana kopyalama
Blobu bir katmandan diğerine kopyalamak için Blobu Kopyalama işlemini çağırın. Bir blobu farklı bir katmana kopyaladığınızda, bu blobu ve tüm verilerini hedef katmana taşırsınız. Kaynak blob özgün katmanda kalır ve hedef katmanda yeni bir blob oluşturulur.
Blobu daha sıcak bir katmana taşıdığınız veya arşiv katmanından bir blobu yeniden doldurmanız gereken çoğu senaryo için Kopyalama Blobu'nun çağrılması önerilir.
PowerShell ile bir blobu seyrek erişimliden sık erişimliye kopyalamak için Start-AzStorageBlobCopy komutunu çağırın ve hedef katmanı belirtin. Açılı köşeli ayraçlardaki yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$srcContainerName = "<source-container>"
$destContainerName = "<dest-container>"
$srcBlobName = "<source-blob>"
$destBlobName = "<dest-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Copy the source blob to a new destination blob in hot tier.
Start-AzStorageBlobCopy -SrcContainer $srcContainerName `
-SrcBlob $srcBlobName `
-DestContainer $destContainerName `
-DestBlob $destBlobName `
-StandardBlobTier Hot `
-Context $ctx
Azure CLI ile blobu daha sıcak bir katmana kopyalamak için az storage blob copy start komutunu çağırın ve hedef katmanı belirtin. Açılı köşeli ayraçlardaki yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın:
az storage blob copy start \
--source-container <source-container> \
--source-blob <source-blob> \
--destination-container <dest-container> \
--destination-blob <dest-blob> \
--account-name <storage-account> \
--tier hot \
--auth-mode login
AzCopy ile soğuk bir blobu sıcak erişimliye kopyalamak için azcopy copy komutunu kullanın ve --block-blob-tier parametresini hot olarak ayarlayın.
Note
Bu örnek, yol bağımsız değişkenlerini tek tırnak işaretleri ('') içine alır. Windows Komut Kabuğu (cmd.exe) dışında tüm komut kabuklarında tek tırnak işareti kullanın. Windows Komut Kabuğu (cmd.exe) kullanıyorsanız, yol isimlerini tek tırnak ('') yerine çift tırnak ("") içine alın.
Bu örnek, Microsoft Entra Id kullanarak yetkilendirme kimlik bilgilerini sağladığınızı varsaydığından SAS belirtecini dışlar. Depolama hizmetine yetkilendirme kimlik bilgilerini sağlama yolları hakkında bilgi edinmek için AzCopy'yi kullanmaya başlama makalesine bakın.
AzCopy, arşiv katmanındaki bir kaynak blobdan kopyayı desteklemez.
azcopy copy 'https://mystorageeaccount.blob.core.windows.net/mysourcecontainer/myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mydestinationcontainer/myTextFile.txt' --block-blob-tier=hot
Kopyalama işlemi zaman uyumlu olduğundan, komut döndürdüğünde tüm dosyalar kopyalanır.
Toplu katmanlama
Blobları bir kapsayıcı veya klasördeki başka bir katmana taşımak için blobları numaralandırın ve her birinde Blob Katmanı Ayarla işlemini çağırın. Aşağıdaki örnekte bu işlemin nasıl gerçekleştirebileceğiniz gösterilmektedir:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$folderName = "<folder>/"
$ctx = (Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName).Context
$blobCount = 0
$Token = $Null
$MaxReturn = 5000
do {
$Blobs = Get-AzStorageBlob -Context $ctx -Container $containerName -Prefix $folderName -MaxCount $MaxReturn -ContinuationToken $Token
if($Blobs -eq $Null) { break }
#Set-StrictMode will cause Get-AzureStorageBlob returns result in different data types when there is only one blob
if($Blobs.GetType().Name -eq "AzureStorageBlob")
{
$Token = $Null
}
else
{
$Token = $Blobs[$Blobs.Count - 1].ContinuationToken;
}
$Blobs | ForEach-Object {
if($_.BlobType -eq "BlockBlob") {
$_.BlobClient.SetAccessTier("Cold", $null)
}
}
}
While ($Token -ne $Null)
az storage blob list --account-name $accountName --account-key $key \
--container-name $containerName --prefix $folderName \
--query "[?properties.blobTier == 'Cool'].name" --output tsv \
| xargs -I {} -P 10 \
az storage blob set-tier --account-name $accountName --account-key $key \
--container-name $containerName --tier Cold --name "{}"
Çok sayıda blobu başka bir katmana taşırken, en iyi performans için toplu işlem kullanın. Toplu işlem, tek bir istekle hizmete birden çok API çağrısı gönderir.
Blob Batch işlemi tarafından desteklenen alt işlemler Arasında Blobu Sil ve Blob Katmanını Ayarla yer alır.
Toplu işlemle blobların erişim katmanını değiştirmek için Azure Depolama istemci kitaplıklarından birini kullanın. Aşağıdaki kod örneğinde .NET istemci kitaplığıyla temel bir toplu işlem gerçekleştirme işlemi gösterilmektedir:
static async Task BulkArchiveContainerContents(string accountName, string containerName)
{
string containerUri = string.Format("https://{0}.blob.core.windows.net/{1}",
accountName,
containerName);
// Get container client, using Azure AD credentials.
BlobUriBuilder containerUriBuilder = new BlobUriBuilder(new Uri(containerUri));
BlobContainerClient blobContainerClient = new BlobContainerClient(containerUriBuilder.ToUri(),
new DefaultAzureCredential());
// Get URIs for blobs in this container and add to stack.
var uris = new Stack<Uri>();
await foreach (var item in blobContainerClient.GetBlobsAsync())
{
uris.Push(blobContainerClient.GetBlobClient(item.Name).Uri);
}
// Get the blob batch client.
BlobBatchClient blobBatchClient = blobContainerClient.GetBlobBatchClient();
try
{
// Perform the bulk operation to archive blobs.
await blobBatchClient.SetBlobsAccessTierAsync(blobUris: uris, accessTier: AccessTier.Archive);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
}
}
Toplu işlemle katmanların nasıl değiştirildiğini gösteren ayrıntılı bir örnek uygulama için bkz. AzBulkSetBlobTier.
Sonraki Adımlar