Archivado y acceso a datos fríos

IBM Cloud® Object Storage "Archive" y "Accelerated Archive" son opciones de bajo coste para datos a los que rara vez se accede. Puede almacenar datos transfiriéndolos de los niveles de almacenamiento (Estándar, Caja fuerte, Caja fuerte fría y Flex) a un archivador a largo plazo fuera de línea o puede utilizar la opción Caja fuerte fría. Con la nueva función "Accelerated Archive" puede acceder rápidamente a los datos inactivos con una restauración que se produce en menos de dos horas.

Esta característica no está soportada actualmente en Object Storage para Satellite. Más información.

Los niveles de archivo y archivo acelerado tienen una duración mínima de almacenamiento de 90 días. Los objetos eliminados antes de este plazo seguirán incurriendo en gastos de almacenamiento durante los 90 días completos.

Tanto Archive como Accelerated Archive tienen un tamaño mínimo de objeto para la facturación de 128KBs. Los objetos de tamaño inferior pueden archivarse, pero se facturarán según la tarifa de 128KB.

Los objetos escritos en Vault o Cold Vault se facturarán por toda la duración mínima de almacenamiento en esos niveles, incluso si el objeto se archiva antes de la duración mínima.

Puede archivar objetos mediante la consola web, la API REST y herramientas de terceros integradas en IBM Cloud Object Storage.

Para obtener más información sobre puntos finales, consulte Puntos finales y ubicaciones de almacenamiento

Adición o gestión de una política de archivado en un grupo

Al crear o modificar una política de archivado para un grupo, tenga en cuenta lo siguiente:

  • Una política de archivado se puede añadir a un grupo nuevo o existente en cualquier momento.
  • Una política de archivado existente se puede modificar o inhabilitar.
  • Una política de archivado recién añadida o modificada se aplica a los nuevos objetos cargados y no afecta a los objetos existentes.

Cree un bucket en la consola después de iniciar sesión y configure su política de archivo.

Para archivar de forma inmediata los nuevos objetos cargados en un grupo, especifique 0 días en la política de archivado.

El archivado solo está disponible en determinadas regiones. Consulte Servicios integrados para obtener más información.

Restauración de un objeto archivado

Para acceder a un objeto archivado, debe restaurarlo en el nivel de almacenamiento original. Cuando restaure un objeto, puede especificar el número de días que desea que el objeto esté disponible. Al final del periodo especificado, la copia restaurada se suprime.

El proceso de restauración para "Archivado acelerado" tarda hasta 2 horas, mientras que el proceso de restauración para Archivado tarda hasta 12 horas.

Los subestados de un objeto archivados son los siguientes:

  • Archivado: un objeto en estado archivado se ha movido de su nivel de almacenamiento en línea (Estándar, Caja fuerte, Caja fuerte fría y Flex) al nivel de archivado fuera de línea en función de la política de archivado del grupo.
  • Restaurando: un objeto en estado restaurando están en proceso de generar una copia a partir del estado archivado a su nivel de almacenamiento en línea original.
  • Restaurado: un objeto en el estado restaurado es una copia del objeto archivado que se ha restaurado en su nivel de almacenamiento en línea original durante un periodo de tiempo especificado. Al final del periodo, la copia del objeto se suprime, mientras se mantiene el objeto archivado.

Restauración de un objeto utilizando la CLI de AWS

Los ejemplos siguientes utilizan variables de entorno para mayor claridad. Se deben establecer en los valores deseados, por ejemplo, $ENDPOINT se establecería en https://s3.us.cloud-object-storage.appdomain.cloud, o https://s3.eu-de.private.cloud-object-storage.appdomain.cloud, o cualquier otro valor necesario.

  1. Comprobar estado de objeto: aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY La clase de almacenamiento se mostrará como ("StorageClass": "GLACIER")
  2. Restaure el objeto: aws --endpoint-url $ENDPOINT s3api restore-object ---bucket $BUCKET --key $KEY --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Bulk"}}'
  3. Compruebe el estado: aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEY

