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.
- Comprobar estado de objeto:
aws --endpoint-url $ENDPOINT s3api head-object --bucket $BUCKET --key $KEYLa clase de almacenamiento se mostrará como("StorageClass": "GLACIER") - Restaure el objeto:
aws --endpoint-url $ENDPOINT s3api restore-object ---bucket $BUCKET --key $KEY --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Bulk"}}' - 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.
| 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.
| 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.