Información general

Comprender cómo solucionar problemas con CloudFront ayuda a los operadores y a los ingenieros de fiabilidad del sitio (SRE) a corregir rápidamente los errores que pueden producirse en diferentes partes de la aplicación web: CloudFront, las funciones de periferia o el origen. Algunos de estos errores incluyen, por ejemplo, un origen sobrecargado que devuelve errores 5xx, CloudFront no puede conectarse al origen o una ejecución fallida de Lambda@Edge tras una excepción no controlada en su código.

Seguimiento de las solicitudes de los usuarios hasta el origen

CloudFront genera un ID de solicitud único para cada solicitud que procesa. Se recomienda hacer un seguimiento de la solicitud utilizando su ID a medida que fluye a través de la pila de la aplicación:

  • CloudFront agrega un encabezado x-amz-cf-id que contiene el ID de la solicitud cuando devuelve la respuesta a una solicitud HTTP.
  • CloudFront incluye el ID de la solicitud en el campo x-edge-request-id del registro generado para la solicitud en los registros de acceso. Si se adjunta una ACL web de AWS WAF a la distribución de CloudFront, el WAF incluye el ID de solicitud en el campo requestId del registro generado para la solicitud en los registros de WAF. Por ejemplo, OLX creó un bot de chat que sus ingenieros de atención al cliente de Slack pueden utilizar para consultar una solicitud específica mediante su ID de solicitud desde los registros de WAF para entender por qué se bloquearon y, a continuación, responder más rápido a los tickets de los clientes a diario.
  • Si se configura una función de periferia en la distribución de CloudFront, el ID de solicitud se pone a disposición de la función en el campo requestId del objeto de evento (tanto para CloudFront Functions como para Lambda@Edge).
  • Si las cachés fallan, cuando CloudFront reenvía la solicitud al origen, agrega el encabezado x-amz-cf-id a la solicitud, con el valor del ID de la solicitud. Se recomienda registrar este encabezado en los servidores de origen.

Solución de errores con CloudFront

Cuando sus sistemas de supervisión (por ejemplo, las alarmas de CloudWatch) detectan un aumento en las respuestas con errores 4xx o 5xx, debe analizar el tipo de error y dónde se produce para solucionarlo.

Para ello, filtre los registros de acceso de CloudFront en los registros que generen un código de error y compruebe los campos de registro x-edge-result-type, x-edge-response-result-type y x-edge-detailed-result-type para comprender mejor el problema. El análisis de los registros de acceso depende de dónde los almacene. Un enfoque muy sencillo consiste en consultar los registros almacenados en S3 mediante Athena con consultas SQL estándar. Por ejemplo, la siguiente consulta SQL filtra los registros en busca de errores 5xx en un intervalo de fechas específico, limitado a los 100 primeros registros.

SELECT * AS count FROM cloudfront_logs
WHERE status >= 500 AND "date" BETWEEN DATE '2022-06-09' AND DATE '2022-06-10'
LIMIT 100;


En algunos casos, use los registros de WAF o CloudFront para obtener información adicional sobre la solución de problemas. Por ejemplo, los registros de AWS WAF podrían explicar por qué se bloqueó una solicitud determinada. Otro ejemplo es comprobar los registros de funciones de periferia en Registros de CloudWatch para obtener más información sobre un error de ejecución que dio lugar a un error 5xx. Por último, se recomienda comprender cómo CloudFront almacena en caché los errores para saber cuándo se devuelve una respuesta de error desde la memoria caché de CloudFront o no.

Solución de problemas de latencia con CloudFront

Cuando sus sistemas de supervisión (por ejemplo, las alarmas de CloudWatch en las métricas Latencia de origen y Tasa de aciertos de caché) detectan un aumento en las latencias de respuesta, debe comprender dónde está el cuello de botella de latencia para solucionarlo. Para ello, considere analizar los campos de latencia en los registros de acceso de CloudFront. Tenga en cuenta la siguiente tabla:

  • time-to-first-byte: latencia del primer byte entre CloudFront y el lector, disponible en los registros estándar y en tiempo real
  • time-taken: latencia del último byte entre CloudFront y el lector, disponible en los registros estándar y en tiempo real
  • origin-fbl: latencia del primer byte entre CloudFront y su origen, disponible en los registros en tiempo real
  • origin-lbl: latencia del último byte entre CloudFront y su origen, disponible en los registros en tiempo real

Puede analizar estos campos agrupando la consulta SQL en una de las dimensiones relevantes, como la URL o el país. Esto le permite analizar el problema de latencia. Además, puede encontrar la misma información en el cliente mediante los encabezados Server-Timing de CloudFront, cuando se configuran en la política de encabezados de respuesta. El siguiente encabezado de Server-Timing explica que mi solicitud fue un acierto de la caché del POP MRS52-P1 de Marsella, con una latencia descendente del primer byte de 64 milisegundos. El encabezado Age generado por CloudFront explica que este contenido se ha recuperado o actualizado desde el origen hace 61 segundos.

Solución de problemas de rendimiento web con CloudWatch RUM

CloudWatch RUM le permite supervisar su aplicación en el lado del cliente mediante la integración de una etiqueta JavaScript en sus páginas web. Esta etiqueta recopila datos de las API del navegador, como los tiempos de carga de las páginas con un desglose de los pasos de conexión (búsqueda de DNS, conexión TCP, etc.) o de las Métricas web principales de Google (LCP, FID, etc.), y luego los envía a CloudWatch RUM para la creación de paneles. Puede analizar el rendimiento de su aplicación por medio de filtrado de dimensiones específicas, como el tipo de navegador, el país del usuario o un identificador de página específico.

Solicitud de ayuda a AWS Support

En los casos en los que necesite la ayuda de AWS Support para seguir solucionando errores o problemas de latencia, abra un ticket de soporte que incluya una lista de los ID de solicitud de CloudFront que correspondan a solicitudes lentas o solicitudes que generen errores. Con estos ID de solicitud proporcionados, los ingenieros de soporte pueden analizar los registros internos para comprender mejor el problema y ofrecerle recomendaciones sobre cómo solucionarlo.

Supervisión de usuarios reales para Amazon CloudWatch

Recursos

¿Le resultó útil esta página?