Limitaciones

Las políticas de archivado se implementan mediante un subconjunto de la operación de la API S3 PUT Bucket Lifecycle Configuration.

Las funciones admitidas incluyen:

  • Especificación de una fecha o del número de días en el futuro en que los objetos se transferirán a un estado archivado.
  • Establecimiento de reglas de caducidad para los objetos.

Las políticas que especifican una fecha en el pasado pueden tardar unos días en completarse.

Las funciones no admitidas incluyen:

  • Varias reglas de transición por grupo.
  • Filtrado de objetos que archivar mediante un prefijo o una clave de objeto.
  • Definición de niveles entre clases de almacenamiento.

Los usuarios de la infraestructura clásica (no IAM) no pueden establecer la clase de almacenamiento de transición en ACCELERATED.

Utilización de la API REST y de los SDK

Creación de una configuración de ciclo de vida de un grupo

Esta implementación de la operación PUT utiliza el parámetro de consulta lifecycle para definir valores de ciclo de vida para el grupo. Esta operación permite una sola definición de política de ciclo de vida para un determinado grupo. La política se define como una regla que consta de los parámetros siguientes: ID, Status y Transition.

La acción de transición permite pasar objetos futuros escritos en el grupo a un estado archivado después de un periodo de tiempo definido. Los cambios en la política de ciclo de vida para un grupo solo se aplican a los objetos nuevos escritos en ese grupo.

Los usuarios de Cloud IAM deben tener como mínimo el rol de Writer para poder añadir una política de ciclo de vida al grupo.

Los usuarios de la infraestructura clásica deben tener permisos de Propietario y poder crear grupos en la cuenta de almacenamiento para añadir una política de ciclo de vida al grupo.

Esta operación no utiliza parámetros de consulta adicionales específicos de la operación.

Cabeceras opcionales
Cabecera Tipo Descripción
Content-MD5 Serie El hash de 128 bits MD5 codificado en base64 de la carga útil, que se utiliza como comprobación de integridad para garantizar que la carga útil no ha sido alterada en tránsito.
x-amz-checksum-crc32 Serie Esta cabecera es la suma de comprobación de 32 bits CRC32 codificada en Base64 del objeto.
x-amz-checksum-crc32c Serie Esta cabecera es la suma de comprobación de 32 bits CRC32C codificada en Base64 del objeto.
x-amz-checksum-crc64nvme Serie Esta cabecera es la suma de comprobación de 64 bits CRC64NVME codificada en Base64 del objeto. La suma de comprobación de CRC64NVME es siempre una suma de comprobación de objeto completo.
x-amz-checksum-sha1 Serie Este encabezado es el Base64 codificado, 160-bit SHA1 digest del objeto.
x-amz-checksum-sha256 Serie Este encabezado es el Base64 codificado, 256-bit SHA256 digest del objeto.
x-amz-sdk-checksum-algorithm Serie Indica el algoritmo utilizado para crear la suma de comprobación del objeto cuando se utiliza el SDK.

Se requiere un encabezado Content-MD5 o un encabezado checksum (incluyendo x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-crc64nvme, x-amz-checksum-sha1, o x-amz-checksum-sha256) como comprobación de integridad para la carga útil.

El cuerpo de la solicitud debe contener un bloque XML con el esquema siguiente:

Elemento Tipo Hijos Predecesor Restricción
LifecycleConfiguration Contenedor Rule Ninguna Límite 1.
Rule Contenedor ID, Status, Filter, Transition LifecycleConfiguration Límite 1.
ID Serie Ninguna Rule Debe constar de (a-z,A-Z, 0-9) y los símbolos siguientes: ! _ . * ' ( ) -
Filter Serie Prefix Rule Debe contener un elemento Prefix
Prefix Serie Ninguna Filter Debe estar configurado en <Prefix/>.
Transition Container Days, StorageClass Rule Limitar 1 regla de transición y un máximo de 1000 reglas totales.
Days Entero no negativo Ninguna Transition Debe ser un valor igual o mayor que 0.
Date Fecha Ninguna Transistion Debe estar en formato ISO 8601 y la fecha debe ser futura.
StorageClass Serie Ninguna Transition GLACIER o ACCELERATED

