

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.

# Automatizar el análisis de registros con consultas programadas
<a name="ScheduledQueries"></a>

Las consultas programadas le permiten automatizar la ejecución de las consultas de CloudWatch Logs Insights de forma regular. En lugar de ejecutar consultas manualmente para analizar los datos de registro, puede configurar las consultas programadas para que se ejecuten automáticamente y entreguen los resultados a destinos como los buckets de Amazon S3 o los buses de EventBridge eventos de Amazon. Esta automatización es ideal para generar informes periódicos, monitorear tendencias o activar procesos posteriores en función de los resultados del análisis de registros.

Las consultas programadas son compatibles con los tres lenguajes de consulta disponibles en CloudWatch Logs Insights:
+ [**Lenguaje de consulta de Logs Insights (Logs Insights QL)**](CWL_AnalyzeLogData_LogsInsights.md)
+ [**OpenSearch Lenguaje de procesamiento por canalización de servicios (PPL)**](CWL_AnalyzeLogData_PPL.md)
+ [**OpenSearch Lenguaje de consulta estructurado de servicios (SQL)**](CWL_AnalyzeLogData_SQL.md)

**Topics**
+ [

# Comprensión de los conceptos de consultas programadas
](scheduled-queries-concepts.md)
+ [

# Referencia de expresión de horario
](scheduled-queries-schedule-reference.md)
+ [

# Prácticas recomendadas
](scheduled-queries-best-practices.md)
+ [

# Cómo empezar con las consultas programadas
](scheduled-queries-getting-started.md)
+ [

# Configuración de los destinos de S3 para las consultas programadas
](scheduled-queries-s3-destination.md)
+ [

# Solución de problemas de consultas programadas
](scheduled-queries-troubleshooting.md)

# Comprensión de los conceptos de consultas programadas
<a name="scheduled-queries-concepts"></a>

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
<a name="scheduled-queries-iam-roles"></a>

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:Unmask`si 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 que el servicio de CloudWatch registros (`logs.amazonaws.com`) asuma 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. Para garantizar el 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
<a name="scheduled-queries-cross-account"></a>

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 en todas las 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs_Centralization.html) 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
<a name="scheduled-queries-schedule-expressions"></a>

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
<a name="scheduled-queries-query-languages"></a>

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 facilita el seguimiento de la lógica. 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
<a name="scheduled-queries-destinations"></a>

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
<a name="scheduled-queries-result-format"></a>

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.)

# Referencia de expresión de horario
<a name="scheduled-queries-schedule-reference"></a>

Utilice estas tablas de referencia para crear expresiones de programación para sus consultas programadas. Todas las horas se indican en UTC.

**Sintaxis de expresiones cron**

Formato: `cron(minute hour day-of-month month day-of-week year)`


| Caso de uso | Expresión Cron | Description (Descripción) | Úselo cuando | 
| --- | --- | --- | --- | 
| Horarios diarios | cron(0 9 \$1 \$1 ? \$1) | Todos los días a las 9:00 a.m. UTC | Informes diarios | 
|  | cron(0 \$1/6 \$1 \$1 ? \$1) | Cada 6 horas (00:00, 06:00, 12:00, 18:00 UTC) | Monitorización frecuente | 
|  | cron(30 2 \$1 \$1 ? \$1) | Todos los días a las 2:30 a.m. UTC | Análisis fuera de las horas pico | 
| Horario de atención | cron(0 9-17 ? \$1 MON-FRI \$1) | Cada hora de 9 a.m. a 5 p.m., de lunes a viernes UTC | Supervisión empresarial | 
|  | cron(0 18 ? \$1 MON-FRI \$1) | De lunes a viernes a las 18:00 UTC | Fin del día laborable | 
|  | cron(0 8,12,17 ? \$1 MON-FRI \$1) | De lunes a viernes, a las 8 a. m. al mediodía y a las 5 p. m., UTC | Horarios comerciales clave | 
| Horarios semanales | cron(0 12 ? \$1 SUN \$1) | Todos los domingos a las 12:00, hora peninsular española | Resúmenes semanales | 
|  | cron(0 9 ? \$1 MON \$1) | Todos los lunes a las 9:00 a.m. UTC | Informes de inicio de semana | 
|  | cron(0 23 ? \$1 FRI \$1) | Todos los viernes a las 23:00 UTC | Limpieza de fin de semana | 
| Horarios mensuales | cron(0 0 1 \$1 ? \$1) | El primer día de cada mes a medianoche UTC | Informes mensuales | 
|  | cron(0 9 L \$1 ? \$1) | Último día de cada mes a las 9:00 a.m. UTC | Procesamiento de fin de mes | 
|  | cron(0 10 1 1,4,7,10 ? \$1) | El primer día de cada trimestre a las 10:00 a.m. UTC | Análisis trimestral | 
| Alta frecuencia | cron(\$1/15 \$1 \$1 \$1 ? \$1) | Cada 15 minutos | Supervisión en tiempo real | 
|  | cron(0,30 \$1 \$1 \$1 ? \$1) | Cada 30 minutos (a las :00 y a las :30) | Controles frecuentes | 
|  | cron(0 \$1/2 \$1 \$1 ? \$1) | Cada 2 horas | Intervalos regulares | 
| Casos especiales | cron(30 8 1 1 ? \$1) | 1 de enero a las 8:30 a.m. UTC | Informes anuales | 
|  | cron(0 6 \$1 \$1 SAT,SUN \$1) | Los fines de semana a las 6:00 a.m. UTC | Procesamiento durante el fin | 
|  | cron(0 0 ? \$1 MON\$11 \$1) | El primer lunes de cada mes a medianoche (UTC) | Planificación mensual | 

**Referencia de campo de expresión cron**


| Campo | Valores | Caracteres comodín | Ejemplos | 
| --- | --- | --- | --- | 
| Minuto (primero) | 0-59 | \$1 , - / | 0(al final de la hora), \$1/15 (cada 15 minutos), 0,30 (dos veces por hora) | 
| Hora (segunda) | 0-23 | \$1 , - / | 9(9 a.m.), \$1/2 (cada 2 horas), 9-17 (horario comercial) | 
| Day-of-month (3º) | 1-31, LARGO, ANCHO | \$1 , - / ? | 1(primer día), L (último día), ? (cuando se usa day-of-week) | 
| Mes (cuarto) | 1-12 o JAN-DEC | \$1 , - / | 1(enero)JAN, 1,4,7,10 (trimestral) | 
| Day-of-week (5) | 1-7 o SUN-SAT | \$1 , - / ? \$1 L | MON-FRI(de lunes a viernes)SUN, MON\$11 (primer lunes) | 
| Año (6º) | 1970-2199 | \$1 , - / | \$1(cada año), 2024 (año específico), 2024-2026 (rango) | 

**Caracteres comodín y expresiones especiales**

**`*` (asterisco)**  
Coincide con todos los valores del campo. Ejemplo: `*` en el campo hora significa cada hora.

**`?`(signo de interrogación)**  
Sin valor específico. Úselo en day-of-month o day-of-week cuando se especifique el otro. Ejemplo: utilice `?` in day-of-month al especificar `MON-FRI` in day-of-week.

**`-` (guion)**  
Rango de valores. Ejemplo: `MON-FRI` (de lunes a viernes), `9-17` (de 9 a. m. a 5 p. m.).

**`,`(coma)**  
Múltiples valores específicos. Ejemplo: `MON,WED,FRI` (lunes, miércoles y viernes), `8,12,17` (8 a. m., mediodía, 5 p. m.).

**`/`(barra)**  
Valores o incrementos de los pasos. Ejemplo: `0/15` en minutos significa cada 15 minutos a partir del minuto 0 (0, 15, 30, 45). `*/2`en horas significa cada 2 horas.

**`L`(último)**  
Último día del mes o último día de la semana. Ejemplo: `L` in day-of-month significa el último día del mes. `FRIL`significa el último viernes del mes.

**`W`(día laborable)**  
Día laborable más cercano. Ejemplo: `15W` significa el día de la semana más cercano al día 15 del mes.

**`#`(enésima aparición)**  
Enésima aparición de un día laborable del mes. Ejemplo: `MON#1` significa el primer lunes del mes, `FRI#2` significa el segundo viernes del mes.

