

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Descarga de datos de un clúster de Amazon Redshift entre las cuentas a Amazon S3
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3"></a>

*Andrew Kamel, Amazon Web Services*

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

Al probar aplicaciones, resulta útil disponer de datos de producción en el entorno de pruebas. El uso de los datos de producción puede proporcionarle una evaluación más precisa de la aplicación que desarrolla.

Este patrón extrae los datos de un clúster de Amazon Redshift en un entorno de producción para colocarlos en un bucket de Amazon Simple Storage Service (Amazon S3) en un entorno de desarrollo de Amazon Web Services (AWS).

El patrón sigue los pasos de configuración de las cuentas de DEV y PROD, lo que incluye lo siguiente:
+ Recursos necesarios de 
+ AWS Identity and Access Management Funciones (IAM)
+ Ajustes de red para subredes, grupos de seguridad y la nube privada virtual (VPC) para admitir la conexión de Amazon Redshift
+ Un ejemplo de AWS Lambda función con un tiempo de ejecución de Python para probar la arquitectura

Para conceder acceso al clúster de Amazon Redshift, el patrón se utiliza AWS Secrets Manager para almacenar las credenciales pertinentes. La ventaja es disponer de toda la información necesaria para conectarse de manera directa al clúster de Amazon Redshift sin necesidad de saber dónde reside el clúster de Amazon Redshift. Además, puede [supervisar el uso del secreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring.html).

El secreto guardado en Secrets Manager incluye el host del clúster de Amazon Redshift, el nombre de la base de datos, el puerto y las credenciales pertinentes.

