

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Inviare dati a uno stream Firehose
<a name="basic-write"></a>

Questa sezione descrive come utilizzare diverse fonti di dati per inviare dati allo stream Firehose. Se non conosci Amazon Data Firehose, prenditi del tempo per acquisire familiarità con i concetti e la terminologia presentati in. [Cos’è Amazon Data Firehose?](what-is-this-service.md)

**Nota**  
Alcuni AWS servizi possono inviare messaggi ed eventi solo a uno stream Firehose che si trova nella stessa regione. Se lo stream Firehose non viene visualizzato come opzione quando configuri un target per Amazon CloudWatch Logs, CloudWatch Events oppure AWS IoT, verifica che lo stream Firehose si trovi nella stessa regione degli altri servizi. Per informazioni sugli endpoint di servizio per ciascuna regione, consulta gli endpoint di [Amazon Data Firehose](https://docs.aws.amazon.com/general/latest/gr/fh.html#fh_region).

È possibile inviare dati al proprio stream Firehose dalle seguenti fonti di dati.

**Topics**
+ [

# Configurare l'agente Kinesis per l'invio di dati
](writing-with-agents.md)
+ [

# Inviare dati con AWS SDK
](writing-with-sdk.md)
+ [

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

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

# AWS IoT Configurare l'invio di dati a Firehose
](writing-with-iot.md)

# Configurare l'agente Kinesis per l'invio di dati
<a name="writing-with-agents"></a>

L'agente Amazon Kinesis è un'applicazione software Java autonoma che funge da implementazione di riferimento per mostrare come raccogliere e inviare dati a Firehose. L'agente monitora continuamente un set di file e invia nuovi dati allo stream Firehose. L'agente mostra come gestire la rotazione dei file, il checkpoint e riprovare in caso di errore. Mostra come è possibile fornire i dati in modo affidabile, tempestivo e semplice. Mostra anche come è possibile emettere CloudWatch metriche per monitorare e risolvere meglio il processo di streaming. [Per saperne di più, awslabs/. amazon-kinesis-agent](https://github.com/awslabs/amazon-kinesis-agent)

Come impostazione predefinita, i record vengono analizzati da ciascun file in base alla nuova riga di caratteri (`'\n'`). Tuttavia, l'agente può anche essere configurato per analizzare record a più righe (consulta [Specificare le impostazioni di configurazione dell'agente](agent-config-settings.md)). 

Puoi installare l'agente su ambienti server basati su Linux, come server Web, server di log e server di database. Dopo aver installato l'agente, configuralo specificando i file da monitorare e il flusso Firehose per i dati. Una volta configurato, l'agente raccoglie in modo duraturo i dati dai file e li invia in modo affidabile al flusso Firehose.

## Prerequisiti
<a name="prereqs"></a>

Prima di iniziare a utilizzare Kinesis Agent, assicurati di soddisfare i seguenti prerequisiti.
+ Il sistema operativo deve essere Amazon Linux o Red Hat Enterprise Linux versione 7 o successiva. 
+ La versione 2.0.0 o successiva dell'agente viene eseguita utilizzando la versione JRE 1.8 o successiva. La versione 1.1.x dell'agente viene eseguita utilizzando JRE 1.7 o una versione successiva. 
+ Se utilizzi Amazon EC2 per eseguire l'agente, avvia l'istanza EC2.
+ Il ruolo o AWS le credenziali IAM che specifichi devono essere autorizzati a eseguire l'operazione Amazon Data [PutRecordBatch](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html)Firehose affinché l'agente possa inviare dati al tuo flusso Firehose. Se abiliti il CloudWatch monitoraggio per l'agente, è necessaria anche l'autorizzazione a eseguire l' CloudWatch [PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)operazione. Per ulteriori informazioni [Controllo dell'accesso con Amazon Data Firehose](controlling-access.md)[Monitora lo stato di Kinesis Agent](agent-health.md), consulta [Autenticazione e controllo degli accessi per Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html).

# Gestisci le AWS credenziali
<a name="agent-credentials"></a>