**Patrones comunes y mejores prácticas**
+ **Para aplicaciones empresariales:** utilice el horario `MON-FRI` laboral (p. ej.`9-17`) para evitar realizar consultas durante los fines de semana o fuera del horario laboral.
+ **Para el monitoreo de alta frecuencia:** utilice incrementos como `*/15` (cada 15 minutos), pero tenga en cuenta los límites de simultaneidad de consultas.
+ **Para ahorrar recursos:** programe consultas con un uso intensivo de recursos durante las horas de menor actividad y utilice horas tempranas de la mañana, como UTC. `2-6`
+ **Para los informes mensuales: `L` utilízalos** para el último día del mes o para fechas específicas, como el primer día, `1` para garantizar una programación uniforme.

# Prácticas recomendadas
<a name="scheduled-queries-best-practices"></a>

Siga estas prácticas recomendadas para garantizar que las operaciones de consulta programadas sean fiables y eficientes:

**Optimización de las consultas**  
+ Pruebe las consultas manualmente antes de programarlas para verificar el rendimiento y los resultados
+ Utilice índices de filtro al principio de la consulta para reducir el procesamiento de datos
+ Limite los intervalos de tiempo para evitar tiempos de espera con grupos de registros de gran volumen
+ Tenga en cuenta la complejidad de las consultas y los límites de tiempo de ejecución

**Planifique la planificación**  
+ Evite la superposición de ejecuciones asegurándose de que las consultas se completen antes de la próxima ejecución programada
+ Tenga en cuenta los retrasos en la ingesta de registros al configurar los intervalos de tiempo
+ Usa expresiones cron para momentos específicos
+ Distribuya los cronogramas para asegurarse de no alcanzar el límite de simultaneidad de consultas

**Supervisión y mantenimiento**  
+ Supervise el historial de ejecución con regularidad para identificar fallos o problemas de rendimiento
+ Revise y actualice las funciones de IAM periódicamente para mantener la seguridad
+ Pruebe la accesibilidad del destino antes de implementarlo en producción