Para obtener información acerca de las consideraciones de seguridad al utilizar este patrón, consulte la sección [Prácticas recomendadas](#unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-best-practices).

## Requisitos previos y limitaciones
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-prereqs"></a>

**Requisitos previos **
+ Un [clúster de Amazon Redshift que se ejecuta](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html) en la cuenta de PROD
+ Un [bucket de S3 creado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la cuenta de DEV.
+ [Emparejamiento de VPC](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) entre las cuentas de DEV y PROD, con [tablas de rutas ajustadas](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html) de manera adecuada.
+ [Los nombres de host de DNS y la resolución de DNS están habilitados para ambos sistemas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) interconectados VPCs

**Limitaciones**
+ Según la cantidad de datos que quiera consultar, es posible que se agote el tiempo de espera de la función de Lambda.

  Si la ejecución tarda más tiempo que el tiempo de espera máximo de Lambda (15 minutos), utilice un enfoque asíncrono para el código de Lambda. El ejemplo de código de este patrón utiliza la biblioteca [psycopg2](https://github.com/psycopg/psycopg2) para Python, que actualmente no admite el procesamiento asíncrono.
+ Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para conocer la disponibilidad de las regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

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

En el diagrama siguiente, se muestra la arquitectura de destino, con cuentas de DEV y PROD.

![La VPC de Lambda en la cuenta de DEV y la VPC de Amazon Redshift en la cuenta de PROD.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/fa4d01df-483d-4454-9711-b391ebbe4629.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. La función de Lambda de la cuenta de DEV asume el rol de IAM necesario para acceder a las credenciales de Amazon Redshift en Secrets Manager de la cuenta de PROD.

   A continuación, la función de Lambda recupera el secreto del clúster de Amazon Redshift.

1. La función Lambda de la cuenta DEV utiliza la información para conectarse al clúster de Amazon Redshift de la cuenta PROD a través del peered. VPCs

   A continuación, la función de Lambda envía un comando de descarga para consultar el clúster de Amazon Redshift en la cuenta de PROD.

1. El clúster de Amazon Redshift de la cuenta de PROD asume el rol de IAM correspondiente para acceder al bucket de S3 de la cuenta de DEV.

   El clúster de Amazon Redshift descarga los datos consultados en el bucket de S3 de la cuenta de DEV.

**Consulta de datos de Amazon Redshift**

En el diagrama siguiente se muestran los roles que se utilizan para recuperar las credenciales de Amazon Redshift y conectarse al clúster de Amazon Redshift. El flujo de trabajo lo inicia la función de Lambda.

![El proceso de tres pasos para asumir roles en las cuentas.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/ab25b72c-773c-4d58-9012-4a3755c181ff.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. El rol `CrossAccount-SM-Read-Role` en la cuenta de DEV asume que el rol `SM-Read-Role` se encuentra en la cuenta de PROD.

1. El rol `SM-Read-Role` utiliza la política adjunta para recuperar el secreto de Secrets Manager.

1. Las credenciales se utilizan para acceder al clúster de Amazon Redshift.

**Descarga de datos en Amazon S3**

En el diagrama siguiente se muestra el proceso de lectura y escritura entre cuentas para extraer los datos y cargarlo a Amazon S3. El flujo de trabajo lo inicia la función de Lambda. El patrón [encadena los roles de IAM en Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html#authorizing-redshift-service-chaining-roles). El comando unload que proviene del clúster de Amazon Redshift asume el rol `CrossAccount-S3-Write-Role` y, a continuación, asume el rol `S3-Write-Role`. Este encadenamiento de roles da a Amazon Redshift acceso a Amazon S3.

![Los roles que obtienen credenciales acceden a Amazon Redshift y cargan datos en Amazon S3.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5c83c617-3a85-4aea-a7a7-930f406d1cef/images/d2982fc6-1d12-4f9d-9493-a99ce691d693.png)


En el flujo de trabajo se incluyen los pasos siguientes:

1. El rol `CrossAccount-SM-Read-Role` en la cuenta de DEV asume que el rol `SM-Read-Role` se encuentra en la cuenta de PROD.

1. El rol `SM-Read-Role` recupera las credenciales de Amazon Redshift de Secrets Manager.

1. La función de Lambda se conecta al clúster de Amazon Redshift y envía una consulta.

1. El clúster de Amazon Redshift asume el rol `CrossAccount-S3-Write-Role`.

1. El rol `CrossAccount-S3-Write-Role` supone que el rol `S3-Write-Role` se encuentra en la cuenta de DEV.

1. Los resultados de la consulta se descargan en el bucket de S3 de la cuenta de DEV.

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

**Servicios de AWS**
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) le ayuda a crear y controlar claves criptográficas para proteger sus datos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) es un servicio de almacenamiento de datos administrado de varios petabytes en la nube de AWS.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) lo ayuda a reemplazar las credenciales codificadas en su código, incluidas contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [unload-redshift-to-s3-python](https://github.com/aws-samples/unload-redshift-to-s3-python/).

## Prácticas recomendadas
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-best-practices"></a>

**Exención de responsabilidad de seguridad**

Antes de implementar esta solución, tenga en cuenta las siguientes recomendaciones de seguridad importantes:
+ Recuerde que conectar las cuentas de desarrollo y producción puede aumentar el alcance y reducir la posición de seguridad general. Recomendamos implementar esta solución solo de manera temporal, extraer la parte de los datos necesaria y, a continuación, destruir de inmediato los recursos implementados. Para destruir los recursos, debe eliminar la función de Lambda, eliminar todos los roles y políticas de IAM que se crearon para esta solución y revocar el acceso a la red que se haya concedido entre las cuentas.
+ Consulte a sus equipos de seguridad y cumplimiento antes de copiar los datos de los entornos de producción a los de desarrollo. Por lo general, la información de identificación personal (PII), la información de salud protegida (PHI) y otros datos confidenciales o regulados no deben copiarse de esta manera. Copie solo la información no confidencial que esté disponible al público (por ejemplo, datos bursátiles públicos del frontend de una tienda). Considere la posibilidad de tokenizar o anonimizar los datos, o de generar datos de prueba sintéticos, en lugar de utilizar los datos de producción siempre que sea posible. Uno de los [principios de seguridad de AWS](https://docs.aws.amazon.com/en_us/wellarchitected/2022-03-31/framework/sec-design.html) es mantener a las personas alejadas de los datos. En otras palabras, los desarrolladores no deben realizar operaciones en la cuenta de producción.
+ Restrinja el acceso a la función de Lambda en la cuenta de desarrollo porque puede leer datos del clúster de Amazon Redshift en el entorno de producción.
+ Para evitar interrumpir el entorno de producción, implemente las recomendaciones siguientes:
  + Utilice una cuenta de desarrollo independiente y dedicada para las actividades de prueba y desarrollo.
  + Implemente controles estrictos de acceso a la red y limite el tráfico entre las cuentas a solo lo necesario.
  + Supervise y audite el acceso al entorno de producción y a los orígenes de datos.
  + Implemente controles de acceso con privilegios mínimos para todos los recursos y servicios implicados.
  + Revise y modifique periódicamente las credenciales, como AWS Secrets Manager los secretos y las claves de acceso a los roles de IAM.
+ Consulte la documentación de seguridad siguiente para ver los servicios que se utilizan en este artículo:
  + [AWS Lambda seguridad](https://docs.aws.amazon.com/lambda/latest/dg/lambda-security.html)
  + [Seguridad de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/iam-redshift-user-mgmt.html)
  + [Seguridad de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html)
  + [AWS Secrets Manager seguridad](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security.html)
  + [Prácticas recomendadas de seguridad de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)

La seguridad es una de las prioridades principales al acceder a los datos y recursos de producción. Siga siempre las prácticas recomendadas, implemente controles de acceso con privilegios mínimos y revise y actualice de manera periódica sus medidas de seguridad.

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

### Datos de consulta de Amazon Redshift
<a name="query-data-from-amazon-redshift"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un secreto para el clúster de Amazon Redshift. | Para crear el secreto para el clúster de Amazon Redshift, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Cree un rol para acceder a Secrets Manager. | Para crear el rol, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 

### Descargar datos en Amazon S3
<a name="upload-data-to-s3"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un rol para acceder al bucket de S3. | Para crear el rol y acceder al bucket de S3, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Cree el rol de Amazon Redshift. | Para crear el rol de Amazon Redshift, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 

### Implementación de la función de Lambda
<a name="deploy-the-lam-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la función de Lambda. | Para implementar una función de Lambda en la VPC emparejada, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 

### Prueba de la arquitectura
<a name="test-the-architecture"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Importe los recursos necesarios. | Para importar los recursos necesarios, ejecute los comandos siguientes:<pre>import ast<br />import boto3<br />import psycopg2<br />import base64<br />from botocore.exceptions import ClientError</pre> | Desarrollador de aplicaciones | 
| Ejecute la función de controlador de Lambda. | La función Lambda usa AWS Security Token Service (AWS STS) para el acceso entre cuentas y la administración temporal de credenciales. La función utiliza la operación AssumeRole API para asumir temporalmente los permisos de la `sm_read_role` función de IAM.<br />Para ejecutar la función de Lambda, utilice el código de ejemplo siguiente:<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> | Desarrollador de aplicaciones | 
| Obtenga el secreto. | Para obtener el secreto de Amazon Redshift, utilice el código de ejemplo siguiente:<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> | Desarrollador de aplicaciones | 
| Ejecute el comando unload. | Para descargar los datos en el bucket de S3 utilice el código de ejemplo siguiente:<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> | Desarrollador de aplicaciones | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine la función de Lambda. | Para evitar incurrir en costos imprevistos, elimine los recursos y la conexión entre las cuentas de DEV y PROD.<br />Para quitar la función de Lambda, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Elimine las políticas y los roles de IAM. | Elimine las políticas y los roles de IAM de las cuentas de DEV y PROD.<br />En la cuenta de DEV, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html)<br />En la cuenta de PROD, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Elimine el secreto en Secrets Manager. | Para eliminar el secreto, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Elimine las reglas de grupos de seguridad y emparejamiento de VPC. | Para eliminar las reglas de grupos de seguridad y emparejamiento de VPC, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Elimine los datos del bucket de S3. | Para eliminar los datos de Amazon S3, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Limpia AWS KMS las llaves. | Si ha creado alguna AWS KMS clave personalizada para el cifrado, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 
| Revisa y elimina los CloudWatch registros de Amazon. | Para eliminar los CloudWatch registros, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.html) | DevOps ingeniero | 

## Recursos relacionados
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-resources"></a>
+ [ CloudWatch Documentación de Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
+ [documentación de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [Documentación de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Documentación de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html)
+ [Documentación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ [AWS Secrets Manager documentación](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS principios de seguridad](https://docs.aws.amazon.com/en_us/wellarchitected/2022-03-31/framework/sec-design.html)

## Información adicional
<a name="unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3-additional"></a>

Después de descargar los datos de Amazon Redshift en Amazon S3, puede analizarlos mediante Amazon Athena.

[Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) es un servicio de consultas de macrodatos que resulta útil cuando es necesario acceder a volúmenes grandes de datos. Puede utilizar Athena sin tener que aprovisionar servidores ni bases de datos. Athena admite consultas complejas y puede ejecutarla en objetos distintos.

Como ocurre con la mayoría Servicios de AWS, la principal ventaja de usar Athena es que proporciona una gran flexibilidad en la forma de ejecutar las consultas sin la complejidad adicional. Cuando utiliza Athena, puede consultar distintos tipos de datos, como CSV y JSON, en Amazon S3 sin cambiar el tipo de datos. Puede consultar datos de diversas fuentes, incluso externas AWS. Athena reduce la complejidad porque no es necesario que administre los servidores. Athena lee los datos de manera directa de Amazon S3 sin cargarlos ni cambiarlos antes de ejecutar la consulta.