Přístupovou vrstvu objektu blob můžete nastavit některým z následujících způsobů:
- Nastavením výchozí úrovně přístupu online pro účet úložiště. Objekty blob v účtu dědí tuto úroveň přístupu, pokud explicitně nepřepíšete nastavení pro jednotlivé objekty blob.
- Explicitním nastavením vrstvy objektu blob při nahrávání. Objekt blob můžete vytvořit v horké, chladné, studené nebo archivní úrovni.
- Změnou úrovně existujícího blobu pomocí operace Nastavit úroveň. Tuto operaci byste obvykle použili k přechodu z horké vrstvy na chladnější.
- Zkopírováním objektu blob s operací kopírování objektu blob. Tuto operaci byste obvykle použili k přechodu z chladnější vrstvy na horkou.
Tento článek popisuje, jak spravovat objekt blob v online úrovni přístupu. Další informace o přesunu objektu blob do archivní úrovně najdete v tématu Archivace objektu blob. Další informace o tom, jak oživit objekt blob z archivní úrovně, najdete v tématu Rehydrate archivovaný objekt blob do online úrovně.
Další informace o úrovních přístupu pro objekty blob najdete v tématu Úrovně přístupu pro data objektů blob.
Nastavení výchozí úrovně přístupu pro účet úložiště
Výchozí nastavení úrovně přístupu pro účet úložiště pro obecné účely v2 určuje, ve které online vrstvě se ve výchozím nastavení vytvoří nový objekt blob. Výchozí úroveň přístupu pro účet úložiště pro obecné účely verze 2 můžete nastavit v době, kdy účet vytvoříte, nebo aktualizací konfigurace existujícího účtu.
Když změníte výchozí nastavení úrovně přístupu pro existující účet úložiště pro obecné účely verze 2, tato změna se vztahuje na všechny objekty blob v účtu, pro které nebyla explicitně nastavena úroveň přístupu. Změna výchozí úrovně přístupu může mít dopad na fakturaci. Podrobnosti najdete v tématu Výchozí nastavení úrovně přístupu k účtu.
Pokud chcete nastavit výchozí úroveň přístupu pro účet úložiště při vytváření na webu Azure Portal, postupujte takto:
Přejděte na stránku Účty úložiště a vyberte tlačítko Vytvořit .
Vyplňte záložku Základy.
Na kartě Upřesnit v části Úložiště objektů blob nastavte úroveň přístupu na horkou, chladnou nebo studenou. Výchozí nastavení je Horké.
Vyberte Zkontrolovat a vytvořit , abyste ověřili nastavení a vytvořili účet úložiště.
Pokud chcete aktualizovat výchozí úroveň přístupu pro existující účet úložiště na webu Azure Portal, postupujte takto:
Na webu Azure Portal přejděte k účtu úložiště.
V části Nastavení vyberte Konfigurace.
Vyhledejte nastavení Blob přístupového stupně (výchozí) a vyberte buď Hot, Cool, nebo Cold. Výchozí nastavení je Horká, pokud jste tuto vlastnost ještě nenastavili.
Uložte provedené změny.
Pokud chcete změnit výchozí nastavení úrovně přístupu pro účet úložiště pomocí PowerShellu, zavolejte příkaz Set-AzStorageAccount a zadejte novou výchozí úroveň přístupu.
$rgName = <resource-group>
$accountName = <storage-account>
# Change the storage account tier to cool
Set-AzStorageAccount -ResourceGroupName $rgName -Name $accountName -AccessTier Cool
Pokud chcete změnit výchozí nastavení úrovně přístupu pro účet úložiště pomocí PowerShellu, zavolejte příkaz Set-AzStorageAccount a zadejte novou výchozí úroveň přístupu.
# Change the storage account tier to cool
az storage account update \
--resource-group <resource-group> \
--name <storage-account> \
--access-tier Cool
Nastavení vrstvy objektu blob při nahrání
Když nahrajete objekt blob do služby Azure Storage, máte dvě možnosti nastavení vrstvy objektu blob při nahrávání:
- Můžete explicitně zadat úroveň, ve které se objekt blob vytvoří. Toto nastavení přepíše výchozí úroveň přístupu pro účet úložiště. Úroveň objektu blob nebo sady objektů blob můžete nastavit při nahrávání do horké, studené, studené nebo archivní.
- Objekt blob můžete nahrát bez zadání vrstvy. V tomto případě se objekt blob vytvoří ve výchozí úrovni přístupu zadané pro účet úložiště (horké nebo studené).
Pokud nahráváte nový objekt blob, který používá obor šifrování, nemůžete změnit úroveň přístupu pro tento objekt blob.
Následující části popisují, jak určit, že se objekt blob nahraje do horké nebo studené úrovně. Další informace o archivaci objektu blob při nahrávání najdete v tématu Archivace objektů blob při nahrání.
Nahrát blob do specifické online úrovně
Pokud chcete vytvořit objekt blob v horké, studené nebo chladné úrovni, zadejte tuto úroveň při vytváření objektu blob. Úroveň přístupu zadaná při nahrávání přepíše výchozí úroveň přístupu pro účet úložiště.
Pokud chcete nahrát objekt blob nebo sadu objektů blob na konkrétní úroveň z webu Azure Portal, postupujte takto:
Přejděte do cílového kontejneru.
vyberte tlačítko Nahrát.
Vyberte soubor nebo soubory, které chcete nahrát.
Rozbalte sekci Rozšířené a nastavte Úroveň přístupu na Hot nebo Cool.
vyberte tlačítko Nahrát.
Pokud chcete nahrát objekt blob nebo sadu objektů blob do konkrétní úrovně pomocí PowerShellu, zavolejte příkaz Set-AzStorageBlobContent , jak je znázorněno v následujícím příkladu. Nezapomeňte nahradit zástupné hodnoty v závorkách vlastními hodnotami:
$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
Pokud chcete nahrát objekt blob do konkrétní úrovně pomocí Azure CLI, zavolejte příkaz az storage blob upload , jak je znázorněno v následujícím příkladu. Nezapomeňte nahradit zástupné hodnoty v hranatých závorkách vlastními hodnotami.
<tier>
Zástupný symbol nahraďte znakem hot
, cool
, cold
nebo archive
.
az storage blob upload \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--file <file> \
--tier <tier> \
--auth-mode login
Pokud chcete nahrát sadu objektů blob do konkrétní úrovně pomocí Azure CLI, zavolejte příkaz az storage blob upload-batch , jak je znázorněno v následujícím příkladu. Nezapomeňte nahradit zástupné hodnoty v hranatých závorkách vlastními hodnotami.
<tier>
Zástupný symbol nahraďte znakem hot
, cool
, cold
nebo archive
.
az storage blob upload-batch \
--destination <container> \
--source <source-directory> \
--account-name <storage-account> \
--tier <tier> \
--auth-mode login
K nahrání objektu blob do konkrétní úrovně pomocí nástroje AzCopy použijte příkaz azcopy copy a nastavte --block-blob-tier
parametr na hot
, cool
nebo archive
.
Poznámka:
Tento příklad uzavře argumenty cesty do jednoduchých uvozovek ('' ). Použití jednoduchých uvozovek ve všech příkazových prostředích s výjimkou prostředí Windows Command Shell (cmd.exe). Pokud používáte příkazový řádek Windows (cmd.exe), uzavřete argumenty cesty do dvojitých uvozovek („") místo jednoduchých uvozovek ('').
Tento příklad vylučuje token SAS, protože předpokládá, že jste zadali autorizační přihlašovací údaje pomocí Microsoft Entra ID. Informace o způsobech zadání přihlašovacích údajů pro autorizaci pro službu úložiště najdete v článku Začínáme s nástrojem AzCopy .
azcopy copy '<local-file-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier>
Chcete-li nahrát sadu objektů blob do konkrétní úrovně pomocí nástroje AzCopy, odkažte na místní adresář nebo obsah místního adresáře a přidejte --recursive=true
ke příkazu.
Příklad místního adresáře
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Příklad obsahu místního adresáře
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Nahrajte blob do výchozí vrstvy
Účty úložiště mají výchozí nastavení úrovně přístupu, které označuje, ve které online vrstvě se vytvoří nový objekt blob. Výchozí nastavení úrovně přístupu je možné nastavit na horkou nebo studenou. Chování tohoto nastavení se mírně liší v závislosti na typu účtu úložiště:
- Výchozí úroveň přístupu pro nový účet úložiště pro obecné účely v2 je ve výchozím nastavení nastavená na horkou úroveň. Výchozí nastavení úrovně přístupu můžete změnit při vytváření účtu úložiště nebo po jeho vytvoření.
- Při vytváření starší verze účtu blob Storage musíte při vytváření účtu úložiště zadat výchozí nastavení úrovně přístupu jako horké nebo studené. Po vytvoření účtu úložiště můžete změnit výchozí nastavení úrovně přístupu.
Objekt blob, který nemá explicitně přiřazenou vrstvu, odvodí její úroveň z výchozího nastavení úrovně přístupu k účtu. Přístupovou vrstvu objektu blob můžete zjistit pomocí webu Azure Portal, PowerShellu nebo Azure CLI.
Pokud se úroveň přístupu objektu blob odvozuje z výchozího nastavení úrovně přístupu účtu, Azure Portal zobrazí úroveň přístupu jako Horká (odvozená), Chladná (odvozená) nebo Studená (odvozená).
Pokud chcete zjistit úroveň přístupu objektu blob a zjistit, jestli je odvozená z Azure PowerShellu, načtěte objekt blob a zkontrolujte jeho vlastnosti AccessTier a 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
Pokud chcete zjistit úroveň přístupu objektu blob a zjistit, jestli je odvozená z Azure CLI, načtěte objekt blob a zkontrolujte jeho vlastnosti blobTier a blobTierInferred .
az storage blob show \
--container-name <container> \
--name <blob> \
--account-name <storage-account> \
--query '[properties.blobTier, properties.blobTierInferred]' \
--output tsv \
--auth-mode login
Přesunutí objektu blob do jiné online úrovně
Objekt blob můžete přesunout na jinou online úroveň jedním ze dvou způsobů:
- Změnou úrovně přístupu.
- Zkopírováním objektu blob do jiné online úrovně.
Další informace o každé z těchto možností najdete v tématu Nastavení nebo změna úrovně objektu blob.
K přesunutí objektu blob do jiné úrovně použijte PowerShell, Azure CLI, AzCopy v10 nebo jednu z klientských knihoven služby Azure Storage.
Změnit vrstvu objektu blob
Když změníte úroveň objektu blob, přesunete tento objekt blob a všechna její data do cílové úrovně zavoláním operace Set Blob Tier (buď přímo, nebo prostřednictvím zásad správy životního cyklu), nebo pomocí příkazu azcopy set-properties v AzCopy. Tato možnost je obvykle nejlepší, když měníte úroveň objektu blob z horké vrstvy na chladnější.
Tip
Můžete použít úlohu úložiště ke změně úrovně přístupu objektů blob ve velkém měřítku v rámci více účtů úložiště na základě sady podmínek, které definujete. Úloha úložiště je prostředek dostupný v Azure Storage Actions. Bezserverová architektura, kterou můžete použít k provádění běžných operací s daty u milionů objektů v několika účtech úložiště. Další informace najdete v tématu Co je Akce služby Azure Storage?.
Pokud chcete změnit úroveň objektu blob na chladnější úroveň na webu Azure Portal, postupujte takto:
Přejděte k objektu blob, pro který chcete změnit úroveň.
Vyberte objekt blob a pak vyberte tlačítko Změnit úroveň .
V dialogovém okně Změnit úroveň vyberte cílovou úroveň.
Vyberte tlačítko Uložit.
Pokud chcete změnit úroveň objektu blob na chladnější vrstvu pomocí PowerShellu, použijte vlastnost BlobClient k získání odkazu .NET na objekt blob, a poté na tomto odkazu zavolejte metodu SetAccessTier. Nezapomeňte nahradit zástupné symboly v lomených závorkách vlastními hodnotami:
# 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")
Pokud chcete pomocí Azure CLI změnit úroveň objektu blob na chladnější, použijte příkaz az storage blob set-tier. Nezapomeňte nahradit zástupné symboly v lomených závorkách vlastními hodnotami:
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier <tier> \
--auth-mode login
Pokud chcete změnit úroveň objektu blob na chladnější úroveň, použijte příkaz azcopy set-properties a nastavte -block-blob-tier
parametr.
Poznámka:
Tento příklad uzavírá argumenty cesty v jednoduchých uvozovkách (''). Použití jednoduchých uvozovek ve všech příkazových prostředích s výjimkou prostředí Windows Command Shell (cmd.exe). Pokud používáte příkazový řádek Windows (cmd.exe), uzavřete argumenty cesty do dvojitých uvozovek ("") místo jednoduchých uvozovek ('').
Tento příklad vylučuje token SAS, protože předpokládá, že jste zadali autorizační přihlašovací údaje pomocí Microsoft Entra ID. Informace o způsobech zadání přihlašovacích údajů pro autorizaci pro službu úložiště najdete v článku Začínáme s nástrojem AzCopy .
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier=<tier>
Pokud chcete změnit úroveň přístupu pro veškeré objekty blob ve virtuálním adresáři, použijte místo názvu objektu blob název virtuálního adresáře a připojte --recursive=true
k příkazu.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/myvirtualdirectory' --block-blob-tier=<tier> --recursive=true
Kopírování objektu blob do jiné online úrovně
Spusťte operaci Kopírování objektu blob pro přesun objektu blob z jedné vrstvy do jiné. Když objekt blob zkopírujete do jiné úrovně, přesunete tento objekt blob a všechna jeho data do cílové úrovně. Zdrojový objekt blob zůstane v původní úrovni a v cílové úrovni se vytvoří nový objekt blob. Doporučuje se volat kopírování objektu blob pro většinu scénářů, kdy přesouváte objekt blob na teplejší vrstvu nebo provádíte rehydrataci objektu blob z archivní vrstvy.
Pokud chcete zkopírovat objekt blob ze studené na horkou pomocí PowerShellu, zavolejte příkaz Start-AzStorageBlobCopy a zadejte cílovou úroveň. Nezapomeňte nahradit zástupné symboly v lomených závorkách vlastními hodnotami:
# 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
Pokud chcete objekt blob zkopírovat do teplejší vrstvy pomocí Azure CLI, zavolejte příkaz az storage blob copy start a zadejte cílovou úroveň. Nezapomeňte nahradit zástupné symboly v lomených závorkách vlastními hodnotami:
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
Pokud chcete zkopírovat objekt blob z chladného úložiště do horkého úložiště pomocí nástroje AzCopy, použijte příkaz azcopy copy a nastavte parametr na --block-blob-tier
hot
.
Poznámka:
Tento příklad uzavírá argumenty cesty do jednoduchých uvozovek (''). Použití jednoduchých uvozovek ve všech příkazových prostředích s výjimkou prostředí Windows Command Shell (cmd.exe). Pokud používáte prostředí Windows Command Shell (cmd.exe), uzavřete argumenty cesty do dvojitých uvozovek ("") místo jednoduchých uvozovek ('').
Tento příklad vylučuje token SAS, protože předpokládá, že jste zadali autorizační přihlašovací údaje pomocí Microsoft Entra ID. Informace o způsobech zadání přihlašovacích údajů pro autorizaci pro službu úložiště najdete v článku Začínáme s nástrojem AzCopy .
AzCopy nepodporuje kopírování ze zdrojového blobu v archivní vrstvě.
azcopy copy 'https://mystorageeaccount.blob.core.windows.net/mysourcecontainer/myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mydestinationcontainer/myTextFile.txt' --block-blob-tier=hot
Operace kopírování je synchronní, takže když příkaz vrátí, zkopírují se všechny soubory.
Hromadné vrstvení
Pokud chcete přesunout objekty blob do jiné úrovně v kontejneru nebo složce, vytvořte výčet objektů blob a zavolejte operaci Nastavit úroveň objektů blob na každé z nich. Následující příklad ukazuje, jak provést tuto operaci:
# 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 "{}"
Při přesouvání velkého počtu objektů blob na jinou úroveň použijte dávkovou operaci pro zajištění optimálního výkonu. Dávková operace odesílá službě více volání rozhraní API v rámci jednoho požadavku. Mezi podoperace podporované operací Batch objektů blob patří odstranění objektu blob a nastavení úrovně objektu blob.
Pokud chcete změnit úroveň přístupu objektů blob pomocí dávkové operace, použijte jednu z klientských knihoven Azure Storage. Následující příklad kódu ukazuje, jak provést základní dávkovou operaci s klientskou knihovnou .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);
}
}
Podrobnou ukázkovou aplikaci, která ukazuje, jak změnit úrovně pomocí dávkové operace, najdete v tématu AzBulkSetBlobTier.
Další kroky