**Autorización**  
+ Todas APIs las consultas programadas se autorizan en el recurso de consulta programado y no en los recursos que ocupan en la entrada, como los grupos de registros. Configure las políticas de IAM en consecuencia
+ Gestione la autorización de los grupos de registros mediante la función de ejecución asignada en el APIs

# Cómo empezar con las consultas programadas
<a name="scheduled-queries-getting-started"></a>

Al crear una consulta programada, configurará varios componentes clave que definen cómo se ejecuta la consulta y dónde se entregan los resultados. Comprender estos componentes le ayudará a configurar un análisis de registro automatizado eficaz.

Cada consulta programada consta de los siguientes componentes clave:

**Configuración de consultas**  
La cadena de consulta de CloudWatch Logs Insights, los grupos de registros de destino y el lenguaje de consulta que se utilizarán en el análisis.

**Expresión de programación**  
Una expresión cron o un calendario de frecuencias que define cuándo se ejecuta la consulta. Puede especificar la configuración de la zona horaria para garantizar que las consultas se ejecuten a la hora local correcta. La consola muestra una descripción legible de su programación, como «Ejecute la consulta todos los martes a las 15:10 durante un intervalo de tiempo de 5 minutos, con efecto inmediato, en UTC, hasta tiempo indefinido».

**Intervalo de tiempo**  
El período retrospectivo de cada ejecución de una consulta, definido por una diferencia entre la hora de inicio y la hora de ejecución. Esto determina la cantidad de datos históricos que analizará cada ejecución de consulta.

**Vista previa del programa de ejecución**  
La consola muestra las tres siguientes ejecuciones de consultas programadas con fechas y horas exactas (por ejemplo, 28-10-2025, 15:10, UTC; 2025/11/04 15:10, UTC; 2025/11/11/2011 15:10, UTC), lo que le ayuda a comprobar que la programación está configurada correctamente.

**Destinos**  
Dónde se muestran los resultados de la consulta tras una ejecución correcta. Los destinos compatibles incluyen los buckets de Amazon S3 y, de forma predeterminada, los metadatos de los resultados se envían al bus de eventos predeterminado.

**Rol de ejecución**  
Una función de IAM que CloudWatch Logs asume para ejecutar la consulta y entregar los resultados a los destinos especificados.

Antes de crear consultas programadas, asegúrese de tener configurados los permisos y los recursos necesarios.

# Crear una consulta programada
<a name="create-scheduled-query"></a>

Cree una consulta programada que ejecute automáticamente las consultas de CloudWatch Logs Insights y entregue los resultados a los destinos que elija.

## Requisitos previos
<a name="create-scheduled-query-prerequisites"></a>

Antes de crear una consulta programada, asegúrese de tener lo siguiente:
+ **Grupos de registros**: uno o más grupos de registros que contienen los datos que desea analizar
+ Función **de IAM de ejecución: función** de IAM con los siguientes permisos:
  + `logs:StartQuery`- Permiso para iniciar consultas de CloudWatch Logs Insights
  + `logs:GetQueryResults`- Permiso para recuperar los resultados de la consulta
  + `logs:DescribeLogGroups`- Permiso para acceder a la información del grupo de registros. Esto solo es necesario para los grupos de registros basados en prefijos para la detección de grupos de registros
+ **Permisos de destino: permisos** de IAM adicionales para el destino elegido:
  + Para los destinos de Amazon S3: `s3:PutObject`
+ **Para el AWS CLI uso de la API**: AWS credenciales configuradas con permisos para llamar a CloudWatch Logs APIs

Para ver ejemplos detallados de políticas de IAM, consulte[Administración de identidades y accesos para Amazon CloudWatch Logs](auth-and-access-control-cwl.md). También debe tenerse en cuenta que solo puede tener 1000 consultas programadas por cuenta.

------
#### [ Console ]

**Para crear una consulta programada (consola)**

