Sie haben folgende Möglichkeiten, um die Zugriffsebene eines Blobs festzulegen:
Durch Festlegen der standardmäßigen Onlinezugriffsebene für das Speicherkonto. Blobs im Konto erben diese Zugriffsebene, sofern die Einstellung für ein einzelnes Blob nicht explizit außer Kraft gesetzt wird.
Durch explizites Festlegen der Ebene eines Blobs beim Hochladen. Sie können ein Blob auf der heißen Ebene, der kalten Ebene, der Ebene „Cold“ oder der Archivebene erstellen.
Durch Ändern der vorhandenen Ebene eines Blobs mit einem Vorgang „Blobebene festlegen“. In der Regel würden Sie diesen Vorgang verwenden, um von einer heißeren zu einer kälteren Ebene zu wechseln.
Durch Kopieren eines Blobs mit einem Vorgang „Blob kopieren“. In der Regel würden Sie diesen Vorgang verwenden, um von einer kälteren zu einer heißeren Ebene zu wechseln.
In diesem Artikel wird beschrieben, wie Sie ein Blob auf einer Onlinezugriffsebene verwalten. Weitere Informationen zum Verschieben eines Blobs in die Archivebene finden Sie unter Archivieren eines Blobs. Weitere Informationen zum Aktivieren eines Blobs aus der Archivebene finden Sie im Artikel zum Aktivieren eines archivierten Blobs in eine Onlineebene.
Festlegen der Standardzugriffsebene für ein Speicherkonto
Die Standardeinstellung für die Zugriffsebene für ein universelles V2-Speicherkonto bestimmt, in welcher Onlineebene ein neues Blob standardmäßig erstellt wird. Sie können die Standardzugriffsebene für ein universelles V2-Speicherkonto beim Erstellen des Kontos oder durch Aktualisieren der Konfiguration eines vorhandenen Kontos festlegen.
Wenn Sie die Standardeinstellung für die Zugriffsebene für ein vorhandenes universelles V2-Speicherkonto ändern, gilt die Änderung für alle Blobs im Konto, für die keine explizite Zugriffsebene festgelegt wurde. Die Änderung der Standardzugriffsebene kann sich auf die Abrechnung auswirken. Weitere Informationen finden Sie unter Einstellung für die Standardzugriffsebene eines Kontos.
Führen Sie die folgenden Schritte aus, um die Standardzugriffsebene für ein Speicherkonto bei der Erstellung im Azure-Portal festzulegen:
Navigieren Sie zur Seite Speicherkonten, und wählen Sie die Schaltfläche Erstellen aus.
Füllen Sie die Registerkarte Grundlagen aus.
Legen Sie die Zugriffsebene auf der Registerkarte Erweitert unter Blob Storage auf Heiß, Cool oder Kalt fest. Die Standardeinstellung ist Heiß.
Wählen Sie Überprüfen und erstellen aus, um die Einstellungen zu überprüfen und das Speicherkonto zu erstellen.
Führen Sie die folgenden Schritte aus, um die Standardzugriffsebene für ein vorhandenes Speicherkonto im Azure-Portal zu aktualisieren:
Navigieren Sie im Azure-Portal zu dem Speicherkonto.
Klicken Sie unter Einstellungen auf Konfiguration.
Suchen Sie die Einstellung Blobzugriffsebene (Standard), und wählen Sie Heiß, Cool oder Kaltaus. Die Standardeinstellung ist Heiß, sofern diese Eigenschaft noch nicht festgelegt wurde.
Speichern Sie die Änderungen.
Um die Standardeinstellung für die Zugriffsebene für ein Speicherkonto mit PowerShell zu ändern, rufen Sie den Befehl Set-AzStorageAccount auf, und geben Sie die neue Standardzugriffsebene an.
Um die Standardeinstellung für die Zugriffsebene für ein Speicherkonto mit PowerShell zu ändern, rufen Sie den Befehl Set-AzStorageAccount auf, und geben Sie die neue Standardzugriffsebene an.
# Change the storage account tier to cool
az storage account update \
--resource-group <resource-group> \
--name <storage-account> \
--access-tier Cool
–
Festlegen der Ebene eines Blobs beim Hochladen
Wenn Sie ein Blob in Azure Storage hochladen, haben Sie zwei Möglichkeiten zum Festlegen der Ebene eines Blobs beim Hochladen:
Sie können explizit die Ebene angeben, in der das Blob erstellt wird. Diese Einstellung setzt die Standardzugriffsebene für das Speicherkonto außer Kraft. Sie können die Ebene für ein Blob oder eine Gruppe von Blobs beim Hochladen in die heiße Ebene, die kalte Ebene, die Ebene „Cold“ oder die Ebene „Archiv“ festlegen.
Sie können ein Blob hochladen, ohne eine Ebene anzugeben. In diesem Fall wird das Blob in der für das Speicherkonto angegebenen Standardzugriffsebene erstellt (entweder heiße Ebene oder kalte Ebene).
Wenn Sie ein neues Blob hochladen, das einen Verschlüsselungsbereich verwendet, können Sie die Zugriffsebene für dieses Blob nicht ändern.
In den folgenden Abschnitten wird beschrieben, wie Sie angeben, ob ein Blob in die heiße Ebene oder die kalte Ebene hochgeladen wird. Weitere Informationen zum Archivieren eines Blobs beim Hochladen finden Sie unter Archivieren von Blobs beim Hochladen.
Hochladen eines Blobs in eine bestimmte Onlineebene
Um ein Blob auf der heißen Ebene, der kalten Ebene oder der Ebene „Cold“ zu erstellen, geben Sie die betreffende Ebene beim Erstellen des Blobs an. Die beim Hochladen angegebene Zugriffsebene setzt die Standardzugriffsebene für das Speicherkonto außer Kraft.
Führen Sie die folgenden Schritte aus, um ein Blob oder mehrere Blobs im Azure-Portal in eine bestimmte Ebene hochzuladen:
Navigieren Sie zum Zielcontainer.
Wählen Sie die Schaltfläche Hochladen.
Wählen Sie die Datei oder die Dateien aus, die Sie hochladen möchten.
Erweitern Sie den Abschnitt Erweitert, und legen Sie die Zugriffsebene auf Heiß oder Kalt fest.
Wählen Sie die Schaltfläche Hochladen.
Um ein Blob oder mehrere Blobs mit PowerShell in eine bestimmte Ebene hochzuladen, rufen Sie den Befehl Set-AzStorageBlobContent auf, wie im folgenden Beispiel gezeigt. Denken Sie daran, die Platzhalterwerte in Klammern durch Ihre eigenen Werte zu ersetzen:
$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
Um ein Blob mit Azure CLI in eine bestimmte Ebene hochzuladen, rufen Sie den Befehl az storage blob upload auf, wie im folgenden Beispiel gezeigt. Denken Sie daran, die Platzhalterwerte in den spitzen Klammern durch Ihre eigenen Werte zu ersetzen. Ersetzen Sie den <tier>-Platzhalter mit hot, cool, cold oder archive.
Um mehrere Blobs mit Azure CLI in eine bestimmte Ebene hochzuladen, rufen Sie den Befehl az storage blob upload-batch auf, wie im folgenden Beispiel gezeigt. Denken Sie daran, die Platzhalterwerte in den spitzen Klammern durch Ihre eigenen Werte zu ersetzen. Ersetzen Sie den <tier>-Platzhalter mit hot, cool, cold oder archive.
Um ein Blob mit AzCopy auf eine bestimmte Ebene hochzuladen, verwenden Sie den Befehl azcopy copy und legen den Parameter --block-blob-tier auf hot, cool, oder archive fest.
Hinweis
In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen. Dieses Beispiel enthält kein SAS-Token, da davon ausgegangen wird, dass Sie die Anmeldeinformationen für die Autorisierung über Microsoft Entra ID bereitgestellt haben. Im Artikel Erste Schritte mit AzCopy erfahren Sie, wie Sie dem Speicherdienst Anmeldeinformationen für die Autorisierung zur Verfügung stellen können.
Um mit AzCopy eine Menge von Blobs auf eine bestimmte Ebene hochzuladen, verweisen Sie auf das lokale Verzeichnis bzw. den Inhalt des lokalen Verzeichnisses und fügen dann --recursive=true an den Befehl an.
Speicherkonten verfügen über eine Einstellung für die Standardzugriffsebene, mit der die Onlineebene angegeben wird, auf der ein neues Blob erstellt wird. Die Einstellung für die Standardzugriffsebene kann auf die heiße oder die kalte Ebene festgelegt werden. Das Verhalten dieser Einstellung unterscheidet sich abhängig vom Typ des Speicherkontos geringfügig:
Die Standardzugriffsebene für ein neues universelles v2-Speicherkonto ist standardmäßig auf die Hot Tier eingestellt. Sie können die Einstellung für die Standardzugriffsebene beim oder nach dem Erstellen eines Speicherkontos ändern.
Wenn Sie ein Legacy-Blob Storage-Konto erstellen, müssen Sie die Einstellung für die Standardzugriffsebene bei der Erstellung des Speicherkontos auf heiße Ebene oder kalte Ebene festlegen. Sie können die Einstellung für die Standardzugriffsebene nach Erstellung eines Speicherkontos ändern.
Für ein Blob, dem keine explizite Ebene zugewiesen ist, wird die zugehörige Ebene von der Einstellung für die Standardzugriffsebene des Kontos abgeleitet. Im Azure-Portal, mit PowerShell oder über die Azure-Befehlszeilenschnittstelle können Sie ermitteln, ob die Zugriffsebene eines Blobs abgeleitet ist.
Wenn die Zugriffsebene eines Blobs von der Einstellung für die Standardzugriffsebene des Kontos abgeleitet ist, wird im Azure-Portal als Zugriffsebene Heiß (abgeleitet), Cool (abgeleitet) oder Kalt (abgeleitet) angezeigt.
Um in Azure PowerShell die Zugriffsebene eines Blobs zu bestimmen und zu ermitteln, ob es abgeleitet ist, rufen Sie es ab, und überprüfen Sie dann die Eigenschaften AccessTier und 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
Um mithilfe der Azure CLI die Zugriffsebene eines Blobs zu bestimmen und zu ermitteln, ob es abgeleitet ist, rufen Sie es ab, und überprüfen Sie dann die Eigenschaften blobTier und blobTierInferred.
Sie können ein Blob mit PowerShell, Azure CLI, AzCopy v10 oder einer der Azure Storage-Clientbibliotheken auf eine andere Ebene verschieben.
Ändern der Ebene eines Blobs
Wenn Sie die Ebene eines Blobs ändern, verschieben Sie dieses Blob und alle seine Daten auf die Zielebene, indem Sie den Vorgang Blobebene festlegen aufrufen (entweder direkt oder über eine Richtlinie für die Lebenszyklusverwaltung), oder indem Sie den AzCopy-Befehl azcopy set-properties aufrufen. Diese Option ist in der Regel am besten, um die Ebene eines Blobs von einer heißeren in eine kältere Ebene zu ändern.
Tipp
Sie können eine Speicheraufgabe verwenden, um die Zugriffsebene von Blobs im großen Stil über mehrere Speicherkonten zu ändern, basierend auf einer Reihe von Bedingungen, die Sie definieren. Eine Speicheraufgabe ist eine Ressource, die in Azure Speichervorgängen verfügbar ist. Dies ist ein serverloses Framework, mit dem Sie allgemeine Datenvorgänge für Millionen von Objekten über mehrere Speicherkonten hinweg ausführen können. Weitere Informationen finden Sie unter Was sind Azure Speichervorgänge?
Um die Ebene eines Blobs im Azure-Portal in eine kältere Ebene zu ändern, führen Sie die folgenden Schritte aus:
Navigieren Sie zu dem Blob, für das Sie die Ebene ändern möchten.
Wählen Sie das Blob und dann die Schaltfläche Ebene ändern aus.
Wählen Sie im Dialogfeld Ebene ändern die Zielebene aus.
Klicken Sie auf die Schaltfläche Speichern.
Um die Ebene eines Blobs mit PowerShell in eine kältere Ebene zu ändern, verwenden Sie die Eigenschaft BlobClient des Blobs, um einen .NET-Verweis auf das Blob zurückzugeben, und rufen Sie dann die Methode SetAccessTier für diesen Verweis auf. Denken Sie daran, Platzhalter in spitzen Klammern durch Ihre eigenen Werte zu ersetzen:
# 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")
Um die Ebene eines Blobs mit Azure CLI in eine kältere Ebene zu ändern, rufen Sie den Befehl az storage blob set-tier auf. Denken Sie daran, Platzhalter in spitzen Klammern durch Ihre eigenen Werte zu ersetzen:
Um die Ebene eines Blobs in eine kältere Ebene zu ändern, verwenden Sie den Befehl azcopy set-properties, und legen Sie den Parameter -block-blob-tier fest.
Wichtig
Das Ändern der Zugriffsebene eines Blobs mit AzCopy befindet sich derzeit in der VORSCHAU.
Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Hinweis
In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen. Dieses Beispiel enthält kein SAS-Token, da davon ausgegangen wird, dass Sie die Anmeldeinformationen für die Autorisierung über Microsoft Entra ID bereitgestellt haben. Im Artikel Erste Schritte mit AzCopy erfahren Sie, wie Sie dem Speicherdienst Anmeldeinformationen für die Autorisierung zur Verfügung stellen können.
Wenn Sie die Zugriffsebene für alle Blobs in einem virtuellen Verzeichnis ändern möchten, verweisen Sie auf den Namen des virtuellen Verzeichnisses statt auf den Namen des Blobs, und fügen Sie --recursive=true an den Befehl an.
Rufen Sie zum Kopieren eines Blobs von einer Ebene auf eine andere den Vorgang Blob kopieren auf. Wenn Sie ein Blob in eine andere Ebene kopieren, wird das betreffende Blob mit allen zugehörigen Daten in die Zielebene kopiert. Das Quellblob verbleibt auf der ursprünglichen Ebene, und auf der Zielebene wird ein neues Blob erstellt. Der Aufruf von Blob kopieren wird für die meisten Szenarien empfohlen, bei denen Sie ein Blob in eine wärmere Ebene verschieben oder ein Blob aus der Archivebene aktivieren.
Rufen Sie den Befehl Start-AzStorageBlobCopy auf, und geben Sie die Zielebene an, um ein Blob mit PowerShell von der kalten Ebene in die heiße Ebene zu kopieren. Denken Sie daran, Platzhalter in spitzen Klammern durch Ihre eigenen Werte zu ersetzen:
# 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
Rufen Sie den Befehl az storage blob copy start auf, und geben Sie die Zielebene an, um ein Blob mit Azure CLI in eine wärmere Ebene zu kopieren. Denken Sie daran, Platzhalter in spitzen Klammern durch Ihre eigenen Werte zu ersetzen:
Um ein Blob mit AzCopy von der kalten Ebene in die heiße Ebene zu kopieren, verwenden Sie den Befehl azcopy copy und legen den Parameter --block-blob-tier auf hot fest.
Hinweis
In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.
Dieses Beispiel enthält kein SAS-Token, da davon ausgegangen wird, dass Sie die Anmeldeinformationen für die Autorisierung über Microsoft Entra ID bereitgestellt haben. Im Artikel Erste Schritte mit AzCopy erfahren Sie, wie Sie dem Speicherdienst Anmeldeinformationen für die Autorisierung zur Verfügung stellen können.
AzCopy unterstützt keine Kopie aus einem Quell-Blob auf der Archivebene.
Der Kopiervorgang ist synchron, sodass alle Dateien kopiert sind, wenn der Befehl zurückgegeben wird.
Massentiering
Um Blobs in einem Container oder Ordner auf eine andere Ebene zu verschieben, listen Sie Blobs auf, und rufen Sie jeweils den Vorgang „Blobebene festlegen“ auf. Das folgende Beispiel zeigt, wie Sie diesen Vorgang ausführen:
Wenn Sie eine große Anzahl von Blobs auf eine andere Ebene verschieben, verwenden Sie einen Batchvorgang, um eine optimale Leistung zu gewährleisten. Ein Batchvorgang sendet mehrere API-Befehle mit einer einzelnen Anfrage an den Dienst. Zu den vom Blobbatchvorgang unterstützten Untervorgängen gehören Blob löschen und Blob-Ebene festlegen.
Um die Zugriffsebene von Blobs mit einem Batchvorgang zu ändern, verwenden Sie eine der Azure Storage-Client-Bibliotheken. Das folgende Codebeispiel zeigt, wie Sie einen einfachen Batchvorgang mit der .NET-Client-Bibliothek durchführen:
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);
}
}
Ein ausführliches Beispiel, das zeigt, wie Sie Ebenen mit einem Batchvorgang ändern, finden Sie unter AzBulkSetBlobTier.