U kunt de toegangslaag van een blob op een van de volgende manieren instellen:
- Door de standaardlaag voor onlinetoegang voor het opslagaccount in te stellen. Blobs in het account nemen deze toegangslaag over, tenzij u de instelling voor een afzonderlijke blob expliciet overschrijft.
- Door de laag van een blob expliciet in te stellen bij uploaden. U kunt een blob maken in de dynamische, statische, koude of archieflaag.
- Door de laag van een bestaande blob te wijzigen met de bewerking 'Blob-laag instellen'. Normaal gesproken gebruikt u deze bewerking om van een dynamischere laag naar een koeler te gaan.
- Door een blob te kopiëren met een kopieer-blobbewerking. Normaal gesproken gebruikt u deze bewerking om over te stappen van een koeler laag naar een dynamischere laag.
In dit artikel wordt beschreven hoe u een blob beheert in een onlinetoegangslaag. Zie Een blob archiveren voor meer informatie over het verplaatsen van een blob naar de archieflaag. Zie Een gearchiveerde blob reactiveren naar een onlinelaag voor meer informatie over het reactiveren van een blob uit de archieflaag.
Zie Toegangslagen voor blobgegevens voor meer informatie over toegangslagen voor blobs.
De standaardtoegangslaag voor een opslagaccount instellen
De standaardinstelling voor de toegangslaag voor een v2-opslagaccount voor algemeen gebruik bepaalt in welke onlinelaag een nieuwe blob standaard wordt gemaakt. U kunt de standaardtoegangslaag voor een v2-opslagaccount voor algemeen gebruik instellen op het moment dat u het account maakt of door de configuratie van een bestaand account bij te werken.
Wanneer u de standaardinstelling voor de toegangslaag voor een bestaand v2-opslagaccount voor algemeen gebruik wijzigt, is de wijziging van toepassing op alle blobs in het account waarvoor een toegangslaag niet expliciet is ingesteld. Het wijzigen van de standaardtoegangslaag kan gevolgen hebben voor facturering. Zie de instelling voor de standaardaccounttoegangslaag voor meer informatie.
Voer de volgende stappen uit om de standaardtoegangslaag voor een opslagaccount in te stellen tijdens het maken van een opslagaccount in Azure Portal:
Navigeer naar de pagina Opslagaccounts en selecteer de knop Maken .
Vul het tabblad Basisbeginselen in.
Stel op het tabblad Geavanceerd onder Blob Storage de toegangslaag in op Dynamisch, Statisch of Koud. De standaardinstelling is Heet.
Selecteer Beoordelen en maken om uw instellingen te valideren en uw opslagaccount te maken.
Voer de volgende stappen uit om de standaardtoegangslaag voor een bestaand opslagaccount in Azure Portal bij te werken:
Navigeer naar het opslagaccount in Azure Portal.
Selecteer onder Instellingen de optie Configuratie.
Zoek de blobtoegangslaag (standaardinstelling) en selecteer Hot, Cool of Cold. De standaardinstelling is Hot, als u deze eigenschap nog niet eerder hebt ingesteld.
Sla uw wijzigingen op.
Als u de standaardinstelling voor toegangslagen voor een opslagaccount met PowerShell wilt wijzigen, roept u de opdracht Set-AzStorageAccount aan en geeft u de nieuwe standaardtoegangslaag op.
$rgName = <resource-group>
$accountName = <storage-account>
# Change the storage account tier to cool
Set-AzStorageAccount -ResourceGroupName $rgName -Name $accountName -AccessTier Cool
Als u de standaardinstelling voor toegangslagen voor een opslagaccount met PowerShell wilt wijzigen, roept u de opdracht Set-AzStorageAccount aan en geeft u de nieuwe standaardtoegangslaag op.
# Change the storage account tier to cool
az storage account update \
--resource-group <resource-group> \
--name <storage-account> \
--access-tier Cool
De laag van een blob instellen bij uploaden
Wanneer u een blob uploadt naar Azure Storage, hebt u twee opties voor het instellen van het opslagniveau van de blob tijdens het uploaden:
- U kunt expliciet de laag opgeven waarin de blob wordt gemaakt. Met deze instelling wordt de standaardtoegangslaag voor het opslagaccount overschreven. U kunt de laag voor een blob of set blobs instellen tijdens het uploaden naar hot, cool, cold of archief.
- U kunt een blob uploaden zonder een laag op te geven. In dit geval wordt de blob gemaakt in de standaard toegangslaag die is gespecificeerd voor het opslagaccount (warm of koel).
Als u een nieuwe blob uploadt die gebruikmaakt van een versleutelingsbereik, kunt u de toegangslaag voor die blob niet wijzigen.
In de volgende secties wordt beschreven hoe u aangeeft dat een blob wordt geüpload naar de hot- of cool-laag. Zie Archief-blobs bij uploaden voor meer informatie over het archiveren van een blob bij uploaden.
Een blob uploaden naar een specifieke onlinelaag
Als u een blob wilt maken in de dynamische, statische of koude laag, geeft u die laag op wanneer u de blob maakt. De toegangslaag die is opgegeven bij upload, overschrijft de standaardtoegangslaag voor het opslagaccount.
Voer de volgende stappen uit om een blob of set blobs te uploaden naar een specifieke laag vanuit Azure Portal:
Navigeer naar de doelcontainer.
Selecteer de knop Uploaden.
Selecteer het bestand of de bestanden die u wilt uploaden.
Vouw de sectie Geavanceerd uit en stel het toegangsniveau in op Hot of Cool.
Selecteer de knop Uploaden.
Als u een blob of set blobs wilt uploaden naar een specifieke laag met PowerShell, roept u de opdracht Set-AzStorageBlobContent aan, zoals wordt weergegeven in het volgende voorbeeld. Vergeet niet om de tijdelijke aanduidingen tussen haakjes te vervangen door uw eigen waarden:
$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
Als u een blob wilt uploaden naar een specifieke laag met Azure CLI, roept u de opdracht az storage blob upload aan , zoals wordt weergegeven in het volgende voorbeeld. Vergeet niet om de tijdelijke aanduidingen tussen vierkante haken te vervangen door uw eigen waarden. Vervang de <tier>
tijdelijke aanduiding door hot
, cool
of cold
archive
.
az storage blob upload \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--file <file> \
--tier <tier> \
--auth-mode login
Als u een set blobs wilt uploaden naar een specifieke laag met Azure CLI, roept u de opdracht az storage blob upload-batch aan, zoals wordt weergegeven in het volgende voorbeeld. Vergeet niet om de tijdelijke aanduidingen tussen vierkante haken te vervangen door uw eigen waarden. Vervang de <tier>
tijdelijke aanduiding door hot
, cool
of cold
archive
.
az storage blob upload-batch \
--destination <container> \
--source <source-directory> \
--account-name <storage-account> \
--tier <tier> \
--auth-mode login
Als u een blob wilt uploaden naar een specifieke laag met behulp van AzCopy, gebruikt u de opdracht azcopy copy en stelt u de --block-blob-tier
parameter hot
in op , cool
of archive
.
Notitie
In dit voorbeeld worden padargumenten tussen enkele aanhalingstekens (''' ) geplaatst. Gebruik enkele aanhalingstekens in alle opdrachtshells, met uitzondering van de Windows Command Shell (cmd.exe). Als u een Windows Command Shell (cmd.exe) gebruikt, plaatst u padargumenten tussen dubbele aanhalingstekens ("") in plaats van enkele aanhalingstekens ('').
In dit voorbeeld wordt het SAS-token uitgesloten omdat wordt ervan uitgegaan dat u autorisatiereferenties hebt opgegeven met behulp van Microsoft Entra-id. Zie het artikel Aan de slag met AzCopy voor meer informatie over hoe u autorisatiereferenties aan de opslagservice kunt verstrekken.
azcopy copy '<local-file-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier>
Als u een set blobs wilt uploaden naar een specifieke laag met behulp van AzCopy, raadpleegt u de lokale map of de inhoud van de lokale map en voegt u deze vervolgens toe --recursive=true
aan de opdracht.
Voorbeeld van lokale map
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Voorbeeld van inhoud van lokale map
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
Een blob uploaden naar de standaardlaag
Opslagaccounts hebben een standaardinstelling voor toegangslagen die aangeeft in welke onlinelaag een nieuwe blob wordt gemaakt. De standaardinstelling voor de toegangslaag kan worden ingesteld op hot of cool. Het gedrag van deze instelling verschilt enigszins, afhankelijk van het type opslagaccount:
- De standaardtoegangslaag voor een nieuw v2-opslagaccount voor algemeen gebruik is standaard ingesteld op de dynamische laag. U kunt de instelling voor de standaardtoegangslaag wijzigen wanneer u een opslagaccount maakt of nadat het is gemaakt.
- Wanneer u een verouderd Blob Storage-account maakt, moet u de instelling voor de standaardtoegangslaag opgeven als dynamisch of statisch wanneer u het opslagaccount maakt. U kunt de standaardinstelling voor de toegangslaag voor het opslagaccount wijzigen nadat het is gemaakt.
Een blob die geen expliciet toegewezen laag heeft, bepaalt zijn laag op basis van de standaardinstelling voor de toegangsniveau van het account. U kunt bepalen of de toegangslaag van een blob wordt afgeleid met behulp van Azure Portal, PowerShell of Azure CLI.
Als de toegangslaag van een blob wordt afgeleid van de instelling voor de standaardaccounttoegangslaag, wordt de toegangslaag weergegeven als Warm (afgeleid), Koel (afgeleid) of Koud (afgeleid).
Als u de toegangslaag van een blob wilt bepalen en wilt weten of deze wordt afgeleid uit Azure PowerShell, haalt u de blob op en controleert u vervolgens de eigenschappen AccessTier en 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
Als u de toegangslaag van een blob wilt bepalen en wilt weten of deze is afgeleid van Azure CLI, haalt u de blob op en controleert u vervolgens de blobTier - en blobTierInferred-eigenschappen .
az storage blob show \
--container-name <container> \
--name <blob> \
--account-name <storage-account> \
--query '[properties.blobTier, properties.blobTierInferred]' \
--output tsv \
--auth-mode login
Een blob verplaatsen naar een andere onlinelaag
U kunt een blob op twee manieren verplaatsen naar een andere onlinelaag:
- Door de toegangslaag te wijzigen.
- Door de blob te kopiëren naar een andere onlinelaag.
Zie Instelling of wijziging van de laag van een blob voor meer informatie over elk van deze opties.
Gebruik PowerShell, Azure CLI, AzCopy v10 of een van de Azure Storage-clientbibliotheken om een blob naar een andere laag te verplaatsen.
De laag van een blob wijzigen
Wanneer u de laag van een blob wijzigt, verplaatst u die blob en alle bijbehorende gegevens naar de doellaag door de bewerking Blob-laag instellen aan te roepen (rechtstreeks of via een levenscyclusbeheerbeleid ), of met behulp van de opdracht azcopy set-properties met AzCopy. Deze optie is doorgaans het beste wanneer u de laag van een blob wijzigt van een dynamischere laag in een koeler laag.
Tip
U kunt een opslagtaak gebruiken om de toegangslaag van blobs op schaal te wijzigen in meerdere opslagaccounts op basis van een set voorwaarden die u definieert. Een opslagtaak is een resource die beschikbaar is in Azure Storage Actions; een serverloos framework dat u kunt gebruiken om algemene gegevensbewerkingen uit te voeren op miljoenen objecten in meerdere opslagaccounts. Zie Wat is Azure Storage Actions?voor meer informatie.
Voer de volgende stappen uit om de laag van een blob te wijzigen in een koeler laag in Azure Portal:
Navigeer naar de blob waarvoor u de laag wilt wijzigen.
Klik op de blob en klik vervolgens op de knop Laag wijzigen.
Selecteer in het Laag wijzigen dialoogvenster de doellaag.
Selecteer de knop Opslaan.
Als u de laag van een blob wilt wijzigen in een koelere laag met PowerShell, gebruikt u de blobClient-eigenschap van de blob om een .NET-verwijzing naar de blob te retourneren en roept u vervolgens de methode SetAccessTier aan op die verwijzing. Vergeet niet om plaatsaanduidingen tussen haakjes te vervangen door uw eigen waarden.
# 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")
Als u de laag van een blob wilt wijzigen in een koeler laag met Azure CLI, roept u de opdracht az storage blob set-tier aan. Vergeet niet om plaatsaanduiders tussen hoekige haken te vervangen door uw eigen waarden.
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier <tier> \
--auth-mode login
Als u de laag van een blob wilt wijzigen in een koeler laag, gebruikt u de opdracht azcopy set-properties en stelt u de -block-blob-tier
parameter in.
Belangrijk
Het gebruik van AzCopy om de toegangslaag van een blob te wijzigen, bevindt zich momenteel in PREVIEW.
Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
Notitie
In dit voorbeeld worden padargumenten tussen enkele aanhalingstekens (''' ) geplaatst. Gebruik enkele aanhalingstekens in alle opdrachtshells, met uitzondering van de Windows Command Shell (cmd.exe). Als u een Windows Command Shell (cmd.exe) gebruikt, plaatst u padargumenten tussen dubbele aanhalingstekens ("") in plaats van enkele aanhalingstekens ('').
In dit voorbeeld wordt het SAS-token uitgesloten omdat wordt ervan uitgegaan dat u autorisatiereferenties hebt opgegeven met behulp van Microsoft Entra-id. Zie het artikel Aan de slag met AzCopy voor meer informatie over hoe u autorisatiereferenties kunt opgeven voor de opslagdienst.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier=<tier>
Als u de toegangslaag voor alle blobs in een virtuele map wilt wijzigen, raadpleegt u de naam van de virtuele map in plaats van de blobnaam en voegt u deze vervolgens toe aan --recursive=true
de opdracht.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/myvirtualdirectory' --block-blob-tier=<tier> --recursive=true
Een blob kopiëren naar een andere onlinelaag
Roep de blobbewerking kopiëren aan om een blob van de ene laag naar de andere te kopiëren. Wanneer u een blob naar een andere laag kopieert, verplaatst u die blob en alle bijbehorende gegevens naar de doellaag. De bron-blob blijft in de oorspronkelijke laag en er wordt een nieuwe blob gemaakt in de doellaag. Het aanroepen van Copy Blob wordt aanbevolen voor de meeste scenario's waarin u een blob verplaatst naar een warmere laag, of een blob uit de archieftier herstelt.
Als u een blob wilt kopiëren van statisch naar dynamisch met PowerShell, roept u de opdracht Start-AzStorageBlobCopy aan en geeft u de doellaag op. Vergeet niet om plaatsaanduidingen tussen vierkante haken te vervangen door uw eigen waarden.
# 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
Als u een blob wilt kopiëren naar een warmere laag met Azure CLI, roept u de opdracht az storage blob copy start aan en geeft u de doellaag op. Vergeet niet om tijdelijke aanduidingen tussen hoekhaakjes te vervangen door uw eigen waarden.
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
Als u een blob wilt kopiëren van statisch naar dynamisch met AzCopy, gebruikt u de opdracht azcopy copy en stelt u de --block-blob-tier
parameter in op hot
.
Notitie
In dit voorbeeld worden padargumenten tussen enkele aanhalingstekens (''' ) geplaatst. Gebruik enkele aanhalingstekens in alle opdrachtshells, met uitzondering van de Windows Command Shell (cmd.exe). Als u een Windows Command Shell (cmd.exe) gebruikt, plaatst u padargumenten tussen dubbele aanhalingstekens ("") in plaats van enkele aanhalingstekens ('').
In dit voorbeeld wordt het SAS-token uitgesloten omdat wordt ervan uitgegaan dat u autorisatiereferenties hebt opgegeven met behulp van Microsoft Entra-id. Zie het artikel Aan de slag met AzCopy voor meer informatie over hoe u autorisatiereferenties kunt opgeven aan de opslagservice.
AzCopy biedt geen ondersteuning voor kopiëren vanuit een bron-blob in de archieflaag.
azcopy copy 'https://mystorageeaccount.blob.core.windows.net/mysourcecontainer/myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mydestinationcontainer/myTextFile.txt' --block-blob-tier=hot
De kopieerbewerking is synchroon, dus wanneer de opdracht wordt geretourneerd, worden alle bestanden gekopieerd.
Bulkopslaglagen
Als u blobs wilt verplaatsen naar een andere laag in een container of map, inventariseert u blobs en roept u de bewerking Blob-laag instellen aan op elke laag. In het volgende voorbeeld ziet u hoe u deze bewerking uitvoert:
# 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 "{}"
Wanneer u een groot aantal blobs naar een andere laag verplaatst, gebruikt u een batchbewerking voor optimale prestaties. Een batchbewerking verzendt meerdere API-aanroepen naar de service met één aanvraag. De subbewerkingen die worden ondersteund door de Blob Batch-bewerking omvatten Blob verwijderen en Blob-laag instellen.
Als u de toegangslaag van blobs met een batchbewerking wilt wijzigen, gebruikt u een van de Azure Storage-clientbibliotheken. In het volgende codevoorbeeld ziet u hoe u een eenvoudige batchbewerking uitvoert met de .NET-clientbibliotheek:
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);
}
}
Zie AzBulkSetBlobTier voor een uitgebreide voorbeeldtoepassing die laat zien hoe u lagen wijzigt met een batchbewerking.
Volgende stappen