Filtrado a nivel de registro - AWS Lambda

Filtrado a nivel de registro

Lambda puede filtrar los registros de su función para que solo se envíen a Registros de Amazon CloudWatch los registros con un nivel de detalle determinado o inferior. Puede configurar el filtrado a nivel de registro por separado para los registros del sistema de la función (los registros que Lambda genera) y los registros de la aplicación (los registros que genera el código de la función).

Para Tiempos de ejecución y métodos de registro compatibles, no necesita realizar ningún cambio en el código de la función para que Lambda filtre los registros de aplicación de su función.

Para todos los demás tiempos de ejecución y métodos de registro, el código de la función debe generar los eventos de registro en stdout o stderr como objetos con formato JSON que contengan un par clave-valor con la clave "level". Por ejemplo, Lambda interpreta la siguiente salida de stdout como un registro de nivel DEBUG.

print('{"level": "debug", "msg": "my debug log", "timestamp": "2024-11-02T16:51:31.587199Z"}')

Si el campo de valor "level" no es válido o falta, Lambda asignará a la salida del registro el nivel INFO. Para que Lambda utilice el campo de marca de tiempo, debe especificar el tiempo con un formato de marca de tiempo RFC 3339 válido. Si no proporciona una marca de tiempo válida, Lambda asignará al registro el nivel INFO y agregará una marca de tiempo por usted.

Cuando asigne un nombre a la clave de marca de tiempo, siga las convenciones del tiempo de ejecución que esté utilizando. Lambda admite la mayoría de las convenciones de nomenclatura habituales que utilizan los tiempos de ejecución administrados.

nota

Para usar el filtrado a nivel de registro, la función debe estar configurada para usar el formato de registro JSON. Actualmente, el formato de registro predeterminado para todos los tiempos de ejecución administrados por Lambda es texto sin formato. Para obtener información sobre cómo configurar el formato de registro de la función como JSON, consulte Configuración del formato de registro de su función.

Para los registros de aplicaciones (los registros generados por el código de la función), puede elegir entre los siguientes niveles de registro.

Nivel de registro Uso estándar
TRACE (más detallado) La información más detallada que se utiliza para rastrear la ruta de ejecución del código
DEBUG Información detallada para la depuración del sistema
INFO Mensajes que registran el funcionamiento normal de su función
WARN Mensajes sobre posibles errores que pueden provocar un comportamiento inesperado si no se abordan
ERROR Mensajes sobre problemas que impiden que el código funcione según lo esperado
FATAL (menos detallado) Mensajes sobre errores graves que hacen que la aplicación deje de funcionar

Al seleccionar un nivel de registro, Lambda envía los registros de ese nivel y de niveles inferiores a Registros de Amazon CloudWatch. Por ejemplo, si establece el nivel de registro de la aplicación de una función en WARN, Lambda no envía las salidas de registro en los niveles INFO y DEBUG. El nivel de registro de aplicaciones predeterminado para el filtrado de registros es INFO.

Cuando Lambda filtra los registros de aplicaciones de la función, a los mensajes de registro sin nivel se les asignará el nivel de registro INFO.

Para los registros del sistema (los registros generados por el servicio Lambda), puede elegir entre los siguientes niveles de registro.

Nivel de registro Uso
DEBUG (más detallado) Información detallada para la depuración del sistema
INFO Mensajes que registran el funcionamiento normal de su función
WARN (menos detallado) Mensajes sobre posibles errores que pueden provocar un comportamiento inesperado si no se abordan

Al seleccionar un nivel de registro, Lambda envía los registros a ese nivel y a niveles inferiores. Por ejemplo, si establece el nivel de registro del sistema de una función en INFO, Lambda no envía las salidas de registro en el nivel DEBUG.

De forma predeterminada, Lambda establece el nivel de registro del sistema en INFO. Con esta configuración, Lambda envía los mensajes de registro "start" y "report" a CloudWatch automáticamente. Para recibir registros del sistema más o menos detallados, cambie el nivel de registro a DEBUG o WARN. Para ver una lista de los niveles de registro a los que Lambda asigna diferentes eventos de registro del sistema, consulte Asignación de eventos a nivel de registro del sistema.

Configuración del filtrado a nivel de registro

Para configurar el filtrado a nivel de registro de aplicaciones y sistemas para su función, puede utilizar la consola de Lambda o la AWS Command Line Interface (AWS CLI). También puede configurar el nivel de registro de una función con los comandos de la API de Lambda CreateFunction y UpdateFunctionConfiguration, el recurso de AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function y el recurso de AWS CloudFormation AWS::Lambda::Function.

