

# Conector CloudWatch de Amazon Athena
<a name="connectors-cloudwatch"></a>

El conector Amazon Athena CloudWatch permite que Amazon Athena se comunique con CloudWatch para que pueda consultar los datos de registro con SQL.

Este conector no utiliza Conexiones de Glue para centralizar las propiedades de configuración en Glue. La conexión se configura a través de Lambda.

El conector asigna sus LogGroups como esquemas y cada LogStream como una tabla. El conector también asigna una vista especial `all_log_streams` que contiene todos los LogStreams del LogGroup. Esta vista le permite consultar todos los registros de un LogGroup a la vez en lugar de buscar a través de cada LogStream individualmente.

## Requisitos previos
<a name="connectors-cloudwatch-prerequisites"></a>
+ Implemente el conector en su Cuenta de AWS mediante la consola de Athena o AWS Serverless Application Repository. Para obtener más información, consulte [Cómo crear una conexión de origen de datos](connect-to-a-data-source.md) o [Uso del AWS Serverless Application Repository para implementar un conector de origen de datos](connect-data-source-serverless-app-repo.md).

## Parameters
<a name="connectors-cloudwatch-parameters"></a>

Utilice los parámetros de esta sección para configurar el conector de CloudWatch.

### Conexiones de Glue (recomendado)
<a name="connectors-cloudwatch-gc"></a>

Recomendamos configurar un conector de CloudWatch por medio de un objeto de conexiones de Glue. Para ello, establezca la variable de entorno `glue_connection` de la función de Lambda del conector de CloudWatch con el nombre de la conexión de Glue que se va a utilizar.

**Propiedades de las conexiones de Glue**

Utilice el siguiente comando para obtener el esquema de un objeto de conexión de Glue. Este esquema contiene todos los parámetros que puede utilizar para controlar su conexión.

```
aws glue describe-connection-type --connection-type CLOUDWATCH
```

**Propiedades del entorno Lambda**
+ **glue\$1connection**: especifica el nombre de la conexión de Glue asociada al conector federado. 

**nota**  
Todos los conectores que utilizan conexiones de Glue deben utilizar AWS Secrets Manager para almacenar credenciales.
El conector de CloudWatch creado por medio de conexiones de Glue no admite el uso de un controlador de multiplexación.
El conector de CloudWatch creado por medio de conexiones de Glue solo es compatible con `ConnectionSchemaVersion` 2.

### Conexiones heredadas
<a name="connectors-cloudwatch-legacy"></a>
+ **spill\$1bucket**: especifica el bucket de Amazon S3 para los datos que superen los límites de la función de Lambda.
+ **spill\$1prefix**: (opcional) de forma predeterminada, se establece una subcarpeta en la carpeta especificada `spill_bucket` llamada `athena-federation-spill`. Le recomendamos configurar un [ciclo de vida de almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) de Amazon S3 en esta ubicación para eliminar vertidos de más de un número predeterminado de días u horas.
+ **spill\$1put\$1request\$1headers**: (opcional) un mapa codificado en JSON de encabezados y valores de solicitudes para la solicitud `putObject` de Amazon S3 que se usa para el vertidos (por ejemplo, `{"x-amz-server-side-encryption" : "AES256"}`). Para ver otros encabezados posibles, consulte [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) en la *referencia de la API de Amazon Simple Storage Service*.
+ **kms\$1key\$1id**: (opcional) de forma predeterminada, los datos que se vierten a Amazon S3 se cifran mediante el modo de cifrado autenticado AES-GCM y una clave generada aleatoriamente. Para que la función de Lambda use claves de cifrado más seguras generadas por KMS, como `a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, puede especificar un ID de clave de KMS.
+ **disable\$1spill\$1encryption**: (opcional) cuando se establece en `True`, desactiva el cifrado del vertido. El valor predeterminado es `False`, de modo que los datos que se vierten a S3 se cifran mediante AES-GCM, ya sea mediante una clave generada aleatoriamente o KMS para generar claves. La desactivación del cifrado de vertido puede mejorar el rendimiento, especialmente si su ubicación de vertido usa [cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

El conector también admite [control de congestión de AIMD](https://en.wikipedia.org/wiki/Additive_increase/multiplicative_decrease) para gestionar los eventos de limitación de CloudWatch a través de la construcción `ThrottlingInvoker` del [SDK de federación de consultas de Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-federation-sdk). Para modificar el comportamiento de limitación predeterminado, puede configurar cualquiera de las siguientes variables de entorno opcionales:
+ **throttle\$1initial\$1delay\$1ms**: el retraso de llamada inicial aplicado tras el primer evento de congestión. El valor predeterminado es 10 milisegundos.
+ **throttle\$1max\$1delay\$1ms**: el retraso máximo entre llamadas. Puede derivar TPS dividiéndolo en 1000 ms. El valor predeterminado es 1000 milisegundos.
+ **throttle\$1decrease\$1factor**: el factor por el que Athena reduce la tarifa de llamadas. El valor predeterminado es 0,5
+ **throttle\$1increase\$1ms**: la velocidad a la que Athena disminuye el retraso de la llamada. El valor predeterminado es 10 milisegundos.

## Base de datos y tablas
<a name="connectors-cloudwatch-databases-and-tables"></a>

El conector de CloudWatch Athena asigna sus LogGroups como esquemas, es decir, bases de datos, y cada LogStream como una tabla. El conector también asigna una vista especial `all_log_streams` que contiene todos los LogStreams del LogGroup. Esta vista le permite consultar todos los registros de un LogGroup a la vez en lugar de buscar a través de cada LogStream individualmente.

Todas las tablas asignadas por el conector de Athena CloudWatch tienen el siguiente esquema. Este esquema coincide con los campos proporcionados por Registros de CloudWatch.
+ **log\$1stream**: `VARCHAR` que contiene el nombre del LogStream del que proviene la fila.
+ **time**: `INT64` que contiene la hora de la época en que se generó la línea de registro.
+ **message**: `VARCHAR` que contiene el mensaje de registro.

**Ejemplos**  
En el siguiente ejemplo, se muestra cómo llevar a cabo una consulta `SELECT` en un LogStream especificado.

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" 
LIMIT 100
```