1. ¿Abrir la consola CloudWatch de Logs en [https://us-east-1.console.aws.amazon.com/cloudwatch/casa? region=us-east-1 \$1LogsV2:Logs-Insights](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights).

1. **En el panel de navegación, selecciona Logs Insights.**

1. Seleccione **Crear consulta programada**.

1. En la sección **de definición de consultas**:

   1. En **Idioma de consulta**, elija el idioma de consulta que desee utilizar en la lista.

   1. Para la **cadena de consulta**, introduzca su consulta de CloudWatch Logs Insights en el cuadro.

   1. Para **los grupos de registros**, seleccione los grupos de registros que desee consultar en la lista.

1. En la sección **de configuración del cronograma**:

   1. En la **expresión Schedule**, configure cuándo se ejecutará la consulta. Elija una de las opciones predefinidas o introduzca una expresión cron personalizada.

   1. **En Efectivo al crearse**, especifique cuándo se activa la programación. Elija comenzar inmediatamente o en una fecha y hora específicas utilizando el YYYY/MM/DD formato.

   1. En **Intervalo de tiempo**, especifique el período retrospectivo para cada ejecución de consulta. Introduzca la duración en minutos que define el tiempo transcurrido desde el momento de ejecución de la consulta.

   1. **En Continuar indefinidamente**, especifique cuándo finaliza la programación. Elija ejecutar indefinidamente o hasta una fecha y hora específicas utilizando YYYY/MM/DD el formato.

1. La consola muestra las tres siguientes ejecuciones de consultas programadas en función de su configuración y muestra las fechas y horas exactas en UTC en las que se ejecutará la consulta.

1. En la sección **Publicar los resultados de la consulta en S3 (opcional**) (si utilizas el destino S3):

   1. Para el **bucket de S3**, selecciona **Esta cuenta** si el bucket de destino está en la misma AWS cuenta, o selecciona **Otra cuenta** si el bucket está en una AWS cuenta diferente e introduce el ID de cuenta de la cuenta propietaria del bucket.

   1. Para el **URI de Amazon S3**, introduzca el bucket y el prefijo de Amazon S3 donde se almacenarán los resultados (por ejemplo,`s3://my-bucket/query-results/`). Si seleccionó **Esta cuenta**, puede elegir **Browse Amazon S3** para navegar y seleccionar una ubicación de Amazon S3 existente.

   1. (Opcional) Para el **ARN de la clave KMS, introduzca el ARN** de una AWS KMS clave administrada por el cliente para cifrar los resultados de la consulta mediante SSE-KMS. La clave debe estar en la misma AWS región que el bucket de Amazon S3 de destino.

1. En la sección **Función de IAM para publicar los resultados de las consultas en Amazon S3**, elija una de las siguientes opciones:

   1. Elija **Crear automáticamente un nuevo rol con los permisos predeterminados** para configurar automáticamente un rol de IAM con los permisos necesarios para que CloudWatch Logs entregue los resultados de las consultas a Amazon S3.

   1. Elija **Utilizar un rol existente** para seleccionar un rol de IAM existente con las políticas necesarias para que CloudWatch Logs entregue los resultados de las consultas a Amazon S3. Utilice el campo de búsqueda para buscar y seleccionar el rol de IAM adecuado de la lista.

1. En la sección **Función de IAM para la ejecución programada de consultas**, elija una de las siguientes opciones:

   1. Seleccione **Crear automáticamente un nuevo rol con los permisos predeterminados** para configurar automáticamente un rol de IAM con los permisos necesarios para que los CloudWatch registros ejecuten las consultas programadas.

   1. Elija **Usar un rol existente para seleccionar un rol** de IAM existente con las políticas necesarias para que los CloudWatch registros ejecuten las consultas programadas. Utilice el campo de búsqueda para buscar y seleccionar el rol de IAM adecuado de la lista.

1. Seleccione **Crear programación** para crear la consulta programada.

------
#### [ AWS CLI ]

**Para crear una consulta programada (AWS CLI)**
+ Utilice el `create-scheduled-query` comando para crear una nueva consulta programada:

  ```
  aws logs create-scheduled-query \
      --name "ErrorAnalysisQuery" \
      --query-language "CWLI" \
      --query-string "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)" \
      --schedule-expression "cron(8 * * * ? *)" \
      --execution-role-arn "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole" \
      --log-group-identifiers "/aws/lambda/my-function" "/aws/apigateway/my-api" \
      --state "ENABLED"
  ```

------
#### [ API ]

**Para crear una consulta programada (API)**
+ Utilice la `CreateScheduledQuery` acción para crear una nueva consulta programada. El siguiente ejemplo crea una consulta programada que se ejecuta cada hora:

  ```
  {
      "name": "ErrorAnalysisQuery",
      "queryLanguage": "CWLI",
      "queryString": "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)",
      "scheduleExpression": "cron(8 * * * ? *)",
      "executionRoleArn": "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole",
      "logGroupIdentifiers": ["/aws/lambda/my-function", "/aws/apigateway/my-api"],
      "state": "ENABLED"
  }
  ```

------

Tras crear la consulta programada, puede verla y gestionarla desde la página de **consultas programadas** y mediante la ListScheduledQueries API, que muestra todas las consultas programadas con sus nombres, fechas de creación, estado de la última ejecución, hora de la última activación y frecuencia de repetición.

# Visualización y administración de las consultas programadas
<a name="scheduled-queries-management"></a>

La siguiente información está disponible para cada consulta:

**Name**  
El nombre exclusivo que asignó a la consulta programada. Seleccione el nombre para ver el historial detallado de configuración y ejecución.

**Fecha de creación**  
La fecha en que se creó la consulta programada, que se muestra en YYYY-MM-DD formato.

**Estado de la última ejecución**  
El estado de ejecución de la consulta más reciente. Los valores posibles son:  
+ **Completa**: la consulta se ejecutó correctamente y los resultados se enviaron a todos los destinos configurados.
+ **Error: no** se pudo ejecutar la consulta o entregar el resultado. Compruebe el historial de ejecuciones para ver los detalles del error.
+ **Consulta no válida**: la consulta no es válida y tiene problemas de sintaxis
+ **Tiempo de espera: se** ha agotado el tiempo de espera de la consulta. El tiempo de espera de una consulta se agota automáticamente después de 60 minutos

**Hora de la última activación**  
La fecha y la hora en que se ejecutó la consulta por última vez, mostradas en formato YYYY-MM-DD HH:MM:SS. Muestra **Nunca** si la consulta aún no se ha ejecutado.

**Repitiendo cada**  
La frecuencia de programación de la consulta. Muestra la **opción Personalizada** para consultas que utilizan expresiones cron o descripciones de frecuencias específicas para programar de forma más sencilla.

La página de **consultas programadas** proporciona una descripción general de todas las consultas programadas y muestra su estado actual y su historial de ejecución para que pueda ver, supervisar y gestionar todas las consultas programadas desde una ubicación centralizada. Utilice esta información para supervisar el rendimiento de las consultas, identificar problemas y gestionar sus flujos de trabajo de análisis de registros automatizados.

------
#### [ Console ]

**Para ver las consultas programadas (consola)**

1. ¿Abrir la consola CloudWatch de Logs en [https://us-east-1.console.aws.amazon.com/cloudwatch/casa? region=us-east-1 \$1LogsV2:Logs-Insights](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights).

1. ****En la consola de CloudWatch registros, seleccione Consulta programada y Ver consultas programadas.****

------
#### [ AWS CLI ]

**Para ver una lista de las consultas programadas (AWS CLI)**
+ Utilice el `list-scheduled-queries` comando para enumerar todas las consultas programadas:

  ```
  aws logs list-scheduled-queries --max-results 10
  ```

------
#### [ API ]

**Para enumerar las consultas programadas (API)**
+ Usa la `ListScheduledQueries` acción para recuperar todas las consultas programadas:

  ```
  {
      "maxResults": 10
  }
  ```

------

El encabezado de la página de **consultas programadas** muestra el número total de consultas programadas de su cuenta, lo que le ayuda a realizar un seguimiento del uso y a gestionar sus flujos de trabajo de análisis de registros automatizados de forma eficaz.

# Ver el historial de ejecución de consultas programadas
<a name="scheduled-queries-execution-history"></a>

Utilice el historial de ejecución para supervisar el rendimiento de las consultas programadas y solucionar cualquier problema relacionado con la ejecución de las consultas o la entrega de los resultados.

El historial de ejecución muestra el estado de cada consulta ejecutada, incluidas las ejecuciones correctas, los errores y los resultados del procesamiento de destino. Puede utilizar esta información para identificar patrones, diagnosticar problemas y comprobar que las consultas se ejecutan según lo previsto.

------
#### [ Console ]

**Para ver el historial de ejecuciones (consola)**

1. En la consola de CloudWatch registros, seleccione **Consulta programada** y **Ver consultas programadas**.

1. Seleccione la consulta programada que desee examinar.

1. Elija la pestaña **Execution history (Historial de ejecución)**.

------
#### [ AWS CLI ]

**Para ver el historial de ejecuciones (AWS CLI)**

1. Utilice el `get-scheduled-query-history` comando para recuperar el historial de ejecución de una consulta programada:

   ```
   aws logs get-scheduled-query-history \
       --identifier "DailyErrorMonitoring" \
       --start-time 1743379200 \
       --end-time 1743465600 \
       --max-results 10
   ```

1. Para filtrar por estado de ejecución, añada el `--execution-statuses` parámetro:

   ```
   aws logs get-scheduled-query-history \
       --identifier "DailyErrorMonitoring" \
       --start-time 1743379200 \
       --end-time 1743465600 \
       --max-results 1 \
       --execution-statuses "SUCCEEDED"
   ```

------
#### [ API ]

**Para ver el historial de ejecuciones (API)**
+ Utilice la `GetScheduledQueryHistory` acción para recuperar el historial de ejecuciones:

  ```
  {
      "identifier": "DailyErrorMonitoring",
      "startTime": 1743379200,
      "endTime": 1743465600,
      "maxResults": 10,
      "executionStatuses": ["SUCCEEDED", "FAILED"]
  }
  ```

------

El historial de ejecuciones muestra:
+ **Estado de ejecución**: en ejecución, completa, fallida, tiempo de espera o InvalidQuery
+ **Hora** de activación: cuando se ejecutó la consulta
+ **Destinos**: estado de procesamiento para cada destino configurado, incluidos S3 y EventBridge
+ **Mensajes de error**: detalles sobre cualquier error en la ejecución de la consulta o en el procesamiento del destino

# Actualización de una consulta programada
<a name="scheduled-queries-updating"></a>

Modifique la configuración de la consulta programada para cambiar la cadena de consulta, el cronograma, los destinos o la función de ejecución a medida que cambien sus requisitos.

Puede actualizar cualquier aspecto de una consulta programada, incluida la cadena de consulta, la expresión del programa, los destinos y la función de ejecución. Los cambios entran en vigor inmediatamente para futuras ejecuciones.

------
#### [ Console ]

**Para actualizar una consulta programada (consola)**

1. En la consola de CloudWatch registros, seleccione **Consulta programada** y **Ver consultas programadas**.

1. Seleccione la consulta programada que desee actualizar.

1. Elija **Edit (Edición de)**.

1. Modifique la configuración según sea necesario.

1. Seleccione **Save changes (Guardar cambios)**.

------
#### [ AWS CLI ]

**Para actualizar una consulta programada (AWS CLI)**
+ Utilice el `update-scheduled-query` comando para modificar una consulta programada existente:

  ```
  aws logs update-scheduled-query \
      --identifier "arn:aws:logs:us-east-1:111122223333:scheduled-query:5e0c0228-1c29-4d26-904f-59f1f1ba3c8f" \
      --description "Monitor for ERROR level logs daily" \
      --query-language "LogsQL" \
      --query-string "fields @timestamp, @message | filter @message like /ERROR/" \
      --log-group-identifiers "/aws/lambda/my-function-1" "/aws/lambda/my-function-2"
  ```

------
#### [ API ]

**Para actualizar una consulta programada (API)**

1. Utilice la `UpdateScheduledQuery` acción para modificar la configuración de la consulta programada:

   ```
   {
       "identifier": "arn:aws:logs:us-east-1:111122223333:scheduled-query:5e0c0228-1c29-4d26-904f-59f1f1ba3c8f",
       "queryString": "fields @timestamp, @message | filter @message like /WARNING|ERROR/ | stats count() by bin(5m)",
       "scheduleExpression": "cron(0 */2 * * ? *)",
       "state": "ENABLED"
   }
   ```

1. Para actualizar varios parámetros de configuración a la vez:

   ```
   {
       "identifier": "arn:aws:logs:us-east-1:111122223333:scheduled-query:5e0c0228-1c29-4d26-904f-59f1f1ba3c8f",
       "queryString": "fields @timestamp, @message, @level | filter @level = 'ERROR'",
       "scheduleExpression": "cron(0 8,12,16 * * ? *)",
       "executionRoleArn": "arn:aws:iam::111122223333:role/UpdatedScheduledQueryRole",
       "logGroupIdentifiers": ["/aws/lambda/my-function", "/aws/lambda/another-function"],
       "destinationConfiguration": {
           "s3Configuration": {
               "destinationIdentifier": "s3://111122223333-sqn-results-bucket/processed-results",
               "roleArn": "arn:aws:iam::111122223333:role/Admin"
           }
       }
   }
   ```

------

# Configuración de los destinos de S3 para las consultas programadas
<a name="scheduled-queries-s3-destination"></a>

Configure Amazon S3 como destino para almacenar los resultados de las consultas programadas como archivos JSON para su retención y análisis a largo plazo.

Cuando se utiliza Amazon S3 como destino, los resultados de las consultas se almacenan como archivos JSON en el bucket y el prefijo especificados. Esta opción es ideal para archivar los resultados, realizar análisis por lotes o integrarlos con otros AWS servicios que procesan datos de S3.

Puede enviar los resultados de la consulta a un depósito de Amazon S3 de la misma AWS cuenta que la consulta programada o a un depósito de una AWS cuenta diferente. Si lo desea, también puede cifrar los resultados de las consultas mediante una AWS KMS clave administrada por el cliente (SSE-KMS).

## Entregar los resultados a un bucket de Amazon S3 de la misma cuenta
<a name="scheduled-queries-s3-same-account"></a>

Cuando el bucket de Amazon S3 de destino se encuentra en la misma AWS cuenta que la consulta programada, puede buscar y seleccionar el bucket directamente desde la consola.

**Para configurar un destino de Amazon S3 con la misma cuenta (consola)**

1. En la sección **Publicar los resultados de la consulta en S3**, para el **bucket de S3**, selecciona **Esta** cuenta.

1. En el caso del **URI** de Amazon S3, introduzca el bucket y el prefijo de Amazon S3 en los que se almacenarán los resultados (por ejemplo`s3://my-bucket/query-results/`) o seleccione **Browse Amazon S3** para navegar y seleccionar una ubicación de Amazon S3 existente.

1. (Opcional) Para cifrar los resultados con una AWS KMS clave gestionada por el cliente, introduzca el ARN de la clave en AWS KMS el campo ARN de **la clave KMS**. La clave debe estar en la misma AWS región que el bucket de Amazon S3 de destino. Si no especificas una AWS KMS clave, se aplicará la configuración de cifrado predeterminada del depósito.

1. En la sección **Función de IAM para publicar los resultados de las consultas en Amazon S3**, seleccione **Crear automáticamente una nueva función con los permisos predeterminados** para configurar automáticamente los permisos necesarios, o elija **Usar una función existente para seleccionar una función** de IAM existente con las políticas necesarias.

La función de IAM de entrega de destino requiere los siguientes permisos:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my-bucket/prefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

## Entregar los resultados a un bucket de Amazon S3 de otra cuenta
<a name="scheduled-queries-s3-cross-account"></a>

Puede enviar los resultados de las consultas programadas a un bucket de Amazon S3 de otra AWS cuenta. Cuando utilice un bucket multicuenta, debe proporcionar el URI de Amazon S3 y el ID de cuenta de la cuenta propietaria del bucket.

**Para configurar un destino de Amazon S3 multicuenta (consola)**

1. En la sección **Publicar los resultados de la consulta** en **S3, para el bucket** de S3, seleccione **Otra cuenta** e introduzca el ID de cuenta de la cuenta propietaria del bucket.

1. Para el **URI de Amazon S3**, introduzca el URI completo de Amazon S3 del bucket de destino y el prefijo en la otra cuenta (por ejemplo,`s3://cross-account-bucket/query-results/`).

1. (Opcional) Para cifrar los resultados con una AWS KMS clave gestionada por el cliente, introduzca el ARN de la clave en AWS KMS el campo ARN de **la clave KMS**. La clave debe estar en la misma AWS región que el bucket de Amazon S3 de destino.

1. En la sección **Función de IAM para publicar los resultados de las consultas en Amazon S3**, seleccione **Crear automáticamente una nueva función con los permisos predeterminados** para configurar automáticamente los permisos necesarios, o elija **Usar una función existente para seleccionar una función** de IAM existente con las políticas necesarias.

La entrega entre cuentas requiere permisos de ambas partes. La función de IAM de entrega de destino en la cuenta de origen requiere los siguientes permisos:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::cross-account-bucket/prefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

La política de bucket de Amazon S3 de la cuenta de destino debe conceder permiso al rol de IAM de la cuenta de origen para escribir objetos:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowScheduledQueryRolePutObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/my-s3-delivery-role"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::cross-account-bucket/prefix/*"
        }
    ]
}
```

## Cifrar los resultados con una clave administrada por el cliente AWS KMS
<a name="scheduled-queries-s3-kms-encryption"></a>

Si lo desea, puede especificar una AWS KMS clave administrada por el cliente para cifrar los resultados de las consultas enviados a Amazon S3 mediante SSE-KMS. La AWS KMS clave puede estar en la misma cuenta que la consulta programada o en una cuenta diferente.

Al especificar una AWS KMS clave, la consulta programada usa esa clave para cifrar los resultados mediante SSE-KMS. Si no especificas una AWS KMS clave, se aplica la configuración de cifrado predeterminada del depósito. Si el depósito está configurado con el cifrado SSE-KMS predeterminado mediante una clave administrada por el cliente, la función de IAM de entrega de destino aún debe tener `kms:GenerateDataKey` permiso sobre esa clave.

La función de IAM de entrega de destino requiere el `kms:GenerateDataKey` permiso de la clave. AWS KMS El siguiente ejemplo muestra los permisos necesarios para un destino de Amazon S3 con una AWS KMS clave gestionada por el cliente:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my-bucket/prefix/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "111122223333"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "kms:GenerateDataKey",
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "s3.us-east-1.amazonaws.com"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::my-bucket*"
                }
            }
        }
    ]
}
```

