Visualización de los registros de CloudWatch para funciones de Lambda - AWS Lambda

Visualización de los registros de CloudWatch para funciones de Lambda

Puede ver los registros de Amazon CloudWatch de la función de Lambda mediante la consola de Lambda, la consola de Registros de CloudWatch, o la AWS Command Line Interface (AWS CLI). Siga las instrucciones en las siguientes secciones para acceder a los registros de la función.

Registros de funciones de streaming con Live Tail de Registros de CloudWatch

Live Tail de Registros de Amazon CloudWatch ayuda a solucionar rápidamente los problemas de las funciones, ya que muestra una lista de streaming de los nuevos eventos de registro directamente en la consola de Lambda. Puede ver y filtrar los registros ingeridos desde las funciones de Lambda casi en tiempo real, lo que ayuda a detectar y resolver problemas con mayor rapidez.

nota

Las sesiones de Live Tail generan costos según el tiempo de uso de la sesión por minuto. Para obtener más información sobre precios, consulte Precios de Amazon CloudWatch.

Comparación de Live Tail y --log-type Tail

Existen varias diferencias entre Live Tail de Registros de CloudWatch y la opción LogType: Tail de la API de Lambda (--log-type Tail en la AWS CLI):

  • --log-type Tail devuelve solo los primeros 4 KB de los registros de invocación. Live Tail no comparte este límite y puede recibir hasta 500 eventos de registro por segundo.

  • --log-type Tail captura y envía los registros con la respuesta, lo que puede afectar a la latencia de respuesta de la función. Live Tail no afecta a la latencia de respuesta de la función.

  • --log-type Tail solo admite invocaciones sincrónicas. Live Tail funciona para invocaciones asíncronas y sincrónicas.

Permisos

Se requieren los siguientes permisos para iniciar y detener las sesiones de Live Tail de Registros de CloudWatch:

  • logs:DescribeLogGroups

  • logs:StartLiveTail

  • logs:StopLiveTail

Inicio de una sesión de Live Tail en la consola de Lambda

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

  2. Elija el nombre de la función.

  3. Elija la pestaña Prueba.

  4. En el panel Evento de prueba, elija Live Tail de Registros de CloudWatch.

  5. En Seleccionar grupos de registro, el grupo de registros de la función está seleccionado de forma predeterminada. Puede seleccionar hasta cinco grupos de registro a la vez.

  6. (Opcional) Para mostrar solo los eventos de registro que contengan determinadas palabras u otras cadenas, escriba la palabra o la cadena en el cuadro Agregar patrón de filtro. El campo de filtros distingue entre mayúsculas y minúsculas. Puede incluir varios términos y operadores de patrones en este campo, incluidas las expresiones regulares (regex). Para obtener más información sobre la sintaxis de los patrones, consulte Filter pattern syntax en la Guía del usuario de Registros de Amazon CloudWatch.

  7. Elija Iniciar. Los eventos de registro que coincidan comenzarán a aparecer en la ventana.

  8. Para detener la sesión de Live Tail, seleccione Detener.

    nota

    La sesión de Live Tail se detiene automáticamente tras 15 minutos de inactividad o cuando se agota el tiempo de espera de la sesión de la consola de Lambda.

Acceso a los registros de la función con la consola

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

  2. Seleccione una función.

  3. Elija la pestaña Monitor (Monitorear).

  4. Elija Ver registros de CloudWatch para abrir la consola de CloudWatch.

  5. Desplácese hacia abajo y seleccione el flujo de registro para las invocaciones de la función que desee consultar.

    Lista de flujos de registros de una función de Lambda.

Acceso a los registros con la AWS CLI

La AWS CLI es una herramienta de código abierto que lo habitlita para interactuar con los servicios de AWS mediante el uso de comandos en el shell de la línea de comandos. Para completar los pasos de esta sección, debe disponer de la versión 2 de la AWS CLI.

Puede utilizar la CLI de AWS CLI para recuperar registros de una invocación mediante la opción de comando --log-type. La respuesta contiene un campo LogResult que contiene hasta 4 KB de registros con codificación base64 a partir de la invocación.

ejemplo recuperar un ID de registro

En el ejemplo siguiente se muestra cómo recuperar un ID de registro del campo LogResult para una función denominada my-function.

aws lambda invoke --function-name my-function out --log-type Tail

Debería ver los siguientes datos de salida:

{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
ejemplo decodificar los registros

En el mismo símbolo del sistema, utilice la utilidad base64 para decodificar los registros. En el ejemplo siguiente se muestra cómo recuperar registros codificados en base64 para my-function.

aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode

La opción cli-binary-format es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute aws configure set cli-binary-format raw-in-base64-out. Para obtener más información, consulte Opciones de la línea de comandos globales compatibles con AWS CLI en la Guía del usuario de la AWS Command Line Interface versión 2.

Debería ver los siguientes datos de salida:

START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB

La utilidad base64 está disponible en Linux, macOS y Ubuntu en Windows. Es posible que los usuarios de macOS necesiten usar base64 -D.

ejemplo get-logs.sh script

En el mismo símbolo del sistema, utilice el siguiente script para descargar los últimos cinco eventos de registro. El script utiliza sed para eliminar las comillas del archivo de salida y permanece inactivo durante 15 segundos para dar tiempo a que los registros estén disponibles. La salida incluye la respuesta de Lambda y la salida del comando get-log-events.

Copie el contenido de la siguiente muestra de código y guárdelo en su directorio de proyecto Lambda como get-logs.sh.

La opción cli-binary-format es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute aws configure set cli-binary-format raw-in-base64-out. Para obtener más información, consulte Opciones de la línea de comandos globales compatibles con AWS CLI en la Guía del usuario de la AWS Command Line Interface versión 2.

#!/bin/bash aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out sed -i'' -e 's/"//g' out sleep 15 aws logs get-log-events --log-group-name /aws/lambda/my-function --log-stream-name stream1 --limit 5
ejemplo macOS y Linux (solamente)

En el mismo símbolo del sistema, es posible que los usuarios de macOS y Linux necesiten ejecutar el siguiente comando para asegurarse de que el script es ejecutable.

chmod -R 755 get-logs.sh
ejemplo recuperar los últimos cinco eventos de registro

En el mismo símbolo del sistema, ejecute el siguiente script para obtener los últimos cinco eventos de registro.

./get-logs.sh

Debería ver los siguientes datos de salida:

{ "StatusCode": 200, "ExecutedVersion": "$LATEST" } { "events": [ { "timestamp": 1559763003171, "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n", "ingestionTime": 1559763003309 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r \"key\": \"value\"\r}\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n", "ingestionTime": 1559763018353 } ], "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795", "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080" }