

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.

# Enviar CloudWatch registros a Firehose
<a name="writing-with-cloudwatch-logs"></a>

CloudWatch Los eventos de registro se pueden enviar a Firehose mediante filtros de CloudWatch suscripción. Para obtener más información, consulte [Filtros de suscripción con Amazon Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#FirehoseExample).

CloudWatch Los eventos de registro se envían a Firehose en formato gzip comprimido. Si quieres enviar eventos de registro descomprimidos a los destinos de Firehose, puedes usar la función de descompresión de Firehose para descomprimir los registros automáticamente. CloudWatch 

**importante**  
Actualmente, Firehose no admite la entrega de CloudWatch registros al destino de Amazon OpenSearch Service porque Amazon CloudWatch combina varios eventos de registro en un registro de Firehose y Amazon OpenSearch Service no puede aceptar varios eventos de registro en un registro. Como alternativa, puedes considerar [usar un filtro de suscripción para Amazon OpenSearch Service in CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html).

# Descomprime CloudWatch los registros
<a name="writing-with-cloudwatch-logs-decompression"></a>

[Si utilizas Firehose para entregar CloudWatch registros y quieres entregar datos descomprimidos a tu destino de transmisión Firehose, usa la [conversión de formato](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) de datos de Firehose (Parquet, ORC) o la partición dinámica.](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html) Debe activar la descompresión para el flujo de Firehose.

Puede activar la descompresión mediante, o. Consola de administración de AWS AWS Command Line Interface AWS SDKs

**nota**  
Si habilitas la función de descompresión en una transmisión, utilízala exclusivamente para los filtros de suscripciones de CloudWatch Logs y no para los de Vended Logs. Si habilitas la función de descompresión en una transmisión que se usa para ingerir tanto CloudWatch registros como registros vendidos, se produce un error en la ingestión de registros vendidos a Firehose. Esta función de descompresión solo está disponible para los registros. CloudWatch 

# Extrae el mensaje después de la descompresión de los registros CloudWatch
<a name="Message_extraction"></a>

Cuando habilita la descompresión, tiene la opción de habilitar también la extracción de mensajes. Al utilizar la extracción de mensajes, Firehose filtra todos los metadatos, como el propietario, el grupo de registro, el flujo de registro y otros, de los CloudWatch registros descomprimidos y entrega solo el contenido de los campos de mensajes. Si envía datos a un destino de Splunk, debe activar la extracción de mensajes para que Splunk analice los datos. Los siguientes son ejemplos de resultados después de la descompresión con y sin extracción de mensajes.

Figura 1: Ejemplo de resultado después de la descompresión sin extracción del mensaje:

```
{
 "owner": "111111111111",
 "logGroup": "CloudTrail/logs",
 "logStream": "111111111111_CloudTrail/logs_us-east-1",
 "subscriptionFilters": [
 "Destination"
 ],
 "messageType": "DATA_MESSAGE",
 "logEvents": [
 {
 "id": "31953106606966983378809025079804211143289615424298221568",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root1\"}"
 },
 {
 "id": "31953106606966983378809025079804211143289615424298221569",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root2\"}"
 },
 {
 "id": "31953106606966983378809025079804211143289615424298221570",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root3\"}"
 }
 ]
}
```

Figura 2: Ejemplo de resultado después de la descompresión con extracción del mensaje:

```
{"eventVersion":"1.03","userIdentity":{"type":"Root1"}
{"eventVersion":"1.03","userIdentity":{"type":"Root2"}
{"eventVersion":"1.03","userIdentity":{"type":"Root3"}
```

# Habilitar la descompresión en un nuevo flujo de Firehose desde la consola
<a name="writing-with-cloudwatch-logs-decompression-enabling-console"></a>

**Para habilitar la descompresión en una nueva transmisión de Firehose mediante el Consola de administración de AWS**

1. [Inicie sesión en la consola de Kinesis Consola de administración de AWS y ábrala en https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. Elija **Amazon Data Firehose** en el panel de navegación.

1. Seleccione **Create Firehose stream (Crear flujo de Firehose)**.

1. En **Choose source and destination (Elegir origen y destino)**  
****Origen****  
La fuente del flujo de Firehose. Elija una de las siguientes fuentes:  
   + **Direct PUT**: elija esta opción para crear un flujo de Firehose en el que las aplicaciones de los productores escriban directamente. Para obtener una lista de servicios de AWS , agentes y servicios de código abierto que se integran con Direct PUT en Firehose, consulte [esta](create-name.md) sección.
   + **Flujo de Kinesis:** seleccione esta opción para configurar un flujo de Firehose que utilice un flujo de datos de Kinesis como origen de datos. A continuación, puede usar Firehose para leer fácilmente los datos de un flujo de datos de Kinesis existente y cargarlos en los destinos. Para obtener más información, consulte [Escritura en Firehose mediante Kinesis Data Streams](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-kinesis-streams.html).  
****Destino****  
Destino del flujo de Firehose. Seleccione una de las siguientes opciones:  
   + Amazon S3
   + Splunk

1. En **Firehose stream name (Nombre del flujo de Firehose)**, introduzca un nombre para el flujo.

1. (Opcional) En **Transform records (Transformar registros)**:
   + En la sección **Descomprimir registros fuente de Amazon CloudWatch Logs**, selecciona **Activar la descompresión**.
   + Si desea utilizar la extracción de mensajes después de la descompresión, seleccione **Turn on message extraction (Activar la extracción de mensajes)**.

# Habilitar la descompresión en un flujo de Firehose existente
<a name="enabling-decompression-existing-stream-console"></a>

Esta sección presenta las instrucciones para habilitar la descompresión de los flujos de Firehose existentes. Abarca dos escenarios: los flujos con el procesamiento de Lambda deshabilitado y los flujos con el procesamiento de Lambda ya habilitado. En las siguientes secciones se describen step-by-step los procedimientos para cada caso, incluida la creación o modificación de funciones Lambda, la actualización de la configuración de Firehose y la supervisión de las CloudWatch métricas para garantizar la implementación correcta de la función de descompresión Firehose integrada.

## Habilitar la descompresión cuando el procesamiento de Lambda está deshabilitado
<a name="enabling-decomp-exist-stream-lam-disable"></a>

Para habilitar la descompresión en un flujo de Firehose existente con el procesamiento de Lambda deshabilitado, primero debe habilitar el procesamiento de Lambda. Esta condición solo es válida para los flujos existentes. Los siguientes pasos muestran la forma de habilitar la descompresión en los flujos existentes que no tienen habilitado el procesamiento de Lambda.

1. Creación de una función de Lambda. Puede crear una transferencia de registros ficticia o utilizar este [esquema](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor) para crear una nueva función de Lambda. 

1. Actualice su flujo de Firehose actual para habilitar el procesamiento de Lambda, y utilice la función de Lambda que creó para el procesamiento.

1. Una vez se actualice el flujo con la nueva función de Lambda, regrese a la consola de Firehose y habilite la descompresión.

1. Deshabilite el procesamiento de Lambda que habilitó en el paso 1. Ahora puede eliminar la clave que creó en el paso 1.

## Habilitar la descompresión cuando el procesamiento de Lambda está habilitado
<a name="enabling-decomp-exist-stream-lam-enable"></a>

Si ya tiene un flujo de Firehose con una función de Lambda, puede sustituirlo por la característica de descompresión de Firehose para realizar la descompresión. Antes de continuar, revise el código de la función de Lambda para confirmar que solo realiza la descompresión o la extracción de mensajes. La salida de la función de Lambda debería tener un aspecto similar a los ejemplos que se muestran en la [figura 1 o la figura 2](Message_extraction.md). Si el resultado tiene un aspecto similar, puede reemplazar la función de Lambda siguiendo estos pasos.

1. Sustituya la función de Lambda actual por este [esquema](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor). La nueva función de Lambda del esquema detecta automáticamente si los datos entrantes están comprimidos o descomprimidos. Solo realiza la descompresión si los datos de entrada están comprimidos.

1. Active la descompresión con la opción de Firehose integrada para la descompresión.

1. Activa CloudWatch las métricas para tu transmisión de Firehose si aún no está habilitada. Supervise la métrica `CloudWatchProcessorLambda_IncomingCompressedData` y espere a que esta cambie a cero. Esto confirma que todos los datos de entrada enviados a la función de Lambda están descomprimidos y que la función de Lambda ya no es necesaria.

1. Elimine la transformación de datos de Lambda porque ya no la necesita para descomprimir el flujo.

# Desactivar la descompresión en el flujo de Firehose
<a name="writing-with-cloudwatch-logs-decompression-disabling-console"></a>

****

Para inhabilitar la descompresión en un flujo de datos, usa el Consola de administración de AWS

1. [Inicie sesión en la consola de Kinesis Consola de administración de AWS y ábrala en https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. Elija **Amazon Data Firehose** en el panel de navegación.

1. Elija el flujo de Firehose que desea editar.

1. En la página **Firehose stream details (Detalles del flujo de Firehose)**, seleccione la pestaña **Configuration (Configuración)**.

1. En la sección **Transform and convert records (Transformar y convertir registros)**, seleccione **Edit (Editar)**.

1. En **Descomprimir registros fuente de Amazon CloudWatch Logs**, desmarca **Activar la descompresión** y, a continuación, selecciona **Guardar** cambios.

# Solución de problemas de descompresión en Firehose
<a name="decomp-faq"></a>

En la siguiente tabla, se muestra cómo Firehose gestiona los errores durante la descompresión y el procesamiento de los datos, incluida la entrega de registros a un bucket de S3 con errores, el registro de errores y la emisión de métricas. También se explica el mensaje de error devuelto en el caso de operaciones de colocación de datos no autorizadas.


| Problema | Solución | 
| --- | --- | 
| ¿Qué ocurre con los datos de origen en caso de que se produzca un error durante la descompresión? |  Si Amazon Data Firehose no puede descomprimir el registro, este se entrega tal como está (en formato comprimido) al bucket de S3 con errores que especificó durante la creación del flujo de Firehose. Junto con el registro, el objeto entregado también incluye el código de error y el mensaje de error, y estos objetos se entregarán en un prefijo de bucket de S3 llamado `decompression-failed`. Firehose seguirá procesando otros registros después de la descompresión fallida de un registro.  | 
| ¿Qué ocurre con los datos de origen en caso de que se produzca un error en el proceso de procesamiento tras una descompresión satisfactoria? |  Si Amazon Data Firehose produce un error en los pasos de procesamiento posteriores a la descompresión, como el particionamiento dinámico y la conversión de formatos de datos, el registro se entrega en formato comprimido al bucket de S3 con errores que especificó durante la creación del flujo de Firehose. Junto con el registro, el objeto entregado también incluye el código de error y el mensaje de error.  | 
| ¿Cómo se le informa en caso de que se produzca un error o una excepción? |  En caso de que se produzca un error o una excepción durante la descompresión, si configura CloudWatch los registros, Firehose registrará los mensajes CloudWatch de error en los registros. Además, Firehose envía las métricas a las CloudWatch métricas que puedes monitorear. Opcionalmente, también puede crear alarmas basadas en métricas emitidas por Firehose.  | 
| ¿Qué ocurre cuando put las operaciones no provienen de CloudWatch los registros? | Cuando los clientes puts no provienen de CloudWatch Logs, aparece el siguiente mensaje de error: <pre>Put to Firehose failed for AccountId: <accountID>, FirehoseName:  <firehosename> because the request is not originating from allowed source types.</pre> | 
| ¿Qué métricas emite Firehose para la característica de descompresión? | Firehose emite métricas para la descompresión de todos los registros. Debe seleccionar el periodo (1 minuto), la estadística (suma) y el intervalo de fechas para obtener el número de DecompressedRecords con errores o satisfactorios, o de DecompressedBytes con errores o satisfactorios. Para obtener más información, consulte [CloudWatch Métricas de descompresión de registros](monitoring-with-cloudwatch-metrics.md#decompression-metrics-cw). | 