Sintaxis

PUT https://{endpoint}/{bucket}?lifecycle # path style
PUT https://{bucket}.{endpoint}?lifecycle # virtual host style
<LifecycleConfiguration>
	<Rule>
		<ID>{string}</ID>
		<Status>Enabled</Status>
		<Filter>
			<Prefix/>
		</Filter>
		<Transition>
			<Days>{integer}</Days>
			<StorageClass>{StorageClass}</StorageClass>
		</Transition>
	</Rule>
</LifecycleConfiguration>

Ejemplos

Solicitud de ejemplo

PUT /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 17:50:00 GMT
Authorization: authorization string
Content-Type: text/plain
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Content-Length: 305
<LifecycleConfiguration>
    <Rule>
        <ID>my-archive-policy</ID>
        <Filter>
			<Prefix/>
		</Filter>
        <Status>Enabled</Status>
        <Transition>
            <Days>20</Days>
            <StorageClass>ACCELERATED</StorageClass>
        </Transition>
    </Rule>
</LifecycleConfiguration>

Respuesta de ejemplo

HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 17:51:00 GMT
Connection: close
var params = {
  Bucket: 'STRING_VALUE', /* required */
  LifecycleConfiguration: {
    Rules: [ /* required */
      {
        Status: 'Enabled', /* required */
        ID: 'STRING_VALUE',
        Filter: '', /* required */
        Prefix: '',
        Transitions: [
          {
            Date: DATE, /* required if Days not specified */
            Days: 0, /* required if Date not specified */
            StorageClass: 'STRING_VALUE' /* required */
          },
        ]
      },
    ]
  }
};

s3.putBucketLifecycleConfiguration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
response = client.put_bucket_lifecycle_configuration(
    Bucket='string',
    LifecycleConfiguration={
        'Rules': [
            {
                'ID': 'string',
                'Status': 'Enabled',
                'Filter': '',
                'Prefix': '',
                'Transitions': [
                    {
                        'Date': datetime(2015, 1, 1),
                        'Days': 123,
                        'StorageClass': 'GLACIER'
                    },
                ]
            },
        ]
    }
)
public SetBucketLifecycleConfigurationRequest(String bucketName,
                                              BucketLifecycleConfiguration lifecycleConfiguration)

Resumen de métodos

Método Descripción
getBucketName() Obtiene el nombre del grupo cuya configuración de ciclo de vida se va a definir.
getLifecycleConfiguration() Obtiene la nueva configuración del ciclo de vida para el grupo especificado.
setBucketName(String bucketName) Define el nombre del grupo cuya configuración de ciclo de vida se va a definir.
withBucketName(String bucketName) Define el nombre del grupo cuya configuración de ciclo de vida se va a definir y devuelve este objeto para que las llamadas adicionales al método se puedan encadenar.

Recuperación de una configuración de ciclo de vida de un grupo

Esta implementación de la operación GET utiliza el parámetro de consulta lifecycle para recuperar valores de ciclo de vida para el grupo.

Los usuarios de Cloud IAM deben tener como mínimo el rol de Reader para poder recuperar un ciclo de vida para un grupo.

Los usuarios de la infraestructura clásica deben tener como mínimo permisos de Read sobre el grupo para recuperar una política de ciclo de vida para un grupo.

Esta operación no utiliza cabeceras adicionales específicas de la operación, parámetros de consulta ni carga útil.

Sintaxis