En el siguiente ejemplo, se muestra cómo usar la vista de `all_log_streams` para llevar a cabo una consulta en todos los LogStreams de un LogGroup especificado. 

```
SELECT * 
FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" 
LIMIT 100
```

## Permisos necesarios
<a name="connectors-cloudwatch-required-permissions"></a>

Para obtener información completa sobre las políticas de IAM que requiere este conector, consulte la sección `Policies` del archivo [athena-cloudwatch.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-cloudwatch/athena-cloudwatch.yaml). En la siguiente lista se resumen los permisos requeridos.
+ **Acceso de escritura a Amazon S3**: el conector requiere acceso de escritura a una ubicación de Amazon S3 para volcar los resultados de consultas de gran tamaño.
+ **Athena GetQueryExecution**: el conector usa este permiso para fallar rápidamente cuando finaliza la consulta ascendente de Athena.
+ **Lectura o escritura de Registros de CloudWatch**: el conector usa este permiso para leer los datos de registro y escribir sus registros de diagnóstico.

## Rendimiento
<a name="connectors-cloudwatch-performance"></a>

El conector de Athena CloudWatch intenta optimizar las consultas contra CloudWatch mediante la paralelización de los escaneos de las transmisiones de registro necesarias para su consulta. Para determinados filtros de periodos de tiempo, la inserción de predicados se lleva a cabo tanto dentro de la función de Lambda como dentro de Registros de CloudWatch.

Para obtener el mejor rendimiento, use solo minúsculas en los nombres de los grupos de registros y flujos de registros. El uso combinado de mayúsculas y minúsculas hace que el conector realice una búsqueda que no distinga mayúsculas de minúsculas, lo que requiere un mayor esfuerzo computacional.

**nota**  
 El conector de CloudWatch no es compatible con nombres de bases de datos en mayúsculas. 

## Consultas de acceso directo
<a name="connectors-cloudwatch-passthrough-queries"></a>

El conector CloudWatch admite [consultas de acceso directo](federated-query-passthrough.md) que utilizan la [sintaxis de consulta de información de registros de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). Para obtener más información sobre la información de registros de CloudWatch, consulte [Análisis de los datos de registros con información de registros de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) en la *Guía del usuario de Registros de Amazon CloudWatch*.

Para usar consultas de acceso directo con CloudWatch, puede utilizar la siguiente sintaxis:

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => 'start_time',
            ENDTIME => 'end_time',
            QUERYSTRING => 'query_string',
            LOGGROUPNAMES => 'log_group-names',
            LIMIT => 'max_number_of_results'
        ))
```

El siguiente ejemplo de consulta de acceso directo de CloudWatch filtra el campo `duration` cuando no es igual a 1000.

```
SELECT * FROM TABLE(
        system.query(
            STARTTIME => '1710918615308',
            ENDTIME => '1710918615972',
            QUERYSTRING => 'fields @duration | filter @duration != 1000',
            LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1',
            LIMIT => '2'
            ))
```

## Información sobre licencias
<a name="connectors-cloudwatch-license-information"></a>

El proyecto del conector de CloudWatch de Amazon Athena se licencia en virtud de la [Licencia de Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html).

## Recursos adicionales
<a name="connectors-cloudwatch-additional-resources"></a>

Para obtener más información acerca de este conector, consulte [el sitio correspondiente](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch) en GitHub.com.