Registrar llamadas a la API de AWS Lambda mediante AWS CloudTrail
AWS Lambda se integra con AWS CloudTrail, un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un Servicio de AWS. CloudTrail captura las llamadas a la API de Lambda como eventos. Las llamadas capturadas incluyen las llamadas desde la consola de Lambda y las llamadas desde el código a las operaciones de la API de Lambda. Mediante la información recopilada por CloudTrail, puede determinar la solicitud que se realizó a Lambda, la dirección IP desde la que se realizó, cuándo se realizó y detalles adicionales.
Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario lo ayuda a determinar lo siguiente:
-
Si la solicitud se realizó con las credenciales del usuario raíz o del usuario.
-
Si la solicitud se realizó en nombre de un usuario de IAM Identity Center.
-
Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
-
Si la solicitud la realizó otro Servicio de AWS.
CloudTrail está activado en la Cuenta de AWS cuando usted crea la cuenta y tiene acceso automático al Historial de eventos de CloudTrail. El Historial de eventos de CloudTrail proporciona un registro visible e inmutable, que se puede buscar y descargar, de los últimos 90 días de eventos de gestión registrados en una Región de AWS. Para obtener más información, consulte Trabajar con el historial de eventos de CloudTrail en la Guía del usuario de AWS CloudTrail. No se cobran cargos de CloudTrail por ver el Historial de eventos.
Para mantener un registro permanente de los eventos en su Cuenta de AWS más allá de los 90 días, cree un registro de seguimiento o un almacén de datos de eventos de CloudTrail Lake.
- Registros de seguimiento de CloudTrail
-
Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. Todos los registros de seguimiento que cree con la AWS Management Console son de varias regiones. Puede crear un registro de seguimiento de una sola región o de varias regiones mediante la AWS CLI. Se recomienda crear un registro de seguimiento de varias regiones, ya que registra actividad en todas las Regiones de AWS de su cuenta. Si crea un registro de seguimiento de una sola región, solo podrá ver los eventos registrados en la Región de AWS del registro de seguimiento. Para obtener más información acerca de los registros de seguimiento, consulte Creación de un registro de seguimiento para su Cuenta de AWS y Creación de un registro de seguimiento para una organización en la Guía del usuario de AWS CloudTrail.
Puede crear un registro de seguimiento para enviar una copia de los eventos de administración en curso en su bucket de Amazon S3 sin costo alguno desde CloudTrail; sin embargo, hay cargos por almacenamiento en Amazon S3. Para obtener más información sobre los precios de CloudTrail, consulte Precios de AWS CloudTrail
. Para obtener información acerca de los precios de Amazon S3, consulte Precios de Amazon S3 . - Almacenes de datos de eventos de CloudTrail Lake
-
CloudTrail Lake le permite ejecutar consultas basadas en SQL sobre los eventos. CloudTrail Lake convierte los eventos existentes en formato JSON basado en filas al formato ORC de Apache
. ORC es un formato de almacenamiento en columnas optimizado para una recuperación rápida de datos. Los eventos se agregan en almacenes de datos de eventos, que son recopilaciones inmutables de eventos en función de criterios que se seleccionan aplicando selectores de eventos avanzados. Los selectores que se aplican a un almacén de datos de eventos controlan los eventos que perduran y están disponibles para la consulta. Para obtener más información acerca de CloudTrail Lake, consulte Trabajar con AWS CloudTrail Lake en la Guía del usuario de AWS CloudTrail. Los almacenes de datos de eventos de CloudTrail Lake y las consultas generan costos adicionales. Cuando crea un almacén de datos de eventos, elige la opción de precios que desea utilizar para él. La opción de precios determina el costo de la incorporación y el almacenamiento de los eventos, así como el periodo de retención predeterminado y máximo del almacén de datos de eventos. Para obtener más información sobre los precios de CloudTrail, consulte Precios de AWS CloudTrail
.
Eventos de datos de Lambda en CloudTrail
Los eventos de datos proporcionan información sobre las operaciones de recursos realizadas en o dentro de un recurso (por ejemplo, leer o escribir en un objeto de Amazon S3). Se denominan también operaciones del plano de datos. Los eventos de datos suelen ser actividades de gran volumen. De forma predeterminada, CloudTrail no registra la mayoría de los eventos de datos y el historial de eventos de CloudTrail no los registra.
Un evento de datos de CloudTrail que se registra de forma predeterminada para los servicios compatibles es LambdaESMDisabled
. Para obtener más información sobre el uso de este evento para solucionar problemas con las asignaciones de orígenes de eventos de Lambda, consulte Uso de CloudTrail para solucionar problemas de orígenes de eventos de Lambda deshabilitados.
Se aplican cargos adicionales a los eventos de datos. Para obtener más información sobre los precios de CloudTrail, consulte Precios de AWS CloudTrail
Puede registrar eventos de datos para el tipo de recurso de AWS::Lambda::Function
mediante la consola de CloudTrail, la AWS CLI o las operaciones de la API de CloudTrail. Para obtener más información sobre cómo registrar los eventos de datos, consulte Registro de eventos de datos con la AWS Management Console y Registro de eventos de datos con la AWS Command Line Interface en la Guía del usuario de AWS CloudTrail.
En la siguiente tabla se muestra el tipo de recurso Lambda para el que puede registrar eventos de datos. La columna Tipo de evento de datos (consola) muestra el valor que se debe elegir en la lista de tipos de eventos de datos de la consola de CloudTrail. La columna resources.type value muestra el valor de resources.type
, que especificaría al configurar los selectores de eventos avanzados mediante la AWS CLI o las API de CloudTrail. La columna API de datos registradas en CloudTrail muestra las llamadas a la API registradas en CloudTrail para el tipo de recurso.
Tipo de evento de datos (consola) | resources.type value | API de datos registradas en CloudTrail |
---|---|---|
Lambda |
AWS::Lambda::Function
|
Puede configurar selectores de eventos avanzados para filtrar según los campos eventName
, readOnly
y resources.ARN
y así registrar solo los eventos que son importantes para usted. El siguiente ejemplo es la vista JSON de una configuración de eventos de datos que registra eventos solo para una función específica. Para obtener más información acerca de estos campos, consulte AdvancedFieldSelector en la Referencia de la API de AWS CloudTrail.
[ { "name": "function-invokes", "fieldSelectors": [ { "field": "eventCategory", "equals": [ "Data" ] }, { "field": "resources.type", "equals": [ "AWS::Lambda::Function" ] }, { "field": "resources.ARN", "equals": [ "
arn:aws:lambda:us-east-1:111122223333:function:hello-world
" ] } ] } ]
Eventos de administración de Lambda en CloudTrail
Los eventos de administración proporcionan información sobre las operaciones de administración que se realizan en los recursos de su Cuenta de AWS. Se denominan también operaciones del plano de control. CloudTrail registra los eventos de administración de forma predeterminada.
Lambda admite el registro de las siguientes acciones como eventos de administración en los archivos de registro de CloudTrail.
nota
En el archivo de registro de CloudTrail, el eventName
puede incluir información de la fecha y la versión, pero sigue haciendo referencia a la misma acción pública de la API. Por ejemplo, la acción GetFunction
aparece como GetFunction20150331v2
. La siguiente lista especifica en qué casos el nombre del evento difiere del nombre de la acción de la API.
-
AddPermission (nombre del evento:
AddPermission20150331v2
) -
CreateAlias (nombre del evento:
CreateAlias20150331
) -
CreateEventSourceMapping (nombre del evento:
CreateEventSourceMapping20150331
) -
CreateFunction (nombre del evento:
CreateFunction20150331
)(Se omiten los parámetros
Environment
yZipFile
de los registros de CloudTrail paraCreateFunction
). -
DeleteAlias (nombre del evento:
DeleteAlias20150331
) -
DeleteEventSourceMapping (nombre del evento:
DeleteEventSourceMapping20150331
) -
DeleteFunction (nombre del evento:
DeleteFunction20150331
) -
DeleteFunctionConcurrency (nombre del evento:
DeleteFunctionConcurrency20171031
) -
GetAlias (nombre del evento:
GetAlias20150331
) -
PublishLayerVersion (nombre del evento:
PublishLayerVersion20181031
)(Se omite el parámetro
ZipFile
de los registros de CloudTrail paraPublishLayerVersion
). -
PublishVersion (nombre del evento:
PublishVersion20150331
) -
PutFunctionConcurrency (nombre del evento:
PutFunctionConcurrency20171031
) -
RemovePermission (nombre del evento:
RemovePermission20150331v2
) -
TagResource (nombre del evento:
TagResource20170331v2
) -
UntagResource (nombre del evento:
UntagResource20170331v2
) -
UpdateAlias (nombre del evento:
UpdateAlias20150331
) -
UpdateEventSourceMapping (nombre del evento:
UpdateEventSourceMapping20150331
) -
UpdateFunctionCode (nombre del evento:
UpdateFunctionCode20150331v2
)(Se omite el parámetro
ZipFile
de los registros de CloudTrail paraUpdateFunctionCode
). -
UpdateFunctionConfiguration (nombre del evento:
UpdateFunctionConfiguration20150331v2
)(Se omite el parámetro
Environment
de los registros de CloudTrail paraUpdateFunctionConfiguration
).
Uso de CloudTrail para solucionar problemas de orígenes de eventos de Lambda deshabilitados
Cuando cambia el estado de la asignación de orígenes de eventos mediante la acción de la API UpdateEventSourceMapping, la llamada a la API se registra como un evento de administración en CloudTrail. Las asignaciones de orígenes de eventos también pueden pasar directamente al estado Disabled
debido a errores.
Para los siguientes servicios, Lambda publica el evento de datos LambdaESMDisabled
en CloudTrail cuando el origen del evento pasa al estado Deshabilitado:
-
Amazon Simple Queue Service (Amazon SQS)
-
Amazon DynamoDB
-
Amazon Kinesis
Lambda no admite este evento para ningún otro tipo de asignación de orígenes de eventos.
Si quiere recibir alertas cuando las asignaciones de orígenes de eventos para los servicios compatibles pasen al estado Disabled
, configure una alarma en Amazon CloudWatch mediante el evento de CloudTrail LambdaESMDisabled
. Para obtener más información sobre la configuración de una alarma de CloudWatch, consulte Creating CloudWatch alarms for CloudTrail events: examples.
La entidad serviceEventDetails
del mensaje del evento LambdaESMDisabled
contiene uno de los siguientes códigos de error.
RESOURCE_NOT_FOUND
-
El recurso especificado en la solicitud no existe.
FUNCTION_NOT_FOUND
-
La función adjunta al origen del evento no existe.
REGION_NAME_NOT_VALID
-
Un nombre de región proporcionado en la función o el origen del evento no es válido.
AUTHORIZATION_ERROR
-
Los permisos no se han establecido o están mal configurados.
FUNCTION_IN_FAILED_STATE
-
El código de función no se compila, se ha detectado una excepción irrecuperable o ha ocurrido una implementación incorrecta.
Ejemplos de eventos de Lambda
Un evento representa una única solicitud de cualquier origen e incluye información sobre la operación de la API solicitada, la fecha y la hora de la operación, los parámetros de la solicitud, entre otras cosas. Los archivos de registro de CloudTrail no rastrean el orden en la pila de las llamadas a la API públicas, por lo que los eventos no aparecen en un orden específico.
El siguiente ejemplo muestra entradas de registro de CloudTrail que demuestra las acciones GetFunction
y DeleteFunction
.
nota
El eventName
puede incluir información de la fecha y la versión, como "GetFunction20150331"
, pero sigue haciendo referencia a la misma API pública.
{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:03:36Z", "eventSource": "lambda.amazonaws.com", "eventName": "GetFunction", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "errorCode": "AccessDenied", "errorMessage": "User: arn:aws:iam::111122223333:user/myUserName is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:us-west-2:111122223333:function:other-acct-function", "requestParameters": null, "responseElements": null, "requestID": "7aebcd0f-cda1-11e4-aaa2-e356da31e4ff", "eventID": "e92a3e85-8ecd-4d23-8074-843aabfe89bf", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:04:42Z", "eventSource": "lambda.amazonaws.com", "eventName": "DeleteFunction20150331", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "requestParameters": { "functionName": "basic-node-task" }, "responseElements": null, "requestID": "a2198ecc-cda1-11e4-aaa2-e356da31e4ff", "eventID": "20b84ce5-730f-482e-b2b2-e8fcc87ceb22", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
Para obtener información sobre el contenido de los registros de CloudTrail, consulte Contenido de los registros de CloudTrail en la Guía del usuario de AWS CloudTrail.