Comprensión de los conceptos de consultas programadas - Amazon CloudWatch Logs

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Comprensión de los conceptos de consultas programadas

Antes de crear consultas programadas, comprenda estos conceptos clave que afectan a la forma en que se ejecutan las consultas y a dónde se entregan los resultados.

Separación de funciones de IAM

Las consultas programadas requieren dos funciones de IAM independientes: una para ejecutar las consultas y otra para entregar los resultados a Amazon S3 o Amazon EventBridge Event Buses. Entender por qué existe esta separación le ayuda a configurar los permisos correctamente y a utilizar las ventajas operativas y de seguridad que proporciona.

La arquitectura de dos funciones divide las responsabilidades entre el acceso a los datos y la entrega de los datos. La función de ejecución de consultas accede a los datos de registro y ejecuta las consultas, mientras que la función de entrega de destino escribe los resultados en el destino elegido. Esta separación sigue el principio del privilegio mínimo: cada función solo tiene los permisos que necesita para su función específica.

Función de ejecución de consultas

Permite a CloudWatch Logs ejecutar consultas CloudWatch de Logs Insights en su nombre. Esta función necesita permisos para acceder a sus grupos de registros y ejecutar consultas, pero no necesita acceder a los recursos de destino. Permisos necesarios:

  • logs:StartQuery

  • logs:StopQuery

  • logs:GetQueryResults

  • logs:DescribeLogGroups

  • logs:Unmasksi es necesario desenmascarar los datos

Para grupos de registros cifrados con KMS: kms:Decrypt y kms:DescribeKey permisos para la clave de KMS utilizada para cifrar los grupos de registros. También es necesario añadir estos permisos.

Requisito de relación de confianza: la función de ejecución de consultas debe incluir una política de confianza que permita al servicio de CloudWatch registros (logs.amazonaws.com) asumir la función. Sin esta relación de confianza, las consultas programadas fallarán y generarán errores de permiso.

Ejemplo de política de confianza para la función de ejecución de consultas:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Ejemplo de política de permisos para la función de ejecución de consultas:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
Función de entrega en destino

Permite que CloudWatch Logs entregue los resultados de las consultas al destino elegido. Esta función solo necesita permisos para el servicio de destino específico, siguiendo el principio de privilegios mínimos. Los permisos necesarios varían según el tipo de destino.

Requisito de relación de confianza: la función de entrega de destino también debe incluir una política de confianza que permita al servicio de CloudWatch registros (logs.amazonaws.com) asumir la función.

