

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Envio de dados a um fluxo do Firehose
<a name="basic-write"></a>

Esta seção descreve como é possível usar fontes de dados diferentes para enviar dados para seu fluxo do Firehose. Se você estiver começando a usar o Amazon Data Firehose, dedique algum tempo para se familiarizar com os conceitos e a terminologia apresentados em [O que é o Amazon Data Firehose?](what-is-this-service.md).

**nota**  
Alguns AWS serviços só podem enviar mensagens e eventos para um stream do Firehose que esteja na mesma região. Se seu stream do Firehose não aparecer como uma opção quando você estiver configurando um destino para Amazon CloudWatch Logs, CloudWatch Events AWS IoT, ou verifique se seu stream do Firehose está na mesma região que seus outros serviços. Para obter informações sobre endpoints de serviço para cada região, consulte [endpoints do Amazon Data Firehose](https://docs.aws.amazon.com/general/latest/gr/fh.html#fh_region).

É possível enviar dados para seu fluxo do Firehose a partir das fontes de dados a seguir.

**Topics**
+ [

# Configurar o agente do Kinesis para enviar dados
](writing-with-agents.md)
+ [

# Envie dados com o AWS SDK
](writing-with-sdk.md)
+ [

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

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

# Configure AWS IoT para enviar dados para o Firehose
](writing-with-iot.md)

# Configurar o agente do Kinesis para enviar dados
<a name="writing-with-agents"></a>

O agente do Amazon Kinesis é uma aplicação de software Java autônoma que serve como uma implementação de referência para mostrar como é possível coletar e enviar dados para o Firehose. O agente monitora continuamente um conjunto de arquivos e envia novos dados ao seu fluxo do Firehose. O agente mostra como é possível manipular a alternância de arquivos, os pontos de verificação e as novas tentativas após falhas. Ele mostra como é possível entregar seus dados de maneira confiável, imediata e simples. Também mostra como você pode emitir CloudWatch métricas para melhor monitorar e solucionar problemas no processo de streaming. Para saber mais, [awslabs/ amazon-kinesis-agent](https://github.com/awslabs/amazon-kinesis-agent).

Por padrão, os registros são analisados em cada arquivo com base no caractere de nova linha (`'\n'`). No entanto, o agente também pode ser configurado para analisar registros de várias linhas (consulte [Especificação das definições de configuração do agente](agent-config-settings.md)). 

É possível instalar o agente em ambientes de servidor baseados no Linux, como servidores web, servidores de log e servidores de banco de dados. Após instalar o agente, configure-o especificando os arquivos a serem monitorados e o fluxo do Firehose para os dados. Depois que o agente é configurado, ele coleta dados dos arquivos de forma durável e os envia confiavelmente ao fluxo do Firehose.

## Pré-requisitos
<a name="prereqs"></a>

Antes começar a usar o agente do Kinesis, certifique-se de atender aos pré-requisitos a seguir.
+ O sistema operacional deve ser o Amazon Linux, ou o Red Hat Enterprise Linux versão 7 ou posterior. 
+ O agente versão 2.0.0 ou posterior é executado usando o JRE versão 1.8 ou posterior. O agente versão1.1x é executado usando o JRE versão 1.7 ou posterior. 
+ Se você estiver usando o Amazon EC2; para executar o agente, inicie a instância do EC2.
+ A função ou AWS as credenciais do IAM que você especificar devem ter permissão para realizar a operação do Amazon Data [PutRecordBatch](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html)Firehose para que o agente envie dados para seu stream do Firehose. Se você ativar o CloudWatch monitoramento para o agente, a permissão para realizar a CloudWatch [PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)operação também será necessária. Para obter mais informações, consulte, [Controle de acesso com o Amazon Data Firehose](controlling-access.md)[Monitoramento da integridade do Kinesis Agent](agent-health.md), e [Autenticação e controle de acesso para a Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html).

# Gerenciar AWS credenciais
<a name="agent-credentials"></a>

Gerencie suas AWS credenciais usando um dos seguintes métodos:
+ Crie um provedor de credenciais personalizadas. Para obter detalhes, consulte [Criação de provedores de credenciais personalizadas](custom-cred-provider.md).
+ Especifique um perfil do IAM ao executar a instância do EC2.
+ Especifique AWS as credenciais ao configurar o agente (veja as entradas para `awsAccessKeyId` e `awsSecretAccessKey` na tabela de configuração abaixo[Especificação das definições de configuração do agente](agent-config-settings.md)).
+ Edite `/etc/sysconfig/aws-kinesis-agent` para especificar sua AWS região e chaves de AWS acesso.
+ Se sua instância do EC2 estiver em uma AWS conta diferente, crie uma função do IAM para fornecer acesso ao serviço Amazon Data Firehose. [Especifique essa função ao configurar o agente (consulte [AssumeroLearn](agent-config-settings.md#assumeRoleARN) e IdassumeRoleExternal).](agent-config-settings.md#assumeRoleExternalId) Use um dos métodos anteriores para especificar AWS as credenciais de um usuário na outra conta que tenha permissão para assumir essa função.

# Criação de provedores de credenciais personalizadas
<a name="custom-cred-provider"></a>

É possível criar um provedor de credenciais personalizadas e fornecer seu nome de classe e caminho jar ao Kinesis Agent nas seguintes configurações: `userDefinedCredentialsProvider.classname` e `userDefinedCredentialsProvider.location`. Para obter as descrições dessas duas configurações, consulte [Especificação das definições de configuração do agente](agent-config-settings.md).

Para criar um provedor de credenciais personalizadas, defina uma classe que implemente a interface `AWS CredentialsProvider`, como a do exemplo a seguir.

```
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() {
    }
}
```

Sua classe deve ter um construtor que não aceite argumentos.

AWS invoca o método de atualização periodicamente para obter credenciais atualizadas. Se você quiser que seu provedor de credenciais forneça credenciais diferentes ao longo da vida útil, inclua código para atualizar as credenciais neste método. Também é possível deixar esse método vazio se quiser um provedor de credenciais que venda credenciais estáticas (sem alteração). 

# Download e instalação do agente
<a name="download-install"></a>

Primeiro, conecte-se à instância. Para obter mais informações, consulte [Conectar-se à sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html) no *Guia do usuário do Amazon EC2*. Se tiver problemas para se conectar, consulte [Solução de problemas para conectar-se à sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) no *Guia do usuário do Amazon EC2*.

Em seguida, instale o agente usando um dos métodos a seguir.
+ **Para configurar o agente a partir dos repositórios do Amazon Linux**

  Esse método só funciona para instâncias do Amazon Linux. Use o seguinte comando:

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

  O Agent v 2.0.0 ou posterior está instalado em computadores com o sistema operacional Amazon Linux 2 (AL2). Essa versão do agente requer o Java versão 1.8 ou posterior. Se a versão Java requerida ainda não estiver presente, o processo de instalação do agente a instalará. Para obter mais informações sobre o Amazon Linux 2, consulte [https://aws.amazon.com/amazon-linux-2/](https://aws.amazon.com/amazon-linux-2/).
+ **Para configurar o agente a partir dos repositórios do Amazon S3**

  Esse método funciona para o Red Hat Enterprise Linux e para instâncias do Amazon Linux 2, pois instala o agente a partir do repositório disponível publicamente. Use o comando a seguir para baixar e instalar a versão mais recente do agente versão 2.x.x: 

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

  Para instalar uma versão específica do agente, especifique o número da versão no comando. Por exemplo, o comando a seguir instala o agente versão 2.0.1. 

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

  Se você tiver o Java 1.7 e não quiser atualizá-lo, poderá baixar o agente versão 1.x.x que é compatível com o Java 1.7. Por exemplo, para baixar o agente v1.1.6, é possível usar o comando a seguir: 

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

  É possível baixar o agente mais recente com o comando a seguir

  ```
  sudo yum install -y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
  ```
+ **Para configurar o agente a partir do GitHub repositório**

  1. Primeiro, certifique-se de que a versão do Java requerida esteja instalada, dependendo da versão do agente.

  1.  Faça o download do agente do [awslabs/ repo amazon-kinesis-agent](https://github.com/awslabs/amazon-kinesis-agent) GitHub .

  1. Instale o agente navegando até o diretório de download e executando o comando a seguir:

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

**Como configurar o agente em um contêiner do Docker**  
O Kinesis Agent também pode ser executado em um contêiner por meio da base de contêineres [amazonlinux](https://docs.aws.amazon.com/AmazonECR/latest/userguide/amazon_linux_container_image.html). Use o Dockerfile a seguir e depois execute o `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"]
  ```

# Configuração e inicialização do agente
<a name="config-start"></a>

**Como configurar e iniciar o agente**

1. Abra e edite o arquivo de configuração (como superusuário, se as permissões padrão de acesso a arquivos estiverem sendo usadas): `/etc/aws-kinesis/agent.json` 

   Nesse arquivo de configuração, especifique os arquivos ( `"filePattern"` ) nos quais o agente coleta dados e o nome do fluxo do Firehose ( `"deliveryStream"` ) ao qual o agente envia dados. O nome do arquivo é um padrão, e o agente reconhece os rodízios de arquivos. Só é possível fazer o rodízio de arquivos ou criar novos arquivos uma vez por segundo, no máximo. O agente usa o carimbo de data e hora de criação de arquivo para determinar quais arquivos serão rastreados e colocados no final do fluxo do Firehose. A criação de novos arquivos ou o rodízio de arquivos em uma frequência superior a uma vez por segundo não permite que o agente faça a distinção entre eles corretamente.

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

   A AWS região padrão é`us-east-1`. Se você estiver usando outra região, adicione a configuração `firehose.endpoint` ao arquivo de configuração, especificando o endpoint para a sua região. Para obter mais informações, consulte [Especificação das definições de configuração do agente](agent-config-settings.md).

1. Inicie o agente manualmente:

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

1. (Opcional) Configure o agente para ser iniciado durante o startup do sistema:

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

Agora o agente está sendo executado como um serviço do sistema em segundo plano. Ele monitora continuamente os arquivos especificados e envia dados ao fluxo do Firehose especificado. A atividade do agent é registrada em `/var/log/aws-kinesis-agent/aws-kinesis-agent.log`. 

# Especificação das definições de configuração do agente
<a name="agent-config-settings"></a>

O agente oferece suporte a duas configurações obrigatórias, `filePattern` e `deliveryStream`, além das configurações opcionais de recursos adicionais. É possível especificar configurações obrigatórios e opcionais em `/etc/aws-kinesis/agent.json`.

Sempre que o arquivo de configuração for alterado, o agente deverá ser interrompido e iniciado, usando os seguintes comandos:

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

Se desejar, é possível usar o comando a seguir:

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

Estas são as configurações gerais.


| Definição da configuração | Description | 
| --- | --- | 
| <a name="assumeRoleARN"></a>assumeRoleARN |  O nome de recurso da Amazon (ARN) do perfil a ser assumido pelo usuário. Para obter mais informações, consulte [Delegar acesso entre AWS contas usando funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) no *Guia do usuário do IAM*.  | 
| <a name="assumeRoleExternalId"></a>assumeRoleExternalId |  Um identificador opcional que determina quem pode assumir o perfil. Para obter mais informações, consulte [Como usar um ID externo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) no *Guia do usuário do IAM*.  | 
| <a name="awsAccessKeyId"></a>awsAccessKeyId |  AWS ID da chave de acesso que substitui as credenciais padrão. Essa configuração tem precedência sobre todos os outros provedores de credenciais.  | 
| <a name="awsSecretAccessKey"></a>awsSecretAccessKey |  AWS chave secreta que substitui as credenciais padrão. Essa configuração tem precedência sobre todos os outros provedores de credenciais.  | 
| cloudwatch.emitMetrics |  Permite que o agente emita métricas para, CloudWatch se definidas (verdadeiras). Padrão: verdadeiro  | 
| cloudwatch.endpoint |  O endpoint regional para CloudWatch. Padrão: `monitoring.us-east-1.amazonaws.com`  | 
| firehose.endpoint |  O endpoint regional para o Amazon Data Firehose. Padrão: `firehose.us-east-1.amazonaws.com`  | 
| sts.endpoint |  O endpoint regional do AWS Security Token Service. Padrão: `https://sts.amazonaws.com`  | 
| userDefinedCredentialsProvider.classname | Se você definir um provedor de credenciais personalizadas, forneça seu nome de classe totalmente qualificado usando essa configuração. Não inclua .class no final do nome da classe.  | 
| userDefinedCredentialsProvider.location | Se você definir um provedor de credenciais personalizadas, use essa configuração para especificar o caminho absoluto do jar que contém o provedor de credenciais personalizadas. O agente também procura o arquivo jar no seguinte local: /usr/share/aws-kinesis-agent/lib/. | 

Estas são as configurações de fluxo.


| Definição da configuração | Description | 
| --- | --- | 
| aggregatedRecordSizeBytes |  Para fazer com que o agente agregue registros e, depois, coloque-os no fluxo do Firehose de uma operação, especifique essa configuração. Defina o tamanho desejado do registro agregado antes que o agente o coloque no fluxo do Firehose.  Padrão: 0 (sem agregação)  | 
| dataProcessingOptions |  A lista das opções de processamento aplicadas a cada registro analisado antes que ele seja enviado ao fluxo do Firehose. As opções de processamento são executadas na ordem especificada. Para obter mais informações, consulte [Pré-processamento de dados com agentes](pre-processing.md).  | 
| deliveryStream |  [Obrigatório] O nome do fluxo do Firehose.  | 
| filePattern |  [Obrigatório] Um glob para os arquivos que precisam ser monitorados pelo agente. Qualquer arquivo que corresponda a esse padrão é selecionado pelo agente automaticamente e monitorado. Para todos os arquivos correspondentes a esse padrão, conceda permissão de leitura a `aws-kinesis-agent-user`. Para o diretório que contém os arquivos, conceda permissões de leitura e execução a `aws-kinesis-agent-user`.  O agente seleciona qualquer arquivo que corresponda a esse padrão. Para garantir que o agente não selecione registros não intencionais, escolha esse padrão cuidadosamente.   | 
| initialPosition |  A posição em que o arquivo começou a ser analisado. Os valores válidos são `START_OF_FILE` e `END_OF_FILE`. Padrão: `END_OF_FILE`  | 
| maxBufferAgeMillis |  O tempo máximo, em milissegundos, durante o qual o agente armazena os dados em buffer antes de enviá-los ao fluxo do Firehose. Intervalo de valores: 1.000 a 900.000 (1 segundo a 15 minutos) Padrão: 60.000 (1 minuto)  | 
| maxBufferSizeBytes |  O tamanho máximo, em bytes, durante o qual o agente armazena os dados em buffer antes de enviá-los ao fluxo do Firehose. Intervalo de valores: 1 a 4.194.304 (4 MB) Padrão: 4.194.304 (4 MB)  | 
| maxBufferSizeRecords |  O número máximo de registros para os quais o agente armazena os dados em buffer antes de enviá-los ao fluxo do Firehose. Intervalo de valores: 1 a 500 Padrão: 500  | 
| minTimeBetweenFilePollsMillis |  O intervalo de tempo, em milissegundos, em que o agente consulta e analisa os arquivos monitorados em busca de novos dados. Intervalo de valores: 1 ou mais Padrão: 100  | 
| multiLineStartPattern |  O padrão de identificação do início de um registro. Um registro é composto por uma linha que corresponde ao padrão e pelas linhas subsequentes que não correspondem ao padrão. Os valores válidos são expressões regulares. Por padrão, cada nova linha nos arquivos de log é analisada como um único registro.  | 
| skipHeaderLines |  O número de linhas em que o agente ignorará a análise no início dos arquivos monitorados. Intervalo de valores: 0 ou mais Padrão: 0 (zero)  | 
| truncatedRecordTerminator |  A string que o agente usa para truncar um registro analisado quando o tamanho do registro excede o limite de tamanho de registro do Amazon Data Firehose. (1,000 KB) Padrão: `'\n'` (nova linha)  | 

# Configuração de vários fluxos e diretórios de arquivos
<a name="sim-writes"></a>

Ao especificar vários fluxos de configurações, é possível configurar o agente para monitorar vários diretórios de arquivos e enviar dados a vários streams. No exemplo de configuração a seguir, o agente monitora dois diretórios de arquivos e envia dados para um fluxo de dados do Kinesis para um fluxo do Firehose respectivamente. É possível especificar endpoints diferentes para o Kinesis Data Streams e o Amazon Data Firehose, de modo que seu fluxo de dados e o fluxo do Firehose não precisem estar na mesma região.

```
{
    "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 obter informações mais detalhadas sobre o uso do agente com o 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).

# Pré-processamento de dados com agentes
<a name="pre-processing"></a>

O agente pode pré-processar os registros analisados a partir dos arquivos monitorados antes de enviá-los ao fluxo do Firehose. É possível habilitar esse recurso adicionando a configuração `dataProcessingOptions` ao fluxo de arquivos. Um ou mais opções de processamento podem ser adicionadas e serão executadas na ordem especificada.

O agente oferece suporte às seguintes opções de processamento. Como o agente é de código aberto, é possível desenvolver e estender ainda mais suas opções de processamento. É possível baixar o agente em [Kinesis Agent](https://github.com/awslabs/amazon-kinesis-agent).Opções de processamento

`SINGLELINE`  
Converte um registro de várias linhas em um registro de única linha removendo caracteres de nova linha, e espaços à esquerda e à direita.  

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

`CSVTOJSON`  
Converte um registro com formato separado por delimitador em um registro com formato JSON.  

```
{
    "optionName": "CSVTOJSON",
    "customFieldNames": [ "field1", "field2", ... ],
    "delimiter": "yourdelimiter"
}
```  
`customFieldNames`  
[Obrigatório] Os nomes de campo usados como chaves em cada par de valores de chave JSON. Por exemplo, se você especificar `["f1", "f2"]`, o registro "v1, v2" será convertido em `{"f1":"v1","f2":"v2"}`.  
`delimiter`  
A string usada como delimitador no registro. O padrão é uma vírgula (,).

`LOGTOJSON`  
Converte um registro com formato de log em um registro com formato JSON. Os formatos de log com suporte são **Apache Common Log**, **Apache Combined Log**, **Apache Error Log** e **RFC3164 Syslog**.  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "logformat",
    "matchPattern": "yourregexpattern",
    "customFieldNames": [ "field1", "field2", … ]
}
```  
`logFormat`  
[Obrigatório] O formato da entrada de log. Os valores possíveis são:  
+ `COMMONAPACHELOG`: o formato do Apache Common Log. Cada entrada de log tem o seguinte padrão: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}`".
+ `COMBINEDAPACHELOG`: o formato do Apache Combined Log. Cada entrada de log tem o seguinte padrão: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}`".
+ `APACHEERRORLOG`: o formato do Apache Error Log. Cada entrada de log tem o seguinte padrão: "`[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}`".
+ `SYSLOG`— O formato RFC3164 Syslog. Cada entrada de log tem o seguinte padrão: "`%{timestamp} %{hostname} %{program}[%{processid}]: %{message}`".  
`matchPattern`  
Substitui o padrão do formato de log especificado. Use esta configuração para extrair valores de entradas de log, caso elas tenham um formato personalizado. Se você especificar `matchPattern`, também deverá especificar `customFieldNames`.  
`customFieldNames`  
Os nomes de campo personalizados usados como chaves em cada par de valores de chave JSON. É possível usar essa configuração para definir nomes de campo para valores extraídos de `matchPattern` ou substituir os nomes de campo padrão de formatos de log predefinidos.

**Example : Configuração LOGTOJSON**  <a name="example-logtojson"></a>
Este é um exemplo de uma configuração `LOGTOJSON` para uma entrada Apache Common Log convertida em formato JSON:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG"
}
```
Antes da conversão:  

```
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
```
Depois da conversão:  

```
{"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 : Configuração LOGTOJSON com campos personalizados**  <a name="example-logtojson-custom-fields"></a>
Este é outro exemplo de configuração `LOGTOJSON`:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"]
}
```
Com essa configuração, a mesma entrada Apache Common Log do exemplo anterior é convertida em formato JSON, da seguinte forma:  

```
{"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 : Conversão da entrada Apache Common Log**  <a name="example-apache-common-log-entry"></a>
A configuração de fluxo a seguir converte uma entrada Apache Common Log em um registro de linha única no formato JSON:  

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

**Example : Conversão de registros de várias linhas**  <a name="example-convert-multi-line"></a>
A configuração de fluxo a seguir analisa registros de várias linha cuja primeira linha começa com "`[SEQUENCE=`". Cada registro é convertido primeiro em um registro de única linha. Em seguida, os valores são extraídos do registro com base em um delimitador por tabulações. Os valores extraídos são mapeados para os valores `customFieldNames` especificados, a fim de formar um registro de linha única no 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 : Configuração LOGTOJSON com padrão de correspondência**  <a name="example-logtojson-match-pattern"></a>
este é um exemplo de configuração `LOGTOJSON` referente a uma entrada Apache Common Log convertida em formato JSON, com o ú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 da conversão:  

```
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
```
Depois da conversão:  

```
{"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"}
```

# Uso de comandos comuns da CLI do agente
<a name="cli-commands"></a>

A tabela a seguir fornece um conjunto de casos de uso comuns e comandos correspondentes para trabalhar com o agente AWS Kinesis. 


| Caso de uso | Command | 
| --- | --- | 
|  Inicie automaticamente o agente durante a inicialização do sistema  |  <pre>sudo chkconfig aws-kinesis-agent on</pre>  | 
|  Verifique o status do agente  |  <pre>sudo service aws-kinesis-agent status</pre>  | 
|  Interrompa o agente  |  <pre>sudo service aws-kinesis-agent stop</pre>  | 
|  Leia o arquivo de log do agente a partir deste local  |  <pre>/var/log/aws-kinesis-agent/aws-kinesis-agent.log</pre>  | 
|  Desinstale o agente  |  <pre>sudo yum remove aws-kinesis-agent</pre>  | 

# Solução de problemas ao enviar do agente do Kinesis
<a name="agent-faq"></a>

Esta tabela fornece informações sobre solução de problemas e soluções para problemas comuns enfrentados ao usar o agente do Amazon Kinesis. 


| Problema | Solução | 
| --- | --- | 
| Por que o agente do Kinesis não funciona no Windows? |  O [Kinesis Agent para Windows](https://docs.aws.amazon.com/kinesis-agent-windows/latest/userguide/what-is-kinesis-agent-windows.html) é um software diferente das plataformas do Kinesis Agent para Linux.  | 
| Por que o Kinesis Agent está ficando mais lento e/ou aumentando os RecordSendErrors? |  Isso geralmente ocorre devido ao controle de utilização do Kinesis. Verifique a métrica `WriteProvisionedThroughputExceeded` do Kinesis Data Streams ou a métrica `ThrottledRecords` dos fluxos do Firehose. Qualquer aumento de 0 nessas métricas indica que os limites do fluxo precisam ser aumentados. Para obter mais informações, consulte [Limites do Kinesis Data Stream](https://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html) e [Fluxos do Firehose](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). Depois de descartar o controle de utilização como causa, verifique se o Kinesis Agent está configurado para seguir um número grande de arquivos pequenos. Há um atraso quando o Kinesis Agent exibe os dados do final de um arquivo novo, portanto, o Kinesis Agent deveria estar exibindo os dados do final de um pequeno número de arquivos maiores. Tente consolidar os arquivos de log em arquivos maiores.  | 
| Como resolver as exceções java.lang.OutOfMemoryError? | Isso ocorre quando o agente do Kinesis não tem memória suficiente para lidar com a workload atual. Tente aumentar JAVA\$1START\$1HEAP e JAVA\$1MAX\$1HEAP no /usr/bin/start-aws-kinesis-agent e reiniciar o agente. | 
| Como resolver as exceções IllegalStateException : connection pool shut down? | O Kinesis Agent não tem conexões suficientes para lidar com a workload atual. Tente aumentar maxConnections e maxSendingThreads nas configurações gerais do agente em /etc/aws-kinesis/agent.json. O valor padrão para esses campos é 12 vezes o número de processadores de runtime disponíveis. Consulte [AgentConfiguration.java](https://github.com/awslabs/amazon-kinesis-agent/blob/master/src/com/amazon/kinesis/streaming/agent/config/AgentConfiguration.java) para saber mais sobre as configurações avançadas do agente.  | 
| Como posso depurar outro problema com o Kinesis Agent? | Os logs do nível DEBUG podem ser habilitados em /etc/aws-kinesis/log4j.xml. | 
| Como devo configurar o Kinesis Agent? | Quanto menor o maxBufferSizeBytes, mais frequentemente o Kinesis Agent enviará dados. Isso pode ser bom, pois diminui o tempo de entrega dos registros, mas também aumenta as solicitações por segundo feitas ao Kinesis.  | 
| Por que o Kinesis Agent está enviando registros duplicados? | Isso ocorre devido a uma configuração incorreta da exibição dos dados do final dos arquivos. Certifique-se de que cada fileFlow’s filePattern corresponda a apenas um arquivo. Isso também pode ocorrer se o modo logrotate que está sendo usado estiver no modo copytruncate. Tente mudar o modo para o modo padrão ou criar para evitar duplicações. Para obter mais informações sobre como lidar com registros duplicados, consulte [Handling Duplicate Records](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html). | 

# Envie dados com o AWS SDK
<a name="writing-with-sdk"></a>

É possível usar a [API do Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/APIReference/) para enviar dados para um fluxo do Firehose usando o [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/) ou [Ruby](https://aws.amazon.com/sdk-for-ruby/). Se você estiver começando a usar o Amazon Data Firehose, dedique algum tempo para se familiarizar com os conceitos e a terminologia apresentados em [O que é o Amazon Data Firehose?](what-is-this-service.md). Para obter mais informações, consulte [Comece a desenvolver usando a Amazon Web Services](https://aws.amazon.com/developers/getting-started/).

Esses exemplos não representam um código pronto para produção, pois não verificam todas as exceções possíveis nem abrangem todas as considerações de segurança ou de performance possíveis. 

A API Amazon Data Firehose oferece duas operações para enviar dados para seu stream do Firehose: e. [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()`envia um registro de dados em uma chamada e `PutRecordBatch()` pode enviar vários registros de dados em uma chamada. 

## Operações de gravação única usando PutRecord
<a name="putrecord"></a>

A inserção de dados exige apenas o nome do fluxo do Firehose e um buffer de bytes (<=1000 KB). Como o Amazon Data Firehose coloca vários registros em lote antes de carregar o arquivo no Amazon S3, talvez você queira adicionar um separador de registro. Para inserir dados em um registro por vez em um fluxo do Firehose, use o código a seguir:

```
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 mais contexto de código, consulte o exemplo de código incluído no AWS SDK. Para obter informações sobre a sintaxe de solicitação e de resposta, consulte o tópico relevante em [Operações de API do Firehose](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Operations.html).

## Operações de gravação em lote usando PutRecordBatch
<a name="putrecordbatch"></a>

A inserção de dados só exige o nome do fluxo do Firehose e uma lista de registros. Como o Amazon Data Firehose coloca vários registros em lote antes de carregar o arquivo no Amazon S3, talvez você queira adicionar um separador de registro. Para inserir registros de dados em lotes em um fluxo do Firehose, use o código a seguir:

```
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 mais contexto de código, consulte o exemplo de código incluído no AWS SDK. Para obter informações sobre a sintaxe de solicitação e de resposta, consulte o tópico relevante em [Operações de API do Firehose](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Operations.html).

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

CloudWatch Os eventos de registros podem ser enviados para o Firehose usando filtros de CloudWatch assinatura. Para obter mais informações, consulte [Filtros de assinatura com o Amazon Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#FirehoseExample).

CloudWatch Os eventos de registros são enviados para o Firehose no formato gzip compactado. Se você quiser entregar eventos de log descompactados para destinos do Firehose, você pode usar o recurso de descompactação no Firehose para descompactar automaticamente os registros. CloudWatch 

**Importante**  
Atualmente, o Firehose não suporta a entrega de CloudWatch registros para o destino do Amazon OpenSearch Service porque a Amazon CloudWatch combina vários eventos de log em um registro Firehose e o Amazon OpenSearch Service não pode aceitar vários eventos de log em um registro. Como alternativa, você pode considerar [o uso do filtro de assinatura do Amazon OpenSearch Service em CloudWatch registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html).

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

[Se você estiver usando o Firehose para entregar CloudWatch registros e quiser entregar dados descompactados para o destino do stream do Firehose, use o Firehose [Data Format Conversion](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) (Parquet, ORC) ou o particionamento dinâmico.](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html) Você deve habilitar a descompactação para seu fluxo do Firehose.

Você pode ativar a descompressão usando o Console de gerenciamento da AWS, AWS Command Line Interface ou AWS SDKs.

**nota**  
Se você ativar o recurso de descompressão em um stream, use esse stream exclusivamente para filtros de assinaturas do CloudWatch Logs, e não para Vended Logs. Se você ativar o recurso de descompressão em um stream usado para ingerir CloudWatch registros e registros vendidos, a ingestão de registros vendidos no Firehose falhará. Esse recurso de descompressão é somente para CloudWatch registros.

# Extraia a mensagem após a descompressão dos registros CloudWatch
<a name="Message_extraction"></a>

Ao habilitar a descompactação, você também tem a opção de habilitar a extração de mensagens. Ao usar a extração de mensagens, o Firehose filtra todos os metadados, como proprietário, grupo de registros, fluxo de registros e outros, dos registros descompactados do CloudWatch Logs e entrega somente o conteúdo dentro dos campos da mensagem. Se você estiver entregando dados para um destino do Splunk, deverá ativar a extração de mensagens para que o Splunk analise os dados. A seguir há exemplos de saídas após a descompactação com e sem extração de mensagens.

Figura 1: exemplo de saída após a descompactação sem extração de mensagens:

```
{
 "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: exemplo de saída após a descompactação com extração de mensagens:

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

# Habilitação da descompactação em um novo fluxo do Firehose a partir do console
<a name="writing-with-cloudwatch-logs-decompression-enabling-console"></a>

**Para habilitar a descompressão em um novo stream do Firehose usando o Console de gerenciamento da AWS**

1. [Faça login no Console de gerenciamento da AWS e abra o console do Kinesis em https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. Escolha **Amazon Data Firehose** no painel de navegação.

1. Escolha **Criar fluxo do Firehose**.

1. Em **Escolher fonte e destino**  
****Origem****  
A fonte do seu fluxo do Firehose. Escolha uma das fontes a seguir:  
   + **Direct PUT**: escolha esta opção para criar um fluxo do Firehose no qual as aplicações de produção gravem diretamente. Para obter uma lista de serviços e agentes da AWS e dos serviços de código aberto integrados com o Direct PUT no Firehose, consulte [esta](create-name.md) seção.
   + **Fluxo do Kinesis**: escolha esta opção para configurar um fluxo do Firehose que use um fluxo de dados do Kinesis como fonte de dados. Você então poderá usar o Firehose para ler dados com facilidade de um fluxo de dados do Kinesis existente e carregá-lo nos destinos. Para obter mais informações, consulte [Gravação no Firehose usando o Kinesis Data Streams](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-kinesis-streams.html)  
****Destination** (Destino)**  
O destino do seu fluxo do Firehose. Escolha uma das seguintes opções:  
   + Amazon S3
   + Splunk

1. Em **Nome do fluxo do Firehose**, insira um nome para seu fluxo.

1. (Opcional) Em **Transformar registros**:
   + Na seção **Descompactar registros de origem do Amazon CloudWatch Logs**, escolha **Ativar descompressão**.
   + Se você quiser usar a extração de mensagens após a descompactação, escolha **Ativar extração de mensagens**.

# Ativar a descompactação em um fluxo do Firehose existente
<a name="enabling-decompression-existing-stream-console"></a>

Esta seção contém instruções para habilitar a descompactação dos fluxos atuais do Firehose. Ela abrange dois cenários: fluxos com processamento pelo Lambda desabilitado e fluxos com processamento pelo Lambda já habilitado. As seções a seguir descrevem step-by-step os procedimentos para cada caso, incluindo a criação ou modificação das funções do Lambda, a atualização das configurações do Firehose e as métricas de CloudWatch monitoramento para garantir a implementação bem-sucedida do recurso de descompressão integrado do Firehose.

## Habilitação da descompactação quando o processamento do Lambda está desabilitado
<a name="enabling-decomp-exist-stream-lam-disable"></a>

Para habilitar a descompactação em um fluxo atual do Firehose com processamento do Lambda desabilitado, é preciso, primeiramente, habilitar o processamento do Lambda. Essa condição só é válida para os fluxos atuais. As etapas a seguir mostram como habilitar a descompactação nos fluxos atuais que não têm o processamento do Lambda habilitado.

1. Crie uma função do Lambda. Você pode criar uma passagem de registro fictícia ou usar este [esquema](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor) para criar uma nova função do Lambda. 

1. Atualize o fluxo atual do Firehose para habilitar o processamento do Lambda e usar a função do Lambda que você criou para processamento.

1. Depois de atualizar o fluxo com a nova função do Lambda, volte ao console do Firehose e habilite a descompactação.

1. Desabilite o processamento do Lambda que você habilitou na etapa 1. Agora você pode excluir a função criada na etapa 1.

## Habilitação da descompactação quando o processamento do Lambda está habilitado
<a name="enabling-decomp-exist-stream-lam-enable"></a>

Se você já tiver um fluxo do Firehose com uma função do Lambda, você poderá substituí-la pelo atributo de descompactação do Firehose para realizar a descompactação. Antes de continuar, revise o código da função do Lambda para confirmar se ela só executa a descompactação ou a extração de mensagens. A saída da função do Lambda deve ser semelhante aos exemplos mostrados na [Fig. 1 ou na Fig. 2](Message_extraction.md). Se a saída for semelhante, será possível substituir a função do Lambda usando as etapas a seguir.

1. Substitua sua função do Lambda atual por este [esquema](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor). A nova função do Lambda do esquema detecta automaticamente se os dados recebidos estão compactados ou descompactados. Ela só executará a descompactação se os dados de entrada estiverem compactados.

1. Ative a descompactação usando a opção integrada do Firehose para descompactação.

1. Ative CloudWatch as métricas para seu stream do Firehose, caso ainda não esteja ativado. Monitore a métrica `CloudWatchProcessorLambda_IncomingCompressedData` e espere até que ela mude para zero. Isso confirma que todos os dados de entrada enviados para sua função do Lambda estão descompactados e que a função do Lambda não é mais necessária.

1. Remova a transformação de dados do Lambda, pois você não precisará mais dela para descompactar seu fluxo.

# Desabilitação da descompactação no fluxo do Firehose
<a name="writing-with-cloudwatch-logs-decompression-disabling-console"></a>

****

Para desativar a descompressão em um fluxo de dados usando o Console de gerenciamento da AWS

1. [Faça login no Console de gerenciamento da AWS e abra o console do Kinesis em https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. Escolha **Amazon Data Firehose** no painel de navegação.

1. Escolha o fluxo do Firehose que deseja editar.

1. Na página de **Detalhes do fluxo do Firehose**, escolha a guia **Configuração**.

1. Na seção **Transformar e converter registros**, escolha **Editar**.

1. **Em **Descompactar registros de origem do Amazon CloudWatch Logs**, desmarque **Ativar descompressão** e escolha Salvar alterações.**

# Solução de problemas de descompactação no Firehose
<a name="decomp-faq"></a>

A tabela a seguir mostra como o Firehose lida com erros durante a descompactação e o processamento de dados, incluindo a entrega de registros para um bucket de erros do S3, o registro em log de erros e a emissão de métricas. Ela também explica a mensagem de erro retornada em operações não autorizadas de colocação de dados.


| Problema | Solução | 
| --- | --- | 
| O que acontece com os dados da fonte em caso de erro durante a descompactação? |  Se o Amazon Data Firehose não conseguir descompactar o registro, o registro será entregue como está (em formato compactado) para o bucket de erros do S3 que você especificou durante a criação do fluxo do Firehose. Junto com o registro, o objeto entregue também inclui código de erro e mensagem de erro e esses objetos serão entregues a um prefixo de bucket do S3 chamado `decompression-failed`. O Firehose continuará processando outros registros após uma falha na descompactação de um registro.  | 
| O que acontece com os dados da fonte em caso de erro no pipeline de processamento após a descompactação com êxito? |  Se o Amazon Data Firehose cometer erros nas etapas de processamento após a descompactação, como o particionamento dinâmico e a conversão de formato de dados, o registro será entregue em formato compactado para o bucket de erros do S3 que você especificou durante a criação do fluxo do Firehose. Junto com o registro, o objeto entregue também inclui o código de erro e a mensagem de erro.  | 
| Como você é informado em caso de erro ou exceção? |  Em caso de erro ou exceção durante a descompactação, se você configurar o Logs, o Firehose CloudWatch registrará as mensagens CloudWatch de erro no Logs. Além disso, o Firehose envia métricas para CloudWatch métricas que você pode monitorar. Opcionalmente, você também pode criar alarmes baseado nas métricas emitidas pelo Firehose.  | 
| O que acontece quando put as operações não vêm do CloudWatch Logs? | Quando puts o cliente não vem do CloudWatch Logs, a seguinte mensagem de erro é retornada: <pre>Put to Firehose failed for AccountId: <accountID>, FirehoseName:  <firehosename> because the request is not originating from allowed source types.</pre> | 
| Quais métricas o Firehose emite para o atributo da descompactação? | O Firehose emite métricas para descompactação de todos os registros. Você deve selecionar o período (1 min), a estatística (soma), o intervalo de datas para obter o número de DecompressedRecords com falha ou êxito ou DecompressedBytes com falha ou êxito. Para obter mais informações, consulte [CloudWatch Métricas de descompressão de registros](monitoring-with-cloudwatch-metrics.md#decompression-metrics-cw). | 

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

Você pode configurar CloudWatch a Amazon para enviar eventos para um stream do Firehose adicionando um destino a uma regra de CloudWatch eventos.

**Para criar um destino para uma regra de CloudWatch eventos que envia eventos para um stream existente do Firehose**

1. Faça login no Console de gerenciamento da AWS e abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Escolha **Criar regra**.

1. Na página **Etapa 1: criar regra**, em **Destinos**, selecione **Adicionar destino**, e, em seguida, **Fluxo do Firehose**.

1. Escolha um **fluxo do Firehose** existente.

Para obter mais informações sobre a criação de regras de CloudWatch eventos, consulte [Getting Started with Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_GettingStarted.html).

# Configure AWS IoT para enviar dados para o Firehose
<a name="writing-with-iot"></a>

Você pode configurar AWS IoT para enviar informações para um stream do Firehose adicionando uma ação.

**Para criar uma ação que envie eventos para um fluxo do Firehose existente**

1. Ao criar uma regra no AWS IoT console, na página **Criar uma regra**, em **Definir uma ou mais ações**, escolha **Adicionar ação**.

1. Escolha **Enviar mensagens para um fluxo do Amazon Kinesis Firehose**.

1. Escolha **Configurar ação**.

1. Em **Nome do fluxo**, escolha um fluxo do Firehose existente. 

1. Em **Separator**, escolha um caractere separador a ser inserido entre os registros.

1. Em **Nome do perfil do IAM**, escolha um perfil do IAM ou escolha **Criar um novo perfil**.

1. Selecione **Adicionar ação**.

Para obter mais informações sobre a criação de AWS IoT regras, consulte Tutoriais de [regras de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html).