Gestisci AWS le tue credenziali utilizzando uno dei seguenti metodi:
+ Crea un fornitore di credenziali personalizzate. Per informazioni dettagliate, vedi [Crea provider di credenziali personalizzati](custom-cred-provider.md).
+ Specifica un ruolo IAM quando avvii l'istanza EC2.
+ Specificate AWS le credenziali quando configurate l'agente (consultate le voci relative `awsAccessKeyId` e `awsSecretAccessKey` nella tabella di configurazione riportata sotto[Specificare le impostazioni di configurazione dell'agente](agent-config-settings.md)).
+ Modifica `/etc/sysconfig/aws-kinesis-agent` per specificare la AWS regione e le chiavi di AWS accesso.
+ Se la tua istanza EC2 si trova in un AWS account diverso, crea un ruolo IAM per fornire l'accesso al servizio Amazon Data Firehose. [Specificate quel ruolo quando configurate l'agente (vedete [AssumeroLearn](agent-config-settings.md#assumeRoleARN) e IdassumeRoleExternal).](agent-config-settings.md#assumeRoleExternalId) Utilizzate uno dei metodi precedenti per specificare le AWS credenziali di un utente nell'altro account che dispone del permesso di assumere questo ruolo.

# Crea provider di credenziali personalizzati
<a name="custom-cred-provider"></a>

Puoi creare un fornitore di credenziali personalizzate e assegnare il nome della classe e il percorso jar all'agente Kinesis nelle seguenti impostazioni di configurazione: `userDefinedCredentialsProvider.classname` e `userDefinedCredentialsProvider.location`. Per le descrizioni di queste due impostazioni di configurazione, consulta [Specificare le impostazioni di configurazione dell'agente](agent-config-settings.md).

Per creare un fornitore di credenziali personalizzate, definisci una classe che implementa l'interfaccia `AWS CredentialsProvider`, come quella nell'esempio seguente.

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

La classe deve avere un costruttore che non accetti argomenti.

AWS richiama periodicamente il metodo di aggiornamento per ottenere credenziali aggiornate. Se desideri che il fornitore di credenziali fornisca credenziali diverse per tutta la sua durata, includi il codice per aggiornare le credenziali con questo metodo. In alternativa, puoi lasciare vuoto questo metodo se desideri un fornitore di credenziali che offra credenziali statiche (non modificabili). 

# Scarica e installa l'agente
<a name="download-install"></a>

Innanzitutto connettiti all'istanza, Per ulteriori informazioni, consulta [Connect to Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html) nella *Amazon EC2 User Guide*. In caso di problemi di connessione, consulta [Risoluzione dei problemi di connessione alla tua istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) nella Guida per l'*utente di Amazon EC2*.

Quindi, installa l'agente utilizzando uno dei seguenti metodi.
+ **Configurazione dell'agente dai repository Amazon Linux**

  Questo metodo funziona solo per le istanze Amazon Linux. Utilizzando il seguente comando:

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

  Agent v 2.0.0 o successivo è installato su computer con sistema operativo Amazon Linux 2 ()AL2. Questa versione dell'agente richiede Java 1.8 o la versione successiva. Se la versione Java richiesta non è ancora presente, viene installata durante il processo di installazione dell'agente. Per ulteriori informazioni su Amazon Linux 2, consulta [https://aws.amazon.com/amazon-linux-2/](https://aws.amazon.com/amazon-linux-2/).
+ **Configurazione dell'agente dal repository Amazon S3**

  Questo metodo funziona per Red Hat Enterprise Linux e per le istanze di Amazon Linux 2 perché installa l'agente dal repository disponibile pubblicamente. Utilizza il comando seguente per scaricare e installare la versione più recente dell'agente versione 2.x.x: 

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

  Per installare una versione specifica dell'agente, specifica il numero di versione nel comando. Ad esempio, il seguente comando installa l'agente 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 disponi di Java 1.7 e non vuoi aggiornarlo, puoi scaricare la versione 1.x.x dell'agente, che è compatibile con Java 1.7. Ad esempio, per scaricare l'agente 1.1.6, puoi utilizzare il seguente comando: 

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

  Puoi scaricare l'agente più recente con il seguente comando

  ```
  sudo yum install -y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn2.noarch.rpm
  ```
+ **Per configurare l'agente dal GitHub repository**

  1. Innanzitutto, assicurati che sia installata la versione Java richiesta, in base alla versione dell'agente.

  1.  Scarica l'agente dal repository [awslabs/ amazon-kinesis-agent](https://github.com/awslabs/amazon-kinesis-agent) GitHub .

  1. Installare l'agente spostandosi nella directory di download ed eseguendo il comando seguente:

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

**Configurazione dell'agente in un container Docker**  
L'agente Kinesis può essere eseguito anche in un container tramite la base container [amazonlinux](https://docs.aws.amazon.com/AmazonECR/latest/userguide/amazon_linux_container_image.html). Utilizza il seguente Dockerfile e poi esegui `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 e avvia l'agente
<a name="config-start"></a>

**Configurazione e avvio dell'agente**

1. Aprire e modificare il file di configurazione (come superutente se vengono utilizzate le autorizzazioni predefinite di accesso al file): `/etc/aws-kinesis/agent.json` 

   In questo file di configurazione, specificate i file (`"filePattern"`) da cui l'agente raccoglie i dati e il nome del flusso Firehose `"deliveryStream"` () a cui l'agente invia i dati. Il nome del file è un modello e l'agente riconosce le rotazioni dei file. Puoi ruotare i file o creare nuovi file non più di una volta al secondo. L'agente utilizza il timestamp di creazione dei file per determinare quali file tracciare e inserire nel flusso Firehose. La creazione di nuovi file o la rotazione di file più frequentemente di una volta al secondo non consente all'agente di distinguerli in modo corretto.

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

   La AWS regione predefinita è. `us-east-1` Se utilizzi una regione diversa, aggiungi l'impostazione `firehose.endpoint` al file di configurazione, specificando l'endpoint della regione in uso. Per ulteriori informazioni, consulta [Specificare le impostazioni di configurazione dell'agente](agent-config-settings.md).

1. Avvia l'agente manualmente:

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

1. (Facoltativo) Configurare l'agente per iniziare l'avvio del sistema:

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

L'agente è ora in esecuzione come servizio di sistema in background. Monitora continuamente i file specificati e invia i dati al flusso Firehose specificato. L'attività dell'agente viene registrata in `/var/log/aws-kinesis-agent/aws-kinesis-agent.log`. 

# Specificare le impostazioni di configurazione dell'agente
<a name="agent-config-settings"></a>

L'agente supporta due impostazioni di configurazione obbligatorie, `filePattern` e `deliveryStream`, oltre a impostazioni di configurazione opzionali per funzionalità aggiuntive. Puoi specificare le impostazioni di configurazione obbligatoria e opzionale in `/etc/aws-kinesis/agent.json`.

Quando modifichi il file di configurazione, devi arrestare e avviare l'agente, utilizzando i comandi seguenti:

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

In alternativa, potresti utilizzare il comando seguente:

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

Seguono le impostazioni di configurazione generali.


| Impostazione di configurazione | Description | 
| --- | --- | 
| <a name="assumeRoleARN"></a>assumeRoleARN |  L'Amazon Resource Name (ARN) del ruolo che deve essere assunto dall'utente. Per ulteriori informazioni, consulta [Delegare l'accesso tra AWS account utilizzando i ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) nella *Guida per l'utente IAM*.  | 
| <a name="assumeRoleExternalId"></a>assumeRoleExternalId |  Si è verificato un identificatore opzionale che determina chi può assumere il ruolo. Per ulteriori informazioni, consulta [Come utilizzare un ID esterno](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) nella *Guida per l’utente di IAM*.  | 
| <a name="awsAccessKeyId"></a>awsAccessKeyId |  AWS ID della chiave di accesso che sostituisce le credenziali predefinite. Questa impostazione ha la precedenza su tutti gli altri provider di credenziali.  | 
| <a name="awsSecretAccessKey"></a>awsSecretAccessKey |  AWS chiave segreta che sostituisce le credenziali predefinite. Questa impostazione ha la precedenza su tutti gli altri provider di credenziali.  | 
| cloudwatch.emitMetrics |  Consente all'agente di emettere metriche su CloudWatch if set (true). Impostazione predefinita: true  | 
| cloudwatch.endpoint |  L'endpoint regionale per. CloudWatch Impostazione predefinita: `monitoring.us-east-1.amazonaws.com`  | 
| firehose.endpoint |  L'endpoint regionale per Amazon Data Firehose. Impostazione predefinita: `firehose.us-east-1.amazonaws.com`  | 
| sts.endpoint |  L'endpoint regionale per il servizio AWS Security Token. Impostazione predefinita: `https://sts.amazonaws.com`  | 
| userDefinedCredentialsProvider.classname | Se definisci un fornitore di credenziali personalizzate, specifica il nome completo della classe utilizzando questa impostazione. Non includere .class alla fine del nome della classe.  | 
| userDefinedCredentialsProvider.location | Se definisci un fornitore di credenziali personalizzate, utilizza questa impostazione per specificare il percorso assoluto del jar contenente il fornitore di credenziali personalizzate. L'agente cerca anche il file jar nel seguente percorso: /usr/share/aws-kinesis-agent/lib/. | 

Seguono le impostazioni di configurazione del flusso.


| Impostazione di configurazione | Description | 
| --- | --- | 
| aggregatedRecordSizeBytes |  Per fare in modo che l'agente aggreghi i record e poi li inserisca nel flusso Firehose in un'unica operazione, specificate questa impostazione. Impostatelo sulla dimensione che desiderate che il record aggregato abbia prima che l'agente lo inserisca nel flusso Firehose.  Predefinito: 0 (nessuna aggregazione)  | 
| dataProcessingOptions |  L'elenco delle opzioni di elaborazione applicate a ciascun record analizzato prima di essere inviato allo stream Firehose. Le opzioni di elaborazione vengono eseguite nell'ordine specificato. Per ulteriori informazioni, consulta [Preelabora i dati con gli agenti](pre-processing.md).  | 
| deliveryStream |  [Obbligatorio] Il nome dello stream Firehose.  | 
| filePattern |  [Obbligatorio] Un glob per i file che devono essere monitorati dall'agente. Qualsiasi file che corrisponde a questo modello viene acquisito dall'agente automaticamente e monitorato. Per tutti i file corrispondenti a questo modello, concedere l'autorizzazione in lettura a `aws-kinesis-agent-user`. Per la directory contenente i file, concedere autorizzazioni in lettura ed esecuzione a `aws-kinesis-agent-user`.  L'agente raccoglie qualsiasi file che corrisponde a questo modello. Per assicurarsi che l'agente non raccolga record non previsti, scegliere questo modello con attenzione.   | 
| initialPosition |  La posizione iniziale dalla quale è iniziata l'analisi del file. I valori validi sono `START_OF_FILE` e `END_OF_FILE`. Impostazione predefinita: `END_OF_FILE`  | 
| maxBufferAgeMillis |  Il tempo massimo, in millisecondi, durante il quale l'agente memorizza i dati nel buffer prima di inviarli al flusso Firehose. Intervallo di valori: da 1.000 a 900.000 (da 1 secondo a 15 minuti) Impostazione predefinita: 60.000 (1 minuto)  | 
| maxBufferSizeBytes |  La dimensione massima, in byte, per la quale l'agente memorizza i dati nel buffer prima di inviarli al flusso Firehose. Intervallo di valori: da 1 a 4.194.304 (4 MB) Impostazione predefinita: 4.194.304 (4 MB)  | 
| maxBufferSizeRecords |  Il numero massimo di record per i quali l'agente memorizza i dati nel buffer prima di inviarli allo stream Firehose. Intervallo di valori: da 1 a 500 Impostazione predefinita: 500  | 
| minTimeBetweenFilePollsMillis |  L'intervallo di tempo, in millisecondi, in cui l'agente esegue il polling e analizza i dati nuovi nei file monitorati. Intervallo valore: 1 o più Impostazione predefinita: 100  | 
| multiLineStartPattern |  Il modello per identificare l'inizio di un record. Un record è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. I valori validi sono espressioni regolari. Come impostazione predefinita, ogni nuova riga nei file di log viene analizzata come un record.  | 
| skipHeaderLines |  Il numero di righe necessarie perché l'agente salti l'analisi all'inizio dei file monitorati. Intervallo valore: 0 o più Impostazione predefinita: 0 (zero)  | 
| truncatedRecordTerminator |  La stringa utilizzata dall'agente per troncare un record analizzato quando la dimensione del record supera il limite di dimensione del record di Amazon Data Firehose. (1.000 KB) Impostazione predefinita: `'\n'` (nuova riga)  | 

# Configura più directory e stream di file
<a name="sim-writes"></a>

Specificando più impostazioni di configurazione del flusso, puoi configurare l'agente in modo che monitori più directory di file e invii dati a più flussi. Nel seguente esempio di configurazione, l'agente monitora due directory di file e invia i dati rispettivamente a un flusso di dati Kinesis e a un flusso Firehose. Puoi specificare diversi endpoint per Kinesis Data Streams e Amazon Data Firehose in modo che il flusso di dati e il flusso Firehose non debbano necessariamente trovarsi nella stessa regione.

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

Per informazioni più dettagliate sull'utilizzo dell'agente con flusso di dati Amazon Kinesis, consulta [Writing to Amazon Kinesis Data Streams with Kinesis Agent](https://docs.aws.amazon.com/kinesis/latest/dev/writing-with-agents.html).

# Preelabora i dati con gli agenti
<a name="pre-processing"></a>

L'agente può preelaborare i record analizzati dai file monitorati prima di inviarli allo stream Firehose. È possibile abilitare questa funzionalità aggiungendo le impostazioni di configurazione `dataProcessingOptions` al flusso di file. Si possono aggiungere una o più opzioni di elaborazione, che verranno eseguite nell'ordine specificato.

L'agente supporta le seguenti opzioni di elaborazione. Poiché l'agente è open source, è possibile sviluppare ulteriormente e ampliare le opzioni di elaborazione. Puoi scaricare l'agente da [Kinesis Agent](https://github.com/awslabs/amazon-kinesis-agent).Opzioni di elaborazione

`SINGLELINE`  
Converte un record a più righe in un record a riga singola rimuovendo i caratteri di nuova riga, gli spazi iniziali e finali.  

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

`CSVTOJSON`  
Converte un record da un formato delimitatore separato a un formato JSON.  

```
{
    "optionName": "CSVTOJSON",
    "customFieldNames": [ "field1", "field2", ... ],
    "delimiter": "yourdelimiter"
}
```  
`customFieldNames`  
[Obbligatorio] I nomi di campo utilizzati come chiavi in ciascuna coppia chiave-valore JSON. Ad esempio, se specifichi `["f1", "f2"]`, il record "v1, v2" viene convertito in `{"f1":"v1","f2":"v2"}`.  
`delimiter`  
La stringa utilizzata come delimitatore nel record. L'impostazione predefinita è una virgola (,).

`LOGTOJSON`  
Converte un record da un formato log a un formato JSON. I formati di log supportati sono **Apache Common Log**, **Apache Combined Log**, **Apache Error Log** e **RFC3164 Syslog**.  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "logformat",
    "matchPattern": "yourregexpattern",
    "customFieldNames": [ "field1", "field2", … ]
}
```  
`logFormat`  
[Obbligatorio] Il formato di inserimento dei log. I seguenti sono i valori possibili:  
+ `COMMONAPACHELOG` - Il formato Apache Common Log. Ogni voce di log ha il seguente modello come impostazione predefinita: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}`".
+ `COMBINEDAPACHELOG`: il formato Apache Combined Log. Ogni voce di log ha il seguente modello come impostazione predefinita: "`%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}`".
+ `APACHEERRORLOG`: il formato Apache Error Log. Ogni voce di log ha il seguente modello come impostazione predefinita: "`[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}`".
+ `SYSLOG`— Il formato Syslog. RFC3164 Ogni voce di log ha il seguente modello come impostazione predefinita: "`%{timestamp} %{hostname} %{program}[%{processid}]: %{message}`".  
`matchPattern`  
Ignora il modello predefinito per il formato di log specificato. Utilizza questa impostazione per estrarre valori dalle voci di log se utilizzano un formato personalizzato. Se si specifica `matchPattern`, è necessario specificare anche `customFieldNames`.  
`customFieldNames`  
I nomi di campo obbligatori utilizzati come chiavi in ciascuna coppia chiave-valore JSON. Puoi utilizzare questa impostazione per definire i nomi dei campi per i valori estratti da `matchPattern` oppure sovrascrivere i nomi dei campi predefiniti dei formati di log predefiniti.

**Example : configurazione LOGTOJSON**  <a name="example-logtojson"></a>
Questo è un esempio di una configurazione `LOGTOJSON` per una voce Apache Common Log convertita in formato JSON:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG"
}
```
Prima della conversione:  

```
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
```
Dopo la conversione:  

```
{"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 : configurazione LOGTOJSON con campi personalizzati**  <a name="example-logtojson-custom-fields"></a>
Ecco un altro esempio di configurazione `LOGTOJSON`:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"]
}
```
Con questa impostazione di configurazione, la stessa voce Apache Common Log dall'esempio precedente viene convertita in formato JSON come segue:  

```
{"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 : convertire la voce Apache Common Log**  <a name="example-apache-common-log-entry"></a>
La seguente configurazione di flusso converte una voce Apache Common Log in record a riga singola in formato JSON:  

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

**Example : convertire record a più righe**  <a name="example-convert-multi-line"></a>
La seguente configurazione del flusso analizza i record a più righe la cui prima riga inizia con "`[SEQUENCE=`". Ogni record viene convertito in un record a riga singola. Quindi, i valori vengono estratti dal record in base a un delimitatore di schede. I valori estratti sono mappati in valori `customFieldNames` specificati per formare un record a riga singola in 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 : configurazione LOGTOJSON con modello corrispondente**  <a name="example-logtojson-match-pattern"></a>
Questo è un esempio di una configurazione `LOGTOJSON` per una voce Apache Common Log convertita in formato JSON, con l'ultimo campo (byte) omesso:  

```
{
    "optionName": "LOGTOJSON",
    "logFormat": "COMMONAPACHELOG",
    "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})",
    "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"]
}
```
Prima della conversione:  

```
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
```
Dopo la conversione:  

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

# Usa i comandi CLI dell'agente comuni
<a name="cli-commands"></a>

La tabella seguente fornisce una serie di casi d'uso comuni e i comandi corrispondenti per lavorare con l'agente AWS Kinesis. 


| Caso d’uso | Comando | 
| --- | --- | 
|  Avvia automaticamente l'agente all'avvio del sistema  |  <pre>sudo chkconfig aws-kinesis-agent on</pre>  | 
|  Controlla lo stato dell'agente  |  <pre>sudo service aws-kinesis-agent status</pre>  | 
|  Fermate l'agente  |  <pre>sudo service aws-kinesis-agent stop</pre>  | 
|  Leggi il file di registro dell'agente da questa posizione  |  <pre>/var/log/aws-kinesis-agent/aws-kinesis-agent.log</pre>  | 
|  Disinstalla l'agente  |  <pre>sudo yum remove aws-kinesis-agent</pre>  | 

# Risolvi i problemi relativi all'invio da Kinesis Agent
<a name="agent-faq"></a>

Questa tabella fornisce informazioni e soluzioni per la risoluzione dei problemi più comuni riscontrati durante l'utilizzo di Amazon Kinesis Agent. 


| Problema | Soluzione | 
| --- | --- | 
| Perché Kinesis Agent non funziona su Windows? |  [L'agente Kinesis per Windows](https://docs.aws.amazon.com/kinesis-agent-windows/latest/userguide/what-is-kinesis-agent-windows.html) è un software diverso dall'agente Kinesis per piattaforme Linux.  | 
| Perché l'agente Kinesis rallenta e/o RecordSendErrors aumenta? |  Di solito ciò è dovuto alla limitazione di Kinesis. Controlla la `WriteProvisionedThroughputExceeded` metrica per Kinesis Data Streams o la `ThrottledRecords` metrica per i flussi Firehose. Qualsiasi aumento rispetto a 0 di questi parametri indica che è necessario aumentare i limiti dei flussi. [Per ulteriori informazioni, consulta i [limiti di Kinesis Data Stream](https://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html) e i flussi Firehose.](https://docs.aws.amazon.com/firehose/latest/dev/limits.html) Una volta esclusa la limitazione, verifica se Kinesis Agent è configurato in modo da monitorare grandi quantità di file di piccole dimensioni. Si verifica un ritardo nel momento in cui Kinesis Agent esegue il tail di un nuovo file, quindi Kinesis Agent dovrebbe eseguire la coda su una piccola quantità di file più grandi. Prova a consolidare i tuoi file di log in file più grandi.  | 
| Come risolvere le eccezioni? java.lang.OutOfMemoryError | Ciò accade quando Kinesis Agent non dispone di memoria sufficiente per gestire il carico di lavoro corrente. Prova ad aumentare, JAVA\$1START\$1HEAP inserire /usr/bin/start-aws-kinesis-agent e JAVA\$1MAX\$1HEAP riavviare l'agente. | 
| Come risolvere le eccezioni? IllegalStateException : connection pool shut down | Kinesis Agent non dispone di connessioni sufficienti per gestire il carico di lavoro corrente. Prova ad aumentare maxConnections e maxSendingThreads a inserire le impostazioni generali della configurazione dell'agente su. /etc/aws-kinesis/agent.json Il valore predefinito per questi campi è 12 volte superiore ai processori di runtime disponibili. Consulta [AgentConfiguration.java](https://github.com/awslabs/amazon-kinesis-agent/blob/master/src/com/amazon/kinesis/streaming/agent/config/AgentConfiguration.java) per ulteriori informazioni sulle impostazioni avanzate delle configurazioni degli agenti.  | 
| Come posso eseguire il debug di un altro problema con Kinesis Agent? | DEBUGi log di livello possono essere abilitati in. /etc/aws-kinesis/log4j.xml | 
| Come devo configurare Kinesis Agent? | Più piccolo èmaxBufferSizeBytes, più frequentemente Kinesis Agent invierà i dati. Ciò può essere utile in quanto riduce i tempi di consegna dei record, ma aumenta anche le richieste al secondo a Kinesis.  | 
| Perché Kinesis Agent invia record duplicati? | Ciò si verifica a causa di un'errata configurazione nella coda dei file. Assicurati che ognuno corrisponda fileFlow’s filePattern a un solo file. Ciò può verificarsi anche se la logrotate modalità utilizzata è copytruncate attiva. Prova a passare alla modalità predefinita o crea per evitare duplicazioni. Per ulteriori informazioni sulla gestione dei record duplicati, vedere [Gestione dei record duplicati](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html). | 

# Inviare dati con AWS SDK
<a name="writing-with-sdk"></a>

[https://aws.amazon.com/sdk-for-python/](https://aws.amazon.com/sdk-for-python/) Se non conosci Amazon Data Firehose, prenditi del tempo per acquisire familiarità con i concetti e la terminologia presentati in. [Cos’è Amazon Data Firehose?](what-is-this-service.md) Per ulteriori informazioni, consulta [Come iniziare a usare Amazon Web Services](https://aws.amazon.com/developers/getting-started/).

Questi esempi non rappresentano codici pronti per la produzione, poiché non eseguono un controllo per tutte le possibili eccezioni o spiegano tutte le possibili considerazioni relative alle prestazioni e alla sicurezza. 

L'API Amazon Data Firehose offre due operazioni per l'invio di dati al tuo stream 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()`invia un record di dati in una chiamata e `PutRecordBatch()` può inviare più record di dati in una sola chiamata. 

## Operazioni di scrittura singole utilizzando PutRecord
<a name="putrecord"></a>

L'inserimento dei dati richiede solo il nome del flusso Firehose e un buffer di byte (<=1000 KB). Poiché Amazon Data Firehose raggruppa più record prima di caricare il file in Amazon S3, potresti voler aggiungere un separatore di record. Per inserire i dati un record alla volta in un flusso Firehose, utilizzate il codice seguente:

```
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);
```

Per ulteriori informazioni sul codice, consulta il codice di esempio incluso nell' AWS SDK. Per informazioni sulla sintassi di richiesta e risposta, consultate l'argomento pertinente in [Firehose API Operations](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Operations.html).

## Operazioni di scrittura in batch utilizzando PutRecordBatch
<a name="putrecordbatch"></a>

L'inserimento dei dati richiede solo il nome dello stream Firehose e un elenco di record. Poiché Amazon Data Firehose raggruppa più record prima di caricare il file in Amazon S3, potresti voler aggiungere un separatore di record. Per inserire i record di dati in batch in un flusso Firehose, utilizzate il codice seguente:

```
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();
```

Per ulteriori informazioni sul codice, consulta il codice di esempio incluso nell' AWS SDK. Per informazioni sulla sintassi di richiesta e risposta, consultate l'argomento pertinente in [Firehose API Operations](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Operations.html).

# Invia CloudWatch log a Firehose
<a name="writing-with-cloudwatch-logs"></a>

CloudWatch Gli eventi di registro possono essere inviati a Firehose CloudWatch utilizzando i filtri di abbonamento. Per ulteriori informazioni, consulta [Filtri di abbonamento con Amazon Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#FirehoseExample).

CloudWatch Gli eventi di registro vengono inviati a Firehose in formato gzip compresso. Se si desidera inviare eventi di registro decompressi alle destinazioni Firehose, è possibile utilizzare la funzionalità di decompressione di Firehose per decomprimere automaticamente i log. CloudWatch 

**Importante**  
Attualmente, Firehose non supporta l'invio di CloudWatch log alla destinazione di Amazon OpenSearch Service perché Amazon CloudWatch combina più eventi di registro in un unico record Firehose e OpenSearch Amazon Service non può accettare più eventi di registro in un unico record. In alternativa, puoi prendere in considerazione [l'utilizzo del filtro di abbonamento per Amazon OpenSearch Service in CloudWatch Logs.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html)

# Decomprimi i log CloudWatch
<a name="writing-with-cloudwatch-logs-decompression"></a>

[Se si utilizza Firehose per inviare CloudWatch i log e si desidera inviare dati decompressi alla destinazione del flusso Firehose, utilizzare Firehose [Data Format Conversion (Parquet, ORC) o il partizionamento](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) dinamico.](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html) È necessario abilitare la decompressione per lo stream Firehose.

È possibile abilitare la decompressione utilizzando, o. Console di gestione AWS AWS Command Line Interface AWS SDKs

**Nota**  
Se abiliti la funzionalità di decompressione su uno stream, usa quel flusso esclusivamente per i filtri CloudWatch degli abbonamenti Logs e non per i Vided Logs. Se si abilita la funzionalità di decompressione su uno stream utilizzato per importare sia CloudWatch Logs che Vending Logs, l'importazione di Vending Logs in Firehose non riesce. Questa funzione CloudWatch di decompressione è disponibile solo per i log.

# Estrai il messaggio dopo la decompressione dei registri CloudWatch
<a name="Message_extraction"></a>

Quando abiliti la decompressione, hai la possibilità di abilitare anche l'estrazione dei messaggi. Quando si utilizza l'estrazione dei messaggi, Firehose filtra tutti i metadati, come owner, loggroup, logstream e altri dai record CloudWatch Logs decompressi e fornisce solo il contenuto all'interno dei campi del messaggio. Se stai inviando dati a una destinazione Splunk, devi attivare l'estrazione dei messaggi affinché Splunk analizzi i dati. Di seguito sono riportati alcuni esempi di output dopo la decompressione con e senza estrazione dei messaggi.

Fig 1: Esempio di output dopo la decompressione senza estrazione del messaggio:

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

Fig 2: Esempio di output dopo la decompressione con estrazione del messaggio:

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

# Abilitare la decompressione su un nuovo stream Firehose dalla console
<a name="writing-with-cloudwatch-logs-decompression-enabling-console"></a>

**Per abilitare la decompressione su un nuovo flusso Firehose utilizzando il Console di gestione AWS**

1. [Accedi Console di gestione AWS e apri la console Kinesis all'indirizzo https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. Scegli **Amazon Data Firehose** nel pannello di navigazione.

1. Scegli **Crea un flusso Firehose**.

1. In **Scegli origine e destinazione**  
****Origine****  
La fonte del tuo stream Firehose. Scegli una delle seguenti fonti:  
   + **Direct PUT**: scegliete questa opzione per creare uno stream Firehose su cui le applicazioni di produzione scrivono direttamente. Per un elenco di AWS servizi e agenti e servizi open source integrati con Direct PUT in Firehose, consulta [questa](create-name.md) sezione.
   + **Kinesis stream:** scegliete questa opzione per configurare un flusso Firehose che utilizza un flusso di dati Kinesis come origine dati. È quindi possibile utilizzare Firehose per leggere facilmente i dati da un flusso di dati Kinesis esistente e caricarli nelle destinazioni. Per ulteriori informazioni, consulta [Scrittura su Firehose con Kinesis](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-kinesis-streams.html) Data Streams  
****Destinazione****  
La destinazione del tuo stream Firehose. Seleziona una delle seguenti opzioni:  
   + Simple Storage Service (Amazon S3)
   + Splunk

1. In **Firehose stream name**, inserisci un nome per lo stream.

1. (Facoltativo) In **Transform records**:
   + Nella sezione **Decomprimi i record di origine da Amazon CloudWatch Logs**, scegli **Attiva** la decompressione.
   + **Se desideri utilizzare l'estrazione dei messaggi dopo la decompressione, scegli Attiva l'estrazione dei messaggi.**

# Abilitare la decompressione su un flusso Firehose esistente
<a name="enabling-decompression-existing-stream-console"></a>

Questa sezione fornisce istruzioni per abilitare la decompressione sui flussi Firehose esistenti. Copre due scenari: flussi con elaborazione Lambda disabilitata e flussi con elaborazione Lambda già abilitata. Le seguenti sezioni descrivono step-by-step le procedure per ogni caso, tra cui la creazione o la modifica di funzioni Lambda, l'aggiornamento delle impostazioni di Firehose e le metriche di CloudWatch monitoraggio per garantire una corretta implementazione della funzionalità di decompressione integrata Firehose.

## Abilitazione della decompressione quando l'elaborazione Lambda è disabilitata
<a name="enabling-decomp-exist-stream-lam-disable"></a>

Per abilitare la decompressione su un flusso Firehose esistente con l'elaborazione Lambda disabilitata, è necessario prima abilitare l'elaborazione Lambda. Questa condizione è valida solo per gli stream esistenti. I passaggi seguenti mostrano come abilitare la decompressione su flussi esistenti che non hanno l'elaborazione Lambda abilitata.

1. Creazione di una funzione Lambda. È possibile creare un passthrough di record fittizio o utilizzare questo [blueprint](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor) per creare una nuova funzione Lambda. 

1. Aggiorna lo stream Firehose corrente per abilitare l'elaborazione Lambda e usa la funzione Lambda che hai creato per l'elaborazione.

1. Dopo aver aggiornato lo stream con la nuova funzione Lambda, torna alla console Firehose e attiva la decompressione.

1. Disabilita l'elaborazione Lambda abilitata nel passaggio 1. Ora puoi eliminare la funzione che hai creato nel passaggio 1.

## Abilitazione della decompressione quando l'elaborazione Lambda è abilitata
<a name="enabling-decomp-exist-stream-lam-enable"></a>

Se disponi già di uno stream Firehose con una funzione Lambda, per eseguire la decompressione puoi sostituirlo con la funzionalità di decompressione Firehose. Prima di procedere, esamina il codice della funzione Lambda per confermare che esegua solo la decompressione o l'estrazione dei messaggi. L'output della funzione Lambda dovrebbe essere simile agli esempi mostrati in [Fig 1 o Fig 2](Message_extraction.md). Se l'output è simile, puoi sostituire la funzione Lambda utilizzando i passaggi seguenti.

1. [Sostituisci la tua attuale funzione Lambda con questo modello.](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor) La nuova funzione Lambda Blueprint rileva automaticamente se i dati in entrata sono compressi o decompressi. Esegue la decompressione solo se i dati di input sono compressi.

1. Attiva la decompressione utilizzando l'opzione Firehose integrata per la decompressione.

1. Abilita le CloudWatch metriche per il tuo stream Firehose se non è già abilitato. Monitora la metrica `CloudWatchProcessorLambda_IncomingCompressedData` e attendi che questa metrica diventi zero. Ciò conferma che tutti i dati di input inviati alla funzione Lambda sono decompressi e che la funzione Lambda non è più necessaria.

1. Rimuovi la trasformazione dei dati Lambda perché non ti serve più per decomprimere lo stream.

# Disattiva la decompressione sullo stream Firehose
<a name="writing-with-cloudwatch-logs-decompression-disabling-console"></a>

****

Per disabilitare la decompressione su un flusso di dati utilizzando il Console di gestione AWS

1. [Accedi Console di gestione AWS e apri la console Kinesis all'indirizzo https://console.aws.amazon.com /kinesis.](https://console.aws.amazon.com/kinesis)

1. Scegli **Amazon Data Firehose** nel pannello di navigazione.

1. Scegli lo stream Firehose che desideri modificare.

1. Nella pagina dei **dettagli dello stream Firehose**, selezionare la scheda **Configurazione**.

1. Nella sezione **Trasforma e converti i record**, scegli **Modifica**.

1. **In **Decomprimi i record di origine da Amazon CloudWatch Logs**, deseleziona **Attiva la decompressione**, quindi scegli Salva modifiche.**

# Risoluzione dei problemi di decompressione in Firehose
<a name="decomp-faq"></a>

La tabella seguente mostra come Firehose gestisce gli errori durante la decompressione e l'elaborazione dei dati, tra cui l'invio di record a un bucket S3 con errori, la registrazione degli errori e l'emissione di metriche. Spiega inoltre il messaggio di errore restituito per le operazioni di immissione di dati non autorizzate.


| Problema | Soluzione | 
| --- | --- | 
| Cosa succede ai dati di origine in caso di errore durante la decompressione? |  Se Amazon Data Firehose non è in grado di decomprimere il record, il record viene consegnato così com'è (in formato compresso) al bucket di errore S3 specificato durante la creazione dello stream Firehose. Oltre al record, l'oggetto consegnato include anche il codice di errore e il messaggio di errore e questi oggetti verranno recapitati a un prefisso del bucket S3 chiamato. `decompression-failed` Firehose continuerà a elaborare altri record dopo una decompressione non riuscita di un record.  | 
| Cosa succede ai dati di origine in caso di errore nella pipeline di elaborazione dopo una decompressione riuscita? |  Se Amazon Data Firehose presenta errori nelle fasi di elaborazione dopo la decompressione, ad esempio il partizionamento dinamico e la conversione del formato dei dati, il record viene fornito in formato compresso nel bucket di errore S3 specificato durante la creazione dello stream Firehose. Oltre al record, l'oggetto consegnato include anche il codice di errore e il messaggio di errore.  | 
| Come siete informati in caso di errore o eccezione? |  In caso di errore o eccezione durante la decompressione, se si configurano i log, Firehose registrerà i messaggi di errore in CloudWatch Logs. CloudWatch Inoltre, Firehose invia metriche a CloudWatch metriche che è possibile monitorare. Facoltativamente, puoi anche creare allarmi in base alle metriche emesse da Firehose.  | 
| Cosa succede quando put le operazioni non provengono dai log? CloudWatch  | Quando il cliente puts non proviene da CloudWatch Logs, viene restituito il seguente messaggio di errore: <pre>Put to Firehose failed for AccountId: <accountID>, FirehoseName:  <firehosename> because the request is not originating from allowed source types.</pre> | 
| Quali metriche emette Firehose per la funzione di decompressione? | Firehose emette metriche per la decompressione di ogni record. È necessario selezionare il periodo (1 minuto), la statistica (somma) e l'intervallo di date per ottenere il numero di risultati non riusciti o DecompressedRecords riusciti o non riusciti. DecompressedBytes Per ulteriori informazioni, consulta [CloudWatch Registra le metriche di decompressione](monitoring-with-cloudwatch-metrics.md#decompression-metrics-cw). | 

# Invia CloudWatch eventi a Firehose
<a name="writing-with-cloudwatch-events"></a>

Puoi configurare Amazon CloudWatch per inviare eventi a uno stream Firehose aggiungendo una destinazione a una regola CloudWatch Events.

**Per creare una destinazione per una regola CloudWatch Events che invia eventi a un flusso Firehose esistente**

1. Accedi a Console di gestione AWS e apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Scegli **Crea regola**.

1. Nella pagina **Passaggio 1: creazione della regola**, per **Target**, selezionare **Aggiungi destinazione**, quindi scegliere **Firehose stream**.

1. Scegliete uno stream **Firehose** esistente.

Per ulteriori informazioni sulla creazione di regole per CloudWatch gli eventi, consulta [Getting Started with Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_GettingStarted.html).

# AWS IoT Configurare l'invio di dati a Firehose
<a name="writing-with-iot"></a>

È possibile configurare AWS IoT l'invio di informazioni a uno stream Firehose aggiungendo un'azione.

**Per creare un'azione che invii eventi a un flusso Firehose esistente**

1. Quando crei una regola nella AWS IoT console, nella pagina **Crea una regola**, in **Imposta una o più azioni**, scegli **Aggiungi azione**.

1. Scegli **Invia messaggi a un flusso Amazon Kinesis Firehose**.

1. Selezionare **Configure action (Configura operazione)**.

1. Per **Stream name**, scegliete uno stream Firehose esistente. 

1. Per **Separator (Separatore)**, selezionare un carattere del separatore da inserire tra i record.

1. Per **Nome ruolo IAM**, scegli un ruolo IAM esistente oppure scegli **Crea un nuovo ruolo**.

1. Selezionare **Add action** (Aggiungi operazione).

Per ulteriori informazioni sulla creazione di AWS IoT regole, consulta [AWS IoT Rule Tutorials](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html).