Уровень доступа объекта BLOB можно задать одним из следующих способов:
- Задав уровень доступа по умолчанию для учетной записи хранения. Объекты blob в учетной записи наследуют этот уровень доступа, если вы не переопределили этот параметр для отдельного объекта blob.
- Путем явной установки уровня блоба при загрузке. Большой двоичный объект можно создать на горячем, холодном, холодном или архивном уровне.
- С помощью операции установки уровня изменить уровень существующего большого двоичного объекта. Как правило, эта операция используется для перехода с горячего уровня на более холодный.
- Путем копирования большого двоичного объекта с помощью операции копирования BLOB-объектов. Как правило, эта операция используется для перехода с более холодного уровня на более горячий.
В этой статье описывается, как управлять BLOB в онлайн-уровне доступа. Дополнительные сведения о том, как переместить большой двоичный объект на архивный уровень, см. в статье "Архивировать большой двоичный объект". Дополнительные сведения о том, как восстановить большой двоичный объект с архивного уровня, см. в разделе "Повторное восстановление архивного большого двоичного объекта" на онлайн-уровне.
Дополнительные сведения о уровнях доступа для больших двоичных объектов см. в разделе "Уровни доступа" для данных BLOB-объектов.
Установка уровня доступа по умолчанию для учетной записи хранения
Уровень доступа по умолчанию для учетной записи хранения общего назначения версии 2 определяет, на каком подключенном уровне по умолчанию создается новый BLOB-объект. Установить уровень доступа по умолчанию для учетной записи хранения общего назначения версии 2 можно в момент ее создания или путем обновления конфигурации существующей учетной записи.
Изменение уровня доступа по умолчанию для существующей учетной записи хранения общего назначения версии 2 применяется ко всем BLOB-объектам в этой учетной записи, для которых уровень доступа не установлен явно. Изменение уровня доступа по умолчанию может повлиять на выставление счета. Подробные сведения см. в статье о параметре уровня доступа учетной записи по умолчанию.
Чтобы задать уровень доступа по умолчанию для учетной записи хранения на этапе ее создания на портале Azure, выполните указанные ниже действия.
На странице Учетные записи хранения нажмите кнопку Создать.
Заполните поля на вкладке Основные сведения.
На вкладке Дополнительно, в разделе Blob storage, установите уровень доступа на Горячий, Прохладный или Холодный. Значение по умолчанию — Горячий.
Выберите Просмотр и создание, чтобы проверить настройки и создать учетную запись хранения.
Чтобы изменить уровень доступа по умолчанию для существующей учетной записи хранения на портале Azure, выполните указанные ниже действия.
Перейдите к учетной записи хранения на портале Azure.
В разделе Параметры выберите пункт Конфигурация.
Найдите параметр уровня доступа к BLOB-объектам (по умолчанию) и выберите "Горячий", "Прохладный" или "Холодный". Значение по умолчанию — Горячий, если вы ранее не задавали это свойство.
Сохранение изменений.
Чтобы изменить уровень доступа по умолчанию для учетной записи хранения с помощью PowerShell, вызовите команду Set-AzStorageAccount, указав новый уровень доступа по умолчанию.
$rgName = <resource-group>
$accountName = <storage-account>
# Change the storage account tier to cool
Set-AzStorageAccount -ResourceGroupName $rgName -Name $accountName -AccessTier Cool
Чтобы изменить уровень доступа по умолчанию для учетной записи хранения с помощью PowerShell, вызовите команду Set-AzStorageAccount, указав новый уровень доступа по умолчанию.
# Change the storage account tier to cool
az storage account update \
--resource-group <resource-group> \
--name <storage-account> \
--access-tier Cool
Настройте уровень BLOB-объекта при загрузке
При отправке BLOB-объекта в хранилище Azure задать уровень этого BLOB-объекта можно двумя способами:
- Вы можете явно указать уровень, на котором будет создан BLOB-объект. Этот параметр переопределит уровень доступа по умолчанию для учетной записи хранения. Вы можете установить уровень для объекта данных или группы объектов при загрузке: горячий, прохладный, холодный или архивный.
- Вы можете загрузить BLOB-объект, не указывая для него уровень. В этом случае объект BLOB будет создан на уровне доступа по умолчанию, заданном для учетной записи хранения ('горячий' или 'холодный').
При отправке нового большого двоичного объекта с областью шифрования изменить уровень доступа для этого большого двоичного объекта нельзя.
В следующих разделах описывается, как указать, что объект BLOB загружается на горячий или холодный уровень хранения. Дополнительные сведения об архивировании BLOB-объекта при загрузке см. в разделе Архивирование BLOB-объектов при загрузке.
Загрузите BLOB-объект на конкретный онлайн-уровень.
Чтобы создать объект на горячем, умеренном или холодном уровне, укажите этот уровень при создании объекта. Уровень доступа, заданный при отправке, переопределяет уровень доступа по умолчанию для учетной записи хранения.
Чтобы загрузить BLOB-объект или набор BLOB-объектов на определенный уровень с портала Azure, выполните указанные ниже действия.
Перейдите к целевому контейнеру.
Нажмите кнопку Отправить.
Выберите файл или файлы для отправки.
Разверните раздел Дополнительно и установите для уровня доступа значение Горячий или Холодный.
Нажмите кнопку Отправить.
Чтобы добавить BLOB-объект или набор BLOB-объектов на определенный уровень с помощью PowerShell, вызовите команду Set-AzStorageBlobContent, как показано в примере ниже. Не забудьте заменить значения заполнителей в скобках собственными значениями.
$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
Чтобы добавить BLOB-объект на определенный уровень с помощью Azure CLI, вызовите команду az storage blob upload, как показано в примере ниже. Не забудьте заменить значения заполнителей в скобках собственными значениями. Замените <tier>
заполнитель на hot
, cool
, cold
или archive
.
az storage blob upload \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--file <file> \
--tier <tier> \
--auth-mode login
Чтобы добавить набор BLOB-объектов на определенный уровень с помощью Azure CLI, вызовите команду az storage blob upload-batch, как показано в примере ниже. Не забудьте заменить значения заполнителей в скобках собственными значениями. Замените <tier>
заполнитель на hot
, cool
, cold
или archive
.
az storage blob upload-batch \
--destination <container> \
--source <source-directory> \
--account-name <storage-account> \
--tier <tier> \
--auth-mode login
Чтобы загрузить BLOB на определенный уровень с использованием AzCopy, выполните команду azcopy copy и установите для параметра --block-blob-tier
значение hot
, cool
или archive
.
Примечание.
В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").
Этот пример исключает маркер SAS, так как предполагает, что вы предоставили учетные данные авторизации с помощью идентификатора Microsoft Entra. Ознакомьтесь со статьей Начало работы с AzCopy, чтобы получить сведения о способах предоставления учетных данных авторизации в службе хранилища.
azcopy copy '<local-file-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier>
Чтобы отправить набор объектов на определенный уровень с помощью AzCopy, выберите локальный каталог или его содержимое, а затем подставьте --recursive=true
в команду.
Пример локального каталога
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Пример содержимого локального каталога
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Отправка BLOB-объекта на уровень по умолчанию
У учетных записей хранения есть настройка уровня доступа по умолчанию, указывающая, в каком онлайн-уровне создается новый BLOB-объект. По умолчанию можно установить горячий или холодный уровень доступа. Применение этого параметра отчасти зависит от типа учетной записи хранения.
- Уровень доступа по умолчанию для новой учетной записи хранения общего назначения версии 2 устанавливается на горячий уровень по умолчанию. Изменить уровень доступа по умолчанию можно при создании учетной записи хранения или после этого.
- При создании устаревшей учетной записи хранения BLOB-объектов необходимо указать параметр уровня доступа по умолчанию как горячий или холодный при создании учетной записи хранения. Изменить уровень доступа по умолчанию для учетной записи хранения можно после ее создания.
Любой BLOB-объект, которому уровень доступа не присвоен явным образом, определяет его из параметра уровня доступа учетной записи по умолчанию. Вы можете определить, выводится ли уровень доступа BLOB-объекта, с помощью портала Azure, PowerShell или Azure CLI.
Если уровень доступа большого двоичного объекта выводится из настройки уровня доступа учетной записи по умолчанию, то портал Azure отображает уровень доступа как "Горячий" (предполагаемый), "Холодный" (предполагаемый) или "Архивный" (предполагаемый).
Чтобы определить уровень доступа к BLOB-объекту и выяснить, наследуется ли он от Azure PowerShell, извлеките BLOB-объект, а затем проверьте его свойства AccessTier и AccessTierInferred.
$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
Чтобы определить уровень доступа к BLOB-объекту и понять, наследуется ли он, с помощью Azure CLI, извлеките BLOB-объект, а затем проверьте его свойства blobTier и blobTierInferred.
az storage blob show \
--container-name <container> \
--name <blob> \
--account-name <storage-account> \
--query '[properties.blobTier, properties.blobTierInferred]' \
--output tsv \
--auth-mode login
Перенос BLOB на другой онлайн уровень
Объект Blob можно переместить на другой уровень хранения одним из двух способов:
- путем изменения уровня доступа;
- посредством копирования BLOB-объекта на другой онлайн-уровень.
Дополнительные сведения о каждом из этих вариантов см. в статье об установке и изменении уровня BLOB-объекта.
Переместить BLOB-объект на другой уровень можно с помощью PowerShell, Azure CLI, AzCopy v10 или одной из клиентских библиотек службы хранилища Azure.
Изменение уровня BLOB-объекта
При изменении уровня большого двоичного объекта сам этот объект и все его данные перемещаются на целевой уровень путем вызова операции Set Blob Tier (напрямую или через политику управления жизненным циклом) или с помощью команды AzCopy azcopy set-properties. Этот вариант обычно является лучшим при изменении уровня объекта Blob с более горячего на более холодный.
Совет
Вы можете использовать задачу хранения для изменения уровня доступа объектов-blob в большом масштабе в нескольких учетных записях хранения на основе определенного вами набора условий. Задача хранения — это ресурс, доступный в Azure Storage Actions — бессерверной платформе, которую можно использовать для выполнения общих операций с данными для миллионов объектов в нескольких учетных записях хранения. Для получения дополнительных сведений см. Что такое действия хранилища Azure?.
Чтобы изменить уровень большого двоичного объекта на более холодный уровень в портал Azure, выполните следующие действия.
Перейдите к объекту BLOB, для которого требуется изменить уровень.
Выберите BLOB-объект и нажмите кнопку Изменить уровень.
В диалоговом оке Изменение уровня выберите целевой уровень.
Выберите кнопку Сохранить.
Чтобы изменить уровень большого двоичного объекта на более холодный уровень с помощью PowerShell, используйте свойство BlobClient для получения .NET ссылки на большой двоичный объект, а затем вызовите метод SetAccessTier на этой ссылке. Не забудьте заменить заполнители в угловых скобках собственными значениями.
# 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, выполните команду az storage blob set-tier. Не забудьте заменить заполнители в угловых скобках собственными значениями.
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier <tier> \
--auth-mode login
Чтобы изменить уровень BLOB-объекта на более холодный, используйте команду azcopy set-properties и задайте этот параметр -block-blob-tier
.
Внимание
Использование AzCopy для изменения уровня доступа BLOB-объекта в настоящее время предоставляется в режиме предварительной версии.
Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
Примечание.
В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").
Этот пример исключает маркер SAS, так как предполагает, что вы предоставили учетные данные авторизации с помощью идентификатора Microsoft Entra. Ознакомьтесь со статьей Начало работы с AzCopy, чтобы получить сведения о способах предоставления учетных данных авторизации в службе хранилища.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier=<tier>
Чтобы изменить уровень доступа для всех BLOB в виртуальном каталоге, укажите имя виртуального каталога вместо имени BLOB, а затем добавьте в команду --recursive=true
.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/myvirtualdirectory' --block-blob-tier=<tier> --recursive=true
Копирование BLOB-объекта на другой подключенный уровень
Вызовите операцию копирования BLOB-объекта, чтобы скопировать BLOB-объект с одного уровня на другой. При копировании BLOB-объекта на другой уровень он и все его данные перемещаются на целевой уровень. Исходный BLOB-объект останется на исходном уровне, а на целевом уровне будет создан новый. Вызов большого двоичного объекта копирования рекомендуется для большинства сценариев, когда большой двоичный объект перемещается на более теплый уровень, или повторное создание большого двоичного объекта из архивного уровня.
Чтобы скопировать большой двоичный объект из уровня Cool в уровень Hot с помощью PowerShell, вызовите команду Start-AzStorageBlobCopy и укажите целевой уровень. Не забудьте заменить заполнители в угловых скобках собственными значениями.
# 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
Чтобы скопировать объект BLOB на более теплый уровень с помощью Azure CLI, вызовите команду az storage blob copy start и укажите целевой уровень. Не забудьте заменить заполнители в угловых скобках собственными значениями.
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, используйте команду azcopy copy и установите параметр --block-blob-tier
в hot
.
Примечание.
В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").
Этот пример исключает маркер SAS, так как предполагает, что вы предоставили учетные данные авторизации с помощью идентификатора Microsoft Entra. Ознакомьтесь со статьей Начало работы с AzCopy, чтобы получить сведения о способах предоставления учетных данных авторизации в службе хранилища.
AzCopy не поддерживает копирование из исходного блоба в архивном уровне.
azcopy copy 'https://mystorageeaccount.blob.core.windows.net/mysourcecontainer/myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mydestinationcontainer/myTextFile.txt' --block-blob-tier=hot
Операция копирования синхронна, поэтому при возврате команды все файлы копируются.
Массовый тиеринг
Чтобы переместить BLOB-объекты на другой уровень в контейнере или папке, перечислите BLOB-объекты и выполните операцию "Установить уровень для BLOB-объекта" для каждого из них. В следующем примере показано, как выполнить эту операцию:
# 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 "{}"
При перемещении большого количества объектов хранения на другой уровень используйте пакетную операцию для оптимальной производительности. Пакетная операция отправляет в службу несколько вызовов API в одном запросе. В число субопераций, поддерживаемых операцией пакетной обработки BLOB-объектов, входят удаление BLOB-объекта и установка уровня BLOB-объекта.
Чтобы изменить уровень доступа объектов BLOB с помощью пакетной операции, используйте одну из клиентских библиотек службы хранения Azure. В следующем примере кода показано, как выполнить простую пакетную операцию с помощью клиентской библиотеки .NET.
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);
}
}
Подробное описание приложения, в котором показано, как изменять уровни с помощью пакетной операции, см. в разделе AzBulkSetBlobTier.
Следующие шаги