Configuración de reglas del ciclo de vida del bucket
Funciones
Esta operación configura las reglas del ciclo de vida que pueden eliminar o migrar objetos de un bucket en un momento especificado. Situaciones típicas de uso:
- Eliminar archivos cargados periódicamente. Algunos archivos cargados periódicamente solo deben conservarse durante una semana o un mes.
- Eliminar archivos a los que se accede con frecuencia dentro de un cierto período de tiempo, pero que rara vez se accede después. Puede archivar estos documentos y luego programar el tiempo para la eliminación.
- Se puede configurar el tiempo mínimo para la transición del almacenamiento del bucket a Warm o a Cold. El valor oscila entre 24 y 8640.
Puede realizar esta operación para crear o actualizar la configuración del ciclo de vida de un bucket.
- Los objetos vencidos eliminados según una regla de ciclo de vida no se pueden recuperar.
Para realizar esta operación, debe tener el permiso PutLifecycleConfiguration. De forma predeterminada, solo el propietario del bucket puede realizar esta operación. El propietario del bucket puede conceder el permiso a otros usuarios configurando la política de bucket o la política de usuario.
La configuración del ciclo de vida permite a OBS eliminar objetos y clases de almacenamiento de objetos de transición en un momento programado. Para evitar que un usuario lo haga, se deben revocar los siguientes permisos otorgados al usuario:
- DeleteObject
- DeleteObjectVersion
- PutLifecycleConfiguration
Si desea prohibir a un usuario establecer la configuración del ciclo de vida del bucket, revoque el permiso PutLifecycleConfiguration del usuario.
Sintaxis de solicitud
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
PUT /?lifecycle HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Content-Length: length Date: date Authorization: authorization Content-SHA256: SHA256 <?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration> <Rule> <ID>id</ID> <Prefix>prefix</Prefix> <Status>status</Status> <Expiration> <Days>days</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>days</NoncurrentDays> </NoncurrentVersionExpiration> <Transition> <Days>30</Days> <StorageClass>WARM</StorageClass> </Transition> <Transition> <Days>60</Days> <StorageClass>COLD</StorageClass> </Transition> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>WARM</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionTransition> <NoncurrentDays>60</NoncurrentDays> <StorageClass>COLD</StorageClass> </NoncurrentVersionTransition> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>10</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration> |
Parámetros de solicitud
Esta solicitud no contiene parámetros de mensaje.
Encabezados de solicitud
Tabla 1 enumera el encabezado de solicitud.
Elementos de solicitud
En esta solicitud, debe especificar la configuración del ciclo de vida en el cuerpo de la solicitud. La configuración del ciclo de vida se puede cargar en forma de un archivo XML con los elementos descritos en Tabla 2.
- Si el control de versiones de un bucket está activado o suspendido, puede configurar NoncurrentVersionTransition o NoncurrentVersionExpiration para controlar el ciclo de vida de las versiones históricas de objetos. El ciclo de vida de una versión histórica depende del momento en que se convierte en una versión histórica (tiempo en que la versión es reemplazada por una nueva versión) y el valor de NoncurrentDays. Para la eliminación de objetos, si NoncurrentDays se establece en 1, una versión de objeto se eliminará solo después de que se convierta en histórica durante un día. Si la versión V1 del objeto A se crea en la primera fecha de un mes y la nueva versión V2 se carga en la quinta fecha del mes, V1 se convierte en una versión histórica. A las 00:00 de la séptima fecha del mes, V1 expirará. Si una versión de objeto no cumple las condiciones de eliminación, pero NoncurrentDays se establece en 1 y StorageClass en WARM se establece en la clase de almacenamiento Warm un día después de que se haya convertido en una versión histórica. Por ejemplo, la versión V1 del objeto A se crea el primer día de un mes y su nueva versión V2 se carga el quinto día del mes. Entonces V1 se convierte en una versión histórica. Un día después, es decir, a las 0 del séptimo día, V1 pasa a la clase de almacenamiento caliente. La eliminación o la transición del objeto después del tiempo de expiración puede retrasarse. El retraso es dentro de las 48 horas.
- Los objetos se procesan de acuerdo con los siguientes procedimientos, si sus últimas versiones cumplen con la regla de caducidad y el control de versiones está habilitado o suspendido para el bucket.
- Control de versiones habilitado:
Si la última versión del objeto no es un marcador de eliminación, se insertará un nuevo marcador de eliminación para el objeto.
Si la última versión del objeto es un marcador de eliminación y es la única versión del objeto, se eliminará esta última versión.
Si el objeto de la última versión tiene el DeleteMarker y el objeto tiene otras versiones, todas las versiones del objeto permanecen sin cambios.
- Control de versiones suspendido:
Si la última versión del objeto no tiene el DeleteMarker y no es la versión nula, el objeto genera un nuevo DeleteMarker para la versión nula.
Si la última versión del objeto no tiene el DeleteMarker pero es la versión nula, esta versión nula es sobrescrita por un nuevo DeleteMarker generado para la versión nula.
Si la última versión del objeto es un marcador de eliminación y es la única versión del objeto, se eliminará esta última versión.
Si el objeto de la última versión tiene el DeleteMarker y el objeto tiene otras versiones, todas las versiones del objeto permanecen sin cambios.
- Control de versiones habilitado:
- A continuación se enumera el procesamiento cuando el control de versiones está habilitado o suspendido para un bucket y los objetos de las últimas versiones cumplen las reglas de transición:
- Si la última versión del objeto tiene el DeleteMarker no se transferirá la clase de almacenamiento de esta versión.
- Si la última versión del objeto no tiene el DeleteMarker y cumple con la regla de transición, se realizará la transición de la clase de almacenamiento de esta versión.
Nombre |
Descripción |
Obligatorio |
---|---|---|
Date |
Especifica que OBS ejecuta reglas de ciclo de vida para los objetos antes de la fecha especificada. La fecha debe cumplir con el formato ISO8601, y la hora debe cumplir con el formato UTC de 00:00:00. Por ejemplo, 2018-01-01T00:00:00.000Z indica que se eliminan los objetos cuyo tiempo de última modificación es anterior a 2018-01-01T00:00:00.000Z o se pasan a otra clase de almacenamiento. Los objetos cuyo tiempo de última modificación es igual o posterior al tiempo especificado no se eliminan ni se pasan a otra clase de almacenamiento. Tipo: string Nodo antecesor: Expiration, Transition |
Requerido si el elemento Days está ausente. |
Days |
Especifica el número de días (desde la última actualización a la última versión del objeto) después de los cuales la regla del ciclo de vida tiene efecto. Tipo: integer Nodo antecesor: Expiration, Transition |
Requerido si el elemento Date está ausente. |
StorageClass |
Clase de almacenamiento a la que se realiza la transición del objeto. Tipo: string Opciones de valor: WARM, COLD Nodo antecesor: Transition, NoncurrentVersionTransition |
Requerido si el elemento Transition o NoncurrentVersionTransition está presente. |
Transition |
Tiempo de transición y la clase de almacenamiento de objetos después de la transición (válido solo para la última versión del objeto). Tipo: XML Nodo hijo: Date or Days, StorageClass Nodo antepasado: Rule |
Requerido si el elemento NoncurrentVersionTransition, Expiration, AbortIncompleteMultipartUpload, or NoncurrentVersionExpiration está ausente. |
Expiration |
Contenedor para la regla de caducidad de objetos (solo aplicable a las últimas versiones de objetos). Tipo: XML Nodo secundario: Date o Days Nodo antepasado: Rule |
Requerido si está ausente Transition, NoncurrentVersionTransition, AbortIncompleteMultipartUpload, or NoncurrentVersionExpiration. |
ID |
Identificador único de una regla. El valor puede contener un máximo de 255 caracteres. Tipo: string Nodo antepasado: Rule |
No |
LifecycleConfiguration |
Contenedor para reglas de ciclo de vida. Puede agregar varias reglas. El tamaño total de las reglas no puede exceder los 20 KB. Tipo: XML Nodo secundario: Regla Nodo antepasado: ninguno |
Sí |
NoncurrentDays |
Número de días en que la regla especificada entra en vigor después de que el objeto se convierta en una versión histórica (solo aplicable a la versión histórica de un objeto). Tipo: integer Nodo antepasado: NoncurrentVersionExpiration, NoncurrentVersionTransition |
Requerido si el elemento NoncurrentVersionExpiration o NoncurrentVersionTransition está presente. |
NoncurrentVersionTransition |
Tiempo de transición de las versiones históricas de objetos y la clase de almacenamiento de objetos después de la transición. Tipo: XML Nodo secundario: NoncurrentDays, StorageClass Nodo antepasado: Rule |
Requerido si el elemento Transition, Expiration, AbortIncompleteMultipartUpload, o NoncurrentVersionExpiration está ausente. |
NoncurrentVersionExpiration |
Contenedor para el tiempo de caducidad de las versiones históricas de los objetos. Si el control de versiones está habilitado o suspendido para un bucket, puede configurar NoncurrentVersionExpiration para que elimine las versiones históricas de los objetos que coincidan con la regla del ciclo de vida (solo aplicable a las versiones históricas de los objetos). Tipo: XML Nodo secundario: NoncurrentDays Nodo antepasado: Rule |
No |
AbortIncompleteMultipartUpload |
Contenedor para especificar cuándo se eliminarán las partes no fusionadas (fragmentos) en una carga incompleta. Tipo: XML Nodo secundario: DaysAfterInitiation Nodo antepasado: Rule
NOTA:
AbortIncompleteMultipartUpload no admite el filtrado por etiqueta. |
Requerido si el elemento Transition, Expiration, NoncurrentVersionExpiration, o NoncurrentVersionTransition está ausente. |
DaysAfterInitiation |
Especifica el número de días desde el inicio de una carga incompleta de varias partes que OBS esperará antes de eliminar las partes no combinadas (fragmentos) de la carga. Tipo: integer Nodo antepasado: AbortIncompleteMultipartUpload |
Requerido si el elemento AbortIncompleteMultipartUpload está presente. |
Prefix |
Prefijo de nombre de objeto que identifica uno o varios objetos a los que se aplica la regla. Tipo: string Nodo antepasado: Rule Restricciones:
|
Yes |
Rule |
Contenedor para una regla de ciclo de vida específica. Tipo: container Nodo antepasado: LifecycleConfiguration |
Sí |
Status |
Indica si la regla está habilitada. Tipo: string Nodo antepasado: Rule Opciones de valor: Enabled, Disabled |
Sí |
Sintaxis de respuesta
1 2 3 |
HTTP/1.1 status_code Date: date Content-Length: length |
Encabezado de respuesta
La respuesta a la solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 1.
Elementos de respuesta
Esta respuesta no contiene elementos.
Respuestas de error
No se devuelven respuestas de error especiales. Para obtener más información sobre las respuestas de error, consulte Tabla 2.
Ejemplo de solicitud
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
PUT /?lifecycle HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 03:05:34 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:DpSAlmLX/BTdjxU5HOEwflhM0WI= Content-SHA256: ogX9qClMrVJUBiUSIKDFM0qO41jJM0I5SCN55/OtMyI= Content-Length: 919 <?xml version="1.0" encoding="utf-8"?> <LifecycleConfiguration> <Rule> <ID>delete-2-days</ID> <Prefix>test/</Prefix> <Status>Enabled</Status> <Expiration> <Days>70</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>70</NoncurrentDays> </NoncurrentVersionExpiration> <Transition> <Days>30</Days> <StorageClass>WARM</StorageClass> </Transition> <Transition> <Days>60</Days> <StorageClass>COLD</StorageClass> </Transition> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>WARM</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionTransition> <NoncurrentDays>60</NoncurrentDays> <StorageClass>COLD</StorageClass> </NoncurrentVersionTransition> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>10</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration> |
Ejemplo de respuesta
1 2 3 4 5 6 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF26000001643670AC06E7B9A7767921 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSvK6z8HV6nrJh49gsB5vqzpgtohkiFm Date: WED, 01 Jul 2015 03:05:34 GMT Content-Length: 0 |