

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

# Scarica i dati da un cluster Amazon Redshift tra più account su Amazon S3
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3"></a>

*Andrew Kamel, Amazon Web Services*

## Riepilogo
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-summary"></a>

Quando si testano le applicazioni, è utile disporre dei dati di produzione nell'ambiente di test. L'utilizzo dei dati di produzione può darvi una valutazione più accurata dell'applicazione che state sviluppando.

Questo modello estrae i dati da un cluster Amazon Redshift in un ambiente di produzione in un bucket Amazon Simple Storage Service (Amazon S3) in un ambiente di sviluppo su Amazon Web Services ().AWS

Il modello illustra la configurazione degli account DEV e PROD, inclusi i seguenti:
+ Risorse obbligatorie
+ AWS Identity and Access Management ruoli (IAM)
+ Modifiche di rete a sottoreti, gruppi di sicurezza e cloud privato virtuale (VPC) per supportare la connessione Amazon Redshift
+ Una AWS Lambda funzione di esempio con un runtime Python per testare l'architettura

Per concedere l'accesso al cluster Amazon Redshift, il pattern utilizza il pattern Gestione dei segreti AWS per memorizzare le credenziali pertinenti. Il vantaggio è avere tutte le informazioni necessarie per connettersi direttamente al cluster Amazon Redshift senza dover sapere dove si trova il cluster Amazon Redshift. Inoltre, puoi [monitorare l'uso del segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring.html).

Il segreto salvato in Secrets Manager include l'host del cluster Amazon Redshift, il nome del database, la porta e le credenziali pertinenti.