GET https://{endpoint}/{bucket}?lifecycle # path style
GET https://{bucket}.{endpoint}?lifecycle # virtual host style

Ejemplos

Solicitud de ejemplo

GET /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 17:50:00 GMT
Authorization: authorization string

Respuesta de ejemplo

HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 17:51:00 GMT
Connection: close
<LifecycleConfiguration>
    <Rule>
        <ID>my-archive-policy</ID>
        <Filter />
        <Status>Enabled</Status>
        <Transition>
            <Days>20</Days>
            <StorageClass>GLACIER</StorageClass>
        </Transition>
    </Rule>
</LifecycleConfiguration>
var params = {
  Bucket: 'STRING_VALUE' /* required */
};
s3.getBucketLifecycleConfiguration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
response = client.get_bucket_lifecycle_configuration(Bucket='string')
public GetBucketLifecycleConfigurationRequest(String bucketName)

Supresión de una configuración de ciclo de vida de un grupo

Esta implementación de la operación DELETE utiliza el parámetro de consulta lifecycle para eliminar valores de ciclo de vida para el grupo. Las transiciones definidas por las reglas dejarán de ejecutarse para los objetos nuevos.

Nota: se mantendrán las reglas de transición existentes para los objetos que ya se habían escrito en el grupo antes de que se suprimieran las reglas.

Los usuarios de Cloud IAM deben tener como mínimo el rol de Writer para poder eliminar una política de ciclo de vida de un grupo.

Los usuarios de la infraestructura clásica deben tener permisos de Owner sobre el grupo para eliminar una política de ciclo de vida de un grupo.

Esta operación no utiliza cabeceras adicionales específicas de la operación, parámetros de consulta ni carga útil.

Sintaxis

DELETE https://{endpoint}/{bucket}?lifecycle # path style
DELETE https://{bucket}.{endpoint}?lifecycle # virtual host style

Ejemplos

Solicitud de ejemplo

DELETE /images?lifecycle HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 18:50:00 GMT
Authorization: authorization string

Respuesta de ejemplo

HTTP/1.1 204 No Content
Date: Wed, 7 Feb 2018 18:51:00 GMT
Connection: close
var params = {
  Bucket: 'STRING_VALUE' /* required */
};
s3.deleteBucketLifecycle(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});
response = client.delete_bucket_lifecycle(Bucket='string')
public DeleteBucketLifecycleConfigurationRequest(String bucketName)

Restauración temporal de un objeto archivado

Esta implementación de la operación POST utiliza el parámetro de consulta restore para solicitar la restauración temporal de un objeto archivado. Primero el usuario debe restaurar un objeto archivado para poder descargar o modificar el objeto. Cuando se restaura un objeto, el usuario debe especificar un periodo después del cual se suprimirá la copia temporal del objeto. El objeto mantiene la clase de almacenamiento del grupo.

Puede haber un retardo de hasta 12 horas antes de que se pueda acceder a la copia restaurada. Una solicitud HEAD puede comprobar si la copia restaurada está disponible.

Para restaurar el objeto de forma permanente, el usuario debe copiar el objeto restaurado en un grupo que no tenga una configuración de ciclo de vida activa.

Los usuarios de Cloud IAM deben tener como mínimo el rol de Writer para poder restaurar un objeto.

Los usuarios de la infraestructura clásica deben tener como mínimo permisos de Write sobre el grupo y el permiso de Read sobre el objeto para restaurarlo.

Esta operación no utiliza parámetros de consulta adicionales específicos de la operación.

