

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à.

# Streaming di dati alle tabelle con Amazon Data Firehose
<a name="s3-tables-integrating-firehose"></a>

Amazon Data Firehose è un servizio completamente gestito per la distribuzione di [dati di streaming](https://aws.amazon.com//streaming-data/) in tempo reale a destinazioni come Amazon S3, Amazon Redshift, OpenSearch Amazon Service SplunkApache Iceberg, tabelle ed endpoint HTTP personalizzati o endpoint HTTP di proprietà di provider di servizi terzi supportati. Con Amazon Data Firehose, non è necessario scrivere applicazioni o gestire risorse. È sufficiente configurare i produttori dati perché inviino i dati a Firehose, che li distribuirà automaticamente alla destinazione specificata. È anche possibile configurare Firehose per trasformare i dati prima di distribuirli. Per ulteriori informazioni su Amazon Data Firehose, consultare [Cos’è Amazon Data Firehose?](https://docs.aws.amazon.com//firehose/latest/dev/what-is-this-service.html)

Completare queste fasi per configurare lo streaming Firehose nelle tabelle dei bucket di tabelle S3:

1.  [Integrare i bucket di tabelle con i servizi di analisi di AWS](s3-tables-integrating-aws.md). 

1. Configurare Firehose per fornire dati nelle tabelle S3. A tale scopo, [create un ruolo di servizio AWS Identity and Access Management (IAM) che consenta a Firehose di accedere alle tabelle](#firehose-role-s3tables).

1. Fornire al ruolo di servizio Firehose autorizzazioni esplicite per la tabella o il namespace di tabelle. Per ulteriori informazioni, consulta [Concedere le autorizzazioni necessarie](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-prereq.html#s3-tables-prerequisites).

1. [Creare un flusso Firehose che indirizza i dati alla tabella.](#firehose-stream-tables)

## Creazione di un ruolo per Firehose per l'uso delle tabelle S3 come destinazione
<a name="firehose-role-s3tables"></a>

Firehose necessita di un [ruolo di servizio](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-service.html) IAM con autorizzazioni specifiche per accedere alle AWS Glue tabelle e scrivere dati nelle tabelle S3. È necessario fornire questo ruolo IAM quando si crea un flusso Firehose.

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione a sinistra, seleziona **Policy**.

1. Scegli **Crea una policy** e scegliere **JSON** nell'editor delle policy.

1. Aggiungere la seguente policy in linea che concede le autorizzazioni a tutti i database e alle tabelle del catalogo dei dati. Se lo si desidera, è possibile concedere le autorizzazioni solo a tabelle e database specifici. Per utilizzare questa policy, sostituisci `user input placeholders` con le tue informazioni.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3TableAccessViaGlueFederation",
               "Effect": "Allow",
               "Action": [
                   "glue:GetTable",
                   "glue:GetDatabase",
                   "glue:UpdateTable"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/*",
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog",
                   "arn:aws:glue:us-east-1:111122223333:catalog",
                   "arn:aws:glue:us-east-1:111122223333:database/*",
                   "arn:aws:glue:us-east-1:111122223333:table/*/*"
               ]
           },
           {
               "Sid": "S3DeliveryErrorBucketPermission",
               "Effect": "Allow",
               "Action": [
                   "s3:AbortMultipartUpload",
                   "s3:GetBucketLocation",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:ListBucketMultipartUploads",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::error delivery bucket",
                   "arn:aws:s3:::error delivery bucket/*"
               ]
           },
           {
               "Sid": "RequiredWhenUsingKinesisDataStreamsAsSource",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStream",
                   "kinesis:GetShardIterator",
                   "kinesis:GetRecords",
                   "kinesis:ListShards"
               ],
               "Resource": "arn:aws:kinesis:us-east-1:111122223333:stream/stream-name"
           },
           {
               "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation",
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           },
           {
               "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery",
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": [
                   "arn:aws:kms:us-east-1:111122223333:key/KMS-key-id"
               ],
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "s3.us-east-1.amazonaws.com"
                   },
                   "StringLike": {
                       "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::error delivery bucket/prefix*"
                   }
               }
           },
           {
               "Sid": "LoggingInCloudWatch",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:log-group-name:log-stream:log-stream-name"
               ]
           },
           {
               "Sid": "RequiredWhenAttachingLambdaToFirehose",
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction",
                   "lambda:GetFunctionConfiguration"
               ],
               "Resource": [
                   "arn:aws:lambda:us-east-1:111122223333:function:function-name:function-version"
               ]
           }
       ]
   }
   ```

------

   Questa policy contiene istruzioni che consentono l'accesso a Kinesis Data Streams, l'invocazione delle funzioni Lambda e l'accesso alle chiavi. AWS KMS Se non si utilizza nessuna di queste risorse, è possibile rimuovere le rispettive istruzioni.

   Se la registrazione degli errori è abilitata, Firehose invia anche gli errori di consegna dei dati al gruppo di log e CloudWatch ai flussi. Per questo motivo, è necessario configurare i nomi del gruppo di log e del flusso di log. Per i nomi dei gruppi di log e dei flussi di log, consulta [Monitoring Amazon Data Firehose Using](https://docs.aws.amazon.com//firehose/latest/dev/controlling-access.html#using-iam-iceberg) Logs. CloudWatch 

1. Dopo aver creato la policy, creare un ruolo IAM con il **servizio AWS ** come il **Tipo di entità attendibile**.

1. Per **Servizio o caso d'uso** scegli **Kinesis**. Per **Caso d'uso** scegli **Kinesis Firehose**.

1. Scegli **Successivo**, quindi seleziona la policy creata in precedenza.

1. Assegnare un nome al proprio ruolo. Verifica i dettagli del ruolo e scegli **Crea ruolo**. Il ruolo avrà la seguente policy di attendibilità.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Principal": {
                   "Service": [
                       "firehose.amazonaws.com"
                   ]
               }
           }
       ]
   }
   ```

