Utilizo Amazon CloudFront para ofrecer objetos almacenados en Amazon Simple Storage Service (Amazon S3). Actualicé mis objetos en Amazon S3, pero mi distribución de CloudFront sigue ofreciendo las versiones anteriores de esos archivos.
Descripción corta
De forma predeterminada, CloudFront almacena en caché una respuesta de Amazon S3 durante 24 horas (TTL predeterminado de 86 400 segundos). Si tu solicitud llega a una ubicación periférica que envió la respuesta de Amazon S3 en un plazo de 24 horas, CloudFront utilizará la respuesta en caché. Esto ocurre incluso si has actualizado el contenido en Amazon S3.
Utiliza uno de los siguientes métodos para enviar el contenido actualizado de Amazon S3 desde CloudFront:
Resolución
Invalidar los objetos de Amazon S3
Puedes invalidar un objeto de Amazon S3 para eliminarlo de la memoria caché de la distribución de CloudFront. Una vez eliminado el objeto de la memoria caché, la siguiente solicitud recupera el objeto directamente de Amazon S3.
Nota:
- No puedes invalidar versiones específicas de un objeto que utilice cookies o encabezados para modificar la respuesta. En este caso, CloudFront invalida todas las versiones del objeto.
- A cada cuenta de AWS se le permiten 1000 rutas de invalidación gratuitas al mes. Para obtener más información, consulta los precios de Amazon CloudFront.
Al crear una invalidación, asegúrate de que las rutas de los objetos cumplan los siguientes requisitos:
- Las rutas de los objetos deben ser para objetos individuales o terminar con el carácter comodín (*). Por ejemplo, no puedes ejecutar una invalidación en una ruta similar a /images/*.jpeg. Esto se debe a que la ruta no es para un objeto individual y no termina en un carácter comodín.
- Las mayúsculas y minúsculas de la ruta especificada deben coincidir exactamente con las de la ruta del objeto. Las solicitudes de invalidación distinguen entre mayúsculas y minúsculas.
- Para eliminar versiones específicas de un objeto basadas en una cadena de consulta, incluye los parámetros de la cadena de consulta en la ruta de invalidación.
La invalidación de objetos suele tardar entre 10 y 100 segundos en completarse. Puedes comprobar el estado de una invalidación visualizando la distribución desde la consola de CloudFront.
Usar el control de versiones de archivos
Si actualizas el contenido con frecuencia, se recomienda utilizar el control de versiones de archivos para borrar la memoria caché de la distribución de CloudFront. En el caso de las actualizaciones frecuentes de la caché, el control de versiones de archivos puede costar menos que la invalidación.
Para usar el control de versiones de archivos, sigue estos pasos:
- Guarda las nuevas versiones del objeto en el origen con el número de versión en el nombre de la clave. Por ejemplo, si actualizas /image_v1.png, almacena una nueva versión del objeto como /image_v2.png.
- Actualiza el objeto en el origen, pero almacena en la caché en función de una cadena de consulta que incluya la versión del archivo. Por ejemplo, la cadena de consulta se actualiza desde /image.png?ver=1 a /image.png?ver=2. Puedes utilizar una política de caché para especificar qué cadenas de consulta se incluyen en la clave de caché y en las solicitudes de origen.
Nota: Puedes solicitar la versión anterior (/image.png?ver=1) mientras siga disponible en la memoria caché de CloudFront.
Ten en cuenta las siguientes ventajas y desventajas para cada método de control de versiones de archivos:
- El almacenamiento de nuevas versiones del objeto en el origen te permite deshacer los cambios en las versiones anteriores que aún están disponibles con los nombres anteriores. Sin embargo, si almacenas varias versiones de un objeto, los costes de almacenamiento pueden aumentar.
- Actualizar el objeto en el origen pero almacenarlo en caché en función de la cadena de consulta puede reducir los costes de almacenamiento. Sin embargo, si quieres prepararte para cualquier restauración, es recomendable mantener las versiones anteriores del archivo sin conexión.
Nota: Los nombres de archivos o directorios de la versión especificados no están relacionados con el control de versiones de S3. El control de versiones de S3 no actualiza automáticamente el contenido. Asegúrate de especificar correctamente las rutas de los archivos, ya que no podrás cancelar una solicitud de invalidación una vez iniciada.
Información relacionada
Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento)
Reenvío de cadenas de consulta y almacenamiento en caché