Cabeceras opcionales
Cabecera Tipo Descripción
Content-MD5 Serie El hash de 128 bits MD5 codificado en base64 de la carga útil, que se utiliza como comprobación de integridad para garantizar que la carga útil no ha sido alterada en tránsito.
x-amz-checksum-crc32 Serie Esta cabecera es la suma de comprobación de 32 bits CRC32 codificada en Base64 del objeto.
x-amz-checksum-crc32c Serie Esta cabecera es la suma de comprobación de 32 bits CRC32C codificada en Base64 del objeto.
x-amz-checksum-crc64nvme Serie Esta cabecera es la suma de comprobación de 64 bits CRC64NVME codificada en Base64 del objeto. La suma de comprobación de CRC64NVME es siempre una suma de comprobación de objeto completo.
x-amz-checksum-sha1 Serie Este encabezado es el Base64 codificado, 160-bit SHA1 digest del objeto.
x-amz-checksum-sha256 Serie Este encabezado es el Base64 codificado, 256-bit SHA256 digest del objeto.
x-amz-sdk-checksum-algorithm Serie Indica el algoritmo utilizado para crear la suma de comprobación del objeto cuando se utiliza el SDK.

El cuerpo de la solicitud debe contener un bloque XML con el esquema siguiente:

Elemento Tipo Hijos Predecesor Restricción
RestoreRequest Contenedor Days, GlacierJobParameters Ninguna Ninguna
Days Entero Ninguna RestoreRequest Se ha especificado el tiempo de vida del objeto restaurado temporalmente. El número mínimo de días que puede existir una copia restaurada del objeto es 1. Una vez transcurrido el periodo de restauración, se eliminará la copia temporal del objeto.
GlacierJobParameters Serie Tier RestoreRequest Ninguna
Tier Serie Ninguna GlacierJobParameters Opcional, y si se deja en blanco tomará como valor predeterminado el valor asociado con el nivel de almacenamiento de la política que estaba en su lugar cuando se grabó el objeto. Si este valor no se deja en blanco, debe establecerse en Bulk si la clase de almacenamiento de transición para la política de ciclo de vida del grupo se ha establecido en GLACIER, y debe establecerse en Accelerated si la clase de almacenamiento de transición se ha establecido en ACCELERATED.

Una respuesta correcta devuelve 202 si el objeto se encuentra en el estado archivado y 200 si el objeto ya está en el estado restaurado. Si el objeto ya está en el estado restaurado y se recibe una nueva solicitud para restaurar el objeto, el elemento Days actualizará el tiempo de caducidad del objeto restaurado.

Sintaxis

POST https://{endpoint}/{bucket}/{object}?restore # path style
POST https://{bucket}.{endpoint}/{object}?restore # virtual host style
<RestoreRequest>
	<Days>{integer}</Days>
	<GlacierJobParameters>
		<Tier>Bulk</Tier>
	</GlacierJobParameters>
</RestoreRequest>

Ejemplos

Solicitud de ejemplo

POST /images/backup?restore HTTP/1.1
Host: s3.us.cloud-object-storage.appdomain.cloud
Date: Wed, 7 Feb 2018 19:50:00 GMT
Authorization: {authorization string}
Content-Type: text/plain
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Content-Length: 305
<RestoreRequest>
	<Days>3</Days>
	<GlacierJobParameters>
		<Tier>Bulk</Tier>
	</GlacierJobParameters>
</RestoreRequest>

Respuesta de ejemplo

HTTP/1.1 202 Accepted
Date: Wed, 7 Feb 2018 19:51:00 GMT
Connection: close
var params = {
  Bucket: 'STRING_VALUE', /* required */
  Key: 'STRING_VALUE', /* required */
  ContentMD5: 'STRING_VALUE', /* required */
  RestoreRequest: {
   Days: 1, /* days until copy expires */
   GlacierJobParameters: {
     Tier: 'STRING_VALUE' /* required */
   },
  }
 };
 s3.restoreObject(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
});
response = client.restore_object(
    Bucket='string',
    Key='string',
    RestoreRequest={
        'Days': 123,
        'GlacierJobParameters': {
            'Tier': 'string'
        },
    }
)
public RestoreObjectRequest(String bucketName,
                            String key,
                            int expirationInDays)

Resumen de métodos