Ejemplo de política de permisos para la función de entrega en destino de S3:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::your-scheduled-query-results-bucket/*" } ] }

Esta separación proporciona beneficios prácticos para sus operaciones. Desde el punto de vista de la seguridad, si necesita cambiar el lugar donde se entregan los resultados, solo debe modificar la función de entrega de destino sin cambiar los permisos de ejecución de las consultas. En lo que respecta al cumplimiento y la auditoría, puede realizar un seguimiento claro de qué función accede a los datos de registro confidenciales y qué función escribe en sistemas externos. Esto facilita la demostración de que su infraestructura de análisis de registros sigue las mejores prácticas de seguridad.

Uso entre regiones y cuentas

Una consulta programada se crea en una región específica y se ejecuta en esa región. Sin embargo, puede consultar grupos de registros y ofrecer resultados en todas las regiones y cuentas. Debe configurar una o más AWS cuentas como cuentas de supervisión y vincularlas con varias cuentas de origen. Una cuenta de monitoreo es una AWS cuenta central que puede ver e interactuar con los datos de observabilidad generados a partir de las cuentas de origen. Una cuenta de origen es una AWS cuenta individual que genera datos de observabilidad para los recursos que residen en ella. Las cuentas de origen comparten sus datos de observabilidad con la cuenta de supervisión. Por lo tanto, puede configurar consultas programadas desde la cuenta de monitoreo utilizando los grupos de registros de todas las cuentas vinculadas.

Consultando grupos de registros entre regiones

La consulta programada puede acceder a los grupos de registros de cualquier región. Especifique los grupos de registros con su formato ARN completo:. arn:aws:logs:region:account-id:log-group:log-group-name La función de ejecución de consultas necesita logs:StartQuery y logs:GetQueryResults permisos para los grupos de registros en todas las regiones de destino.

importante

Al consultar grupos de registros o entregar resultados entre regiones, los datos de registro cruzan los límites regionales. Considere lo siguiente:

  • Requisitos de residencia de los datos: asegúrese de que la transferencia de datos entre regiones cumpla con las políticas de gobierno de datos y los requisitos reglamentarios de su organización

  • Costes de transferencia de datos: la transferencia de datos entre regiones conlleva cargos adicionales

  • Latencia de red: las consultas que acceden a grupos de registros en regiones distantes pueden experimentar una latencia más alta

Para obtener un rendimiento y una rentabilidad óptimos, cree consultas programadas en la misma región que sus grupos de registros principales.

Un enfoque alternativo: utilice la centralización de CloudWatch registros para replicar los datos de registro de varias cuentas y regiones en una cuenta de supervisión central. Esto le permite crear consultas programadas en una sola región que accedan a todos sus registros centralizados, lo que evita las consultas entre regiones y simplifica la administración de los permisos de IAM.

Programe las expresiones y la gestión de las zonas horarias

La programación que defina determina cuándo se ejecuta la consulta y con qué frecuencia. La elección de la expresión de programación correcta afecta al momento en que se reciben los resultados y a la cantidad de datos que se consultan. Comprender los tipos de expresión le ayuda a elegir entre simplicidad y precisión.

Las expresiones cron proporcionan un control preciso sobre el tiempo, lo que le permite especificar horas, días de la semana o días del mes exactos. Utilice expresiones cron cuando necesite que las consultas se ejecuten en un horario laboral específico o que se ajusten a los cronogramas operativos. En la consola, también puede programar consultas mediante sencillas opciones de calendario.

Expresiones cron

Ejecute consultas en momentos específicos. Formato: cron(minute hour day-of-month month day-of-week year). Ejemplos:

  • cron(0 9 * * ? *)- Todos los días a las 9:00 a.m. UTC

  • cron(0 18 ? * MON-FRI *)- De lunes a viernes a las 18:00 UTC

  • cron(0 0 1 * ? *)- El primer día de cada mes a medianoche UTC

  • cron(0 12 ? * SUN *)- Todos los domingos a las 12:00, hora peninsular española

  • cron(30 8 1 1 ? *)- El 1 de enero a las 8:30 UTC

Todas las consultas programadas se ejecutan en UTC, independientemente de la zona horaria local o de la ubicación de AWS los recursos. Esto es especialmente importante cuando se programan consultas para el horario laboral o para análisis urgentes. Por ejemplo, si su empresa opera en la hora del este de EE. UU. y desea obtener un informe diario a las 9 a. m. ET, debe tener en cuenta la diferencia UTC (14:00 UTC durante el horario de verano, 13:00 UTC en caso contrario). Planifica tus horarios teniendo en cuenta la hora UTC para asegurarte de que las consultas se ejecuten a las horas previstas.

Elegir un idioma de consulta

Las consultas programadas admiten tres lenguajes de consulta diferentes, y tu elección afecta tanto a la forma en que escribes las consultas como a la facilidad con la que tu equipo puede mantenerlas. El idioma correcto depende de tus requisitos de análisis y de las habilidades actuales de tu equipo.

Si está filtrando y agregando principalmente datos de registro, CloudWatch Logs Insights Query Language ofrece la sintaxis más sencilla. Para las transformaciones de datos complejas en las que es necesario remodelar o enriquecer los datos mediante varios pasos, el enfoque de flujo continuo de PPL hace que la lógica sea más fácil de seguir. Cuando necesite realizar uniones o agregaciones complejas similares a las operaciones de bases de datos, SQL proporciona una sintaxis familiar que los equipos con experiencia en bases de datos pueden adoptar rápidamente.

CloudWatch El lenguaje de consultas de Logs Insights (CWLI)

Diseñado específicamente para el análisis de registros con una sintaxis intuitiva. Ideal para:

  • Análisis y filtrado de registros basados en texto

  • Agregaciones y estadísticas de series temporales

  • Equipos nuevos en el análisis de registros

OpenSearch Lenguaje de procesamiento canalizado (PPL) de Service

Lenguaje de consultas basado en Pipeline con potentes capacidades de transformación de datos. Ideal para:

  • Transformaciones y enriquecimiento de datos complejos

  • Flujos de trabajo de procesamiento de datos en varios pasos

  • Equipos familiarizados con el procesamiento basado en canalizaciones

OpenSearch Lenguaje de consulta estructurado (SQL) de servicios

Sintaxis SQL estándar para consultas conocidas al estilo de una base de datos. Ideal para:

  • Uniones y agregaciones complejas

  • Inteligencia empresarial e informes

  • Equipos con una sólida experiencia en SQL

Selección de destinos y casos de uso

El lugar donde se envían los resultados de las consultas determina lo que se puede hacer con ellos. Esta elección da forma a todo tu flujo de trabajo posterior, ya sea que estés creando análisis a largo plazo, activando respuestas automatizadas o ambas cosas. Comprender los puntos fuertes de cada tipo de destino le ayuda a diseñar la arquitectura adecuada para su caso de uso.

Los destinos de Amazon S3 están optimizados para el almacenamiento y el procesamiento por lotes. Cuando necesite conservar los resultados de las consultas durante meses o años, analizar tendencias a lo largo del tiempo o introducir datos en plataformas de análisis, Amazon S3 ofrece almacenamiento rentable con retención ilimitada. EventBridge los destinos están optimizados para la automatización en tiempo real. Cuando los resultados de las consultas deberían activar acciones inmediatas (como enviar alertas, iniciar flujos de trabajo o actualizar sistemas), EventBridge ofrece resultados en forma de eventos a los que sus aplicaciones pueden responder al instante. De forma predeterminada, todos los eventos de finalización de consultas se envían automáticamente como eventos al bus de eventos predeterminado, lo que permite la integración con sistemas de procesamiento descendente, funciones Lambda u otras arquitecturas basadas en eventos. Los resultados solo se publican en los destinos cuando la consulta se ejecuta correctamente.

Destinos de Amazon S3

Almacene los resultados de las consultas como archivos JSON para conservarlos a largo plazo y procesarlos por lotes. Ideal para:

  • Análisis histórico y archivado de datos

  • Integración con lagos de datos y plataformas de análisis

  • Requisitos de conformidad y auditoría

  • Almacenamiento rentable de conjuntos de resultados de gran tamaño

EventBridge destinos

Envíe los resultados de las consultas como eventos para su procesamiento y automatización en tiempo real. Puedes recuperar los resultados de la consulta únicamente con el queryID enviado en el caso de que dure hasta 30 días, ya que almacenamos los resultados durante 30 días. Ideal para:

  • Activar respuestas automatizadas a los resultados de las consultas

  • Integración con flujos de trabajo sin servidor y funciones Lambda

  • Sistemas de alertas y notificaciones en tiempo real

  • Arquitecturas y microservicios basados en eventos

Formato y estructura de los resultados de la consulta

Para los destinos de Amazon S3, los resultados de las consultas se entregan en formato JSON con la misma estructura que la respuesta de la GetQueryResults API. Para Amazon, EventBridge comprender el formato de los resultados de las consultas programadas le ayuda a diseñar flujos de trabajo de procesamiento e integración posteriores.

Los resultados de las consultas se entregan en formato JSON con la siguiente estructura:

{ "version": "0", "id": "be72061b-eca2-e068-a7e1-83e01d6fe807", "detail-type": "Scheduled Query Completed", "source": "aws.logs", "account": "123456789012", "time": "2025-11-18T11:31:48Z", "region": "us-east-1", "resources": [ "arn:aws:logs:us-east-1:123456789012:scheduled-query:477b4380-b098-474e-9c5e-e10a8cc2e6e7" ], "detail": { "queryId": "2038fd57-ab4f-4018-bb2f-61d363f4a004", "queryString": "fields @timestamp, @message, @logStream, @log\n| sort @timestamp desc\n| limit 10000", "logGroupIdentifiers": [ "/aws/lambda/my-function" ], "status": "Complete", "startTime": 1763465460, "statistics": { "recordsMatched": 0, "recordsScanned": 0, "estimatedRecordsSkipped": 0, "bytesScanned": 0, "estimatedBytesSkipped": 0, "logGroupsScanned": 1 } } }

Los elementos clave incluyen:

  • statistics- Métricas de rendimiento de consultas, incluidos los registros coincidentes, escaneados, los bytes procesados y los datos omitidos estimados

  • startTime- Cuándo se inició la ejecución de la consulta (marca de tiempo de Unix)

  • queryString- La consulta real que se ejecutó

  • queryId- Identificador de consulta de la consulta mediante el cual se pueden recuperar los resultados

  • logGroupIdentifiers- Lista de grupos de registros consultados

  • status- Estado de ejecución de la consulta (completa, fallida, etc.)