Rehidratación de un blob archivado en un nivel en línea
Artikulua
Para leer un blob que se encuentra en el nivel de archivo, primero debe rehidratar el blob a un nivel en línea (frecuente, esporádico o frío). Puede rehidratar un blob de una de estas dos maneras:
Al copiarlo en un nuevo blob en el nivel de acceso frecuente, esporádico o esporádico con la operación Copiar blob.
Cambiando su nivel de archivo a nivel frecuente, esporádico o inactivo con la operación Establecer nivel de blob.
Al rehidratar un blob, puede especificar la prioridad de la operación en prioridad estándar o alta. Una operación de rehidratación de prioridad estándar puede tardar hasta 15 horas en completarse. Una operación de prioridad alta tiene prioridad sobre las solicitudes de prioridad estándar y puede completarse en menos de una hora para objetos de menos de 10 GB de tamaño. Puede cambiar la prioridad de rehidratación de Estándar a Alta mientras la operación está pendiente.
Puede configurar Azure Event Grid para que active un evento cuando se complete la rehidratación y ejecutar el código de la aplicación en respuesta. Para aprender a controlar un evento que ejecuta una función de Azure cuando se completa la operación de rehidratación de blobs, consulte Ejecución de una función de Azure en respuesta a un evento de rehidratación de blobs.
Rehidratación de un blob con una operación de copia
Para rehidratar un blob desde el nivel de archivo copiándolo en un nivel en línea, use Azure Portal, PowerShell, la CLI de Azure o una de las bibliotecas cliente de Azure Storage. Tenga en cuenta que, al copiar un blob archivado en un nivel en línea, los blobs de origen y destino deben tener nombres diferentes.
Se admite la copia de un blob archivado en un nivel de destino en línea dentro de la misma cuenta de almacenamiento. A partir de la versión del servicio 2021-02-12, puede copiar un blob archivado en otra cuenta de almacenamiento, siempre y cuando la cuenta de destino esté en la misma región que la cuenta de origen.
Una vez completada la operación de copia, el blob de destino aparece en el nivel de archivo. A continuación, el blob de destino se rehidrata al nivel en línea que especificó en la operación de copia. Cuando el blob de destino está totalmente rehidratado, está disponible en el nuevo nivel en línea.
Rehidratación de un blob en la misma cuenta de almacenamiento
En los ejemplos siguientes, se muestra cómo copiar un blob archivado en un blob en el nivel de acceso frecuente en la misma cuenta de almacenamiento.
Navegue hasta la cuenta de almacenamiento de origen en Azure Portal.
En el panel de navegación de la cuenta de almacenamiento, seleccione Explorador de almacenamiento.
En el explorador de almacenamiento, vaya a la ubicación del blob archivado, active la casilla que aparece junto al blob y, a continuación, seleccione el botón Copiar.
Vaya al contenedor donde desea colocar el blob rehidratado y, a continuación, seleccione el botón Pegar.
Aparece el cuadro de diálogo Paste archive blob (Pegar blob de archivo).
Nota:
Si selecciona el botón Pegar mientras se encuentra en la misma ubicación que el blob de origen, el nombre predeterminado que aparece en el campo Destination blob name (Nombre del blob de destino) contiene un sufijo numérico. Esto garantiza que los blobs de origen y destino tengan nombres diferentes. Puede cambiar este nombre si desea siempre que el nombre sea diferente del nombre del blob de origen.
En el cuadro de diálogo Paste archive blob (Pegar blob de archivo), elija un nivel de acceso y una prioridad de rehidratación. A continuación, seleccione Pegar para rehidratar el blob.
Importante
No elimine el blob de origen mientras se rehidrate.
Para copiar un blob archivado en un nivel en línea con PowerShell, llame al comando Start-AzStorageBlobCopy y especifique el nivel de destino y la prioridad de rehidratación. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
# 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 with Standard priority.
Start-AzStorageBlobCopy -SrcContainer $srcContainerName `
-SrcBlob $srcBlobName `
-DestContainer $destContainerName `
-DestBlob $destBlobName `
-StandardBlobTier Hot `
-RehydratePriority Standard `
-Context $ctx
Para copiar un blob archivado en un nivel en línea con la CLI de Azure, llame al comando az storage blob copy start y especifique el nivel de destino y la prioridad de rehidratación. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
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 \
--rehydrate-priority standard \
--auth-mode login
N/D
Rehidratación de un blob en una cuenta de almacenamiento diferente en la misma región
En los ejemplos siguientes, se muestra cómo copiar un blob archivado en un blob en el nivel de acceso frecuente en una cuenta de almacenamiento diferente.
Nota
El destino y la cuenta de origen deben estar en la misma región.
Navegue hasta la cuenta de almacenamiento de origen en Azure Portal.
En el panel de navegación de la cuenta de almacenamiento, seleccione Explorador de almacenamiento.
En el explorador de almacenamiento, vaya a la ubicación del blob archivado, active la casilla que aparece junto al blob y, a continuación, seleccione el botón Copiar.
Vaya a la cuenta de almacenamiento de destino y, en el panel de navegación, seleccione Explorador de almacenamiento.
Vaya al contenedor donde desea colocar el blob rehidratado y, a continuación, seleccione el botón Pegar.
Aparece el cuadro de diálogo Paste archive blob (Pegar blob de archivo).
En el cuadro de diálogo Paste archive blob (Pegar blob de archivo), elija un nivel de acceso y una prioridad de rehidratación. A continuación, seleccione Pegar para rehidratar el blob.
Importante
No elimine el blob de origen mientras se rehidrate.
Para copiar un blob archivado en un blob en un nivel en línea en una cuenta de almacenamiento diferente con PowerShell, asegúrese de que ha instalado el módulo Az.Storage, versión 4.4.0 o posterior. A continuación, llame al comando Start-AzStorageBlobCopy y especifique el nivel en línea de destino y la prioridad de la rehidratación. Debe especificar una firma de acceso compartido (SAS) con permisos de lectura para el blob de origen archivado.
En los ejemplos siguientes, se muestra cómo copiar un blob archivado en el nivel de acceso frecuente en una cuenta de almacenamiento diferente. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
$rgName = "<resource-group>"
$srcAccount = "<source-account>"
$destAccount = "<dest-account>"
$srcContainer = "<source-container>"
$destContainer = "<dest-container>"
$srcBlob = "<source-blob>"
$destBlob = "<destination-blob>"
# Get the destination account context
$destCtx = New-AzStorageContext -StorageAccountName $destAccount -UseConnectedAccount
# Get the source account context
$srcCtx = New-AzStorageContext -StorageAccountName $srcAccount -UseConnectedAccount
# Get the SAS URI for the source blob
$srcBlobUri = New-AzStorageBlobSASToken -Container $srcContainer `
-Blob $srcBlob `
-Permission rwd `
-ExpiryTime (Get-Date).AddDays(1) `
-FullUri `
-Context $srcCtx
# Start the cross-account copy operation
Start-AzStorageBlobCopy -AbsoluteUri $srcBlobUri `
-DestContainer $destContainer `
-DestBlob $destBlob `
-DestContext $destCtx `
-StandardBlobTier Hot `
-RehydratePriority Standard
Para copiar un blob archivado en un blob en un nivel en línea en una cuenta de almacenamiento diferente con la CLI de Azure, asegúrese de que ha instalado la versión 2.35.0 o posterior. A continuación, llame al comando az storage blob copy start y especifique el nivel en línea de destino y la prioridad de la rehidratación. Debe especificar una firma de acceso compartido (SAS) con permisos de lectura para el blob de origen archivado.
En los ejemplos siguientes, se muestra cómo copiar un blob archivado en el nivel de acceso frecuente en una cuenta de almacenamiento diferente. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
# Specify the expiry interval
end=`date -u -d "1 day" '+%Y-%m-%dT%H:%MZ'`
# Get a SAS for the source blob
srcBlobUri=$(az storage blob generate-sas \
--account-name <source-account> \
--container <source-container> \
--name <archived-source-blob> \
--permissions rwd \
--expiry $end \
--https-only \
--full-uri \
--as-user \
--auth-mode login | tr -d '"')
# Copy to the destination blob in the hot tier
az storage blob copy start \
--source-uri $srcBlobUri \
--account-name <dest-account> \
--destination-container <dest-container> \
--destination-blob <dest-blob> \
--tier Hot \
--rehydrate-priority Standard \
--auth-mode login
N/D
Rehidratación desde una región secundaria
Si ha configurado la cuenta de almacenamiento para usar el almacenamiento con redundancia geográfica con acceso de lectura (RA-GRS), puede copiar un blob archivado de una región secundaria en un nivel en línea de una cuenta de almacenamiento diferente de esa misma región secundaria.
Para rehidratar desde una región secundaria, use las mismas instrucciones que se presentan en la sección anterior (Rehidratación de un blob en una cuenta de almacenamiento diferente en la misma región). Anexe el sufijo -secondary al nombre de cuenta del punto de conexión de origen. Por ejemplo, si el punto de conexión primario de Blob Storage es myaccount.blob.core.windows.net, el punto de conexión secundario es myaccount-secondary.blob.core.windows.net. Las claves de acceso de la cuenta son iguales para los puntos de conexión primario y secundario.
Para cambiar el nivel de un blob de archivo a frecuente o esporádico en Azure Portal, siga estos pasos:
Busque el blob que se va a rehidratar en Azure Portal.
Seleccione el botón Más en el lado derecho de la página.
Seleccione Cambiar nivel.
Seleccione el nivel de acceso de destino en la lista desplegable Nivel de acceso.
En la lista desplegable Prioridad de rehidratación, seleccione la prioridad de rehidratación deseada. Tenga en cuenta que, al establecer la prioridad de rehidratación en Alta, normalmente la rehidratación es más rápida, pero también conlleva un costo mayor.
Seleccione el botón Guardar.
Para cambiar el nivel de un blob de archivo a frecuente o esporádico con PowerShell, use la propiedad BlobClient del blob para devolver una referencia de .NET al blob y, luego, llame al método SetAccessTier en esa referencia. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$blobName = "<archived-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Change the blob's access tier to hot with Standard priority.
$blob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$blob.BlobClient.SetAccessTier("Hot", $null, "Standard")
Para cambiar el nivel de un blob de archivo a frecuente o esporádico con la CLI de Azure, llame al comando az storage blob set-tier. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <archived-blob> \
--tier Hot \
--rehydrate-priority Standard \
--auth-mode login
Para cambiar el nivel de un blob de Archivo a Frecuente o Esporádico con AzCopy, use el comando azcopy set-properties, establezca el parámetro -block-blob-tier en el nivel deseado y --rehydrate-priority en standard o high. De manera predeterminada, este parámetro está establecido en standard. Para más información sobre las ventajas de cada opción, consulte Prioridad de rehidratación.
Importante
La capacidad de cambiar el nivel de un blob mediante AzCopy se encuentra actualmente en VERSIÓN PRELIMINAR.
Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.
Nota
En este ejemplo los argumentos de ruta de acceso se encierran entre comillas simples ('). Use comillas simples en todos los shells de comandos excepto en el shell de comandos de Windows (cmd.exe). Si usa un shell de comandos de Windows (cmd.exe), incluya los argumentos de la ruta de acceso entre comillas dobles ("") en lugar de comillas simples (''). Este ejemplo tampoco contiene ningún token de SAS porque supone que ha proporcionado credenciales de autorización mediante Microsoft Entra ID. Consulte el artículo Introducción a AzCopy para información sobre las formas de proporcionar las credenciales de autorización para el servicio de almacenamiento.
Para rehidratar blobs archivados en un contenedor o una carpeta en el nivel de acceso frecuente o esporádico, enumere a través de los blobs y llame a la operación Set Blob Tier en cada uno de ellos. En el ejemplo siguiente se muestra cómo realizar esta operación:
Para rehidratar un gran número de blobs a la vez, llame a la operación Blob Batch para llamar a Set Blob Tier como una operación masiva.
Para ver un ejemplo de código que muestra cómo realizar la operación por lotes, consulte AzBulkSetBlobTier.
Comprobación del estado de una operación de rehidratación
Mientras se rehidrata el blob, puede comprobar su estado y su prioridad de rehidratación mediante Azure Portal, PowerShell o la CLI de Azure. La propiedad de estado puede devolver rehydrate-pending-to-hot o rehydrate-pending-to-cool, según el nivel de acceso de destino de la operación de rehidratación. La propiedad de prioridad de rehidratación devuelve Standard o High.
Tenga en cuenta que la rehidratación de un blob archivado puede tardar hasta 15 horas y sondear repetidamente el estado del blob para determinar si la rehidratación está completa resulta ineficaz. El uso de Azure Event Grid para capturar el evento que se activa cuando se completa la rehidratación ofrece una mejor relación costo-rendimiento. Para aprender a ejecutar una función de Azure cuando se produce un evento en la rehidratación de blobs, consulte Ejecución de una función de Azure en respuesta a un evento de rehidratación de blobs.
Para comprobar el estado y la prioridad de una operación de rehidratación pendiente en Azure Portal, muestre el cuadro de diálogo Cambiar nivel:
Una vez completada la rehidratación, puede ver que aparece ahora el blob totalmente rehidratado en Azure Portal en el nivel en línea de destino.
Para comprobar el estado y la prioridad de una operación de rehidratación pendiente con PowerShell, llame al comando Get-AzStorageBlob y compruebe las propiedades ArchiveStatus y RehydratePriority del blob. Si la rehidratación es una operación de copia, compruebe estas propiedades en el blob de destino. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
Para comprobar el estado y la prioridad de una operación de rehidratación pendiente con la CLI de Azure, llame al comando az storage blob show y compruebe las propiedades rehydrationStatus y rehydratePriority del blob de destino. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
Cambio de la prioridad de rehidratación de una operación pendiente
Mientras esté pendiente una operación de rehidratación de prioridad estándar, puede cambiar la configuración de prioridad de rehidratación de un blob de Estándar a Alta para rehidratar ese blob más rápidamente.
La configuración de prioridad de rehidratación no se puede reducir de Alta a Estándar para una operación pendiente. Tenga en cuenta también que cambiar la prioridad de rehidratación puede tener un impacto en la facturación. Para obtener más información, consulte Rehidratación de blobs desde el nivel de archivo.
Cambio de la prioridad de rehidratación para una operación Establecer el nivel del blob pendiente
Para cambiar la prioridad de rehidratación mientras está pendiente una operación Establecer el nivel del blob de prioridad estándar, use Azure Portal, PowerShell, la CLI de Azure o una de las bibliotecas cliente de Azure Storage.
Para cambiar la prioridad de rehidratación de una operación pendiente con Azure Portal, siga estos pasos:
Vaya al blob para el que desea cambiar la prioridad de rehidratación y selecciónelo.
Seleccione el botón Cambiar nivel.
En el cuadro de diálogo Cambiar nivel, establezca el nivel de acceso en el nivel de acceso en línea de destino para el blob de rehidratado (esporádico o frecuente). El campo Estado de archivo muestra el nivel en línea de destino.
En la lista desplegable Prioridad de rehidratación, establezca la prioridad en Alta.
Seleccione Guardar.
Para cambiar la prioridad de rehidratación de una operación pendiente con PowerShell, asegúrese de haber instalado el módulo Az.Storage, versión 3.12.0 o posterior. A continuación, obtenga del servicio las propiedades del blob. Este paso es necesario para asegurarse de que tiene un objeto con la configuración de propiedades más reciente. A continuación, use la propiedad BlobClient del blob para devolver una referencia de .NET al blob y, luego, llame al método SetAccessTier con esa referencia.
# Get the blob from the service.
$rehydratingBlob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
# Verify that the current rehydration priority is Standard.
if ($rehydratingBlob.BlobProperties.RehydratePriority -eq "Standard")
{
# Change rehydration priority to High, using the same target tier.
if ($rehydratingBlob.BlobProperties.ArchiveStatus -eq "rehydrate-pending-to-hot")
{
$rehydratingBlob.BlobClient.SetAccessTier("Hot", $null, "High")
"Changing rehydration priority to High for blob moving to hot tier."
}
if ($rehydratingBlob.BlobProperties.ArchiveStatus -eq "rehydrate-pending-to-cool")
{
$rehydratingBlob.BlobClient.SetAccessTier("Cool", $null, "High")
"Changing rehydration priority to High for blob moving to cool tier."
}
}
Para cambiar la prioridad de rehidratación de una operación pendiente con la CLI de Azure, primero asegúrese de que tiene instalada la versión 2.29.2 o posterior de la CLI de Azure. Para más información sobre cómo instalar la CLI de Azure, consulte Instalación de la CLI de Azure.
A continuación, llame al comando az storage blob set-tier con el parámetro --rehydrate-priority establecido en High. El nivel de destino (esporádico o frecuente) debe ser el mismo nivel que especificó originalmente para la operación de rehidratación. No olvide reemplazar los valores de los marcadores de posición entre corchetes angulares por los suyos propios:
# Update the rehydration priority for a blob moving to the hot tier.
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier Hot \
--rehydrate-priority High \
--auth-mode login
# Show the updated property values.
az storage blob show \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--query '[rehydratePriority, properties.rehydrationStatus]' \
--output tsv \
--auth-mode login
N/D
Cambio de la prioridad de rehidratación de una operación Copiar blob pendiente
Al rehidratar un blob copiando el blob archivado en un nivel en línea, Azure Storage inmediatamente crea el blob de destino en el nivel de archivo. A continuación, el blob de destino se rehidrata en el nivel de destino con la prioridad especificada en la operación de copia. Para más información sobre cómo rehidratar un blob archivado con una operación de copia, consulte Copia de un blob archivado en un nivel en línea.
Para realizar la operación de copia desde el nivel de archivo a un nivel en línea con prioridad Estándar, use PowerShell, la CLI de Azure o una de las bibliotecas cliente de Azure Storage. Para más información, consulte Rehidratación de un blob con una operación de copia. A continuación, para cambiar la prioridad de rehidratación de Estándar a Alta para la rehidratación pendiente, llame a Establecer el nivel del blob en el blob de destino y especifique el nivel de destino.
Después de haber iniciado la operación de copia, verá en Azure Portal que tanto el blob de origen como el de destino se encuentran en el nivel de archivo. El blob de destino se está rehidratando con prioridad Estándar.
Para cambiar la prioridad de rehidratación del blob de destino, siga estos pasos:
Seleccione el blob de destino.
Seleccione el botón Cambiar nivel.
En el cuadro de diálogo Cambiar nivel, establezca el nivel de acceso en el nivel de acceso en línea de destino para el blob de rehidratado (esporádico o frecuente). El campo Estado de archivo muestra el nivel en línea de destino.
En la lista desplegable Prioridad de rehidratación, establezca la prioridad en Alta.
Seleccione Guardar.
La página de propiedades del blob de destino ahora muestra que se está rehidratando con prioridad alta.
Después de iniciar la operación de copia, compruebe las propiedades del blob de destino. Verá que el blob de destino está en el nivel de archivo y se está rehidratando con prioridad Estándar.
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$destContainerName = "<container>"
$destBlobName = "<destination-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Get properties for the destination blob.
$destinationBlob = Get-AzStorageBlob -Container $destContainerName `
-Blob $destBlobName `
-Context $ctx
$destinationBlob.BlobProperties.AccessTier
$destinationBlob.BlobProperties.ArchiveStatus
$destinationBlob.BlobProperties.RehydratePriority
A continuación, llame al método SetAccessTier a través de PowerShell para cambiar la prioridad de rehidratación del blob de destino a Alta, como se describe en Cambio de la prioridad de rehidratación para una operación Establecer el nivel del blob pendiente. El nivel de destino (esporádico o frecuente) debe ser el mismo nivel que especificó originalmente para la operación de rehidratación. Vuelva a comprobar las propiedades para comprobar que el blob se está rehidratando con prioridad alta.
Después de iniciar la operación de copia, compruebe las propiedades del blob de destino. Verá que el blob de destino está en el nivel de archivo y se está rehidratando con prioridad Estándar.