Uso de AWS Lambda con AWS X-Ray - AWS Lambda

Uso de AWS Lambda con AWS X-Ray

Puede utilizar AWS X-Ray para visualizar los componentes de la aplicación, identificar cuellos de botella de rendimiento y solucionar problemas de solicitudes que dieron lugar a un error. Sus funciones de Lambda envían datos de rastreo a X-Ray, y X-Ray procesa los datos para generar un mapa de servicio y resúmenes de rastreo en los que se puede buscar.


      Mapa de servicio que muestra nodos para funciones de Lambda, registros de X-Ray, Amazon S3 y CloudWatch Logs

Si ha habilitado el rastreo de X en un servicio que invoca su función, Lambda envía rastreos a X-Ray automáticamente. El servicio ascendente, como Amazon API Gateway, o una aplicación alojada en Amazon EC2 que está instrumentada con el X-Ray SDK, muestra las solicitudes entrantes y agrega un encabezado de rastreo que le indica a Lambda que envíe rastreos o no.

Para rastrear solicitudes que no tienen un encabezado de rastreo, habilite el rastreo activo en la configuración de la función.

Para habilitar el rastreo activo

  1. Abra la página de Functions (Funciones) en la consola de Lambda.

  2. Elija una función.

  3. Seleccione Configuration (Configuración) y luego elija Monitoring tools (Herramientas de monitoreo).

  4. Elija Edit.

  5. En X-Ray, habilite Active tracing (Seguimiento activo).

  6. Seleccione Save.

Pricing

X-Ray tiene un nivel gratuito perpetuo Más allá del umbral del nivel gratuito, X-Ray realiza cargos por almacenamiento y recuperación del seguimiento. Consulte Precios de AWS X-Ray para obtener más información.

Su función necesita permiso para cargar datos de rastreo en X-Ray. Cuando habilita el rastreo activo en la consola de Lambda, Lambda agrega los permisos necesarios al rol de ejecución de la función. De lo contrario, agregue la política AWSXRayDaemonWriteAccess al rol de ejecución.

X-Ray aplica un algoritmo de muestreo para garantizar que el rastreo sea eficiente, al tiempo que proporciona una muestra representativa de las solicitudes a las que sirve la aplicación. La regla de muestreo predeterminada es 1 solicitud por segundo y un 5 por ciento de las solicitudes adicionales. Esta frecuencia de muestreo no se puede configurar para las funciones de Lambda.

En X-Ray, un seguimiento registra información sobre una solicitud procesada por uno o varios servicios. Los servicios registran segmentos que contienen capas de subsegmentos. Lambda registra un segmento para el servicio de Lambda que maneja la solicitud de invocación y otro para el trabajo realizado por la función. El segmento de función viene con subsegmentos para Initialization, Invocation y Overhead. Para obtener más información, consulte el ciclo de vida del entorno de ejecución de Lambda.

El subsegmento Initialization representa la fase inicial del ciclo de vida del entorno de ejecución de Lambda. Durante esta fase, Lambda crea o descongela un entorno de ejecución con los recursos que ha configurado, descarga el código de función y todas las capas, inicializa las extensiones, inicializa el tiempo de ejecución y ejecuta el código de inicialización de la función.

El subsegmento Invocation representa la fase de invocación donde Lambda invoca el controlador de funciones. Esto comienza con el registro en tiempo de ejecución y extensión y termina cuando el motor de ejecución está listo para enviar la respuesta.

El subsegmento Overhead representa la fase que ocurre entre el momento en que el motor de ejecución envía la respuesta y la señal para la siguiente invocación. Durante este tiempo, el motor de ejecución finaliza todas las tareas relacionadas con una invocación y se prepara para congelar el entorno limitado.

nota

Si la función de Lambda usa simultaneidad aprovisionada, su rastreo de X-Ray puede mostrar una inicialización de función con una duración muy larga.

La concurrencia aprovisionada inicializa las instancias de función por adelantado, para reducir el retraso en el momento de la invocación. Con el tiempo, la simultaneidad aprovisionada actualiza estas instancias creando nuevas instancias para reemplazar las antiguas. Para cargas de trabajo con tráfico constante, las nuevas instancias se inicializan con bastante antelación a su primera invocación. El intervalo de tiempo se registra en el rastreo de X-Ray como la duración de inicialización.

En el ejemplo siguiente se muestra un seguimiento con 2 segmentos. Ambos se llaman my-function, pero uno es tipo AWS::Lambda y el otro es AWS::Lambda::Function. El segmento de función se expande para mostrar sus subsegmentos.

importante

En Lambda, puede usar el X-Ray SDK para extender el subsegmento Invocation con subsegmentos adicionales para llamadas descendentes, anotaciones y metadatos. No se puede acceder al segmento de función directamente o grabar trabajo hecho fuera del ámbito de invocación del controlador.

Consulte los siguientes temas para obtener una introducción específica del seguimiento en Lambda:

Para obtener una lista completa de los servicios que admiten instrumentación activa, consulte Servicios de AWS admitidos en la Guía para desarrolladores de AWS X-Ray.

Permisos de rol de ejecución

Lambda necesita los siguientes permisos para enviar datos de seguimiento a X-Ray. Añada dichos permisos al rol de ejecución de su función.

Estos permisos se incluyen en la política administrada AWSXRayDaemonWriteAccess.

El daemon de AWS X-Ray

En lugar de enviar datos de seguimiento directamente a la X-Ray API, el X-Ray SDK utiliza un proceso de daemon. El daemon de AWS X-Ray es una aplicación que se ejecuta en el entorno de Lambda y escucha el tráfico UDP que contiene segmentos y subsegmentos. Almacena en búfer los datos entrantes y los escribe en X-Ray en lotes, lo que reduce la sobrecarga de procesamiento y memoria necesaria para rastrear las invocaciones.

El tiempo de ejecución de Lambda permite al daemon hasta un 3 % de la memoria configurada de su función o 16 MB, lo que sea mayor. Si su función se queda sin memoria durante la invocación, el tiempo de ejecución termina el proceso del daemon primero para liberar memoria.

El proceso del daemon es totalmente administrado por Lambda y el usuario no puede configurarlo. Todos los segmentos generados por las invocaciones de funciones se registran en la misma cuenta que la función de Lambda. El daemon no se puede configurar para redirigirlo a ninguna otra cuenta.

Para obtener más información, consulte El daemon de X-Ray en la Guía para desarrolladores de X-Ray.

Habilitación del seguimiento activo con la API de Lambda

Para administrar la configuración de seguimiento con la AWS CLI o el SDK de AWS, utilice las siguientes operaciones de API.

El siguiente comando de la AWS CLI de ejemplo habilita el rastreo activo en una función llamada «my-function».

aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

El modo de seguimiento forma parte de la configuración específica de la versión, que se bloquea cuando se publica una versión de la función. No se puede cambiar el modo de seguimiento de una versión publicada.

Habilitación del seguimiento activo con AWS CloudFormation

Para habilitar el seguimiento activo en un recurso de AWS::Lambda::Function de una plantilla de AWS CloudFormation, utilice la propiedad TracingConfig.

ejemplo function-inline.yml: configuración de seguimiento

Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Para un recurso AWS Serverless Application Model de AWS SAM (AWS::Serverless::Function) , utilice la propiedad Tracing.

ejemplo template.yml: configuración de seguimiento

Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...