Tenga en cuenta que si establece el nivel de registro de la función en el código, esta configuración tiene prioridad sobre cualquier otra configuración a nivel de registro que configure. Por ejemplo, si usa el método setLevel() de logging de Python para establecer el nivel de registro de la función en INFO, esta configuración tiene prioridad sobre la configuración WARN que configure mediante la consola de Lambda.

Para configurar el nivel de registro de sistema o aplicación de una función existente (consola)
  1. Abra la página de Funciones en la consola de Lambda.

  2. Elija una función.

  3. En la página de configuración de funciones, elija Herramientas de supervisión y operaciones.

  4. En el panel Configuración de registros, seleccione Editar.

  5. En Contenido del registro, para Formato de registro, asegúrese de seleccionar JSON.

  6. Con los botones de opción, seleccione el Nivel de registro de la aplicación y el Nivel de registro del sistema que desee para su función.

  7. Seleccione Save.

Para configurar el nivel de registro de la aplicación o del sistema de una función existente (AWS CLI)
  • Para cambiar el nivel de registro de la aplicación o del sistema de una función existente, utilice el comando update-function-configuration. Se utiliza --logging-config para establecer SystemLogLevel en uno de los siguientes valores: DEBUG, INFO o WARN. Configure ApplicationLogLevel en una de las siguientes opciones: DEBUG, INFO, WARN, ERROR o FATAL.

    aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
Para configurar el filtrado a nivel de registro al crear una función
  • Para configurar el filtrado de nivel de registro al crear una función nueva, utilice --logging-config para establecer las claves SystemLogLevel y ApplicationLogLevel en el comando create-function. Configure SystemLogLevel en una de las siguientes opciones: DEBUG, INFO o WARN. Configure ApplicationLogLevel en una de las siguientes opciones: DEBUG, INFO, WARN, ERROR o FATAL.

    aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN

Asignación de eventos a nivel de registro del sistema

Para los eventos de registro a nivel de sistema generados por Lambda, la siguiente tabla define el nivel de registro asignado a cada evento. Para obtener más información sobre los eventos que figuran en la tabla, consulte Referencia del esquema Event de la API de telemetría de Lambda.

Nombre de evento Condición Nivel de registro asignado
initStart runtimeVersion está configurado INFO
initStart runtimeVersion no está configurado DEBUG
initRuntimeDone status=success DEBUG
initRuntimeDone status!=success WARN
initReport initializationType!=on-demand INFO
initReport initializationType=on-demand DEBUG
initReport status!=success WARN
restoreStart runtimeVersion está configurado INFO
restoreStart runtimeVersion no está configurado DEBUG
restoreRuntimeDone status=success DEBUG
restoreRuntimeDone status!=success WARN
restoreReport status=success INFO
restoreReport status!=success WARN
iniciar - INFO
runtimeDone status=success DEBUG
runtimeDone status!=success WARN
report status=success INFO
report status!=success WARN
extensión state=success INFO
extensión state!=success WARN
logSubscription - INFO
telemetrySubscription - INFO
logsDropped - WARN
nota

La Acceso a datos de telemetría en tiempo real para extensiones mediante la API de telemetría siempre emite el conjunto completo de eventos de plataforma. La configuración del nivel de los registros del sistema que Lambda envía a CloudWatch no afecta el comportamiento de la API de telemetría de Lambda.

Filtrado a nivel de registro de aplicaciones con tiempos de ejecución personalizados

Al configurar el filtrado a nivel de registro de aplicaciones para su función, en segundo plano, Lambda establece el nivel de registro de la aplicación en el tiempo de ejecución mediante la variable de entorno AWS_LAMBDA_LOG_LEVEL. Lambda también establece el formato de registro de la función mediante la variable de entorno AWS_LAMBDA_LOG_FORMAT. Puede utilizar estas variables para integrar los controles de registro avanzados de Lambda en un tiempo de ejecución personalizado.

Para poder configurar los ajustes de registro de una función mediante un tiempo de ejecución personalizado con la consola de Lambda, AWS CLI y las API de Lambda, configure el tiempo de ejecución personalizado para comprobar el valor de estas variables de entorno. A continuación, puede configurar los registradores de su tiempo de ejecución de acuerdo con el formato y los niveles de registro que seleccione.