2012-08-29 13 views
16

Sé cómo caducar objetos en un depósito S3 utilizando reglas de caducidad de objeto dado un cierto prefijo, sin embargo, para mi propósito, me gustaría establecer la fecha de caducidad programáticamente por objeto.s3 por expiración del objeto

El SDK de Java parece indicar que esto es posible ya que tiene un método setExpirationTime; sin embargo, cada vez que configuro una fecha de caducidad utilizando este método, no parece que ocurra nada y el objeto nunca caduca. Además, al mirar las propiedades del objeto a través de la consola de Aws, no parece que se establezca el vencimiento.

¿La expiración de los archivos no es compatible?/¿Hay algún paso adicional que deba hacer para que funcione?/Si la caducidad de un archivo no es compatible, ¿es posible excluir un archivo que coincida con un prefijo de caducidad de su caducidad?

¡Gracias de antemano!

Respuesta

8

No se ve como por object expiration es compatible, sino más bien una configuración de ciclo de vida por cubo con hasta 100 reglas por configuración, como ha encontrado.

Un cucharón tiene una configuración de ciclo de vida. Una configuración de ciclo de vida puede tener hasta 100 reglas.

El valor de duración debe ser un entero positivo distinto de cero. Amazon S3 calcula el tiempo de caducidad al agregar el período de caducidad especificado en la regla al tiempo de creación del objeto y redondear el tiempo resultante al día siguiente a la medianoche UTC.

Si por no se admite la caducidad de archivos, es posible excluir un archivo que coincide con un prefijo de caducidad de ser vencido?

Tampoco parece que se puedan superponer las reglas.

Cuide de que las reglas no se superpongan. Por ejemplo, la siguiente configuración del ciclo de vida tiene una regla que establece los objetos con el prefijo "documentos" para caducar después de 30 días. La configuración también tiene otra regla que establece que los objetos con el prefijo "documents/2011" a caducan después de 365 días. En este caso, Amazon S3 devuelve un mensaje de error .

+1

Esto tiene sentido, pero ¿sabe cuál es el método setExpirationTime es entonces? –

+0

Creo que es solo un establecedor de propiedades para el contenedor ObjectMetadata en java SDK. Se invoca con los resultados de la invocación de invocación de objeto interno inernal. Por lo tanto, establece la propiedad para que pueda verla en objetos de mayor nivel. Configurarlo usted mismo no hará nada. – GalacticJello

+1

¿Qué pasa con el parámetro '--expires' en AWS CLI? – CMCDragonkai

4

Aquí es un enfoque alternativo que podría funcionar para algunas situaciones:

También podemos establecer el cubo del ciclo de vida de expirar objetos después de un corto número de días (1, 7, lo que sea). Luego, antes de que caduque cada objeto, amplíe su expiración programáticamente si no desea que ese objeto caduque aún.

Puede restablecer la marca de tiempo en un objeto S3 "copiando" el objeto a sí mismo con una instrucción para cambiar la clase de almacenamiento a la misma clase que es actualmente. Básicamente es un "noop" que actúa como un comando "touch" de Linux/Unix.

escribí un artículo que entra por ejemplo AWS-comandos de la CLI que demuestran cómo hacer esto: http://alestic.com/2013/09/s3-lifecycle-extend

+0

Solución muy innovadora, pero, "tiene que haber una mejor manera". O, supongo que en este caso, AWS * debería * proporcionar una mejor manera. – AJB

1

me prolongado el tiempo de expiración mediante la copia del objeto en sí mismo usando el comando s3cmd. Básicamente funcionó como 'toque'.

s3cmd cp s3: //bucket-name/file.txt s3: //bucket-name/file.txt

0

Una forma alternativa para realizar esta tarea es hacer uso de las etiquetas object .

Establezca una etiqueta única para cada objeto de los objetos para los que desea establecer tiempos de vida, luego cree una regla de configuración de ciclo de vida para cada objeto y en el elemento de filtro puede usar la etiqueta específica del objeto.

Esta etiqueta puede ser el nombre del objeto, También tiene la capacidad de hacer una regla para un subconjunto de objetos que no tienen un prefijo común.

Puede encontrar más información sobre la configuración del ciclo de vida aquí http://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html

Cuestiones relacionadas