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 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 los nodos de las funciones de Lambda, X-Ray, Amazon S3 y CloudWatch Logs

Si ha habilitado el rastreo de X-Ray 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 SDK de X-Ray, muestra las solicitudes entrantes y agrega un encabezado de rastreo que indica 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 Functions (Funciones) en la consola de Lambda.

  2. Elija una función.

  3. En AWS X-Ray, elija Active tracing (Rastreo activo).

  4. Elija Save (Guardar).

Precios

X-Ray tiene una capa gratuita permanente Más allá del umbral de la capa gratuita, 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 Lambda consola, 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.

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.

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 SDK de X-Ray 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 demonio de AWS X-Ray

En lugar de enviar datos de seguimiento directamente a la API X-Ray, el SDK de X-Ray utiliza un proceso de demonio. El demonio 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 demonio hasta un 3 por ciento 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 demonio primero para liberar memoria.

Para obtener más información, consulte El demonio 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 CLI de AWS 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::Function de Modelo de aplicación sin servidor de AWS (AWS SAM) , utilice la propiedad Tracing.

ejemplo template.yml: configuración de seguimiento

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