# Amazon S3

Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti che offre prestazioni di scalabilità, disponibilità, sicurezza dei dati leader del settore.

## Preparazione per il processo di autenticazione

Per accedere ai dati di , è necessario autenticare la connessione con le credenziali del proprio account.

Nota informaticaAssicurarsi che l'account utilizzata disponga di accesso di lettura per le tabelle che si desidera recuperare.

Per connettersi a Amazon S3, sono richieste le autorizzazioni in AWS Identity Access Management (IAM) che consentono di creare criteri, creare ruoli e allegare i criteri ai ruoli. Queste sono necessari per concedere l'autorizzazione al proprio bucket S3:

* [Creare un criterio IAM](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating).
* [Creare un ruolo IAM](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating2).

### Creare un criterio IAM

[Un criterio IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) è un linguaggio per i criteri di accesso basato su JSON che consente di gestire le autorizzazioni alle risorse del bucket.

Autorizzazioni Amazon S3

| Nome autorizzazione | Funzionamento | Descrizione |
| --- | --- | --- |
| **s3:GetObject** | **[Oggetto GET](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)** | Permette di recuperare gli oggetti da Amazon S3. |
| **s3:GetObject** | **[Oggetto HEAD](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)** | Permette di recuperare i metadati di un oggetto senza restituire l'oggetto stesso. |
| **s3:ListBucket** | **[GET Bucket (Oggetti elenco)](http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html)** | Consente di restituire alcuni o tutti (fino a 1.000) gli oggetti contenuti in un bucket. |
| **s3:ListBucket** | **[HEAD Bucket](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html)** | Utilizzato per determinare se un bucket esiste e l'accesso è consentito. |

Per creare il criterio IAM:

1. In AWS, [andare al servizio IAM](https://console.aws.amazon.com/iam/home#/home) facendo clic sul menu **Servizi** e digitando IAM.
2. Fare clic sul servizio IAM quando viene visualizzato nei risultati.
3. Fare clic su Criteri nel menu a sinistra della pagina.
4. Fare clic su Crea criterio.
5. Nella pagina Crea criterio, fare clic sulla scheda JSON.
6. Selezionare tutti i contenuti presenti nel campo di testo ed eliminarli.
7. Nel campo di testo, incollare il seguente JSON e sostituire `MyBucketName` con il nome del proprio bucket:
   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
               "s3:GetObject",
               "s3:ListBucket"
               ],
               "Resource": [
               "arn:aws:s3:::MyBucketName",
               "arn:aws:s3:::MyBucketName/*"
               ]
           }
       ]
   }
   ```
8. Fare clic su Verifica criterio.
9. Nella pagina Verifica criterio, assegnare un nome al criterio. Ad esempio: `qlik_amazon_s3`.
10. Fare clic su Crea criterio.

### Creazione di un ruolo IAM

Nota informatica

Per completare questo passaggio, sono necessarie le seguenti autorizzazioni IAM di AWS: `CreateRole` e `AttachRolePolicy`. Per maggiori informazioni, consultare la [documentazione di Amazon](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html).

Se si desidera creare più integrazioni di Amazon S3, è necessario completare questo passaggio per ogni integrazione da collegare.

1. In AWS, andare alla pagina [Ruoli IAM](https://console.aws.amazon.com/iam/home#/roles).
2. Fare clic su Crea ruolo.
3. Nella pagina Crea ruolo:
   1. Nella sezione Seleziona il tipo di entità attendibile, fare clic sull'opzione Altro account AWS.

   2. Nel campo ID account, incollare `338144066592`.

   3. Nella sezione Opzioni, selezionare la casella di controllo Richiedi ID esterno.

   4. Nel campo ID esterno visualizzato, incollare `qlik_connection_<tenant-id>` e sostituire `<tenant-id>` con l'ID del proprio tenant.

      Per trovare l'ID del tenant, vedere [Trovare le informazioni del tenant](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm).

   5. Fare clic su Avanti: Autorizzazioni.
4. Nella pagina Allega autorizzazioni:
   1. Cercare il criterio creato in [Creazione di un criterio IAM](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating).
   2. Una volta individuato, selezionare la casella accanto ad esso nella tabella.
   3. Fare clic su Avanti: Tag.
5. Se si desidera inserire tag, è possibile farlo nella pagina Aggiungi tag. Altrimenti, fare clic su Avanti: Verifica.
6. Nella pagina Verifica:
   1. Nel campo Nome ruolo, incollare `qlik_s3_<tenant-id>` e sostituire `<tenant-id>` con l'ID del proprio tenant.

      Per trovare l'ID del tenant, vedere [Trovare le informazioni del tenant](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm).

   2. Inserire una descrizione nel campo Descrizione ruolo. Ad esempio: `Qlik role for Amazon S3 integration.`

   3. Fare clic su Crea ruolo.

### Definizione di un modello di ricerca

Il campo di Modello di ricerca definisce i criteri di ricerca che Qlik deve utilizzare per selezionare e replicare i file. In questo campo è possibile inserire espressioni regolari, che possono essere utilizzate per includere uno o più file.

Quando si crea un modello di ricerca, tenere presente quanto segue:

* Quando si includono più file in una singola tabella, ogni file deve avere gli stessi valori per la riga di intestazione.
* I caratteri speciali come i punti (`.`) hanno un significato particolare nelle espressioni regolari. Per una corrispondenza esatta, sarà necessario ignorarli. Ad esempio: `.\`
* Qlik utilizza Python per le espressioni regolari, che possono variare nella sintassi rispetto ad altre varietà. Provare a utilizzare [PyRegex](http://www.pyregex.com/) per testare le espressioni prima di salvare l'integrazione.
* Sono supportati anche i modelli di ricerca Parquet (`.parquet`) e Arvo (`.arvo`).
* I modelli di ricerca devono tenere conto di come vengono aggiornati i dati nei file. Considerare i seguenti esempi:

| **Scenario** | File singolo, aggiornato periodicamente | File multipli, generati ogni giorno |
| --- | --- | --- |
| **Come vengono effettuati gli aggiornamenti** | Un singolo file JSONL viene aggiornato periodicamente con i dati nuovi e aggiornati dei clienti. | Ogni giorno viene creato un nuovo file CSV che contiene i dati nuovi e aggiornati dei clienti. I vecchi file non vengono mai aggiornati dopo la loro creazione. |
| **Nome file** | `customers.jsonl` | `customers-[STRING].csv`, dove `[STRING]` è una stringa univoca e casuale. |
| **Modello di ricerca** | Poiché ci sarà sempre un solo file, è possibile inserire il nome esatto del file nel proprio bucket S3:<br><br>```<br>customers\.jsonl<br>```<br><br>`customers\.jsonl`customers\.\.jsonl | Per garantire l'identificazione dei file nuovi e aggiornati, è necessario inserire un modello di ricerca che corrisponda a tutti i file che iniziano con `customers`, indipendentemente dalla stringa del nome file:<br><br>```<br>(customers-).*\.csv<br>```<br><br>`(customers-).*\.csv`((customers-)).\*\*\.\.csv |
| **Corrisponde a** | `customer.jsonl`, esattamente | <ul> <li><code>customers-reQDSwNG6U.csv</code> </li> <li><code>customers-xaPTXfN4tD.csv</code> </li> <li><code>customers-MBJMhCbNCp.csv</code> </li> <li>ecc.</li> </ul> |

### Requisiti per i file

| Intestazione della prima riga (solo i file CSV) | <ul> <li>Ogni file deve avere un'intestazione per la prima riga contenente i nomi delle colonne. La prima riga di ogni file è considerata la riga di intestazione e presenterà questi valori come colonne disponibili per la selezione.                        </li> <li>File con gli stessi valori di intestazione della prima riga, se si includono più file in una tabella. L'integrazione di <span>Amazon S3</span> consente di mappare più file su un'unica tabella di destinazione. I valori della riga dell'intestazione vengono utilizzati per determinare lo schema di una tabella. Per ottenere i migliori risultati, ogni file dovrebbe avere gli stessi valori di riga per l'intestazione.                            <p>Questa procedura è differente dalla configurazione di più tabelle. Per gli esempi, consultare <a href="https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Defining">Definizione del modello di ricerca</a>.</p></li> </ul> |
| --- | --- |
| Tipi di file | <ul> <li>CSV (<code>.csv</code>)</li> <li>Testo (<code>.txt</code>)</li> <li>JSONL (<code>.jsonl</code>)</li> <li>Parquet (<code>.parquet</code>)</li> <li>Arvo (<code>.arvo</code>)						<p>I file Avro devono includere uno schema per essere supportati.</p></li> </ul> |
| Tipi di compressione | Questi file devono essere compressi correttamente, altrimenti si verificheranno degli errori durante l'estrazione.<br><br><ul> <li>File gzip compressi (<code>.gz</code>)</li> </ul> |
| Delimitatori (solo per i file CSV) | <ul> <li>Virgola (<code>,</code>)</li> <li>TAB (<code>/t</code>)</li> <li>Barra verticale (<code>\|</code>)</li> <li>Punto e virgola (<code>;</code>)</li> </ul> |
| Codifica dei caratteri | UTF-8 (solo `.csv`, `.txt` e `.jsonl`)<br><br>Nota informaticaI file `.parquet` e `.arvo` sono file binari RAW. |

## Creazione della connessione

Per ulteriori informazioni, vedere [Connessione alle applicazioni SaaS](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm).

1. Inserire le proprietà di connessione richieste.

2. Fornire un nome per la connessione in Nome connessione.

3. Selezionare Apri metadati di connessione per definire i metadati della connessione al momento della creazione.

4. Fare clic su Crea.

Impostazioni di connessione

| Impostazione | Descrizione |
| --- | --- |
| Gateway dati | Selezionare un Gateway Data Movement se richiesto dal proprio caso di utilizzo.<br><br>Nota informatica<br><br>Questo campo non è disponibile con la sottoscrizione a Avvio Qlik Talend Cloud, poiché non supporta il Gateway Data Movement. Se si dispone di un altro livello di sottoscrizione e non si desidera utilizzare il Gateway Data Movement, selezionare Nessuno.<br><br>Per informazioni sui vantaggi del Gateway Data Movement e quando è richiesto, vedere [Qlik Data Gateway - Movimento dati](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm). |
| Data di inizio | Inserire la data, nel formato `MM/DD/YYYY`, a partire dalla quale i dati devono essere replicati dalla sorgente alla destinazione. |
| Bucket S3 | Nome del bucket S3. |
| ID account AWS | L'ID dell'account AWS dell'account in cui è disponibile il bucket.<br><br>È possibile trovare l'ID dell'account AWS nella Console di gestione AWS, alla voce Dettagli account. |
| Modello di ricerca | Inserire i file da includere nella tabella. È possibile inserire un singolo nome file o un'espressione regolare.<br><br>Esempio: `users\*.csv``products\*.jsonl`. |
| Directory | Limitare la ricerca in questo percorso di directory. Se definito, verranno ricercati solo i file in questa posizione e verranno selezionati quelli che corrispondono al modello di ricerca. Non è possibile utilizzare le espressioni regolari.<br><br>Esempio: csv-exports-folder o employee\_jsonl\_exports. |
| Configurazione della tabella<br><br>Configurare una tabella specificando i file che si desidera includere.<br><br>È possibile configurare più tabelle. |  |
| Nome tabella | Nome della tabella.<br><br>Ogni destinazione ha le proprie regole per il modo in cui è possibile denominare le tabelle. Ad esempio, i nomi delle tabelle Amazon Redshift non possono superare i 127 caratteri. |
| Chiave primaria | Inserire la chiave primaria per identificare le righe o i record univoci. Quando si inserisce più di un tasto, usare la virgola per separare i valori.<br><br><ul><li>Per i file CSV, inserire i campi dell'intestazione o i nomi delle colonne.</li><li>Per i file JSONL, inserire i nomi degli attributi o le chiavi degli oggetti.</li></ul><br><br>Esempio: id, name. |
| Specificare i campi datetime | Inserire i valori che devono apparire come datetime anziché come stringa nella tabella.<br><br>Esempio: created\_at, modified\_at. |
| delimitatore | Selezionare il delimitatore dall'elenco a discesa. |