Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
¿Cómo puedo recuperar y analizar mis registros de CloudTrail con CloudWatch Logs Insights?
Quiero usar Amazon CloudWatch Logs Insights para recuperar y, a continuación, analizar mis registros de Amazon CloudTrail.
Breve descripción
Después de configurar CloudTrail para que su actividad quede registrada en CloudWatch Logs, puede usar las consultas de CloudWatch Logs Insights para recuperar los registros de CloudTrail. A continuación, puede supervisar la actividad específica de la cuenta.
Resolución
Utilice las siguientes consultas para recuperar la información de CloudWatch Logs para analizar y explorar la actividad de los buckets y objetos de Amazon Simple Storage Service (Amazon S3). Tenga en cuenta que, de forma predeterminada, CloudTrail no captura los eventos de datos de Amazon S3. Debe activar el registro de eventos en CloudTrail para recuperar los registros de eventos de los buckets y objetos de S3.
Puede basarse en estas consultas de ejemplo para crear consultas de Logs Insights adicionales y más complejas que se ajusten a su caso de uso. También puede integrar las consultas en el panel de CloudWatch para visualizar sus consultas como tablas y gráficos junto con las métricas relacionadas.
Consulta 1: eventos más recientes
Objetivo
Recuperar los eventos de CloudTrail Log más recientes con los campos @timestamp y @message predeterminados.
Consulta
#Retrieve the most recent CloudTrail events fields @timestamp, @message | sort @timestamp desc | limit 2
Resultados
@timestamp | @message |
2022-02-18 17:52:31.118 | {"eventVersion":"1.08","userIdentity":{"type":"AssumedRole","principalId":"AROAWZKRRJU47ARZN7ECC:620d7d78144334d6933c27195cae2a98", "arn":"arn:aws:sts::123456789012:assumed- role/Amazon_EventBridge_Invoke_Run_Command_371790151/620d7d78144334d6933c27195cae2a98","accountId":"123456789012", "accessKeyId":"ASIAWZKRRJU4Y45M4SC6","sessionContext":{"sessionIssuer": {"type":"Role","principalId":"AROAWZKRRJU47ARZN7ECC","arn":"arn:aws:iam::123456789012:role/service- role/Amazon_EventBridge_Invoke_Run_Command_371790151","accountId":"123456789012","userName": "Amazon_EventBridge_Invoke_Run_Command_371790151" (output truncated) |
2022-02-18 17:51:52.137 | {"eventVersion":"1.08","userIdentity":{"type":"AssumedRole","principalId":"AROAWZKRRJU43YP4FHR2N:StateManagerService","arn":"arn:aws:sts::123456789012:assumed-role/AWSServiceRoleForAmazonSSM/StateManagerService","accountId":"123456789012","sessionContext":{"sessionIssuer":{"type":"Role","principalId":"AROAWZKRRJU43YP4FHR2N","arn":"arn:aws:iam::123456789012:role/aws-service-role/ssm.amazonaws.com/AWSServiceRoleForAmazonSSM","accountId":"123456789012","userName":"AWSServiceRoleForAmazonSSM"}, "webIdFederationData":{},"attributes":{"creationDate":"2022-02-18T17:50:06Z","mfaAuthenticated":"false"}},"invokedBy":"ssm.amazonaws.com"},"eventTime":"2022-02-18T17:50:06Z","eventSource":"ec2.amazonaws.com","eventName":"DescribeInstances","awsRegion":"eu-west-1","sourceIPAddress":"ssm.amazonaws.com","userAgent":"ssm.amazonaws.com","requestParameters":{"maxResults":50,"instancesSet": (output truncated) |
Consulta 2: desglosar campos individuales
Objetivo
- Aislar los campos individuales en @message.
- Mostrar los campos seleccionados en el evento de CloudTrail.
Consulta
#Breakout Individual Fields fields @timestamp, awsRegion, eventCategory, eventSource, eventName, eventType, sourceIPAddress, userIdentity.type | sort @timestamp desc | limit 2
Resultados
@timestamp | awsRegion | eventCategory | eventSource | eventName | eventType | sourceIPAddress | userIdentity.type |
---|---|---|---|---|---|---|---|
2022-02-18 18:00:09.647 | ca-central-1 | Management | sts.amazonaws.com | AssumeRole | AwsApiCall | cloudtrail.amazonaws.com | AWSService |
2022-02-18 18:00:09.647 | ca-central-1 | Management | sts.amazonaws.com | AssumeRole | AwsApiCall | cloudtrail.amazonaws.com | AWSService |
Consulta 3: filtrar por instancias ejecutadas de Amazon Elastic Compute Cloud (Amazon EC2)
Objetivo
- Recuperar campos específicos en el evento de CloudTrail.
- Cambiar el nombre de los campos para utilizar etiquetas más significativas.
- Filtrar las instancias de EC2 más recientes lanzadas en esta cuenta en función de la llamada a la API.
Consulta
#EC2: Recently Launched Instances fields eventTime, eventName as API, responseElements.instancesSet.items.0.instanceId as InstanceID, userIdentity.sessionContext.sessionIssuer.type as IssuerType, userIdentity.type as IdentityType, userIdentity.sessionContext.sessionIssuer.userName as userName | filter eventName = 'RunInstances' | sort eventTime desc | limit 2
Resultados
eventTime | API | InstanceID | IssuerType | IdentityType | userName |
---|---|---|---|---|---|
2022-02-18T17:36:38Z | RunInstances | i-0325b4d6ae4e93c75 | Role | AssumedRole | AWSServiceRoleForAutoScaling |
2022-02-18T13:45:18Z | RunInstances | i-04d17a8425b7cb59a | Role | AssumedRole | AWSServiceRoleForAutoScaling |
Consulta 4: filtrar por el inicio de sesión de la consola más reciente
Objetivo
- Recuperar campos específicos en el evento de CloudTrail.
- Cambiar el nombre de los campos para utilizar etiquetas más significativas.
- Filtrar los últimos inicios de sesión de la consola en función de la llamada a la API.
Consulta
#Console Login: Most Recent API Calls fields eventTime, eventName, responseElements.ConsoleLogin as Response, userIdentity.arn as ARN, userIdentity.type as User_Type | filter eventName = 'ConsoleLogin' | sort eventTime desc | limit 10
Resultados
eventTime | eventName | Response | ARN | User_Type |
---|---|---|---|---|
2022-02-18T17:35:44Z | ConsoleLogin | Success | arn:aws:iam::123456789012:user/test_user | IAMUser |
2022-02-17T13:53:58Z | ConsoleLogin | Success | arn:aws:sts::123456789012:assumed-role/Admin/test_user | AssumedRole |
Consulta 5: filtrar por el inicio de sesión de la consola con un error de autenticación
Objetivo
- Recuperar campos específicos en el evento de CloudTrail.
- Cambiar el nombre de los campos para utilizar etiquetas más significativas.
- Filtrar los últimos inicios de sesión incorrectos desde la consola.
Consulta
#ConsoleLogin: Filter on Failed Logins fields eventTime, eventName, responseElements.ConsoleLogin as Response, userIdentity.userName as User, userIdentity.type as User_Type, sourceIPAddress, errorMessage | filter eventName = 'ConsoleLogin' and responseElements.ConsoleLogin = 'Failure' | sort eventTime desc | limit 10
Resultados
eventTime | eventName | Response | User | User_Type | sourceIPAddress | errorMessage |
---|---|---|---|---|---|---|
2022-02-18T20:10:55Z | ConsoleLogin | Failure | echo | IAMUser | 12.34.56.89 | Failed authentication |
2022-02-18T20:10:43Z | ConsoleLogin | Failure | echo | IAMUser | 12.34.56.89 | Failed authentication |
Consulta 6: filtrar por carga de objetos de Amazon Simple Storage Service (Amazon S3)
Objetivo
- Recuperar campos específicos en el evento de CloudTrail.
- Cambiar el nombre de los campos para utilizar etiquetas más significativas.
- Filtrar por la llamada a la API y el bucket de S3 de destino.
Consulta
#Filter PutObject API Calls on a specific S3 Bucket fields @timestamp, eventName as API, requestParameters.bucketName as BucketName, requestParameters.key as Key, userIdentity.sessionContext.sessionIssuer.userName as UserName | filter eventName = 'PutObject' and BucketName = 'target-s3-bucket' | sort @timestamp desc | limit 2
Resultados
@timestamp | API | BucketName | Key | UserName |
---|---|---|---|---|
2022-02-12 17:16:07.415 | PutObject | test_bucket1 | w4r9Hg4V7g.jpg | |
2022-02-12 16:29:43.470 | PutObject | test_bucket2 | 6wyBy0hBoB.jpg |
Consulta 7: resumir la actividad de S3
Objetivo
- Filtrar por el servicio de Amazon S3.
- Agregar todos los eventos coincidentes en función de la estadística de recuento.
- Dividir los resultados en función de la API, el bucket de S3 y la clave.
- Utilizar el comando stats para cambiar el nombre de los campos.
- Ordenar por orden descendente.
Consulta
#S3 Activity: Bucket Key Details filter eventSource = 's3.amazonaws.com' | stats count(*) as Hits by eventName as API, requestParameters.bucketName as BucketName, requestParameters.key as Key | sort Hits desc | limit 5
Resultados
API | BucketName | Key | Hits |
---|---|---|---|
ListAccessPoints | 44 | ||
GetBucketAcl | team1-ctrail-multi-region | 27 | |
GetBucketAcl | team2-dub-cloudtrail | 27 | |
GetBucketAcl | aws-cloudtrail-logs-123456789012-ba940dd7 | 26 | |
GetObject | devsupport-prod | rdscr/individual/123456789012 | 18 |
Consulta 8: resumir la actividad de descifrado de AWS KMS
Objetivo
- Filtrar según el servicio de AWS Key Management Service (AWS KMS) y la API Decrypt.
- Utilizar el comando fields para cambiar el nombre de los campos y, a continuación, agregar los nombres fáciles de usar.
- Agregar todos los eventos coincidentes en función de la estadística de recuento.
- Dividir los resultados en función de la clave de AWS KMS y el usuario.
- Ordenar por orden descendente.
Consulta
#KMS Decrypt Activity: Key User Details fields resources.0.ARN as KMS_Key, userIdentity.sessionContext.sessionIssuer.userName as User | filter eventSource='kms.amazonaws.com' and eventName='Decrypt' | stats count(*) as Hits by KMS_Key, User | sort Hits desc | limit 2
Resultados
KMS_Key | User | Hits |
---|---|---|
arn:aws:kms:us-east-1:123456789012:key/03f2923d-e213-439d-92cf-cbb444bd85bd | AWSServiceRoleForConfig | 12 |
arn:aws:kms:us-east-1:123456789012:key/03f2923d-e213-439d-92cf-cbb444bd85bd | FoxTrot-1UQJBODTWZYZ6 | 8 |
Consulta 9: resumir las llamadas a la API con errores
Objetivo
- Filtrar en función de la presencia del campo errorCode.
- Agregar todos los eventos coincidentes en función de la estadística de recuento.
- Dividir los resultados según el servicio de AWS, la API y el campo errorCode.
- Utilizar el comando stats para cambiar el nombre de los campos.
- Ordenar por el mayor número de coincidencias.
Consulta
#Summarize API Calls with Errors filter ispresent(errorCode) | stats count(*) as Num_of_Events by eventSource as AWS_Service, eventName as API, errorCode | sort Num_of_Events desc | limit 5
Resultados
AWS_Service | API | errorCode | Num_of_Events |
---|---|---|---|
s3.amazonaws.com | GetBucketPublicAccessBlock | NoSuchPublicAccessBlockConfiguration | 79 |
lambda.amazonaws.com | GetLayerVersionPolicy20181031 | ResourceNotFoundException | 66 |
s3.amazonaws.com | GetBucketPolicyStatus | NoSuchBucketPolicy | 60 |
s3.amazonaws.com | HeadBucket | AccessDenied | 47 |
logs.amazonaws.com | CreateLogStream | ResourceNotFoundException | 21 |
Consulta 10: resumir las llamadas a la API de S3 con códigos de error
Objetivo
- Filtrar según el servicio de Amazon S3 y la presencia del campo errorCode.
- Agregar todos los eventos coincidentes en función de la estadística de recuento.
- Dividir los resultados según los campos errorCode y errorMessage.
- Ordenar por el mayor número de coincidencias.
Consulta
#S3: Summarize Error Codes filter eventSource = 's3.amazonaws.com' and ispresent(errorCode) | stats count(*) as Hits by errorCode, errorMessage | sort Hits desc | limit 5
Resultados
errorCode | errorMessage | Hits |
---|---|---|
AccessDenied | Access Denied | 86 |
NoSuchBucketPolicy | The bucket policy does not exist | 80 |
NoSuchPublicAccessBlockConfiguration | The public access block configuration was not found | 79 |
ObjectLockConfigurationNotFoundError | Object Lock configuration does not exist for this bucket | 3 |
ServerSideEncryptionConfigurationNotFoundError | The server side encryption configuration was not found | 3 |
Consulta 11: resumir las llamadas a las API AccessDenied/UnauthorizedOperation realizadas por el servicio de AWS, la API y el usuario de AWS Identity and Access Management (IAM)
Objetivo
- Filtrar los eventos AccessDenied o UnauthorizedOperation de CloudTrail.
- Agregar todos los eventos coincidentes en función de la estadística de recuento.
- Dividir los resultados según el campo errorCode, el servicio de AWS, la API y el usuario o rol de IAM.
- Utilizar el comando stats para cambiar el nombre de los campos.
- Ordenar por orden descendente.
Consulta
#Summarize AccessDenied/UnauthorizedOperation API Calls by AWS Service, API, IAM User filter (errorCode='AccessDenied' or errorCode='UnauthorizedOperation') | stats count(*) as NumberOfEvents by errorCode, eventSource as AWS_Service, eventName as API, userIdentity.type as IdentityType, userIdentity.invokedBy as InvokedBy | sort NumberOfEvents desc | limit 10
Resultados
errorCode | AWS_Service | API | IdentityType | InvokedBy | NumberOfEvents |
---|---|---|---|---|---|
AccessDenied | s3.amazonaws.com | HeadBucket | AWSService | delivery.logs.amazonaws.com | 83 |
AccessDenied | s3.amazonaws.com | GetObject | AssumedRole | 9 |
Consulta 12: volumen de llamadas por hora de AWS KMS
Objetivo
- Filtrar según el servicio de AWS KMS y la API Decrypt.
- Agregar todos los eventos coincidentes en compartimentos de una hora.
- Visualizar los resultados en un gráfico de líneas.
Consulta
#KMS: Hourly Decrypt Call Volume filter eventSource='kms.amazonaws.com' and eventName='Decrypt' | stats count(*) as Hits by bin(1h)
Resultados
bin(1h) | Hits |
---|---|
2022-02-18 19:00:00.000 | 16 |
2022-02-18 18:00:00.000 | 25 |
2022-02-18 17:00:00.000 | 28 |
2022-02-18 16:00:00.000 | 14 |
2022-02-18 15:00:00.000 | 16 |
Información relacionada
Monitor AWS CloudTrail log data in Amazon CloudWatch (vídeo)

Contenido relevante
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace 5 meses
- Respuesta aceptadapreguntada hace 2 meses
- Respuesta aceptadapreguntada hace 4 meses
- OFICIAL DE AWSActualizada hace un año