Escribir en Amazon Data Firehose mediante registros CloudWatch - Amazon Data Firehose

Amazon Data Firehose se conocía anteriormente como Amazon Kinesis Data Firehose

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.

Escribir en Amazon Data Firehose mediante registros CloudWatch

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.

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.

Descompresión de registros CloudWatch

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 de datos de Firehose (Parquet, ORC) o la partición dinámica. Debes habilitar la descompresión de la transmisión de Firehose.

Puedes activar la descompresión mediante los o los SDK AWS Management Console. AWS Command Line Interface AWS

nota

Si habilitas la función de descompresión en una transmisión, úsala 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 utiliza 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 es exclusiva para los registros. CloudWatch

Extracción de mensajes tras la descompresión de los registros CloudWatch

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 salida 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 salida 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"}

Activación y desactivación de la descompresión

Puedes activar y desactivar la descompresión mediante los AWS Command Line Interface o AWS los AWS Management Console SDK.

Habilitar la descompresión en un flujo de datos nuevo mediante el AWS Management Console

Para habilitar la descompresión en un flujo de datos nuevo mediante el AWS Management Console
  1. Inicie sesión en la consola Kinesis AWS Management Console y ábrala en https://console.aws.amazon.com/kinesis.

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

  3. Selecciona Crear transmisión de Firehose.

  4. En Elegir origen y destino

    Origen

    La fuente de tu transmisión de Firehose. Elige una de las siguientes fuentes:

    • Direct PUT: elija esta opción para crear una transmisión Firehose en la que las aplicaciones del productor escriban directamente. Para obtener una lista de AWS los servicios, agentes y servicios de código abierto que están integrados con Direct PUT en Firehose, consulte esta sección.

    • Transmisión de Kinesis: elija esta opción para configurar una transmisión de Firehose que utilice una transmisión de datos de Kinesis como fuente de datos. A continuación, puede usar Firehose para leer fácilmente los datos de una transmisión de datos de Kinesis existente y cargarlos en los destinos. Para obtener más información, consulte Cómo escribir en Firehose mediante Kinesis Data Streams

    Destino

    El destino de tu transmisión Firehose. Seleccione una de las siguientes opciones:

    • Amazon S3

    • Splunk

  5. En el nombre de la transmisión de Firehose, introduce un nombre para la transmisión.

  6. (Opcional) En Transformar registros:

    • En la sección Descomprimir registros fuente de Amazon CloudWatch Logs, selecciona Activar la descompresión.

    • Si quieres usar la extracción de mensajes después de la descompresión, selecciona Activar la extracción de mensajes.

Habilitar la descompresión en un flujo de datos existente mediante el AWS Management Console

Si tiene una transmisión Firehose con una función Lambda para realizar la descompresión, puede sustituirla por la función de descompresión Firehose. Antes de continuar, revise el código de la función Lambda para confirmar que solo realiza la descompresión o la extracción de mensajes. La salida de la función Lambda debería tener un aspecto similar a los ejemplos que se muestran en la figura 1 o la figura 2 de la sección anterior. Si el resultado tiene un aspecto similar, puede reemplazar la función Lambda siguiendo estos pasos.

  1. Sustituya la función Lambda actual por este modelo. La nueva función Lambda de blueprint 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.

  2. Activa la descompresión con la opción Firehose integrada para la descompresión.

  3. Activa CloudWatch las métricas para tu transmisión de Firehose si aún no está habilitada. Supervisa la métrica CloudWatchProcessorLambda _ IncomingCompressedData y espera a que esta métrica cambie a cero. Esto confirma que todos los datos de entrada enviados a la función Lambda están descomprimidos y que la función Lambda ya no es necesaria.

  4. Elimine la transformación de datos de Lambda porque ya no la necesita para descomprimir la transmisión.

Desactivar la descompresión mediante el AWS Management Console

Para deshabilitar la descompresión de un flujo de datos mediante el AWS Management Console

  1. Inicie sesión en la consola Kinesis AWS Management Console y ábrala en https://console.aws.amazon.com/kinesis.

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

  3. Elige la transmisión de Firehose que deseas editar.

  4. En la página de detalles de la transmisión de Firehose, selecciona la pestaña Configuración.

  5. En la sección Transformar y convertir registros, selecciona Editar.

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

Preguntas frecuentes

¿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, el registro se entrega tal cual (en formato comprimido) al bucket de error S3 que especificó durante la creación de la transmisión de Firehose. Junto con el registro, el objeto entregado también incluye el código y el mensaje de error, y estos objetos se entregarán en un prefijo de bucket de S3 denominado. decompression-failed Firehose seguirá procesando otros registros después de una 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 la partición dinámica y la conversión de formatos de datos, el registro se entrega en formato comprimido al depósito de S3 de error que especificó durante la creación de la transmisión de Firehose. Junto con el registro, el objeto entregado también incluye el código y el mensaje de error.

¿Cómo se le informa en caso de error o 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. Si lo desea, también puede crear alarmas en función de las 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:

Put to Firehose failed for AccountId: <accountID>, FirehoseName: <firehosename> because the request is not originating from allowed source types.

¿Qué métricas emite Firehose para la función de descompresión?

Firehose emite métricas para la descompresión de todos los registros. Debe seleccionar el período (1 minuto), la estadística (suma) y el intervalo de fechas para obtener el número de errores, éxitosDecompressedRecords, errores o DecompressedBytes éxitos. Para obtener más información, consulte CloudWatch Registra las métricas de descompresión.