

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 datos a un flujo de Firehose
<a name="basic-write"></a>

En esta sección, se describe cómo puede usar diferentes orígenes de datos para enviar datos al flujo de Firehose. Si es la primera vez que utiliza Amazon Data Firehose, le recomendamos familiarizarse antes con los conceptos y los términos que encontrará en [¿Qué es Amazon Data Firehose?](what-is-this-service.md).

**nota**  
Algunos AWS servicios solo pueden enviar mensajes y eventos a una transmisión de Firehose que se encuentre en la misma región. Si tu transmisión de Firehose no aparece como opción al configurar un destino para Amazon CloudWatch Logs, CloudWatch Events o AWS IoT, verifica que tu transmisión de Firehose esté en la misma región que tus otros servicios. Para obtener información sobre los puntos de conexión de servicio de cada región, consulte los [puntos de conexión de Amazon Data Firehose](https://docs.aws.amazon.com/general/latest/gr/fh.html#fh_region).

Puede enviar datos al flujo de Firehose desde los siguientes orígenes de datos.

**Topics**
+ [

# Configurar el agente de Kinesis para enviar datos
](writing-with-agents.md)
+ [

# Enviar datos con el AWS SDK
](writing-with-sdk.md)
+ [

# Enviar CloudWatch registros a Firehose
](writing-with-cloudwatch-logs.md)
+ [

# Enviar CloudWatch eventos a Firehose
](writing-with-cloudwatch-events.md)
+ [

# Configurar AWS IoT para enviar datos a Firehose
](writing-with-iot.md)

# Configurar el agente de Kinesis para enviar datos
<a name="writing-with-agents"></a>

El agente de Amazon Kinesis es una aplicación de software de Java independiente que sirve de implementación de referencia para mostrar cómo se pueden recopilar y enviar datos a Firehose. El agente monitoriza constantemente un conjunto de archivos y envía nuevos datos a su flujo de Firehose. El agente le muestra cómo encargarse de la rotación de archivos, cómo crear puntos de control y cómo realizar reintentos cuando se producen errores. También le muestra cómo entregar todos los datos de manera confiable, puntual y sencilla. También muestra cómo puede emitir CloudWatch métricas para monitorear y solucionar mejor los problemas del proceso de transmisión. Para obtener más información, [amazon-kinesis-agentawslabs/](https://github.com/awslabs/amazon-kinesis-agent).

De forma predeterminada, los registros de cada archivo se analizan en función del carácter de nueva línea (`'\n'`). Sin embargo, el agente también se puede configurar para analizar registros multilínea (consulte [Especificar las opciones de configuración del agente](agent-config-settings.md)). 

Puede instalar el agente en entornos de servidor basados en Linux, como servidores web, de registro o de base de datos. Después de instalar el agente, configúrelo especificando los archivos que desee monitorizar y el flujo de Firehose de los datos. Una vez configurado, el agente recopila datos de los archivos de forma duradera y los envía de forma confiable al flujo de Firehose.

## Requisitos previos
<a name="prereqs"></a>

Antes de usar el agente de Kinesis, asegúrese de cumplir los siguientes requisitos previos.
+ Su sistema operativo debe ser Amazon Linux o Red Hat Enterprise Linux, versión 7 o posterior. 
+ La versión 2.0.0 o posterior del agente se ejecuta con la versión 1.8 o posterior de JRE. La versión 1.1.x del agente se ejecuta con la versión 1.7 o posterior de JRE. 
+ Si utiliza Amazon EC2 para ejecutar el agente, lance la instancia de EC2.
+ El rol o AWS las credenciales de IAM que especifique deben tener permiso para realizar la operación Amazon Data [PutRecordBatch](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html)Firehose para que el agente envíe datos a su transmisión de Firehose. Si habilita la CloudWatch supervisión del agente, también necesitará permiso para realizar la CloudWatch [PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)operación. Para obtener más información [Control del acceso con Amazon Data Firehose](controlling-access.md)[Supervisión del estado del agente de Kinesis](agent-health.md), consulte y [Autenticación y control de acceso para Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html).

# Administra AWS las credenciales
<a name="agent-credentials"></a>

Administre sus AWS credenciales mediante uno de los siguientes métodos:
+ Cree un proveedor de credenciales personalizado. Para obtener más información, consulte [Crear proveedores de credenciales personalizados](custom-cred-provider.md).
+ Especifique un rol de IAM al lanzar la instancia EC2.
+ Especifique AWS las credenciales al configurar el agente (consulte las entradas correspondientes `awsAccessKeyId` y `awsSecretAccessKey` en la tabla de configuración que aparece a continuación[Especificar las opciones de configuración del agente](agent-config-settings.md)).
+ `/etc/sysconfig/aws-kinesis-agent`Edítelo para especificar su AWS región y sus claves de AWS acceso.
+ Si su instancia EC2 está en una AWS cuenta diferente, cree un rol de IAM para proporcionar acceso al servicio Amazon Data Firehose. [Especifique esa función al configurar el agente (consulte [assumeRoleExternalAssumeroLearn and Id](agent-config-settings.md#assumeRoleARN)).](agent-config-settings.md#assumeRoleExternalId) Utilice uno de los métodos anteriores para especificar las AWS credenciales de un usuario de la otra cuenta que tenga permiso para asumir este rol.

# Crear proveedores de credenciales personalizados
<a name="custom-cred-provider"></a>

Puede crear un proveedor de credenciales personalizado e indicar su nombre de clase y ruta de archivo jar al agente de Kinesis en las siguientes opciones de configuración: `userDefinedCredentialsProvider.classname` y `userDefinedCredentialsProvider.location`. Para obtener las descripciones de estas dos opciones de configuración, consulte [Especificar las opciones de configuración del agente](agent-config-settings.md).

Para crear un proveedor de credenciales personalizado, defina una clase que implemente la interfaz `AWS CredentialsProvider`, como la del ejemplo siguiente.

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;

public class YourClassName implements AWSCredentialsProvider {
    public YourClassName() {
    }

    public AWSCredentials getCredentials() {
        return new BasicAWSCredentials("key1", "key2");
    }

    public void refresh() {
    }
}
```

Su clase debe tener un constructor sin argumentos.

AWS invoca el método de actualización periódicamente para obtener las credenciales actualizadas. Si desea que el proveedor de credenciales proporcione credenciales diferentes a lo largo de su vida útil, incluya el código para actualizar las credenciales en este método. También puede dejar este método vacío si desea un proveedor de credenciales que ofrezca credenciales estáticas (no cambiantes). 

# Descargar e instalar el agente
<a name="download-install"></a>

Primero, conéctese a la instancia. Para obtener más información, consulte [Conexión a una instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html) en la *Guía del usuario de Amazon EC2*. Si tiene problemas para conectarse, consulte [Solución de problemas con la conexión a la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) en la *Guía del usuario de Amazon EC2*.

A continuación, instale el agente siguiendo uno de los siguientes métodos.
+ **Configuración del agente desde los repositorios de Amazon Linux**

  Este método solo funciona para instancias de Amazon Linux. Utilice el siguiente comando :

  ```
  sudo yum install –y aws-kinesis-agent
  ```

  Agent v 2.0.0 o posterior se instala en ordenadores con el sistema operativo Amazon Linux 2 (AL2). Esta versión del agente requiere la versión 1.8 o posterior de Java. Si la versión de Java requerida aún no está presente, el proceso de instalación del agente la instala. Para obtener más información sobre Amazon Linux 2, consulte [https://aws.amazon.com/amazon-linux-2/](https://aws.amazon.com/amazon-linux-2/).
+ **Configuración del agente desde el repositorio de Amazon S3**

  Este método funciona para Red Hat Enterprise Linux, así como para las instancias de Amazon Linux 2, ya que instala el agente desde el repositorio disponible públicamente. Utilice el siguiente comando para descargar e instalar la versión más reciente de la versión 2.x.x del agente: 

  ```
  sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
  ```

  Para instalar una versión concreta del agente, especifique el número de versión en el comando. Por ejemplo, el siguiente comando instala la versión 2.0.1 del agente. 

  ```
  sudo yum install –y https://streaming-data-agent.s3.amazonaws.com/aws-kinesis-agent-2.0.1-1.amzn1.noarch.rpm
  ```

  Si tiene Java 1.7 y no quiere actualizar la versión, puede descargar la versión 1.x.x del agente, que es compatible con Java 1.7. Por ejemplo, para descargar la versión 1.1.6 del agente, puede utilizar el comando siguiente: 

  ```
  sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-1.1.6-1.amzn1.noarch.rpm
  ```

  Puede descargar el agente más reciente con el siguiente comando

  ```
  sudo yum install -y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
  ```
+ **Para configurar el agente desde el GitHub repositorio**

  1. En primer lugar, asegúrese de que tiene instalada la versión de Java requerida, en función de la versión del agente.

  1.  Descargue el agente del repositorio de [awslabs/ amazon-kinesis-agent](https://github.com/awslabs/amazon-kinesis-agent) GitHub .

  1. Instale el agente. Para ello, diríjase al directorio de descargas y ejecute el siguiente comando:

     ```
     sudo ./setup --install
     ```
+ 

**Configuración del agente en un contenedor de Docker**  
El agente de Kinesis también puede ejecutarse en un contenedor además de a través de la base de contenedores [amazonlinux](https://docs.aws.amazon.com/AmazonECR/latest/userguide/amazon_linux_container_image.html). Utilice el siguiente Dockerfile y ejecute `docker build`.

  ```
  FROM amazonlinux
  
  RUN yum install -y aws-kinesis-agent which findutils
  COPY agent.json /etc/aws-kinesis/agent.json
  
  CMD ["start-aws-kinesis-agent"]
  ```

# Configurar e iniciar el agente
<a name="config-start"></a>

**Configuración e inicio del agente**

1. Abra y edite el archivo de configuración (como superusuario si utiliza permisos de acceso de archivo predeterminado): `/etc/aws-kinesis/agent.json` 

   En este archivo de configuración, especifique los archivos ( `"filePattern"` ) desde los que el agente deberá recopilar datos y el nombre del flujo de Firehose (`"deliveryStream"`) al que deberá enviarlos. El nombre de archivo es un patrón y el agente reconoce las rotaciones de archivos. No puede rotar más de un archivo ni crear más de uno nuevo por segundo. El agente utiliza la marca temporal de la creación de archivos para determinar los archivos de los que se debe hacer un seguimiento y que se deben poner en cola en el flujo de Firehose. Crear nuevos archivos o rotar los archivos más de una vez por segundo impide al agente diferenciarlos correctamente.

   ```
   { 
      "flows": [
           { 
               "filePattern": "/tmp/app.log*", 
               "deliveryStream": "yourdeliverystream"
           } 
      ] 
   }
   ```

   La región predeterminada es. AWS `us-east-1` Si utiliza una región diferente, añada el ajuste `firehose.endpoint` al archivo de configuración y especifique el punto de enlace de la región. Para obtener más información, consulte [Especificar las opciones de configuración del agente](agent-config-settings.md).

1. Comience el agente de forma manual:

   ```
   sudo service aws-kinesis-agent start
   ```

1. Configure el agente para iniciarse al arrancar el sistema (opcional):

   ```
   sudo chkconfig aws-kinesis-agent on
   ```

El agente ya está se ejecutando como un servicio de sistema en segundo plano. Monitoriza constantemente los archivos especificados y envía datos al flujo de Firehose especificado. La auditoría de actividad se registra en `/var/log/aws-kinesis-agent/aws-kinesis-agent.log`. 

# Especificar las opciones de configuración del agente
<a name="agent-config-settings"></a>

El agente admite dos opciones de configuración obligatorias, `filePattern` y `deliveryStream`, además de configuraciones opcionales para activar características adicionales. Las opciones de configuración obligatorias y opcionales se especifican en `/etc/aws-kinesis/agent.json`.

Cada vez que cambie el archivo de configuración, debe detener y comenzar el agente con los siguientes comandos:

```
sudo service aws-kinesis-agent stop
sudo service aws-kinesis-agent start
```

También puede hacerlo con el siguiente comando:

```
sudo service aws-kinesis-agent restart
```

Las opciones de configuración generales son las siguientes.


| Opción de configuración | Description (Descripción) | 
| --- | --- | 
| <a name="assumeRoleARN"></a>assumeRoleARN |  El Nombre de recurso de Amazon (ARN) de la función que debe asumir el usuario. Para obtener más información, consulte [Delegar el acceso a todas AWS las cuentas mediante funciones de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) en la Guía del *usuario de IAM*.  | 
| <a name="assumeRoleExternalId"></a>assumeRoleExternalId |  Un identificador opcional que determina quién puede asumir el rol. Para obtener más información, consulte [Cómo utilizar un ID externo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) en la *Guía del usuario de IAM*.  | 
| <a name="awsAccessKeyId"></a>awsAccessKeyId |  AWS ID de clave de acceso que anula las credenciales predeterminadas. Este ajuste tiene prioridad sobre los demás proveedores de credenciales.  | 
| <a name="awsSecretAccessKey"></a>awsSecretAccessKey |  AWS clave secreta que anula las credenciales predeterminadas. Este ajuste tiene prioridad sobre los demás proveedores de credenciales.  | 
| cloudwatch.emitMetrics |  Permite que el agente emita métricas CloudWatch si se ha establecido (true). Predeterminado: true  | 
| cloudwatch.endpoint |  El punto final regional de CloudWatch. Valor predeterminado: `monitoring.us-east-1.amazonaws.com`  | 
| firehose.endpoint |  Punto de conexión regional de Amazon Data Firehose. Valor predeterminado: `firehose.us-east-1.amazonaws.com`  | 
| sts.endpoint |  El punto final regional del servicio AWS de token de seguridad. Valor predeterminado: `https://sts.amazonaws.com`  | 
| userDefinedCredentialsProvider.classname | Si define un proveedor de credenciales personalizado, proporcione su nombre de clase completo mediante esta configuración. No incluya .class al final del nombre de la clase.  | 
| userDefinedCredentialsProvider.location | Si define un proveedor de credenciales personalizado, utilice esta configuración para especificar la ruta absoluta del archivo jar que contiene el proveedor de credenciales personalizado. El agente también busca el archivo jar en la siguiente ubicación: /usr/share/aws-kinesis-agent/lib/. | 

Las opciones de configuración de flujo son las siguientes.


| Opción de configuración | Description (Descripción) | 
| --- | --- | 
| aggregatedRecordSizeBytes |  Para generar los registros de agregación del agente y ponerlos en el flujo de Firehose en una operación, especifique esta opción. Establezca el tamaño que desea que tenga el registro agregado antes de que el agente lo añada al flujo de Firehose.  Valor predeterminado: 0 (sin agregación)  | 
| dataProcessingOptions |  La lista de opciones de procesamiento aplicadas a cada registro analizado antes de enviarlo al flujo de Firehose. Las opciones de procesamiento se realizan en el orden especificado. Para obtener más información, consulte [Preprocesar los datos con los agentes](pre-processing.md).  | 
| deliveryStream |  [Obligatorio] El nombre del flujo de Firehose.  | 
| filePattern |  [Obligatorio] Un glob para los archivos que deben ser monitorizados por el agente. Cualquier archivo que coincida con este patrón es seleccionado y monitorizado automáticamente por el agente. En todos los archivos que coincidan con este patrón, conceda permisos de lectura a `aws-kinesis-agent-user`. En el directorio que contiene los archivos, conceda permisos de lectura y ejecución a `aws-kinesis-agent-user`.  El agente recoge cualquier archivo que coincida con este patrón. Para asegurarse de que el agente no recoge registros no deseados, seleccione este patrón con precaución.   | 
| initialPosition |  La posición inicial desde la que el archivo comenzó a ser analizado. Los valores válidos son `START_OF_FILE` y `END_OF_FILE`. Valor predeterminado: `END_OF_FILE`  | 
| maxBufferAgeMillis |  El tiempo máximo, en milisegundos, durante el cual el agente almacena los datos en búfer antes de enviarlos al flujo de Firehose. Rango de valores: 1000 - 900 000 (de 1 segundo a 15 minutos) Valor predeterminado: 60 000 (1 minuto)  | 
| maxBufferSizeBytes |  El tamaño máximo, en bytes, que el agente almacena en búfer antes de enviarlos al flujo de Firehose. Rango de valores: 1 - 4 194 304 (4 MB) Valor predeterminado: 4 194 304 (4 MB)  | 
| maxBufferSizeRecords |  La cantidad máxima de registros en datos que el agente almacena en búfer antes de enviarlos al flujo de Firehose. Rango de valores: 1 - 500 Predeterminado: 500  | 
| minTimeBetweenFilePollsMillis |  El intervalo de tiempo, en milisegundos, en el que el agente sondea y analiza los archivos monitorizados para identificar datos nuevos. Intervalo de valores: 1 o más Predeterminado: 100  | 
| multiLineStartPattern |  El patrón para identificar el comienzo de un registro. Un registro consta de una línea que coincide con el patrón y de líneas siguientes que no coinciden con el patrón. Los valores válidos son expresiones regulares. De forma predeterminada, cada línea en los archivos de registro se analiza como un registro.  | 
| skipHeaderLines |  La cantidad de líneas de los archivos monitorizados, a partir de la primera, que el agente debe omitir en el momento de analizarlos. Intervalo de valores: 0 o más Cantidad predeterminada: 0 (cero)  | 
| truncatedRecordTerminator |  Cadena que utiliza el agente para truncar un registro analizado cuando su tamaño supera el límite de tamaño de registros de Amazon Data Firehose. (1000 KB) Valor predeterminado: `'\n'` (línea nueva)  | 

# Configurar múltiples flujos y directorios de archivos
<a name="sim-writes"></a>

Puede configurar el agente para que monitorice varios directorios de archivos y envíe datos a varias secuencias especificando varias opciones de configuración de secuencia. En el siguiente ejemplo de configuración, el agente supervisa dos directorios de archivos y envía datos a un flujo de datos de Kinesis y a un flujo de Firehose, respectivamente. Puede especificar diferentes puntos de conexión para flujos de datos de Kinesis y Amazon Data Firehose para que el flujo de datos y el flujo de Firehose no tengan que estar en la misma región.

```
{
    "cloudwatch.emitMetrics": true,
    "kinesis.endpoint": "https://your/kinesis/endpoint", 
    "firehose.endpoint": "https://your/firehose/endpoint", 
    "flows": [
        {
            "filePattern": "/tmp/app1.log*", 
            "kinesisStream": "yourkinesisstream"
        }, 
        {
            "filePattern": "/tmp/app2.log*",
            "deliveryStream": "yourfirehosedeliverystream" 
        }
    ] 
}
```

Para obtener más información detallada sobre el uso del agente con Amazon Kinesis Data Streams, consulte [Writing to Amazon Kinesis Data Streams with Kinesis Agent](https://docs.aws.amazon.com/kinesis/latest/dev/writing-with-agents.html).

# Preprocesar los datos con los agentes
<a name="pre-processing"></a>

El agente puede preprocesar los registros analizados de los archivos monitorizados antes de enviarlos al flujo de Firehose. Para habilitar esta característica, añada la opción de configuración `dataProcessingOptions` al flujo de archivos. Puede añadir una o más opciones de procesamiento que se ejecutarán en el orden especificado.

El agente es compatible con las siguientes opciones de procesamiento. Dado que el agente es de código abierto, el usuario puede desarrollar y ampliar sus opciones de procesamiento. Puede descargar el agente desde [Kinesis Agent](https://github.com/awslabs/amazon-kinesis-agent).Opciones de procesamiento

`SINGLELINE`  
Elimina los caracteres de nueva línea y los espacios situados al principio y al final de las líneas para convertir un registro multilínea en un registro de una sola línea.  

```
{
    "optionName": "SINGLELINE"
}
```

`CSVTOJSON`  
Convierte un registro con un formato separado mediante delimitadores al formato JSON.  

```
{
    "optionName": "CSVTOJSON",
    "customFieldNames": [ "field1", "field2", ... ],
    "delimiter": "yourdelimiter"
}
```  
`customFieldNames`  
[Obligatorio] Los nombres de campos utilizados como claves en cada par de valores de clave JSON. Por ejemplo, si especifica `["f1", "f2"]`, el registro "v1, v2" se convierte en `{"f1":"v1","f2":"v2"}`.  
`delimiter`  
La cadena utilizada como delimitador en el registro. El valor predeterminado es una coma (,).

`LOGTOJSON`  
Convierte un registro con un formato de registro en un registro con formato JSON. Los formatos de registro admitidos son **Apache Common Log**, **Apache Combined Log**, **Apache Error Log** y **RFC3164 Syslog**.  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "logformat",
    "matchPattern": "yourregexpattern",
    "customFieldNames": [ "field1", "field2", … ]
}
```  
`logFormat`  
[Obligatorio] El formato de entrada del registro. Los valores posibles son los siguientes:  
+ `COMMONAPACHELOG`: formato común de registro de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}`".
+ `COMBINEDAPACHELOG`: formato combinado de registro de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}`".
+ `APACHEERRORLOG`: formato de registro de errores de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "`[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}`".
+ `SYSLOG`— El formato RFC3164 Syslog. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "`%{timestamp} %{hostname} %{program}[%{processid}]: %{message}`".  
`matchPattern`  
Sobrescribe el patrón predeterminado del formato de log especificado. Utilice esta configuración para extraer valores de entradas de log si utilizan un formato personalizado. Si especifica `matchPattern`, también debe especificar `customFieldNames`.  
`customFieldNames`  
Los nombres de campos utilizados como claves en cada par de valores de clave JSON. Utilice esta opción para definir nombres de campos para valores extraídos de `matchPattern`, o sobrescriba los nombres de campos de los formatos de logs predefinidos.

**Example : Configuración LOGTOJSON**  <a name="example-logtojson"></a>
Este es un ejemplo de configuración `LOGTOJSON` de una entrada de registro en Formato común de registro de Apache convertida a formato JSON:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG"
}
```
Antes de la conversión:  

```
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
```
Después de la conversión:  

```
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
```

**Example : Configuración LOGTOJSON con campos personalizados**  <a name="example-logtojson-custom-fields"></a>
Este es otro ejemplo de configuración `LOGTOJSON`:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"]
}
```
Con esta configuración, la misma entrada de registro con Formato común de registro de Apache del ejemplo anterior se convierte a formato JSON de la siguiente manera:  

```
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
```

**Example : Convertir una entrada de registro con Formato común de registro de Apache**  <a name="example-apache-common-log-entry"></a>
La siguiente configuración de secuencia convierte la entrada de registro común de Apache en un registro de una línea con formato JSON:  

```
{ 
    "flows": [
        {
            "filePattern": "/tmp/app.log*", 
            "deliveryStream": "my-delivery-stream",
            "dataProcessingOptions": [
                {
                    "optionName": "LOGTOJSON",
                    "logFormat": "COMMONAPACHELOG"
                }
            ]
        }
    ] 
}
```

**Example : Convertir registros multilínea**  <a name="example-convert-multi-line"></a>
La siguiente configuración de flujo analiza aquellos registros multilínea cuya primera línea comience por "`[SEQUENCE=`". Primero, cada registro se convierte en un registro de una línea. Después, se extraen los valores del registro basándose en tabulaciones delimitadoras. Finalmente, los valores extraídos se asignan a valores `customFieldNames` específicos para formar un registro de una línea en formato JSON.  

```
{ 
    "flows": [
        {
            "filePattern": "/tmp/app.log*", 
            "deliveryStream": "my-delivery-stream",
            "multiLineStartPattern": "\\[SEQUENCE=",
            "dataProcessingOptions": [
                {
                    "optionName": "SINGLELINE"
                },
                {
                    "optionName": "CSVTOJSON",
                    "customFieldNames": [ "field1", "field2", "field3" ],
                    "delimiter": "\\t"
                }
            ]
        }
    ] 
}
```

**Example : Configuración LOGTOJSON con patrón de coincidencia**  <a name="example-logtojson-match-pattern"></a>
Este es un ejemplo de una configuración de entrada de registro con Formato común de registro de Apache `LOGTOJSON` convertida a formato JSON con el último campo (bytes) omitido:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})",
    "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"]
}
```
Antes de la conversión:  

```
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
```
Después de la conversión:  

```
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}
```

# Utilizar comandos CLI de agente comunes
<a name="cli-commands"></a>

La siguiente tabla proporciona un conjunto de casos de uso comunes y los comandos correspondientes para trabajar con el agente de AWS Kinesis. 


| Caso de uso | Comando | 
| --- | --- | 
|  Iniciar automáticamente al agente al arrancar el sistema  |  <pre>sudo chkconfig aws-kinesis-agent on</pre>  | 
|  Comprobar el estado del agente  |  <pre>sudo service aws-kinesis-agent status</pre>  | 
|  Detener el agente  |  <pre>sudo service aws-kinesis-agent stop</pre>  | 
|  Leer el archivo de registro del agente desde esta ubicación  |  <pre>/var/log/aws-kinesis-agent/aws-kinesis-agent.log</pre>  | 
|  Desinstalar el agente  |  <pre>sudo yum remove aws-kinesis-agent</pre>  | 

# Solucionar problemas al enviar desde el agente de Kinesis
<a name="agent-faq"></a>

En esta tabla, se proporciona información y soluciones para los problemas más comunes que se presentan al utilizar el agente de Amazon Kinesis. 


| Problema | Solución | 
| --- | --- | 
| ¿Por qué el agente de Kinesis no funciona en Windows? |  El [agente de Kinesis para Windows](https://docs.aws.amazon.com/kinesis-agent-windows/latest/userguide/what-is-kinesis-agent-windows.html) es un software diferente del agente de Kinesis para plataformas Linux.  | 
| ¿Por qué se ralentiza el agente de Kinesis o aumenta el valor de RecordSendErrors? |  Normalmente esto se debe a la limitación de Kinesis. Compruebe la métrica `WriteProvisionedThroughputExceeded` para flujos de datos de Kinesis o la métrica `ThrottledRecords` para flujos de Firehose. Cualquier aumento desde 0 en estas métricas indica que es necesario aumentar los límites de flujos. Para obtener más información, consulte [Límites de flujos de datos de Kinesis](https://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html) y [flujos de Firehose](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). Una vez que descarte la limitación, compruebe si el agente de Kinesis está configurado para seguir una gran cantidad de archivos pequeños. Se produce un retraso cuando el agente de Kinesis sigue un archivo nuevo, por lo que el agente de Kinesis debería seguir una pequeña cantidad de archivos de mayor tamaño. Intente consolidar los archivos de registro en archivos más grandes.  | 
| ¿Cómo resolver las excepciones java.lang.OutOfMemoryError? | Esto sucede cuando el agente de Kinesis no tiene memoria suficiente para gestionar la carga de trabajo actual. Intente aumentar JAVA\$1START\$1HEAP y JAVA\$1MAX\$1HEAP en /usr/bin/start-aws-kinesis-agent y reinicie el agente. | 
| ¿Cómo resolver las excepciones IllegalStateException : connection pool shut down? | El agente de Kinesis no tiene suficientes conexiones para gestionar la carga de trabajo actual. Intente aumentar maxConnections y maxSendingThreads en los ajustes generales de configuración del agente en /etc/aws-kinesis/agent.json. El valor predeterminado para estos campos es 12 veces los procesadores de tiempo de ejecución disponibles. Consulte [AgentConfiguration.java](https://github.com/awslabs/amazon-kinesis-agent/blob/master/src/com/amazon/kinesis/streaming/agent/config/AgentConfiguration.java) para obtener más información sobre los ajustes de configuración avanzada del agente.  | 
| ¿Cómo puedo depurar otro problema con el agente de Kinesis? | Los registros de nivel DEBUG pueden habilitarse en /etc/aws-kinesis/log4j.xml. | 
| ¿Cómo debo configurar el agente de Kinesis? | Cuanto menor sea el valor de maxBufferSizeBytes, más frecuentemente enviará datos el agente de Kinesis. Esto puede ser bueno ya que disminuye el tiempo de entrega de los registros, pero también aumenta las solicitudes por segundo a Kinesis.  | 
| ¿Por qué el agente de Kinesis envía registros duplicados? | Esto ocurre debido a una mala configuración en el seguimiento de archivos. Asegúrese de que cada fileFlow’s filePattern solo coincida con un archivo. Esto también puede ocurrir si el modo logrotate que se está utilizando está en modo copytruncate. Intente cambiar al modo predeterminado o al de creación para evitar la duplicación. Para obtener más información sobre la gestión de registros duplicados, consulte [Handling Duplicate Records](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html). | 

# Enviar datos con el AWS SDK
<a name="writing-with-sdk"></a>

Puede utilizar la [API de Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/APIReference/) para enviar datos a un flujo de Firehose con [AWS SDK para Java](https://aws.amazon.com/sdk-for-java/), [.NET](https://aws.amazon.com/sdk-for-net/), [Node.js](https://aws.amazon.com/sdk-for-javascript/), [Python](https://aws.amazon.com/sdk-for-python/) o [Ruby](https://aws.amazon.com/sdk-for-ruby/). Si es la primera vez que utiliza Amazon Data Firehose, le recomendamos familiarizarse antes con los conceptos y los términos que encontrará en [¿Qué es Amazon Data Firehose?](what-is-this-service.md). Para obtener más información, consulte [Comience a crear con Amazon Web Services](https://aws.amazon.com/developers/getting-started/).

Estos ejemplos no representan códigos listos para producción, ya que no comprueban todas las excepciones posibles ni toman en cuenta todas las consideraciones de seguridad y desempeño posibles. 

La API Amazon Data Firehose ofrece dos operaciones para enviar datos a su transmisión Firehose: y. [PutRecord[PutRecordBatch](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html)](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecord.html) `PutRecord()`envía un registro de datos en una llamada y `PutRecordBatch()` puede enviar varios registros de datos en una sola llamada. 

## Operaciones de escritura única mediante PutRecord
<a name="putrecord"></a>

Para incluir datos, solo se necesita el nombre del flujo de Firehose y un búfer de bytes (<= 1000 KB). Como Amazon Data Firehose agrupa en lotes varios registros antes de cargar el archivo en Amazon S3, es posible que desee agregar un separador de registros. Utilice el siguiente código para incluir los registros de datos de uno en uno en un flujo de Firehose:

```
PutRecordRequest putRecordRequest = new PutRecordRequest();
putRecordRequest.setDeliveryStreamName(deliveryStreamName);

String data = line + "\n";

Record record = new Record().withData(ByteBuffer.wrap(data.getBytes()));
putRecordRequest.setRecord(record);

// Put record into the DeliveryStream
firehoseClient.putRecord(putRecordRequest);
```

Para obtener más información sobre el contexto del código, consulta el código de muestra incluido en el AWS SDK. Para obtener información sobre la sintaxis de las solicitudes y respuestas, consulte el tema correspondiente en [Firehose API Operations](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Operations.html).

## Operaciones de escritura por lotes mediante PutRecordBatch
<a name="putrecordbatch"></a>

Para incluir datos, solo se necesita el nombre del flujo de Firehose y una lista de registros. Como Amazon Data Firehose agrupa en lotes varios registros antes de cargar el archivo en Amazon S3, es posible que desee agregar un separador de registros. Utilice el siguiente código para incluir los registros de datos por lotes en un flujo de Firehose:

```
PutRecordBatchRequest putRecordBatchRequest = new PutRecordBatchRequest();
putRecordBatchRequest.setDeliveryStreamName(deliveryStreamName);
putRecordBatchRequest.setRecords(recordList);

// Put Record Batch records. Max No.Of Records we can put in a
// single put record batch request is 500
firehoseClient.putRecordBatch(putRecordBatchRequest);

recordList.clear();
```

Para obtener más información sobre el contexto del código, consulta el código de muestra incluido en el AWS SDK. Para obtener información sobre la sintaxis de las solicitudes y respuestas, consulte el tema correspondiente en [Firehose API Operations](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Operations.html).

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

# Enviar CloudWatch eventos a Firehose
<a name="writing-with-cloudwatch-events"></a>

Puedes configurar Amazon CloudWatch para que envíe eventos a una transmisión de Firehose añadiendo un objetivo a una regla de CloudWatch eventos.

**Para crear un objetivo para una regla de CloudWatch eventos que envíe eventos a una transmisión de Firehose existente**

1. Inicia sesión en Consola de administración de AWS y abre la CloudWatch consola en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Seleccione **Creación de regla**.

1. En la página **Step 1: Create rule (Paso 1: crear regla)**, en **Targets (Destinos)**, elija **Add target (Añadir destino)** y, a continuación, elija **Firehose stream (Flujo de Firehose)**.

1. Elija un **flujo de Firehose** existente.

Para obtener más información sobre la creación de reglas de CloudWatch eventos, consulte [Introducción a Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_GettingStarted.html).

# Configurar AWS IoT para enviar datos a Firehose
<a name="writing-with-iot"></a>

Puedes configurar AWS IoT el envío de información a una transmisión de Firehose añadiendo una acción.

**Crear una acción que envíe eventos a un flujo de Firehose existente**

1. Al crear una regla en la AWS IoT consola, en la página **Crear una regla**, en **Definir una o más acciones**, selecciona **Añadir acción**.

1. Elija **Enviar mensajes a un flujo de Amazon Kinesis Firehose**.

1. Elija **Configurar acción**.

1. En **Stream name (Nombre del flujo)**, elija un flujo de Firehose existente. 

1. En **Separator**, seleccione un carácter de separación a insertar entre registros.

1. En **Nombre del rol de IAM**, elija un rol de IAM existente o elija **Crear un nuevo rol**.

1. Seleccione **Agregar acción**.

Para obtener más información sobre la creación de AWS IoT reglas, consulte [Tutoriales sobre reglas de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html).