Configuración de grupos de registros de CloudWatch - AWS Lambda

Configuración de grupos de registros de CloudWatch

De forma predeterminada, CloudWatch crea automáticamente un grupo de registro denominado /aws/lambda/<function name> para la función cuando se invoca por primera vez. Para configurar su función de manera que envíe registros a un grupo de registro existente o para crear un nuevo grupo de registro para su función, puede usar la consola de Lambda o la AWS CLI. También puede configurar grupos de registros personalizados con los comandos de la API de Lambda CreateFunction y UpdateFunctionConfiguration, y el recurso de AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function.

Puede configurar varias funciones de Lambda para enviar registros al mismo grupo de registro de CloudWatch. Por ejemplo, puede usar un único grupo de registro para almacenar los registros de todas las funciones de Lambda que componen una aplicación concreta. Cuando se utiliza un grupo de registro personalizado para una función de Lambda, los flujos de registro que Lambda crea incluyen el nombre y la versión de la función. Esto garantiza que se conserve la asignación entre los mensajes de registro y las funciones, incluso si utiliza el mismo grupo de registro para varias funciones.

El formato de denominación del flujo de registro para grupos de registro personalizados sigue esta convención:

YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]

Tenga en cuenta que, al configurar un grupo de registro personalizado, el nombre que seleccione para el grupo de registro debe seguir las reglas de nomenclatura de Registros de Amazon CloudWatch. Además, los nombres personalizados de los grupos de registros no deben empezar por la cadena aws/. Si crea un grupo de registros personalizado empezando por aws/, Lambda no podrá crear el grupo de registros. Como resultado, los registros de la función no se enviarán a CloudWatch.

Cambio del grupo de registro de una función (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 el panel Grupo de registro, para el Grupo de registro de CloudWatch, elija Personalizado.

  6. En Grupo de registro personalizado, introduzca el nombre del grupo de registro de CloudWatch al que quiere que su función envíe registros. Si introduce el nombre de un grupo de registro existente, su función utilizará ese grupo. Si no existe ningún grupo de registro con el nombre que ingresa, Lambda creará un nuevo grupo de registro para su función con ese nombre.

Cambio del grupo de registro de una función (AWS CLI)
  • Para cambiar el grupo de registro de una función existente, utilice el comando update-function-configuration.

    aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogGroup=myLogGroup
Para especificar un grupo de registro personalizado al crear una función (AWS CLI)
  • Para especificar un grupo de registro personalizado al crear una nueva función de Lambda con la AWS CLI, utilice la opción --logging-config. El siguiente comando de ejemplo crea una función de Lambda de Node.js que envía registros a un grupo de registro denominado myLogGroup.

    aws lambda create-function \ --function-name myFunction \ --runtime nodejs24.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogGroup=myLogGroup

Permisos de rol de ejecución

Para que su función envíe registros a Registros de Amazon CloudWatch, debe tener el permiso logs:PutLogEvents. Cuando configura el grupo de registro de su función mediante la consola de Lambda, Lambda agregará este permiso al rol en las siguientes condiciones:

  • El destino del servicio está configurado como Registros de CloudWatch

  • El rol de ejecución de su función no tiene permisos para cargar registros en Registros de CloudWatch (el destino predeterminado)

nota

Lambda no agrega ningún permiso Put para los destinos de registro de Amazon S3 o Firehose.

Cuando Lambda agrega este permiso, otorga a la función permiso para enviar registros a cualquier grupo de registro de Registros de Amazon CloudWatch.

Para evitar que Lambda actualice automáticamente el rol de ejecución de la función y, en su lugar, lo edite manualmente, expanda Permisos y deje la opción Agregar permisos necesarios sin marcar.

Al configurar el grupo de registro de la función con la AWS CLI, Lambda no agregará el permiso logs:PutLogEvents automáticamente. Agregue el permiso al rol de ejecución de su función si aún no lo tiene. Este permiso se incluye en la política administrada AWSLambdaBasicExecutionRole.

Registro de CloudWatch para instancias administradas de Lambda

Cuando utiliza instancias administradas de Lambda, hay consideraciones adicionales a la hora de enviar registros a Registros de CloudWatch:

Requisitos de red de la VPC

Las instancias administradas de Lambda se ejecutan en instancias de EC2 propiedad del cliente dentro de su VPC. Para enviar registros a Registros de CloudWatch y seguimientos a X-Ray, debe asegurarse de que estas API de AWS puedan enrutarse desde su VPC. Dispone de varias opciones para hacerlo:

  • PrivateLink de AWS (recomendado): utilice PrivateLink de AWS para crear puntos de conexión de VPC para los servicios Registros de CloudWatch y X-Ray. Esto permite que sus instancias accedan a estos servicios de forma privada sin necesidad de una puerta de enlace de Internet o una puerta de enlace NAT. Para obtener más información, consulte Uso de Registros de CloudWatch con puntos de conexión de VPC de tipo interfaz.

  • Puerta de enlace NAT: configure una puerta de enlace NAT para permitir el acceso saliente a Internet desde sus subredes privadas.

  • Puerta de enlace de Internet: en el caso de las subredes públicas, asegúrese de que la VPC tenga configurada una puerta de enlace de Internet.

Si las API de Registros de CloudWatch o X-Ray no pueden enrutarse desde su VPC, los registros y seguimientos de sus funciones no se entregarán.

Invocaciones simultáneas y atribución de registros

Los entornos de ejecución de las instancias administradas de Lambda pueden procesar varias invocaciones de forma simultánea. Cuando se ejecutan varias invocaciones simultáneamente, sus entradas de registro se intercalan en el mismo flujo de registro. Para filtrar y analizar de forma eficaz los registros de las invocaciones simultáneas, debe asegurarse de que cada entrada del registro incluya el identificador de la solicitud de AWS.

Recomendamos uno los siguientes enfoques de seguridad:

  • Utilice registradores de tiempo de ejecución de Lambda predeterminados (recomendado): las bibliotecas de registro predeterminadas que proporcionan los tiempos de ejecución administrados de Lambda incluyen automáticamente el identificador de solicitud en cada entrada de registro.

  • Implemente un registro JSON estructurado: si está creando un tiempo de ejecución personalizado o necesita un registro personalizado, implemente registros con formato JSON que incluyan el identificador de solicitud en cada entrada. Las instancias administradas de Lambda solo admiten el formato de registro JSON. Incluya el campo requestId en sus registros JSON para permitir el filtrado por invocación:

    { "timestamp": "2025-01-15T10:30:00.000Z", "level": "INFO", "requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "message": "Processing request" }

Con la atribución de identificador de solicitud, puede filtrar las entradas de registro de Registros de CloudWatch para una invocación específica mediante consultas de Información de Registros de CloudWatch. Por ejemplo:

fields @timestamp, @message | filter requestId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890" | sort @timestamp asc

Para obtener más información sobre los requisitos de registro de las instancias administradas de Lambda, consulte Descripción del entorno de ejecución de instancias administradas de Lambda.