------

## Creazione di un flusso Firehose alle tabelle S3
<a name="firehose-stream-tables"></a>

La seguente procedura mostra come creare un flusso Firehose per fornire dati alle tabelle S3 utilizzando la console. I seguenti prerequisiti sono necessari per configurare un flusso Firehose alle tabelle S3.

**Prerequisiti**
+ [Integrare i bucket di tabelle con i servizi di analisi di AWS](s3-tables-integrating-aws.md).
  + [Creare un namespace](s3-tables-namespace-create.md).
  + [Creare una tabella](s3-tables-create.md).
+ Creare il [ruolo per Firehose per accedere alle tabelle S3](#firehose-role-s3tables).
+ [Concedi le autorizzazioni necessarie](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-prereq.html#s3-tables-prerequisites) al ruolo del servizio Firehose che hai creato per accedere alle tabelle.

Per fornire informazioni di instradamento a Firehose quando si configura un flusso, si utilizza il namespace come il nome del database e il nome di una tabella in tale namespace. È possibile utilizzare questi valori nella sezione Chiave unica di una configurazione del flusso Firehose per instradare i dati a una singola tabella. È inoltre possibile utilizzare questi valori per eseguire l'instradamento a una tabella utilizzando le espressioni di query JSON. Per ulteriori informazioni, consulta [Instradare i record in entrata a una singola tabella Iceberg](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-format-input-record.html). 

**Per configurare un flusso su tabelle S3 (console)**

1. Aprire la console Firehose all'indirizzo. [https://console.aws.amazon.com/firehose/](https://console.aws.amazon.com/firehose/)

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

1. Per **Origine** scegli una delle seguenti origini:
   + Flusso di dati Amazon Kinesis
   + MSK Amazon
   + PUT diretto

1. Per **Destinazione** scegliere **Tabelle Apache Iceberg**.

1. Immettere un **nome per il flusso Firehose**.

1. Configurare le **impostazioni dell'origine**.

1. Per **Impostazioni di destinazione**, scegliere **Account corrente** per eseguire lo streaming alle tabelle dell’account o **Multi-account** per le tabelle di un altro account.
   + Per le tabelle dell’**Account corrente**, selezionare il catalogo Tabelle S3 dal menu a discesa **Catalogo**.
   + Per le tabelle di **Multi-account**, inserire l’**ARN del catalogo** verso cui eseguire lo streaming in un altro account.

1. Configura i nomi di database e tabelle utilizzando **la configurazione Unique Key**, JSONQuery le espressioni o una funzione Lambda. Per ulteriori informazioni, consultare [Instradare i record in entrata a una singola tabella Iceberg](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-format-input-record.html) e [Instradare i record in entrata a diverse tabelle Iceberg](https://docs.aws.amazon.com//firehose/latest/dev/apache-iceberg-format-input-record-different.html) nella *Guida per gli sviluppatori di Amazon Data Firehose*.

1. In **Impostazioni di backup** specificare un **bucket di backup S3**.

1. Per **Ruoli IAM esistenti** in **Impostazioni avanzate**, seleziona il ruolo IAM creato per Firehose.

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

Per ulteriori informazioni sulle altre impostazioni che è possibile configurare per un flusso, consultare [Configurare il flusso Firehose](https://docs.aws.amazon.com/firehose/latest/dev/apache-iceberg-stream.html) nella *Guida per gli sviluppatori di Amazon Data Firehose*.