Cuando la AWS KMS clave está en una cuenta diferente a la de la función de IAM de entrega de destino, la política AWS KMS clave de la cuenta propietaria de la clave debe conceder explícitamente el acceso a la función:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowScheduledQueryRoleToEncrypt",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/my-s3-delivery-role"
            },
            "Action": "kms:GenerateDataKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "s3.us-east-1.amazonaws.com"
                },
                "StringLike": {
                    "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::my-bucket*"
                }
            }
        }
    ]
}
```

**nota**  
Cuando la AWS KMS clave y la función de IAM de entrega de destino están en la misma cuenta, la política de identidad de IAM por sí sola es suficiente si la política AWS KMS clave incluye la declaración raíz predeterminada «Habilitar las políticas de IAM». Solo se requiere una concesión explícita de la política AWS KMS clave si la política clave no se delega en IAM.

La función de IAM para publicar los resultados de las consultas en Amazon S3 debe configurarse de forma independiente de la función de IAM para la ejecución programada de las consultas. Esta separación permite un control de acceso detallado, en el que la función de ejecución puede ejecutar consultas, mientras que la función de Amazon S3 se encarga específicamente de la entrega de resultados. Ambas funciones deben incluir una política de confianza que permita que el servicio de CloudWatch registros (`logs.amazonaws.com`) asuma la función.

# Solución de problemas de consultas programadas
<a name="scheduled-queries-troubleshooting"></a>

Utilice estos temas de solución de problemas para resolver problemas comunes relacionados con las consultas programadas.

## La ejecución de la consulta falla debido a errores de permisos
<a name="scheduled-queries-permission-errors"></a>

Resuelva los errores de permisos que impiden que las consultas programadas se ejecuten o entreguen resultados a los destinos.

Los errores de permisos se producen cuando la función de ejecución carece de los permisos necesarios para leer los grupos de registros o escribir en los recursos de destino.

**Para resolver errores de permisos**

1. Compruebe que la función de ejecución tenga `logs:StartQuery` los grupos de registros de destino y los `logs:DescribeLogGroups` permisos necesarios para ellos. `logs:GetQueryResults`

1. Asegúrese de que la función de ejecución tenga permisos de escritura para los recursos de destino (por ejemplo, `s3:PutObject` para los buckets de S3).

1. Compruebe que la política de confianza permita a CloudWatch Logs asumir la función de ejecución. El rol debe confiar en el principal (`logs.amazonaws.com`) del servicio de registros en su política de confianza.

Las causas más comunes incluyen la falta de permisos de IAM, un recurso incorrecto ARNs en la política o problemas de configuración de la política de confianza.

Para evitar errores de permisos, utilice el principio de privilegios mínimos al crear funciones de ejecución y pruebe los permisos antes de implementar las consultas programadas en producción.

## El tiempo de espera de la consulta
<a name="scheduled-queries-timeout"></a>

Resuelva los errores de tiempo de espera que se producen cuando las consultas programadas superan el límite máximo de tiempo de ejecución.

Los tiempos de espera de las consultas se producen cuando la consulta tarda más de 60 minutos en procesar el rango de datos especificado, a menudo debido a conjuntos de datos grandes o a una lógica de consulta compleja.

**Para resolver errores de tiempo de espera**

1. Reduzca el intervalo de tiempo reduciendo el intervalo de tiempo de inicio para procesar menos datos por ejecución.

1. Optimice la consulta añadiendo filtros al principio de la consulta para reducir la cantidad de datos procesados. Utilice índices de filtro para reducir el tamaño del escaneo de datos.

1. Considere dividir las consultas complejas en consultas más simples y específicas.

Entre las causas más comunes se incluyen las consultas en intervalos de tiempo extensos, el procesamiento de grupos de registros de gran volumen o el uso de agregaciones complejas sin el filtrado adecuado.

Para evitar tiempos de espera, pruebe las consultas manualmente en CloudWatch Logs Insights con el volumen de datos esperado y optimice el rendimiento antes de programarlas.

## El procesamiento de destino falla
<a name="scheduled-queries-destination-processing-fails"></a>

Resuelva los errores que se producen cuando los resultados de las consultas programadas no se pueden entregar a los destinos configurados.

Los errores en el procesamiento de destino se producen cuando el bucket de Amazon S3 o el bus de EventBridge eventos de destino son inaccesibles o están mal configurados.

**Para resolver errores en los que los resultados de las consultas no se publican en el destino**

1. Compruebe que el bucket de Amazon S3 especificado existe y es accesible.

1. Compruebe que la configuración de destino es correcta URIs.

1. Asegúrese de que la función de ejecución tenga los permisos necesarios para escribir en el destino.

Entre las causas más comunes se incluyen los recursos de destino eliminados o cuyo nombre se ha cambiado, el destino URIs incorrecto o los problemas de conectividad de la red.

Para evitar errores en el destino, valide periódicamente las configuraciones de destino y supervise la disponibilidad de los recursos de destino.

## Errores de consulta no válidos
<a name="scheduled-queries-invalid-query"></a>

Resuelva los errores de sintaxis y lógica en las cadenas de consultas programadas que impiden una ejecución correcta.

Los errores de consulta no válidos se producen cuando la cadena de consulta contiene errores de sintaxis, hace referencia a campos inexistentes o utiliza funciones de lenguaje de consulta no compatibles.

**Para resolver errores de consulta no válidos**

1. Pruebe la consulta manualmente en CloudWatch Logs Insights para comprobar la sintaxis y la lógica.

1. Compruebe que todos los campos de registro a los que se hace referencia existan en los grupos de registros de destino.

1. Compruebe que las funciones del lenguaje de consulta que utiliza son compatibles con las consultas programadas.

Las causas más comunes incluyen errores tipográficos en los nombres de los campos, una sintaxis de consulta incorrecta o el uso de funciones de consulta que no son compatibles con el entorno de ejecución programada.

Para evitar errores de consulta no válidos, pruebe siempre las consultas de forma interactiva antes de programarlas y utilice las funciones de detección de campos para comprobar los nombres de los campos.

## Errores de simultaneidad de consultas
<a name="scheduled-queries-concurrency-errors"></a>

Hay algunos puntos importantes que se mencionan a continuación a la hora de detectar errores de simultaneidad, ya que las consultas programadas utilizan la misma cuota que las consultas de información de Cloudwatch Logs. Se recomienda distribuir los horarios para evitar alcanzar el límite de simultaneidad.
+ **Cuota:** puedes ejecutar hasta 100 consultas simultáneas de CloudWatch Logs Insights por cuenta. AWS 
+ Cuadros de **mando:** las consultas que se añaden a los CloudWatch cuadros de mando también se tienen en cuenta para este límite de simultaneidad, ya que se ejecutan al cargar o actualizar el cuadro de mando.
+ **OpenSearch Servicio PPL/SQL:** puede ejecutar hasta 15 consultas PPL o SQL OpenSearch simultáneas por cuenta. OpenSearch AWS 
+ Consultas **entre cuentas: la cuota de simultaneidad se aplica tanto a las consultas** entre cuentas únicas como a las consultas entre cuentas. Cuando se utiliza la observabilidad CloudWatch multicuenta, las consultas iniciadas en una cuenta de monitorización contra una cuenta de origen vinculada también se tienen en cuenta para el límite de simultaneidad de la cuenta de monitorización.
+ **Grupos de registros de acceso poco frecuente:** en el caso de los grupos de registros de acceso poco frecuente, el número máximo de consultas simultáneas de Logs Insights se limita a cinco.