Per informazioni sulle considerazioni sulla sicurezza quando si utilizza questo modello, consulta la sezione [Best](#unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-best-practices) practice.

## Prerequisiti e limitazioni
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-prereqs"></a>

**Prerequisiti**
+ Un [cluster Amazon Redshift in esecuzione nell'account](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html) PROD
+ Un [bucket S3 creato](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) nell'account DEV
+ [Peering VPC](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) [tra gli account DEV e PROD, con tabelle di routing adattate di conseguenza](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html)
+ [Nomi host DNS e risoluzione DNS abilitati per entrambi i sistemi peer-to-peer](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) VPCs

**Limitazioni**
+ A seconda della quantità di dati da interrogare, la funzione Lambda potrebbe scadere.

  Se l'esecuzione richiede più tempo del timeout Lambda massimo (15 minuti), utilizza un approccio asincrono per il codice Lambda. L'esempio di codice per questo pattern utilizza la libreria [psycopg2](https://github.com/psycopg/psycopg2) per Python, che attualmente non supporta l'elaborazione asincrona.
+ Alcuni non sono disponibili in tutti. Servizi AWS Regioni AWS Per la disponibilità per regione, vedi [Servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta la pagina [Endpoint e quote del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

## Architecture
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-architecture"></a>

Il diagramma seguente mostra l'architettura di destinazione, con gli account DEV e PROD.

![\[Il VPC Lambda nell'account DEV e il VPC Amazon Redshift nell'account PROD.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/fa4d01df-483d-4454-9711-b391ebbe4629.png)


Il diagramma mostra il flusso di lavoro seguente:

1. La funzione Lambda nell'account DEV presuppone il ruolo IAM necessario per accedere alle credenziali Amazon Redshift in Secrets Manager nell'account PROD.

   La funzione Lambda recupera quindi il segreto del cluster Amazon Redshift.

1. La funzione Lambda nell'account DEV utilizza le informazioni per connettersi al cluster Amazon Redshift nell'account PROD tramite il peered. VPCs

   La funzione Lambda invia quindi un comando unload per interrogare il cluster Amazon Redshift nell'account PROD.

1. Il cluster Amazon Redshift nell'account PROD assume il ruolo IAM pertinente per accedere al bucket S3 nell'account DEV.

   Il cluster Amazon Redshift scarica i dati richiesti nel bucket S3 nell'account DEV.

**Interrogazione di dati da Amazon Redshift**

Il diagramma seguente mostra i ruoli utilizzati per recuperare le credenziali di Amazon Redshift e connettersi al cluster Amazon Redshift. Il flusso di lavoro viene avviato dalla funzione Lambda.

![\[Il processo in tre fasi per l'assunzione di ruoli tra account.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/ab25b72c-773c-4d58-9012-4a3755c181ff.png)


Il diagramma mostra il flusso di lavoro seguente:

1. L'account `CrossAccount-SM-Read-Role` nell'account DEV presuppone quello `SM-Read-Role` nell'account PROD.

1. Il `SM-Read-Role` ruolo utilizza la policy allegata per recuperare il segreto da Secrets Manager.

1. Le credenziali vengono utilizzate per accedere al cluster Amazon Redshift.

**Caricamento di dati su Amazon S3**

Il diagramma seguente mostra il processo di lettura-scrittura tra account per l'estrazione dei dati e il loro caricamento su Amazon S3. Il flusso di lavoro viene avviato dalla funzione Lambda. Il pattern [concatena i ruoli IAM in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html#authorizing-redshift-service-chaining-roles). Il comando unload proveniente dal cluster Amazon Redshift presuppone, e `CrossAccount-S3-Write-Role` quindi assume. `S3-Write-Role` Questo concatenamento di ruoli consente ad Amazon Redshift di accedere ad Amazon S3.

![\[I ruoli che ottengono le credenziali, accedono ad Amazon Redshift e caricano dati su Amazon S3.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/d2982fc6-1d12-4f9d-9493-a99ce691d693.png)


Il flusso di lavoro include i seguenti passaggi:

1. L'accesso `CrossAccount-SM-Read-Role` all'account DEV presuppone l'accesso `SM-Read-Role` all'account PROD.

1. `SM-Read-Role`recupera le credenziali di Amazon Redshift da Secrets Manager.

1. La funzione Lambda si connette al cluster Amazon Redshift e invia una query.

1. Il cluster Amazon Redshift presuppone il. `CrossAccount-S3-Write-Role`

1. `CrossAccount-S3-Write-Role`Si presuppone che sia presente `S3-Write-Role` nell'account DEV.

1. I risultati della query vengono scaricati nel bucket S3 nell'account DEV.

## Tools (Strumenti)
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-tools"></a>

**Servizi AWS**
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) è un servizio di data warehouse gestito su scala petabyte nel cloud AWS.
+ Con [Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) puoi sostituire le credenziali nel codice,incluse le password, con una chiamata API a Secrets Manager in modo da recuperare il segreto a livello di codice.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Repository di codice**

Il codice per questo pattern è disponibile nel repository GitHub [unload-redshift-to-s3-python](https://github.com/aws-samples/unload-redshift-to-s3-python/).

## Best practice
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-best-practices"></a>

**Dichiarazione di non responsabilità in materia di sicurezza**

Prima di implementare questa soluzione, prendete in considerazione i seguenti importanti consigli di sicurezza:
+ Ricorda che collegare gli account di sviluppo e produzione può aumentare l'ambito e ridurre il livello di sicurezza complessivo. Consigliamo di implementare questa soluzione solo temporaneamente, estraendo la parte di dati richiesta e quindi distruggendo immediatamente le risorse distribuite. Per distruggere le risorse, è necessario eliminare la funzione Lambda, rimuovere tutti i ruoli e le policy IAM creati per questa soluzione e revocare qualsiasi accesso alla rete concesso tra gli account.
+ Consulta i tuoi team di sicurezza e conformità prima di copiare qualsiasi dato dagli ambienti di produzione a quelli di sviluppo. Le informazioni di identificazione personale (PII), le informazioni sanitarie protette (PHI) e altri dati riservati o regolamentati in genere non devono essere copiati in questo modo. Copia solo le informazioni non riservate disponibili al pubblico (ad esempio, dati di stock pubblici provenienti dall'interfaccia di un negozio). Prendi in considerazione la tokenizzazione o l'anonimizzazione dei dati o la generazione di dati di test sintetici, invece di utilizzare i dati di produzione quando possibile. Uno dei [principi di AWS sicurezza](https://docs.aws.amazon.com/en_us/wellarchitected/2022-03-31/framework/sec-design.html) è tenere le persone lontane dai dati. In altre parole, gli sviluppatori non devono eseguire operazioni nell'account di produzione.
+ Limita l'accesso alla funzione Lambda nell'account di sviluppo perché può leggere i dati dal cluster Amazon Redshift nell'ambiente di produzione.
+ Per evitare di interrompere l'ambiente di produzione, implementa i seguenti consigli:
  + Utilizzate un account di sviluppo separato e dedicato per le attività di test e sviluppo.
  + Implementa rigorosi controlli di accesso alla rete e limita il traffico tra gli account solo a quanto necessario.
  + Monitora e verifica l'accesso all'ambiente di produzione e alle fonti di dati.
  + Implementa controlli di accesso con privilegi minimi per tutte le risorse e i servizi coinvolti.
  + Esamina e ruota regolarmente le credenziali, come i Gestione dei segreti AWS segreti e le chiavi di accesso ai ruoli IAM.
+ Consulta la seguente documentazione sulla sicurezza per i servizi utilizzati in questo articolo:
  + [AWS Lambda sicurezza](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)
  + [Sicurezza di Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/iam-redshift-user-mgmt.html)
  + [Sicurezza di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html)
  + [Gestione dei segreti AWS sicurezza](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security.html)
  + [Best practice sulla sicurezza IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)

La sicurezza è una priorità assoluta quando si accede ai dati e alle risorse di produzione. Segui sempre le migliori pratiche, implementa controlli di accesso con privilegi minimi e rivedi e aggiorna regolarmente le tue misure di sicurezza.

## Epiche
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-epics"></a>

### Interroga i dati da Amazon Redshift
<a name="query-data-from-amazon-redshift"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un segreto per il cluster Amazon Redshift. | Per creare il segreto per il cluster Amazon Redshift, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Crea un ruolo per accedere a Secrets Manager. | Per creare il ruolo, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 

### Caricamento dei dati su Amazon S3
<a name="upload-data-to-s3"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un ruolo per accedere al bucket S3. | Per creare il ruolo per l'accesso al bucket S3, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Crea il ruolo Amazon Redshift. | Per creare il ruolo Amazon Redshift, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 

### Distribuire la funzione Lambda
<a name="deploy-the-lam-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Distribuire la funzione Lambda. | Per implementare una funzione Lambda nel VPC peerizzato, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 

### Testa l'architettura
<a name="test-the-architecture"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Importa le risorse richieste. | Per importare le risorse richieste, esegui i seguenti comandi:<pre>import ast<br />import boto3<br />import psycopg2<br />import base64<br />from botocore.exceptions import ClientError</pre> | Sviluppatore di app | 
| Esegui la funzione di gestione Lambda. | La funzione Lambda utilizza AWS Security Token Service (AWS STS) per l'accesso tra account e la gestione temporanea delle credenziali. La funzione utilizza l'operazione AssumeRole API per assumere temporaneamente le autorizzazioni del ruolo IAM. `sm_read_role`Per eseguire la funzione Lambda, usa il seguente codice di esempio:<pre>def lambda_handler(event, context):<br />    sts_client = boto3.client('sts')<br /><br />    # Secrets Manager Configurations<br />    secret_name = "redshift_creds"<br />    sm_region = "eu-west-1"<br />    sm_read_role = "arn:aws:iam::PROD_ACCOUNT_NUMBER:role/SM-Read-Role"<br /><br />    # S3 Bucket Configurations<br />    s3_bucket_path = "s3://mybucket/"<br />    s3_bucket_region = "eu-west-1"<br />    s3_write_role = "arn:aws:iam::DEV_ACCOUNT_NUMBER:role/S3-Write-Role"<br /><br />    # Redshift Configurations<br />    sql_query = "select * from category"<br />    redshift_db = "dev"<br />    redshift_s3_write_role = "arn:aws:iam::PROD_ACCOUNT_NUMBER:role/CrossAccount-S3-Write-Role"<br /><br />    chained_s3_write_role = "%s,%s" % (redshift_s3_write_role, s3_write_role)<br /><br />    assumed_role_object = sts_client.assume_role(<br />        RoleArn=sm_read_role,<br />        RoleSessionName="CrossAccountRoleAssumption",<br />        ExternalId="YOUR_EXTERNAL_ID",<br />    )<br />    credentials = assumed_role_object['Credentials']<br /><br />    secret_dict = ast.literal_eval(get_secret(credentials, secret_name, sm_region))<br />    execute_query(secret_dict, sql_query, s3_bucket_path, chained_s3_write_role, s3_bucket_region, redshift_db)<br /><br />    return {<br />        'statusCode': 200<br />    }</pre> | Sviluppatore di app | 
| Scoprite il segreto. | Per ottenere il segreto di Amazon Redshift, usa il seguente codice di esempio:<pre>def get_secret(credentials, secret_name, sm_region):<br />    # Create a Secrets Manager client<br />    session = boto3.session.Session()<br />    sm_client = session.client(<br />        service_name='secretsmanager',<br />        aws_access_key_id=credentials['AccessKeyId'],<br />        aws_secret_access_key=credentials['SecretAccessKey'],<br />        aws_session_token=credentials['SessionToken'],<br />        region_name=sm_region<br />    )<br /><br />    try:<br />        get_secret_value_response = sm_client.get_secret_value(<br />            SecretId=secret_name<br />        )<br />    except ClientError as e:<br />        print(e)<br />        raise e<br />    else:<br />        if 'SecretString' in get_secret_value_response:<br />            return get_secret_value_response['SecretString']<br />        else:<br />            return base64.b64decode(get_secret_value_response['SecretBinary'])</pre> | Sviluppatore di app | 
| Esegui il comando unload. | Per scaricare i dati nel bucket S3, usa il seguente codice di esempio.<pre>def execute_query(secret_dict, sql_query, s3_bucket_path, chained_s3_write_role, s3_bucket_region, redshift_db):<br />    conn_string = "dbname='%s' port='%s' user='%s' password='%s' host='%s'" \<br />                  % (redshift_db,<br />                     secret_dict["port"],<br />                     secret_dict["username"],<br />                     secret_dict["password"],<br />                     secret_dict["host"])<br /><br />    con = psycopg2.connect(conn_string)<br /><br />    unload_command = "UNLOAD ('{}') TO '{}' IAM_ROLE '{}' DELIMITER '|' REGION '{}';" \<br />        .format(sql_query,<br />                s3_bucket_path + str(datetime.datetime.now()) + ".csv",<br />                chained_s3_write_role,<br />                s3_bucket_region)<br /><br />    # Opening a cursor and run query<br />    cur = con.cursor()<br />    cur.execute(unload_command)<br /><br />    print(cur.fetchone())<br />    cur.close()<br />    con.close()</pre> | Sviluppatore di app | 

### Eliminazione
<a name="clean-up"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Elimina la funzione Lambda. | Per evitare di incorrere in costi non pianificati, rimuovi le risorse e la connessione tra gli account DEV e PROD.Per rimuovere la funzione Lambda, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Rimuovi i ruoli e le politiche IAM. | Rimuovi i ruoli e le policy IAM dagli account DEV e PROD.Nell'account DEV, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html)Nell'account PROD, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Eliminare il segreto in Secrets Manager. | Per eliminare il segreto, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Rimuovi le regole del peering e dei gruppi di sicurezza VPC. | Per rimuovere le regole del peering e dei gruppi di sicurezza VPC, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Rimuovi i dati dal bucket S3. | Per rimuovere i dati da Amazon S3, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Pulisci AWS KMS le chiavi. | Se hai creato delle AWS KMS chiavi personalizzate per la crittografia, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 
| Controlla ed elimina i CloudWatch log di Amazon. | Per eliminare i CloudWatch log, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingegnere | 

## Risorse correlate
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-resources"></a>
+ [ CloudWatch Documentazione Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
+ [Documentazione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [Documentazione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Documentazione Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html)
+ [Documentazione Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ [Gestione dei segreti AWS documentazione](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS principi di sicurezza](https://docs.aws.amazon.com/en_us/wellarchitected/2022-03-31/framework/sec-design.html)

## Informazioni aggiuntive
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-additional"></a>

Dopo aver scaricato i dati da Amazon Redshift ad Amazon S3, puoi analizzarli utilizzando Amazon Athena.

[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) è un servizio di interrogazione per Big Data utile quando è necessario accedere a grandi volumi di dati. È possibile utilizzare Athena senza dover effettuare il provisioning di server o database. Athena supporta interrogazioni complesse ed è possibile eseguirla su oggetti diversi.

Come per la maggior parte Servizi AWS, il vantaggio principale dell'utilizzo di Athena è che offre una grande flessibilità nel modo in cui vengono eseguite le query senza complessità aggiuntiva. Quando usi Athena, puoi interrogare diversi tipi di dati, come CSV e JSON, in Amazon S3 senza modificare il tipo di dati. Puoi interrogare i dati da varie fonti, anche esterne. AWS Athena riduce la complessità perché non è necessario gestire i server. Athena legge i dati direttamente da Amazon S3 senza caricarli o modificarli prima di eseguire la query.