Método Descripción
clone() Crea un clon de este objeto para todos los campos excepto el contexto de manejador.
getBucketName() Devuelve el nombre del grupo que contiene la referencia al objeto que se va a restaurar.
getExpirationInDays() Devuelve el tiempo en días entre la creación de un objeto y su caducidad.
setExpirationInDays(int expirationInDays) Establece el tiempo, en días, entre el momento en que se carga un objeto en el grupo y el momento en que caduca.

Obtención de las cabeceras de un objeto

Un mandato HEAD con una vía de acceso a un objeto recupera las cabeceras de ese objeto. Esta operación no utiliza parámetros de consulta ni elementos de carga útil específicos de la operación.

Sintaxis

HEAD https://{endpoint}/{bucket-name}/{object-name} # path style
HEAD https://{bucket-name}.{endpoint}/{object-name} # virtual host style

Cabeceras de respuesta para objetos archivados

Cabecera Tipo Descripción
x-amz-restore string Se incluye si el objeto se ha restaurado o si hay una restauración en curso. Si el objeto se ha restaurado, también se devuelve la fecha de caducidad de la copia temporal.
x-amz-storage-class string Devuelve GLACIER o ACCELERATED si se ha archivado o restaurado temporalmente.
x-ibm-archive-transition-time fecha Devuelve la fecha y la hora en que se ha planificado la transición del objeto al nivel de archivado.
x-ibm-transition string Se incluye si el objeto tiene metadatos de transición y devuelve el nivel y el tiempo original de la transición.
x-ibm-restored-copy-storage-class string Se incluye si un objeto se encuentra en los estados RestoreInProgress o Restored y devuelve la clase de almacenamiento del grupo.

Solicitud de ejemplo

HEAD /images/backup HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20160825T183244Z
Host: s3.us.cloud-object-storage.appdomain.cloud

Respuesta de ejemplo

HTTP/1.1 200 OK
Date: Wed, 7 Feb 2018 19:51:00 GMT
X-Clv-Request-Id: da214d69-1999-4461-a130-81ba33c484a6
Accept-Ranges: bytes
Server: 3.x
X-Clv-S3-Version: 2.5
ETag: "37d4c94839ee181a2224d6242176c4b5"
Content-Type: text/plain; charset=UTF-8
Last-Modified: Thu, 25 Aug 2017 17:49:06 GMT
Content-Length: 11
x-ibm-transition: transition="ARCHIVE", date="Mon, 03 Dec 2018 22:28:38 GMT"
x-amz-restore: ongoing-request="false", expiry-date="Thu, 06 Dec 2018 18:28:38 GMT"
x-amz-storage-class: "GLACIER"
x-ibm-restored-copy-storage-class: "Standard"
response = client.head_object(
    Bucket='string',
    Key='string'
)
var params = {
  Bucket: 'STRING_VALUE', /* required */
  Key: 'STRING_VALUE', /* required */
};
s3.headObject(params, function(err,data) {
  if (err) console.log(err, err.stack); // an error occurred
  else
    console.log(data);           // successful response
});
public ObjectMetadata()

Resumen de métodos

Método Descripción
clone() Devuelve un clon de este ObjectMetadata.
getRestoreExpirationTime() Devuelve el momento en que caducará un objeto que se ha restaurado temporalmente desde ARCHIVE, y será necesario volverlo a restaurar para poder acceder al mismo.
getStorageClass() Devuelve la clase de almacenamiento original del grupo.
getIBMTransition() Devuelva la clase de almacenamiento de transición y la hora de la transición.

Próximos pasos

Además del almacenamiento en frío, IBM Cloud ofrece actualmente varias clases adicionales de almacenamiento de objetos para diferentes necesidades de los usuarios, todas ellas accesibles a través de portales web y API RESTful. Obtenga más información sobre todas las clases de almacenamiento disponibles en IBM Cloud Object Storage.