

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.

# Análisis
<a name="analytics-pattern-list"></a>

**Topics**
+ [Analizar los datos de Amazon Redshift en Microsoft SQL Server Analysis Services](analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services.md)
+ [Analice y visualice datos JSON anidados con Amazon Athena y Amazon Quick Sight](analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.md)
+ [Automatice la ingesta de datos desde AWS Data Exchange Amazon S3](automate-data-ingestion-from-aws-data-exchange-into-amazon-s3.md)
+ [Automatice la aplicación del cifrado en AWS Glue mediante una CloudFormation plantilla de AWS](automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.md)
+ [Cree una canalización de datos para incorporar, transformar y analizar los datos de Google Analytics con el kit de AWS DataOps desarrollo](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Cree una canalización de procesamiento de video con Amazon Kinesis Video Streams y AWS Fargate](build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate.md)
+ [Cree una canalización de servicios de ETL para cargar datos de forma incremental desde Amazon S3 a Amazon Redshift mediante AWS Glue](build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue.md)
+ [Cree una malla de datos empresarial con Amazon DataZone y AWS CDK AWS CloudFormation](build-enterprise-data-mesh-amazon-data-zone.md)
+ [Calcule el valor en riesgo (VaR) mediante los servicios de AWS](calculate-value-at-risk-var-by-using-aws-services.md)
+ [Configurar el acceso entre cuentas a un catálogo de datos de AWS Glue compartido con Amazon Athena](configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.md)
+ [Convierta la característica temporal NORMALIZE de Teradata en Amazon Redshift SQL](convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.md)
+ [Convierta la característica RESET WHEN de Teradata en Amazon Redshift SQL](convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.md)
+ [Implementar y administrar un lago de datos sin servidor en la nube de AWS mediante el uso de la infraestructura como código](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Imponga el etiquetado de los clústeres de Amazon EMR en el lanzamiento](enforce-tagging-of-amazon-emr-clusters-at-launch.md)
+ [Asegúrese de que el registro de Amazon EMR en Amazon S3 esté habilitado en el lanzamiento](ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch.md)
+ [Genere datos de prueba con un trabajo de AWS Glue y Python](generate-test-data-using-an-aws-glue-job-and-python.md)
+ [Capturar datos de IoT directamente en Amazon S3 de forma rentable con AWS IoT Greengrass](cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.md)
+ [Lanzar un trabajo de Spark en un clúster EMR transitorio mediante una función de Lambda](launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.md)
+ [Migración de cargas de trabajo de Apache Cassandra a Amazon Keyspaces mediante AWS Glue](migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.md)
+ [Migración de Oracle Business Intelligence 12c a la nube de AWS desde servidores en las instalaciones](migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.md)
+ [Migración de ELK Stack a Elastic Cloud en AWS](migrate-an-elk-stack-to-elastic-cloud-on-aws.md)
+ [Migre datos al Nube de AWS mediante Starburst](migrate-data-to-the-aws-cloud-by-using-starburst.md)
+ [Optimice la incorporación ETL del tamaño del archivo de entrada en AWS](optimize-the-etl-ingestion-of-input-file-size-on-aws.md)
+ [Organice una canalización de ETL con validación, transformación y particionamiento mediante AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Realizar análisis avanzados mediante Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Consulta de las tablas de Amazon DynamoDB con SQL mediante Amazon Athena](query-amazon-dynamodb-tables-sql-amazon-athena.md)
+ [Acceder, consultar y unirse a las tablas de Amazon DynamoDB con Athena](access-query-and-join-amazon-dynamodb-tables-using-athena.md)
+ [Configure la clasificación por idioma para los resultados de las consultas de Amazon Redshift mediante una UDF escalar de Python](set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf.md)
+ [Suscripción de una función de Lambda a las notificaciones de eventos de buckets de S3 en diferentes regiones de AWS](subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.md)
+ [Tres tipos de trabajos de AWS Glue ETL para convertir datos a Apache Parquet](three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.md)
+ [Visualice los registros de auditoría de Amazon Redshift con Amazon Athena y Amazon QuickSight](visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.md)
+ [Visualice los informes de credenciales de IAM para todas las cuentas de AWS mediante Amazon Quick Sight](visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.md)
+ [Más patrones](analytics-more-patterns-pattern-list.md)

# Analizar los datos de Amazon Redshift en Microsoft SQL Server Analysis Services
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services"></a>

*Sunil Vora, Amazon Web Services*

## Resumen
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-summary"></a>

Este patrón describe cómo conectar y analizar los datos de Amazon Redshift en Microsoft SQL Server Analysis Services, mediante el proveedor OLE DB de Intellisoft o el proveedor de CData ADO.NET para el acceso a la base de datos.

Amazon Redshift es un servicio de almacenamiento de datos administrado de varios petabytes en la nube. SQL Server Analysis Services es una herramienta de procesamiento analítico en línea (OLAP) que se puede utilizar para analizar datos de data mart y almacenamiento de datos como Amazon Redshift. Puede usar SQL Server Analysis Services para crear cubos OLAP a partir de sus datos para un análisis de datos rápido y avanzado.  

## Requisitos previos y limitaciones
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-prereqs"></a>

**Supuestos**
+ Este patrón describe cómo configurar SQL Server Analysis Services e Intellisoft OLE DB Provider o CData ADO.NET Provider para Amazon Redshift en una instancia de Amazon Elastic Compute Cloud (Amazon). EC2 Como alternativa, puede instalar ambas opciones en un host del centro de datos corporativo.

**Requisitos previos**
+ Una cuenta de AWS activa
+ Un clúster de Amazon Redshift con credenciales

## Arquitectura
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-architecture"></a>

**Pila de tecnología de origen**
+ Un clúster de Amazon Redshift

**Pila de tecnología de destino**
+ Microsoft SQL Server Analysis Services

**Arquitectura de origen y destino**

![\[Analizar los datos de Amazon Redshift en Microsoft SQL Server Analysis Services\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e444fec0-e00f-4cc6-acc6-4ffc61b654a0/images/6f29dab5-1ea7-452f-9b07-d1d23ae469a2.png)


## Tools (Herramientas)
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-tools"></a>
+ [Microsoft Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/)
+ [Intellisoft OLE DB Provider para Amazon Redshift (versión de prueba](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68)) [ CData o ADO.NET Provider para Amazon Redshift](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) (versión de prueba)

## Epics
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-epics"></a>

### Analizar tablas
<a name="analyze-tables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice las tablas y los datos que se van a importar. | Identifique las tablas de Amazon Redshift que se van a importar y sus tamaños. | Administrador de base de datos | 

### Configure la instancia y las herramientas de instalación EC2
<a name="set-up-ec2-instance-and-install-tools"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configura una EC2 instancia. | En su cuenta de AWS, cree una EC2 instancia en una subred pública o privada. | Administrador de sistemas | 
| Instale herramientas para acceder a la base de datos. | Descargue e instale el proveedor [OLE DB de Intellisoft para Amazon Redshift (CData o el proveedor](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) [de ADO.NET para Amazon](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst) Redshift).  | Administrador de sistemas | 
| Instale Visual Studio. | Descargue e instale [Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/).  | Administrador de sistemas | 
| Instalar extensiones. | Instale la extensión de **Microsoft Analysis Services Projects** en Visual Studio. | Administrador de sistemas | 
| Cree un proyecto. | Cree un nuevo proyecto de modelo tabular en Visual Studio para almacenar los datos de Amazon Redshift. En Visual Studio, seleccione la opción **Analysis Services Tabular Project** (Proyecto tabular de Analysis Services) al crear el proyecto. | Administrador de base de datos | 

### Cree un origen de datos y tablas de importación
<a name="create-data-source-and-import-tables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un origen de datos de Amazon Redshift. | Cree una fuente de datos de Amazon Redshift con el proveedor OLE DB de Intellisoft para Amazon Redshift (o el CData proveedor de ADO.NET para Amazon Redshift) y sus credenciales de Amazon Redshift. | Amazon Redshift, administrador de base de datos | 
| Importar tablas. | Seleccione e importe tablas y vistas de Amazon Redshift a su proyecto de SQL Server Analysis Services. | Amazon Redshift, administrador de base de datos | 

### Limpiar después de la migración
<a name="clean-up-after-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  EC2 Elimine la instancia. | Elimina la EC2 instancia que lanzaste anteriormente. | Administrador de sistemas  | 

## Recursos relacionados
<a name="analyze-amazon-redshift-data-in-microsoft-sql-server-analysis-services-resources"></a>
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/) (Documentación de AWS)
+ [Install SQL Server Analysis Services](https://docs.microsoft.com/en-us/analysis-services/instances/install-windows/install-analysis-services?view=asallproducts-allversions) (Instalar SQL Server Analysis Services) (documentación de Microsoft)
+ [Tabular Model Designer](https://docs.microsoft.com/en-us/analysis-services/tabular-models/tabular-model-designer-ssas?view=asallproducts-allversions) (Diseñador de modelos tabulares) (documentación de Microsoft)
+ [Overview of OLAP cubes for advanced analytics](https://docs.microsoft.com/en-us/system-center/scsm/olap-cubes-overview?view=sc-sm-2019) (Descripción general de los cubos OLAP para análisis avanzados) (documentación de Microsoft)
+ [Microsoft Visual Studio 2019 (Community Edition)](https://visualstudio.microsoft.com/vs/)
+ [Intellisoft OLE DB Provider for Amazon Redshift (Trial)](https://www.pgoledb.com/index.php?option=com_filecabinet&view=files&id=1&Itemid=68) 
+ [CData Proveedor de ADO.NET para Amazon Redshift (versión de prueba)](https://www.cdata.com/kb/tech/redshift-ado-ssas.rst)

# Analice y visualice datos JSON anidados con Amazon Athena y Amazon Quick Sight
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight"></a>

*Anoop Singh, Amazon Web Services*

## Resumen
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-summary"></a>

Este patrón explica cómo convertir una estructura de datos anidada con formato JSON en una vista tabular mediante Amazon Athena y, a continuación, visualizar los datos en Amazon Quick Sight.

Puede usar datos con formato JSON en fuentes de datos de sistemas operativos basadas en API para crear productos de datos. Estos datos también pueden ayudarle a comprender mejor a sus clientes y sus interacciones con sus productos, de forma que pueda personalizar las experiencias de los usuarios y predecir los resultados.

## Requisitos previos y limitaciones
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Un archivo JSON que representa una estructura de datos anidada (este patrón proporciona un archivo de ejemplo)

**Limitaciones:**
+ Las características de JSON se integran bien con las funciones orientadas a SQL existentes en Athena. Sin embargo, no son compatibles con ANSI SQL y se espera que el archivo JSON contenga cada registro en una línea separada. Puede que tenga que usar la propiedad `ignore.malformed.json` de Athena para indicar si los registros JSON con formato incorrecto deben convertirse en caracteres nulos o generar errores. Para más información, consulte [Prácticas recomendadas para leer datos JSON](https://docs.aws.amazon.com/athena/latest/ug/parsing-JSON.html) en la documentación de Athena.
+ Este patrón considera solo cantidades pequeñas y simples de datos con formato JSON. Si desea utilizar estos conceptos a escala, considere la posibilidad de aplicar la partición de datos y consolidar los datos en archivos más grandes.

## Arquitectura
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-architecture"></a>

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de este patrón. Las estructuras de datos anidadas se almacenan en Amazon Simple Storage Service (Amazon S3) en formato JSON. En Athena, los datos JSON se asignan a una estructura de datos de Athena. A continuación, se crea una vista para analizar los datos y visualizar la estructura de los datos en Quick Sight.

![\[Análisis y visualización de datos JSON anidados en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e9ad39a1-e0a4-4429-bdc0-594b68707761/images/474e8747-626f-468c-9c27-c007af79bf2d.png)


## Tools (Herramientas)
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-tools"></a>

**Servicios de AWS**
+ [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. Este patrón utiliza Amazon S3 para almacenar el archivo JSON.
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar. Este patrón utiliza Athena para consultar y transformar los datos de JSON. Con unas cuantas acciones en el Consola de administración de AWS, puede dirigir Athena a sus datos en Amazon S3 y usar SQL estándar para ejecutar consultas únicas. Athena no requiere un servidor, por lo que no hay que configurar ni administrar ninguna infraestructura y solo pagará por las consultas que ejecute. Athena se escala automáticamente y ejecuta las consultas en paralelo, de modo que los resultados se obtienen rápidamente, incluso con conjuntos de datos de gran tamaño y consultas complejas.     
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) es un servicio de inteligencia empresarial (BI) a escala de nube que le ayuda a visualizar, analizar y elaborar informes sobre sus datos en un único panel. Quick Sight le permite crear y publicar fácilmente paneles interactivos que incluyen información sobre el aprendizaje automático (ML). Puede acceder a los paneles desde cualquier dispositivo e integrarlos en sus aplicaciones, portales y sitios web.

**Código de ejemplo**

El siguiente archivo JSON proporciona una estructura de datos anidada que puede utilizar en este patrón.

```
{
  "symbol": "AAPL",
  "financials": [
    {
      "reportDate": "2017-03-31",
      "grossProfit": 20591000000,
      "costOfRevenue": 32305000000,
      "operatingRevenue": 52896000000,
      "totalRevenue": 52896000000,
      "operatingIncome": 14097000000,
      "netIncome": 11029000000,
      "researchAndDevelopment": 2776000000,
      "operatingExpense": 6494000000,
      "currentAssets": 101990000000,
      "totalAssets": 334532000000,
      "totalLiabilities": 200450000000,
      "currentCash": 15157000000,
      "currentDebt": 13991000000,
      "totalCash": 67101000000,
      "totalDebt": 98522000000,
      "shareholderEquity": 134082000000,
      "cashChange": -1214000000,
      "cashFlow": 12523000000,
      "operatingGainsLosses": null
    }
  ]
}
```

## Epics
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-epics"></a>

### Configuración de un bucket de S3
<a name="set-up-an-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | Para crear un bucket para almacenar el archivo JSON, inicie sesión en Consola de administración de AWS, abra la [consola Amazon S3](https://console.aws.amazon.com/s3/) y, a continuación, seleccione **Create bucket**. Para obtener más información, consulte [Crear un bucket ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la documentación de Amazon S3.  | Administrador de sistemas | 
| Añada los datos JSON anidados. | Cargue el archivo JSON en un bucket de S3. Para ver un archivo JSON de muestra, consulte la sección anterior. Para más instrucciones, consulte [Cargar objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) en la documentación de Amazon S3. | Administrador de sistemas | 

### Análisis de datos en Athena
<a name="analyze-data-in-ate"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una tabla para asignar los datos de JSON. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Para más información acerca de la creación de tablas, consulte la [documentación de Athena](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html). | Desarrollador | 
| Cree una vista para el análisis de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html)Para más información acerca de la creación de vistas, consulte la [documentación de Athena](https://docs.aws.amazon.com/athena/latest/ug/create-view.html). | Desarrollador | 
| Análisis y validación de los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Desarrollador | 

### Visualice los datos en Quick Sight
<a name="visualize-data-in-qsight"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Athena como fuente de datos en Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Administrador de sistemas | 
| Visualice los datos en Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight.html) | Analista de datos | 

## Recursos relacionados
<a name="analyze-and-visualize-nested-json-data-with-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Documentación de Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)
+ [Tutoriales de Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html)
+ [Cómo trabajar con JSON anidado](https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/) (entrada en el blog)

# Automatice la ingesta de datos desde AWS Data Exchange Amazon S3
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3"></a>

*Adnan Alvee y Manikanta Gona, Amazon Web Services*

## Resumen
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-summary"></a>

Este patrón proporciona una CloudFormation plantilla que le permite incorporar automáticamente datos de su lago de AWS Data Exchange datos en Amazon Simple Storage Service (Amazon S3). 

AWS Data Exchange es un servicio que facilita el intercambio seguro de conjuntos de datos basados en archivos en la nube de AWS. AWS Data Exchange los conjuntos de datos se basan en suscripciones. Como suscriptor, también puede acceder a las revisiones de los conjuntos de datos a medida que los proveedores publican nuevos datos. 

La CloudFormation plantilla crea un evento en Amazon CloudWatch Events y una AWS Lambda función. El evento está pendiente de cualquier actualización del conjunto de datos del suscriptor. Si hay una actualización, CloudWatch inicia una función Lambda, que copia los datos en el bucket de S3 que especifique. Cuando los datos se han copiado correctamente, Lambda le envía una notificación de Amazon Simple Notification Service (Amazon SNS).

## Requisitos previos y limitaciones
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Suscripción a un conjunto de datos en AWS Data Exchange

**Limitaciones**
+ La CloudFormation plantilla debe implementarse por separado para cada conjunto de datos suscrito en AWS Data Exchange.

## Arquitectura
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-architecture"></a>

**Pila de tecnología de destino**
+ AWS Lambda
+ Amazon S3
+ AWS Data Exchange
+ Amazon CloudWatch
+ Amazon SNS

**Arquitectura de destino**

![\[CloudWatch inicia una función Lambda para copiar datos al bucket de S3 y enviar una notificación a Amazon SNS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/059816dc-5a71-4942-9c7f-ac977072eebc/images/ec021620-47c1-4fb5-95a9-3b8985accc56.png)


**Automatización y escala**

Puede usar la CloudFormation plantilla varias veces para los conjuntos de datos que desee incorporar al lago de datos.

## Tools (Herramientas)
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-tools"></a>
+ [AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/what-is.html)facilita a AWS los clientes el intercambio seguro de conjuntos de datos basados en archivos en el. Nube de AWS Como suscriptor, puede encontrar y suscribirse a cientos de productos de proveedores de datos cualificados. Luego, puede descargar rápidamente el conjunto de datos o copiarlo en Amazon S3 para usarlo en una variedad de servicios de AWS análisis y aprendizaje automático. Cualquier persona que tenga una Cuenta de AWS puede AWS Data Exchange suscribirse.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) le permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. Solo se paga por el tiempo de computación que se consume, sin ningún cargo mientras el código no se ejecuta. Con Lambda puede ejecutar código para prácticamente cualquier tipo de aplicación o servicio de backend, sin ningún esfuerzo de administración. Lambda ejecuta el código en una infraestructura informática de alta disponibilidad y realiza todas las tareas de administración de los recursos informáticos, incluidos el mantenimiento del servidor y del sistema operativo, el aprovisionamiento de capacidad y el escalado automático, así como la supervisión del código y las funciones de registro.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) proporciona almacenamiento para Internet. Puede utilizar Amazon S3 para almacenar y recuperar cualquier cantidad de datos en cualquier momento y desde cualquier parte de la web.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) ofrece una transmisión casi en tiempo real de los eventos del sistema que describen los cambios en AWS los recursos. Con reglas sencillas que puede configurar rápidamente, puede hacer coincidir los eventos y dirigirlos a una o más funciones o transmisiones de destino. CloudWatch Los eventos se dan cuenta de los cambios operativos a medida que se producen. Responde a estos cambios operativos y toma medidas correctoras según sea necesario, enviando mensajes para responder al entorno, activando funciones, realizando cambios y captando información de estado. También puedes usar CloudWatch Events para programar acciones automatizadas que se inicien automáticamente en determinados momentos mediante expresiones **cron** o **rate**.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) permite a las aplicaciones, los usuarios finales y los dispositivos enviar y recibir al instante notificaciones desde la nube. Amazon SNS proporciona temas (canales de comunicación) para mensajes push de alto rendimiento. many-to-many Al utilizar los temas de Amazon SNS, los editores pueden distribuir mensajes a un gran número de suscriptores para su procesamiento en paralelo, incluidas las colas de Amazon Simple Queue Service (Amazon SQS), las funciones de Lambda y los webhooks. HTTP/S También puede utilizar Amazon SNS para enviar notificaciones a usuarios finales mediante notificaciones push para móvil, SMS y correo electrónico.

## Epics
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-epics"></a>

### Suscribirse a un conjunto de datos
<a name="subscribe-to-a-data-set"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Suscríbase a un conjunto de datos. | En la AWS Data Exchange consola, suscríbase a un conjunto de datos. Para obtener instrucciones, consulte [Suscribirse a productos de datos AWS Data Exchange en](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) la AWS documentación. | AWS general | 
| Tenga en cuenta los atributos del conjunto de datos. | Anote Región de AWS el ID y el ID de revisión del conjunto de datos. Lo necesitará para la CloudFormation plantilla en el siguiente paso. | AWS general | 

### Implemente la CloudFormation plantilla
<a name="deploy-the-cfn-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3 y una carpeta. | Si ya tiene un lago de datos en Amazon S3, cree una carpeta para almacenar los datos desde AWS Data Exchange los que se van a ingerir. Si va a implementar la plantilla con fines de prueba, cree un nuevo bucket de S3 y anote el nombre del bucket y el prefijo de la carpeta para el paso siguiente. | AWS general | 
| Implemente la CloudFormation plantilla. | Implemente la CloudFormation plantilla que se proporciona como adjunto a este patrón. Para obtener instrucciones, consulte la [documentación de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).Configure los siguientes parámetros para que se correspondan con su configuración Cuenta de AWS, su conjunto de datos y su bucket de S3: **conjunto** de **datos Región de AWS, ID** de conjunto de datos, **ID de revisión**, **nombre del bucket de S3** (por ejemplo`DOC-EXAMPLE-BUCKET`), **prefijo de carpeta** (por ejemplo,`myfolder/`) y **correo electrónico para notificaciones de SNS**. Puede establecer el parámetro **Nombre del conjunto de datos** con cualquier nombre. Al implementar la plantilla, ejecuta una función de Lambda para incorporar automáticamente el primer conjunto de datos disponible en el conjunto de datos. En adelante, la ingesta posterior se lleva a cabo automáticamente, a medida que llegan nuevos datos al conjunto de datos. | AWS general | 

## Recursos relacionados
<a name="automate-data-ingestion-from-aws-data-exchange-into-amazon-s3-resources"></a>
+ [Suscribirse a productos de datos el AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html) (documentación)AWS Data Exchange 

## Conexiones
<a name="attachments-059816dc-5a71-4942-9c7f-ac977072eebc"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/059816dc-5a71-4942-9c7f-ac977072eebc/attachments/attachment.zip)

# Automatice la aplicación del cifrado en AWS Glue mediante una CloudFormation plantilla de AWS
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template"></a>

*Diogo Guedes, Amazon Web Services*

## Resumen
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-summary"></a>

Este patrón muestra cómo configurar y automatizar la aplicación del cifrado en AWS Glue mediante una CloudFormation plantilla de AWS. La plantilla crea todas las configuraciones y los recursos necesarios para aplicar el cifrado. Estos recursos incluyen una configuración inicial, un control preventivo creado por una EventBridge regla de Amazon y una función de AWS Lambda.

## Requisitos previos y limitaciones
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Permisos para implementar la CloudFormation plantilla y sus recursos

**Limitaciones**

Este control de seguridad es regional. Debe implementar el control de seguridad en cada región de AWS en la que desee configurar la aplicación del cifrado en AWS Glue.

## Arquitectura
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-architecture"></a>

**Pila de tecnología de destino**
+ Amazon CloudWatch Logs (de AWS Lambda)
+  EventBridge Regla de Amazon
+  CloudFormation Pila de AWS
+ AWS CloudTrail
+ Rol y política gestionados de AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ Alias de AWS KMS
+ Función de AWS Lambda
+ Almacén de parámetros de AWS Systems Manager

**Arquitectura de destino**

En el siguiente diagrama, se muestra cómo automatizar la aplicación del cifrado en AWS Glue.

![\[El diagrama muestra cómo automatizar la aplicación del cifrado en AWS Glue mediante una CloudFormation plantilla.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/d50d0659-5592-44d0-8fcb-7a2983712640/images/272a7fb2-ecbc-41f7-a556-d555e4e39a59.png)


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

1. Una [CloudFormation plantilla](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml) crea todos los recursos, incluida la configuración inicial y el control de detección para la aplicación del cifrado en AWS Glue.

1. Una EventBridge regla detecta un cambio de estado en la configuración de cifrado.

1. Se invoca una función Lambda para la evaluación y el registro a través CloudWatch de los registros. En caso de detección de incumplimiento, se recupera el almacén de parámetros con un nombre de recurso de Amazon (ARN) como clave de AWS KMS. Se corrige el estado de cumplimiento del servicio con el cifrado activado.

**Automatización y escala**

Si utiliza [AWS Organizations](https://aws.amazon.com/organizations/), puede utilizar [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para implementar esta plantilla en varias cuentas en las que desee habilitar la aplicación del cifrado en AWS Glue.

## Tools (Herramientas)
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-tools"></a>
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) le CloudWatch ayuda a monitorizar las métricas de sus recursos de AWS y las aplicaciones que ejecuta en AWS en tiempo real.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, funciones de Lambda, puntos de conexión de invocación HTTP que utilizan destinos API o buses de eventos en otras cuentas de AWS.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.
+ [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) le CloudTrail ayuda a habilitar la auditoría operativa y de riesgos, la gobernanza y el cumplimiento de su cuenta de AWS.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) facilita poder crear y controlar claves criptográficas para proteger los 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.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) le permite administrar las aplicaciones y la infraestructura que se ejecutan en la nube de AWS. Simplifica la administración de aplicaciones y recursos, reduce el tiempo requerido para detectar y resolver problemas operativos y ayuda a utilizar y administrar los recursos de AWS a escala de manera segura.

**Código**

El código de este patrón está disponible en el repositorio GitHub [aws-custom-guardrail-eventcontrolado por componentes](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml).

## Prácticas recomendadas
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-best-practices"></a>

AWS Glue admite el cifrado de datos en reposo para la [creación de trabajos en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) y el [desarrollo de scripts mediante puntos de conexión de desarrollo.](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html)

Tenga en cuenta las siguientes prácticas recomendadas:
+ Configure trabajos ETL y puntos de conexión de desarrollo para utilizar claves de AWS KMS para escribir datos cifrados en reposo.
+ Cifre los metadatos almacenados en el [catálogo de datos de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) mediante claves que administra a través de KMS de AWS.
+ Además, puede usar las claves KMS de AWS para cifrar marcadores de trabajo y los registros que generan los [rastreadores](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) y los trabajos de ETL.

## Epics
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-epics"></a>

### Lanza la plantilla CloudFormation
<a name="launch-the-cloudformation-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la CloudFormation plantilla. | Descargue la `aws-custom-guardrail-event-driven.yaml` plantilla del GitHub [repositorio](https://github.com/aws-samples/aws-custom-guardrail-event-driven/blob/main/CloudFormation/aws-custom-guardrail-event-driven.yaml) y, a continuación, [impleméntela](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html). El estado `CREATE_COMPLETE` indica que su plantilla se implementó correctamente.La plantilla no requiere parámetros de entrada. | Arquitecto de la nube | 

### Compruebe la configuración de cifrado en AWS Glue
<a name="verify-the-encryption-settings-in-aws-glue"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe las configuraciones clave de AWS KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Arquitecto de la nube | 

### Pruebe la aplicación del cifrado
<a name="test-the-encryption-enforcement"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique la configuración de cifrado en CloudFormation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html) | Arquitecto de la nube | 
| Cambie la infraestructura aprovisionada a un estado que no cumpla con las normas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template.html)La barrera de protección detecta el estado no conforme en AWS Glue después de desactivar las casillas y, a continuación, aplica el cumplimiento corrigiendo automáticamente el error de configuración del cifrado. Como resultado, las casillas de verificación de cifrado deberían volver a seleccionarse después de actualizar la página. | Arquitecto de la nube | 

## Recursos relacionados
<a name="automate-encryption-enforcement-in-aws-glue-using-an-aws-cloudformation-template-resources"></a>
+ [Creación de una pila en la CloudFormation consola de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) ( CloudFormation documentación de AWS)
+ [Creación de una regla de CloudWatch eventos que se active en una llamada a la API de AWS mediante AWS CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) ( CloudWatch documentación de Amazon)
+ [Configuración del cifrado en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/set-up-encryption.html) (documentación de AWS Glue)

# Cree una canalización de datos para incorporar, transformar y analizar los datos de Google Analytics con el kit de AWS DataOps desarrollo
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit"></a>

*Anton Kukushkin y Rudy Puig, Amazon Web Services*

## Resumen
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-summary"></a>

Este patrón describe cómo crear una canalización de datos para incorporar, transformar y analizar los datos de Google Analytics mediante el kit de AWS DataOps desarrollo (AWS DDK) y otros. Servicios de AWS El AWS DDK es un marco de desarrollo de código abierto que te ayuda a crear flujos de trabajo de datos y una arquitectura de datos moderna. AWS Uno de los principales objetivos del AWS DDK es ahorrarle el tiempo y el esfuerzo que normalmente se dedican a tareas de canalización de datos que requieren mucha mano de obra, como la organización de las canalizaciones, la construcción de infraestructuras y la creación de las bases de esa infraestructura. DevOps Puede delegar estas tareas, que requieren mucha mano de obra, a AWS DDK para que pueda centrarse en escribir código y en otras actividades de gran valor.

## Requisitos previos y limitaciones
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Un AppFlow conector de Amazon para Google Analytics, [configurado](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html)
+ [Python](https://www.python.org/downloads/) y [pip](https://pip.pypa.io/en/stable/cli/pip_download/) (administrador de paquetes de Python)
+ Git, instalado y [configurado](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) y [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ AWS Cloud Development Kit (AWS CDK)[instalado](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)

**Versiones de producto**
+ Python 3.7 o posterior
+ pip 9.0.3 o posterior

## Arquitectura
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-architecture"></a>

**Pila de tecnología**
+ Amazon AppFlow
+ Amazon Athena
+ Amazon CloudWatch
+ Amazon EventBridge
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon Simple Queue Service (Amazon SQS)
+ AWS DataOps Kit de desarrollo (AWS DDK)
+ AWS Lambda

**Arquitectura de destino**

El siguiente diagrama muestra el proceso basado en eventos que incorpora, transforma y analiza los datos de Google Analytics.

![\[Ingiera, transforme y analice datos de Google Analytics con los servicios de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/edf40222-2867-4d4a-9153-ab29785b6662/images/8c38b472-153b-4497-982c-8efb97d2f7a5.png)


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

1. Una regla de eventos CloudWatch programados de Amazon invoca a Amazon AppFlow.

1. Amazon AppFlow ingiere los datos de Google Analytics en un bucket de S3.

1. Una vez que el bucket de S3 ingiere los datos, EventBridge se generan las notificaciones de eventos, que se capturan mediante una regla de CloudWatch eventos y, a continuación, se colocan en una cola de Amazon SQS.

1. Una función Lambda consume los eventos de la cola de Amazon SQS, lee los objetos S3 correspondientes, transforma los objetos al formato Apache Parquet, escribe los objetos transformados en el bucket de S3 y, a continuación, crea o actualiza la definición de la tabla. AWS Glue Data Catalog 

1. Una consulta de Athena realiza comparaciones con la tabla.

## Tools (Herramientas)
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-tools"></a>

**AWS herramientas**
+ [Amazon AppFlow](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html) es un servicio de integración totalmente gestionado que le permite intercambiar datos de forma segura entre aplicaciones de software como servicio (SaaS).
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) le CloudWatch ayuda a supervisar las métricas de sus AWS recursos y las aplicaciones en las que se ejecuta AWS en tiempo real.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos finales de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS
+ [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.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos.
+ [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.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)es un marco para definir la infraestructura de nube en el código y aprovisionarla mediante ella. CloudFormation
+ [AWS DataOps El kit de desarrollo (AWS DDK)](https://github.com/awslabs/aws-ddk) es un marco de desarrollo de código abierto que le ayuda a crear flujos de trabajo de datos y una arquitectura de datos moderna. AWS

**Código**

El código de este patrón está disponible en los repositorios GitHub [AWS DataOps Development Kit (AWS DDK)](https://github.com/awslabs/aws-ddk) y [Analyzing Google Analytics data with Amazon AppFlow, Amazon Athena AWS DataOps y Development](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python) Kit.

## Epics
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-epics"></a>

### Prepare el entorno
<a name="prepare-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el código fuente. | Para clonar el código fuente, ejecute el siguiente comando:<pre>git clone https://github.com/aws-samples/aws-ddk-examples.git</pre> | DevOps ingeniero | 
| Cree un entorno virtual. | Navegue hasta el directorio de código fuente y, a continuación, ejecute el siguiente comando para crear un entorno virtual:<pre>cd google-analytics-data-using-appflow/python && python3 -m venv .venv</pre> | DevOps ingeniero | 
| Instalar las dependencias. | Para activar el entorno virtual e instalar las dependencias, ejecute el siguiente comando:<pre>source .venv/bin/activate && pip install -r requirements.txt</pre> | DevOps ingeniero | 

### Implemente la aplicación que usa su proceso de datos
<a name="deploy-the-application-that-uses-your-data-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el entorno. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps ingeniero | 
| Implemente los datos. | Para implementar el proceso de datos, ejecute el comando `cdk deploy --profile [AWS_PROFILE]`. | DevOps ingeniero | 

### Cómo probar la implementación
<a name="test-the-deployment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide el estado de la pila. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.html) | DevOps ingeniero | 

## Resolución de problemas
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| La implementación falla durante la creación de un recurso `AWS::AppFlow::Flow` y recibe el siguiente error: `Connector Profile with name ga-connection does not exist` | Confirma que has creado un AppFlow conector de Amazon para Google Analytics y le has dado un nombre`ga-connection`.Para obtener instrucciones, consulta [Google Analytics](https://docs.aws.amazon.com/appflow/latest/userguide/google-analytics.html) en la AppFlow documentación de Amazon. | 

## Recursos relacionados
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-resources"></a>
+ [AWS DataOps Kit de desarrollo (AWS DDK) (GitHub)](https://github.com/awslabs/aws-ddk)
+ [AWS Ejemplos de DDK](https://github.com/aws-samples/aws-ddk-examples) () GitHub

## Información adicional
<a name="build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit-additional"></a>

AWS Las canalizaciones de datos del DDK se componen de una o varias etapas. Los siguientes ejemplos de código emplean `AppFlowIngestionStage` para incorporar datos de Google Analytics, `SqsToLambdaStage` para gestionar la transformación de datos y `AthenaSQLStage` para ejecutar la consulta de Athena.

En primer lugar, se crean las etapas de transformación e incorporación de datos, como se muestra en el siguiente ejemplo de código:

```
        appflow_stage = AppFlowIngestionStage(
            self,
            id="appflow-stage",
            flow_name=flow.flow_name,
        )
        sqs_lambda_stage = SqsToLambdaStage(
            self,
            id="lambda-stage",
            lambda_function_props={
                "code": Code.from_asset("./ddk_app/lambda_handlers"),
                "handler": "handler.lambda_handler",
                "layers": [
                    LayerVersion.from_layer_version_arn(
                        self,
                        id="layer",
                        layer_version_arn=f"arn:aws:lambda:{self.region}:336392948345:layer:AWSDataWrangler-Python39:1",
                    )
                ],
                "runtime": Runtime.PYTHON_3_9,
            },
        )
        # Grant lambda function S3 read & write permissions
        bucket.grant_read_write(sqs_lambda_stage.function)
        # Grant Glue database & table permissions
        sqs_lambda_stage.function.add_to_role_policy(
            self._get_glue_db_iam_policy(database_name=database.database_name)
        )
        athena_stage = AthenaSQLStage(
            self,
            id="athena-sql",
            query_string=[
                (
                    "SELECT year, month, day, device, count(user_count) as cnt "
                    f"FROM {database.database_name}.ga_sample "
                    "GROUP BY year, month, day, device "
                    "ORDER BY cnt DESC "
                    "LIMIT 10; "
                )
            ],
            output_location=Location(
                bucket_name=bucket.bucket_name, object_key="query-results/"
            ),
            additional_role_policy_statements=[
                self._get_glue_db_iam_policy(database_name=database.database_name)
            ],
        )
```

A continuación, la `DataPipeline` construcción se utiliza para «conectar» las etapas mediante EventBridge reglas, como se muestra en el siguiente ejemplo de código:

```
        (
            DataPipeline(self, id="ingestion-pipeline")
            .add_stage(
                stage=appflow_stage,
                override_rule=Rule(
                    self,
                    "schedule-rule",
                    schedule=Schedule.rate(Duration.hours(1)),
                    targets=appflow_stage.targets,
                ),
            )
            .add_stage(
                stage=sqs_lambda_stage,
                # By default, AppFlowIngestionStage stage emits an event after the flow run finishes successfully
                # Override rule below changes that behavior to call the the stage when data lands in the bucket instead
                override_rule=Rule(
                    self,
                    "s3-object-created-rule",
                    event_pattern=EventPattern(
                        source=["aws.s3"],
                        detail={
                            "bucket": {"name": [bucket.bucket_name]},
                            "object": {"key": [{"prefix": "ga-data"}]},
                        },
                        detail_type=["Object Created"],
                    ),
                    targets=sqs_lambda_stage.targets,
                ),
            )
            .add_stage(stage=athena_stage)
        )
```

Para ver más ejemplos de código, consulta el GitHub [repositorio Análisis de datos de Google Analytics con Amazon AppFlow, Amazon Athena y AWS DataOps Development Kit](https://github.com/aws-samples/aws-ddk-examples/tree/main/google-analytics-data-using-appflow/python).

# Cree una canalización de procesamiento de video con Amazon Kinesis Video Streams y AWS Fargate
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate"></a>

*Piotr Chotkowski y Pushparaju Thangavel, Amazon Web Services*

## Resumen
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-summary"></a>

Este patrón muestra cómo utilizar [Amazon Kinesis Video Streams](https://aws.amazon.com/kinesis/video-streams/) y [AWS Fargate](https://aws.amazon.com/fargate) para extraer fotogramas de una transmisión de video y almacenarlos como archivos de imagen en [Amazon Simple Storage Service (Amazon S3](https://aws.amazon.com/s3/)) para su posterior procesamiento. 

El patrón proporciona una aplicación de muestra en forma de proyecto Java Maven. Esta aplicación define la infraestructura de AWS mediante [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (AWS CDK). Tanto la lógica de procesamiento de fotogramas como las definiciones de infraestructura están escritas en el lenguaje de programación Java. Puede utilizar esta aplicación de muestra como base para desarrollar su propia canalización de procesamiento de video en tiempo real o para crear la etapa de preprocesamiento de video de una canalización con machine learning. 

## Requisitos previos y limitaciones
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Java SE Development Kit (JDK) 11, instalado
+ [Apache Maven](https://maven.apache.org/), instalado
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html), instalado
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) versión 2, instalada
+ [Docker](https://docs.docker.com/get-docker/) (necesario para compilar imágenes de Docker con el fin de utilizarlas en las definiciones de tareas de AWS Fargate), instalado

**Limitaciones**

Este patrón está concebido como prueba de concepto o como base para un desarrollo futuro. No se debe utilizar en su forma actual para implementaciones de producción.

**Versiones de producto**
+ Este patrón se ha probado con la versión 1.77.0 de AWS CDK (consulte las [versiones de AWS CDK](https://docs.aws.amazon.com/cdk/api/latest/versions.html))
+ JDK 11
+ CLI de AWS versión 2

## Arquitectura
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-architecture"></a>

**Pila de tecnología de destino**
+ Amazon Kinesis Video Streams
+ Tarea de AWS Fargate
+ Cola de Amazon Simple Queue Service (Amazon SQS)
+ Bucket S3 de Amazon

**Arquitectura de destino**

![\[Arquitectura para usar Kinesis Video Streams y Fargate para crear una canalización de procesamiento de video.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/images/a60e585f-27be-4dd6-897b-c38adf1d283f.png)


El usuario crea una transmisión de video de Kinesis, carga un video y envía un mensaje JSON que contiene detalles sobre la transmisión de video de Kinesis de entrada y el bucket de S3 de salida a una cola de SQS. AWS Fargate, que ejecuta la aplicación principal en un contenedor, extrae el mensaje de la cola de SQS y comienza a extraer los fotogramas. Cada fotograma se guarda en un archivo de imagen y se almacena en el bucket de S3 de destino.

**Automatizar y escalar**

La aplicación de muestra se puede escalar tanto horizontal como verticalmente dentro de una misma Región de AWS. El escalado horizontal se puede lograr aumentando el número de tareas de AWS Fargate implementadas que leen de la cola de SQS. El escalado vertical se puede lograr aumentando el número de subprocesos de división de fotogramas y publicación de imágenes en la aplicación. Estos ajustes se transfieren como variables de entorno a la aplicación en la definición del [QueueProcessingFargateService](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.QueueProcessingFargateService.html)recurso en la CDK de AWS. Gracias al diseño de implementación de la pila de AWS CDK, puede implementar esta aplicación en varias regiones y cuentas de AWS sin ningún esfuerzo adicional.

## Tools (Herramientas)
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-tools"></a>

**Herramientas**
+ [AWS CDK](https://aws.amazon.com/cdk/) es un marco de desarrollo de software para definir la infraestructura y los recursos de la nube mediante lenguajes de programación como Python TypeScript JavaScript, Java y C\$1/.Net.
+ [Amazon Kinesis Video Streams](https://aws.amazon.com/kinesis/video-streams/) es un servicio de AWS completamente administrado que puede utilizar para transmitir videos en directo desde dispositivos a la nube de AWS, o bien crear aplicaciones para el procesamiento de video en tiempo real o el análisis de video orientado a lotes.
+ [AWS Fargate](https://aws.amazon.com/fargate) es un motor de cómputo sin servidor para contenedores. Fargate elimina la necesidad de aprovisionar y administrar servidores y le permite centrarse en el desarrollo de sus aplicaciones.
+ [Amazon S3](https://aws.amazon.com/s3/): es un servicio de almacenamiento de objetos de AWS que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento.
+ [Amazon SQS](https://aws.amazon.com/sqs/) es un servicio de colas de mensajes completamente administrado que permite el desacople y el escalado de microservicios, sistemas distribuidos y aplicaciones sin servidor.

**Código**
+ Se adjunta un archivo .zip del proyecto de la aplicación de muestra (`frame-splitter-code.zip`).

## Epics
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-epics"></a>

### Implementación de la infraestructura
<a name="deploy-the-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Iniciar el daemon de Docker. | Inicie el daemon de Docker en su sistema local. El AWS CDK usa Docker para crear la imagen que se utiliza en la tarea de AWS Fargate. Debe ejecutar Docker antes de continuar con el siguiente paso. | Desarrollador, ingeniero DevOps  | 
| Compilar el proyecto. | Descargue la aplicación de muestra `frame-splitter-code` (adjunta) y extraiga su contenido en una carpeta de su máquina local. Antes de poder implementar la infraestructura, debe crear el proyecto [Java Maven](https://maven.apache.org/). En el símbolo del sistema, navegue hasta el directorio raíz del proyecto y compile el proyecto ejecutando el comando: <pre>mvn clean install</pre> | Desarrollador, DevOps ingeniero | 
| Arrancar el AWS CDK. | (Solo para usuarios iniciales de AWS CDK) Si es la primera vez que utiliza AWS CDK, es posible que tenga que que arrancar el entorno mediante la ejecución del comando AWS CLI:<pre>cdk bootstrap --profile "$AWS_PROFILE_NAME" </pre>donde `$AWS_PROFILE_NAME` contiene el nombre del perfil de AWS obtenido de sus credenciales de AWS. O bien, puede eliminar este parámetro para utilizar el perfil predeterminado. Para obtener más información, consulte la [documentación de AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | Desarrollador, DevOps ingeniero | 
| Implemente la pila de AWS CDK. | En este paso, debe crear los recursos de infraestructura necesarios (cola de SQS, bucket de S3, definición de tareas de AWS Fargate) en su cuenta de AWS, crear la imagen de Docker necesaria para la tarea de AWS Fargate e implementar la aplicación. En el símbolo del sistema, navegue hasta el directorio raíz del proyecto y ejecute el comando:<pre>cdk deploy --profile "$AWS_PROFILE_NAME" --all </pre>donde `$AWS_PROFILE_NAME` contiene el nombre del perfil de AWS obtenido de sus credenciales de AWS. O bien, puede eliminar este parámetro para utilizar el perfil predeterminado. Confirme la implementación. Anote los valores **QueueUrl**y **Bucket** del resultado de la implementación del CDK; los necesitará en pasos posteriores. El AWS CDK crea los activos, los carga en su cuenta de AWS y crea todos los recursos de infraestructura. Puede observar el proceso de creación de recursos en la [ CloudFormation consola de AWS](https://console.aws.amazon.com/cloudformation/). Para obtener más información, consulte la [ CloudFormation documentación de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) y la [documentación de AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#hello_world_tutorial_deploy). | Desarrollador, ingeniero DevOps  | 
| Cree una transmisión de video. | En este paso, creará una transmisión de video de Kinesis que servirá como transmisión de entrada para el procesamiento de video. Asegúrese de que ha instalado y configurado la AWS CLI. En la AWS CLI, ejecute:<pre>aws kinesisvideo --profile "$AWS_PROFILE_NAME" create-stream --stream-name "$STREAM_NAME" --data-retention-in-hours "24" </pre>donde `$AWS_PROFILE_NAME` contiene el nombre del perfil de AWS obtenido de sus credenciales de AWS (o elimine este parámetro para utilizar el perfil predeterminado) y `$STREAM_NAME` es cualquier nombre de transmisión válido. Como alternativa, puede crear una transmisión de video mediante la consola de Kinesis siguiendo los pasos indicados en la [documentación de Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/gs-createstream.html#gs-createstream-console). Anote el nombre de recurso de AWS (ARN) de la transmisión creada; lo necesitará más adelante. | Desarrollador, DevOps ingeniero | 

### Ejecute un ejemplo
<a name="run-an-example"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Subir el video a la transmisión. | En la carpeta del proyecto de la aplicación de muestra `frame-splitter-code`, abra el archivo `ProcessingTaskTest.java` en la carpeta `src/test/java/amazon/awscdk/examples/splitter`. Sustituya las variables `profileName`** **y `streamName`** **por los valores que utilizó en los pasos anteriores. Para cargar el video de muestra en la transmisión de video de Kinesis que ha creado en el paso anterior, ejecute:  <pre>amazon.awscdk.examples.splitter.ProcessingTaskTest#testExample test</pre>Como alternativa, puede cargar el video mediante uno de los métodos descritos en la [documentación de Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html). | Desarrollador, DevOps ingeniero | 
| Iniciar el procesamiento de video. | Ahora que ha cargado un video a la transmisión de video de Kinesis, puede empezar a procesarlo. Para iniciar la lógica de procesamiento, debe enviar un mensaje con detalles a la cola de SQS que el AWS CDK creó durante la implementación. Para enviar un mensaje utilizando la AWS CLI, ejecute: <pre>aws sqs --profile "$AWS_PROFILE_NAME" send-message --queue-url QUEUE_URL --message-body MESSAGE </pre>where `$AWS_PROFILE_NAME` contiene el nombre del perfil de AWS de sus credenciales de AWS (elimine este parámetro para usar el perfil predeterminado), `QUEUE_URL` es el **QueueUrl**valor de la salida de la CDK de AWS y `MESSAGE` es una cadena JSON con el siguiente formato: <pre>{ "streamARN": "STREAM_ARN", "bucket": "BUCKET_NAME", "s3Directory": "test-output" }</pre>donde `STREAM_ARN` es el ARN de la transmisión de video que ha creado en un paso anterior y `BUCKET_NAME` es el valor de **Bucket** obtenido de la salida de AWS CDK. Al enviar este mensaje, se inicia el procesamiento del video. Como alternativa, puede enviar un mensaje mediante la consola de Amazon SQS, tal y como se describe en la [documentación de Amazon SQS.](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-send-messages.html) | Desarrollador, ingeniero DevOps  | 
| Ver imágenes de los fotogramas de video. | Puede ver las imágenes resultantes en el bucket de salida de S3 `s3://BUCKET_NAME/test-output` donde `BUCKET_NAME` es el valor del **Bucket** obtenido de la salida de AWS CDK. | Desarrollador, DevOps ingeniero | 

## Recursos relacionados
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-resources"></a>
+ [Documentación de AWS SDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Referencia de la API de AWS CDK](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html)
+ [Taller introductorio sobre AWS CDK](https://cdkworkshop.com/)
+ [Documentación de Amazon Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/what-is-kinesis-video.html)
+ [Ejemplo: identificación de objetos en transmisiones de vídeo mediante SageMaker](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-sagemaker.html)
+ [Ejemplo: Análisis y renderización de fragmentos de Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html)
+ [Analice vídeos en directo a escala y en tiempo real con Amazon Kinesis Video Streams y SageMaker Amazon](https://aws.amazon.com/blogs/machine-learning/analyze-live-video-at-scale-in-real-time-using-amazon-kinesis-video-streams-and-amazon-sagemaker/) (entrada del blog AWS Machine Learning)
+ [Introducción de AWS Fargate](https://aws.amazon.com/fargate/getting-started/)

## Información adicional
<a name="build-a-video-processing-pipeline-by-using-amazon-kinesis-video-streams-and-aws-fargate-additional"></a>

**Cómo elegir un IDE**

Le recomendamos que utilice su IDE de Java favorito para crear y explorar este proyecto.  

**Limpieza**

Cuando termine de ejecutar este ejemplo, elimine todos los recursos implementados para evitar incurrir en costos de infraestructura de AWS adicionales. 

Para eliminar la infraestructura y la transmisión de video, utilice estos dos comandos en la AWS CLI:

```
cdk destroy --profile "$AWS_PROFILE_NAME" --all
```

```
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
```

Como alternativa, puede eliminar los recursos manualmente mediante la CloudFormation consola de AWS para eliminar la CloudFormation pila de AWS y la consola Kinesis para eliminar la transmisión de vídeo de Kinesis. Tenga en cuenta que `cdk destroy` no elimina el bucket de S3 de salida ni las imágenes de los repositorios de Amazon Elastic Container Registry (Amazon ECR) (`aws-cdk/assets`). Debe eliminarlos manualmente.

## Conexiones
<a name="attachments-9d1442c2-f3ee-47fd-8cce-90d9206ce4d4"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/9d1442c2-f3ee-47fd-8cce-90d9206ce4d4/attachments/attachment.zip)

# Cree una canalización de servicios de ETL para cargar datos de forma incremental desde Amazon S3 a Amazon Redshift mediante AWS Glue
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue"></a>

*Rohan Jamadagni y Arunabha Datta, Amazon Web Services*

## Resumen
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-summary"></a>

Este patrón proporciona orientación sobre cómo configurar Amazon Simple Storage Service (Amazon S3) para obtener un rendimiento óptimo del lago de datos y, a continuación, cargar los cambios incrementales de datos de Amazon S3 en Amazon Redshift mediante AWS Glue, realizando operaciones de extracción, transformación y carga (ETL). 

Los archivos de origen de Amazon S3 pueden tener distintos formatos, incluidos valores separados por comas (CSV), archivos XML y JSON. Este patrón describe cómo puede utilizar AWS Glue para convertir los archivos de origen en un formato optimizado para los costos y el rendimiento, como Apache Parquet. Puede consultar los archivos de Parquet directamente desde Amazon Athena y Amazon Redshift Spectrum. También puede cargar archivos Parquet en Amazon Redshift, agregarlos y compartir los datos agregados con los consumidores, o bien visualizar los datos mediante Amazon Quick Sight.

## Requisitos previos y limitaciones
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Un bucket de origen de S3 que tenga los privilegios adecuados y que contenga archivos CSV, XML o JSON.

**Supuestos**
+ Los archivos de origen CSV, XML o JSON ya están cargados en Amazon S3 y se puede acceder a ellos desde la cuenta en la que están configurados AWS Glue y Amazon Redshift.
+ Se siguen las prácticas recomendadas para cargar los archivos, dividirlos, comprimirlos y utilizar un manifiesto, tal como se describe en la [documentación de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html).
+ La estructura de los archivos de origen permanece inalterada.
+ El sistema de origen puede incorporar datos en Amazon S3 siguiendo la estructura de carpetas definida en Amazon S3.
+ El clúster de Amazon Redshift abarca una sola zona de disponibilidad. (Esta arquitectura es adecuada porque AWS Lambda, AWS Glue y Amazon Athena están sin servidor). Para una alta disponibilidad, se toman instantáneas de los clústeres con una frecuencia regular.

**Limitaciones**
+ Los formatos de archivo se limitan a los que [actualmente admite AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html).
+ No se admite la generación de informes posteriores en tiempo real.

## Arquitectura
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-architecture"></a>

**Pila de tecnología de origen**
+ Bucket de S3 con archivos CSV, XML o JSON

**Pila de tecnología de destino**
+ Lago de datos de S3 (con almacenamiento de archivos Parquet particionado)
+ Amazon Redshift

**Arquitectura de destino**

![\[Arquitectura para cargar cambios incrementales desde Amazon S3 a Amazon Redshift mediante AWS Glue.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/626aa365-e6e6-4874-a873-1c71adbe5306.png)


 

**Flujo de datos**

![\[Flujo de datos para cargar cambios incrementales desde Amazon S3 a Amazon Redshift mediante AWS Glue.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/29569e48-9f2d-4f48-bc59-1f33949d01ca.png)


## Tools (Herramientas)
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-tools"></a>
+ [Amazon S3](https://aws.amazon.com/s3/): Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos altamente escalable. Amazon S3 puede utilizarse para una amplia gama de soluciones de almacenamiento, incluidos sitios web, aplicaciones móviles, copias de seguridad y lagos de datos.
+ [AWS Lambda](https://aws.amazon.com/lambda/): AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores. AWS Lambda es un servicio basado en eventos; puede configurar el código para que se inicie automáticamente desde otros servicios de AWS.
+ [Amazon Redshift](https://aws.amazon.com/redshift/): Amazon Redshift es un servicio de almacenamiento de datos totalmente administrado de varios petabytes. Con Amazon Redshift, puede consultar petabytes de datos estructurados y semiestructurados en su almacenamiento de datos y su lago de datos mediante SQL estándar.
+ [AWS Glue](https://aws.amazon.com/glue/): AWS Glue es un servicio ETL totalmente gestionado que facilita la preparación y la carga de datos para su análisis. AWS Glue descubre sus datos y almacena los metadatos asociados (por ejemplo, definiciones de tablas y esquemas) en el catálogo de datos de AWS Glue. Sus datos catalogados se pueden buscar, consultar y están disponibles para ETL inmediatamente.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/): AWS Secrets Manager facilita la protección y la administración centralizada de los secretos necesarios para el acceso a aplicaciones o servicios. El servicio almacena credenciales de bases de datos, claves de API y otros datos confidenciales y elimina la necesidad de codificar de forma rígida la información confidencial en formato de texto sin formato. Secrets Manager también ofrece rotación de claves para satisfacer las necesidades de seguridad y cumplimiento. Incorpora una integración para Amazon Redshift, Amazon Relational Database Service (Amazon RDS) y Amazon DocumentDB. Puede almacenar y gestionar los secretos de forma centralizada mediante la consola Secrets Manager, la interfaz de línea de comandos (CLI) o la API Secrets Manager y. SDKs
+ [Amazon Athena ](https://aws.amazon.com/athena/): Amazon Athena es un servicio de consultas interactivo que facilita el análisis de datos que están almacenados en Amazon S3. Athena no tiene servidor y está integrada con AWS Glue, por lo que puede consultar directamente los datos catalogados con AWS Glue. Athena se escala con elasticidad para ofrecer un rendimiento de consultas interactivas.

## Epics
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-epics"></a>

### Cree los buckets y la estructura de carpetas de S3
<a name="create-the-s3-buckets-and-folder-structure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice los sistemas de origen para determinar la estructura y los atributos de los datos. | Realice esta tarea para cada origen de datos que contribuya al lago de datos de Amazon S3. | Ingeniero de datos | 
| Defina la estrategia de partición y acceso. | Esta estrategia debe basarse en la frecuencia de las capturas de datos, el procesamiento delta y las necesidades de consumo. Asegúrese de que los buckets de S3 no estén abiertos al público y de que el acceso esté controlado únicamente por políticas específicas basadas en los roles de servicio. Para obtener más información, consulte la [documentación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html). | Ingeniero de datos | 
| Cree buckets de S3 independientes para cada tipo de origen de datos y un bucket de S3 independiente por origen para los datos procesados (Parquet). | Cree un bucket independiente para cada origen y, a continuación, cree una estructura de carpetas que se base en la frecuencia de ingesta de datos del sistema de origen; por ejemplo, `s3://source-system-name/date/hour`. Para los archivos procesados (convertidos al formato Parquet), cree una estructura similar; por ejemplo, `s3://source-processed-bucket/date/hour`. Para más información sobre cómo crear buckets de S3, consulte la [documentación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html). | Ingeniero de datos | 

### Creación de un almacenamiento de datos en Amazon Redshift
<a name="create-a-data-warehouse-in-amazon-redshift"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lance el clúster de Amazon Redshift con los grupos de parámetros y la estrategia de mantenimiento y copia de seguridad adecuados. | Utilice el secreto de la base de datos de Secrets Manager como credenciales de usuario administrador al crear el clúster de Amazon Redshift. Para obtener información sobre la creación y el tamaño de un clúster de Amazon Redshift, consulte la [documentación de Amazon Redshift](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-redshift-cluster.html) y el documento técnico sobre el [tamaño del almacenamiento de datos en la nube](https://d1.awsstatic.com/whitepapers/Size-Cloud-Data-Warehouse-on-AWS.pdf). | Ingeniero de datos | 
| Cree y asocie un rol de servicio de IAM al clúster de Amazon Redshift. | El rol de servicio AWS Identity and Access Management (IAM) garantiza el acceso a Secrets Manager y a los buckets de S3 de origen. Para obtener más información, consulte la documentación de AWS sobre la [autorización](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html) y la [adición de un rol](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-add-role.html). | Ingeniero de datos | 
| Crear el esquema de la base de datos. | Siga las prácticas recomendadas de Amazon Redshift para el diseño de tablas. Según el caso de uso, elija las claves de clasificación y distribución adecuadas y la mejor codificación de compresión posible. Para conocer las prácticas recomendadas, consulte la [documentación de AWS](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html). | Ingeniero de datos | 
| Configure la administración de cargas de trabajo. | Configure las colas de administración de la carga de trabajo (WLM), la aceleración de consultas cortas (SQA) o el escalado simultáneo, según sus necesidades. Para obtener más información, consulte [Implementación de la administración de la carga de trabajo](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html) en la documentación de Amazon Redshift. | Ingeniero de datos | 

### Cree un secreto en Secrets Manager
<a name="create-a-secret-in-secrets-manager"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un nuevo secreto para almacenar las credenciales de inicio de sesión de Amazon Redshift en Secrets Manager. | Este secreto almacena las credenciales del usuario administrador y de los usuarios individuales del servicio de base de datos. Para obtener instrucciones, consulte la [documentación de Secretes Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html). Elija **Amazon Redshift Cluster** como tipo de secreto. Además, en la página de **rotación secreta**, active la rotación. Esto creará el usuario adecuado en el clúster de Amazon Redshift y cambiará las claves secretas a intervalos definidos. | Ingeniero de datos | 
| Cree una política de IAM para restringir el acceso a Secrets Manager. | Restrinja el acceso a Secrets Manager solo a los administradores de Amazon Redshift y a AWS Glue. | Ingeniero de datos | 

### Configuración de AWS Glue
<a name="configure-aws-glue"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| En el catálogo de datos de AWS Glue, añada una conexión para Amazon Redshift. | Para obtener instrucciones, consulte la [documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html). | Ingeniero de datos | 
| Cree y asocie un rol de servicio de IAM para que AWS Glue pueda acceder a los buckets de Secrets Manager, Amazon Redshift y S3. | Para obtener más información, consulte la [documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html). | Ingeniero de datos | 
| Defina el catálogo de datos de AWS Glue para el origen. | Este paso implica crear una base de datos y las tablas necesarias en el catálogo de datos de AWS Glue. Puede utilizar un rastreador para catalogar las tablas de la base de datos de AWS Glue o definirlas como tablas externas de Amazon Athena. También puede acceder a las tablas externas definidas en Athena a través del catálogo de datos de AWS Glue. Consulte la documentación de AWS para obtener más información sobre la [definición del catálogo de datos](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) y la [creación de una tabla externa](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html) en Athena. | Ingeniero de datos | 
| Cree un trabajo de AWS Glue para procesar los datos de origen. | El trabajo de AWS Glue puede consistir en un shell de Python o en PySpark estandarizar, deduplicar y limpiar los archivos de datos de origen. Para optimizar el rendimiento y evitar tener que consultar todo el bucket de código fuente de S3, particione el bucket de S3 por fecha, desglosado por año, mes, día y hora como predicado desplegable para el trabajo de AWS Glue. Para obtener más información, consulte la [documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html). Cargue los datos procesados y transformados en las particiones del bucket de S3 procesadas en formato Parquet. Puede consultar los archivos de Parquet en Athena. | Ingeniero de datos | 
| Cree un trabajo de AWS Glue para cargar datos en Amazon Redshift. | El trabajo de AWS Glue puede consistir en un shell de Python o PySpark cargar los datos alterándolos y, a continuación, realizar una actualización completa. Para obtener más información, consulte la [documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) y la sección de *información adicional*. | Ingeniero de datos | 
| (Opcional) Programe los trabajos de AWS Glue mediante activadores según sea necesario. | La carga de datos incremental se debe principalmente a un evento de Amazon S3 que hace que una función de AWS Lambda llame a la tarea de AWS Glue. Utilice la programación basada en activadores de AWS Glue para cualquier carga de datos que exija una programación basada en el tiempo en lugar de en los eventos. | Ingeniero de datos | 

### Crear una función de Lambda
<a name="create-a-lambda-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y adjunte un rol vinculado a un servicio de IAM para que AWS Lambda pueda acceder a los buckets de S3 y al trabajo de AWS Glue. | Cree un rol vinculado a un servicio de IAM para AWS Lambda con una política para leer los objetos y buckets de Amazon S3 y una política para acceder a la API de AWS Glue para iniciar un trabajo de AWS Glue. Para obtener más información, consulte el [Centro de conocimientos](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/). | Ingeniero de datos | 
| Cree una función de Lambda para ejecutar el trabajo de AWS Glue en función del evento Amazon S3 definido. | La función de Lambda debe iniciarse con la creación del archivo de manifiesto de Amazon S3. La función Lambda debe pasar la ubicación de la carpeta de Amazon S3 (por ejemplo, source\$1bucket/year/month/date/hour) al trabajo de AWS Glue como parámetro. El trabajo de AWS Glue utilizará este parámetro como predicado desplegable para optimizar el acceso a los archivos y el rendimiento del procesamiento de los trabajos. Para obtener más información, consulte la [documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html). | Ingeniero de datos | 
| Cree un evento de objeto PUT de Amazon S3 para detectar la creación de objetos y llame a la función de Lambda correspondiente. | El evento de objeto PUT de Amazon S3 debe iniciarse solo con la creación del archivo de manifiesto. El archivo de manifiesto controla la función de Lambda y la simultaneidad de las tareas de AWS Glue, y procesa la carga como un lote en lugar de procesar los archivos individuales que llegan a una partición específica del bucket de origen de S3. Para más información, consulte la [documentación de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html). | Ingeniero de datos | 

## Recursos relacionados
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-resources"></a>
+ [Documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html)
+ [Documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentación de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Amazon Athena](https://aws.amazon.com/athena/)
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)

## Información adicional
<a name="build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue-additional"></a>

**Enfoque detallado para una actualización automática y completa**

**Upsert**: se trata de conjuntos de datos que requieren un agrupado histórico, según el caso de uso empresarial. Siga uno de los enfoques descritos en [Actualización e inserción de datos nuevos](https://docs.aws.amazon.com/redshift/latest/dg/t_updating-inserting-using-staging-tables-.html) (documentación de Amazon Redshift) en función de las necesidades de su empresa.

**Actualización completa**: se trata de conjuntos de datos pequeños que no necesitan agrupados históricos. Siga uno de estos enfoques:

1. Trunque la tabla de Amazon Redshift.

1. Cargue la partición actual desde el área de montaje

o bien:

1. Cree una tabla temporal con datos de partición actuales.

1. Elimine la tabla de destino de Amazon Redshift.

1. Cambie el nombre de la tabla temporal a tabla de destino.

# Cree una malla de datos empresarial con Amazon DataZone y AWS CDK AWS CloudFormation
<a name="build-enterprise-data-mesh-amazon-data-zone"></a>

*Dhrubajyoti Mukherjee, Ravi Kumar, Weizhou Sun y Adjoa Taylor, Amazon Web Services*

## Resumen
<a name="build-enterprise-data-mesh-amazon-data-zone-summary"></a>

En Amazon Web Services (AWS), los clientes saben que los datos son la clave para acelerar la innovación y favorecer el valor empresarial de su empresa. Para administrar esta enorme cantidad de datos, puede adoptar una arquitectura descentralizada, como una malla de datos. Una arquitectura de malla de datos facilita la reflexión orientada al producto, que incluye una mentalidad que tiene en cuenta a los clientes, los objetivos y el mercado. La malla de datos también ayuda a establecer un modelo de gobierno federado que proporciona un acceso rápido y seguro a los datos.

En [Estrategias para crear en AWS una solución empresarial basada en una malla de datos](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html) se analiza cómo puede utilizar el marco estratégico de malla de datos para formular e implementar una estrategia de malla de datos para su organización. Al utilizar el marco estratégico de malla de datos, puede optimizar la organización de los equipos y sus interacciones para acelerar su transición a la malla de datos.

Este documento proporciona orientación sobre cómo crear una malla de datos empresarial con [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html). Amazon DataZone es un servicio de administración de datos para catalogar, descubrir, compartir y controlar los datos almacenados AWS en fuentes locales y de terceros. El patrón incluye artefactos de código que le ayudan a implementar la infraestructura de soluciones de datos basada en una malla de datos mediante y. AWS Cloud Development Kit (AWS CDK) AWS CloudFormation Este patrón está pensado para arquitectos e ingenieros de nube. DevOps 

Para más información sobre los objetivos de este patrón y el alcance de la solución, consulte la sección [Información adicional](#build-enterprise-data-mesh-amazon-data-zone-additional).

## Requisitos previos y limitaciones
<a name="build-enterprise-data-mesh-amazon-data-zone-prereqs"></a>

**Requisitos previos **
+ Un mínimo de dos activos Cuentas de AWS: uno para la cuenta de gobierno central y otro para la cuenta de miembro
+ AWS credenciales de administrador para la cuenta de gobierno central en su entorno de desarrollo
+ AWS Command Line Interface (AWS CLI) [instaladas](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) para administrarlas Servicios de AWS desde la línea de comandos
+ Node.js y Node Package Manager (npm) [instalados](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) para administrar aplicaciones AWS CDK 
+ AWS CDK El kit de herramientas [se instala](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) globalmente en su entorno de desarrollo mediante npm para sintetizar e implementar aplicaciones AWS CDK 

  ```
  npm install -g aws-cdk
  ```
+ La versión 3.12 de Python instalada en su entorno de desarrollo
+ TypeScript instalado en su entorno de desarrollo o instalado globalmente mediante el compilador npm:

  ```
  npm install -g typescript
  ```
+ Docker instalado en su entorno de desarrollo
+ Un sistema de control de versiones como Git para mantener el código fuente de la solución (recomendado)
+ Un entorno de desarrollo integrado (IDE) o un editor de texto compatible con Python y TypeScript (muy recomendable)

**Limitaciones**
+ La solución se ha probado solo en máquinas que ejecutan Linux o macOS.
+ En la versión actual, la solución no admite la integración de Amazon DataZone y es de forma AWS IAM Identity Center predeterminada. Sin embargo, puede modificar la configuración para admitir esta integración.

**Versiones de producto**
+ Python versión 3.12

## Arquitectura
<a name="build-enterprise-data-mesh-amazon-data-zone-architecture"></a>

En el siguiente diagrama se muestra un ejemplo de la arquitectura de referenciade la malla de datos. La arquitectura se basa en Amazon DataZone y utiliza Amazon Simple Storage Service (Amazon S3) AWS Glue Data Catalog y como fuentes de datos. El Servicios de AWS que utilices con Amazon DataZone en tu implementación de malla de datos puede variar en función de los requisitos de tu organización.

![\[Flujo de trabajo de cinco pasos para las cuentas de miembros y la cuenta de gobernanza central.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/79056dd9-e669-4302-afb8-21e3e0e8a136/images/eacbffca-4f25-405a-a7c8-f89d0fee5682.png)


1. En las cuentas de los productores, los datos sin procesar son aptos para el consumo en su forma actual o se transforman para su consumo mediante el uso AWS Glue. Los metadatos técnicos de los datos se almacenan en Amazon S3 y se evalúan mediante un rastreador de AWS Glue datos. La calidad de los datos se mide mediante [Calidad de datos de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html). La base de datos de origen del catálogo de datos está registrada como un activo en el DataZone catálogo de Amazon. El DataZone catálogo de Amazon se aloja en la cuenta de gobierno central mediante los trabajos de la fuente de DataZone datos de Amazon.

1. La cuenta de gobierno central aloja el DataZone dominio de Amazon y el portal de DataZone datos de Amazon. Los productores y consumidores Cuentas de AWS de datos están asociados al DataZone dominio Amazon. Los DataZone proyectos de Amazon de los productores y consumidores de datos se organizan en las correspondientes unidades de DataZone dominio de Amazon.

1. Los usuarios finales de los activos de datos inician sesión en el portal de DataZone datos de Amazon mediante sus credenciales AWS Identity and Access Management (de IAM) o mediante un inicio de sesión único (con integración a través del Centro de identidad de IAM). Buscan, filtran y visualizan la información de los activos (por ejemplo, información sobre la calidad de los datos o metadatos empresariales y técnicos) en el catálogo de DataZone datos de Amazon.

1. Cuando un usuario final encuentra el activo de datos que busca, utiliza la función de DataZone suscripción de Amazon para solicitar el acceso. El propietario de los datos del equipo de productores recibe una notificación y evalúa la solicitud de suscripción en el portal de DataZone datos de Amazon. El propietario de los datos aprueba o rechaza la solicitud de suscripción en función de su validez.

1. Una vez concedida y tramitada la solicitud de suscripción, el consumidor puede acceder al activo desde su cuenta para realizar las siguientes actividades:
   + Desarrollo de modelos de inteligencia artificial y aprendizaje automático mediante Amazon AI SageMaker 
   + Análisis e informes mediante Amazon Athena y Amazon Quick

## Tools (Herramientas)
<a name="build-enterprise-data-mesh-amazon-data-zone-tools"></a>

**Servicios de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en código.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el Cuentas de AWS mundo Regiones de AWS.
+ [Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/what-is-datazone.html) es un servicio de gestión de datos que te ayuda a catalogar, descubrir, compartir y gestionar los datos AWS almacenados en fuentes externas, locales y de terceros.
+ [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) es un servicio de inteligencia empresarial (BI) a escala de nube que le ayuda a visualizar, analizar y elaborar informes sobre sus datos en un único panel.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) es un servicio de aprendizaje automático (ML) gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático para luego implementarlos en un entorno hospedado listo para la producció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.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos.
+ [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**

La solución está disponible en el repositorio GitHub [data-mesh-datazone-cdk-cloudformation](https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation).

## Epics
<a name="build-enterprise-data-mesh-amazon-data-zone-epics"></a>

### Configuración del entorno
<a name="set-up-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | Para clonar el repositorio, ejecute el siguiente comando en el entorno de desarrollo local (Linux o macOS):<pre>git clone https://github.com/aws-samples/data-mesh-datazone-cdk-cloudformation</pre> | Arquitecto e ingeniero de nube DevOps  | 
| Cree el entorno. | Para crear el entorno virtual de Python, ejecute los siguientes comandos:<pre> python3 -m venv .venv<br /> source .venv/bin/activate<br /> pip install -r requirements.txt</pre> | Arquitecto de nube, DevOps ingeniero | 
| Arranque la cuentas. | Para iniciar la cuenta de gobierno central mediante AWS CDK, ejecute el siguiente comando:<pre>cdk bootstrap aws://<GOVERNANCE_ACCOUNT_ID>/<AWS_REGION></pre>Inicie sesión en Consola de administración de AWS, abra la consola de cuentas de gobierno central y obtenga el nombre de recurso de Amazon (ARN) de la función de AWS CDK ejecución. | Arquitecto e ingeniero de nube DevOps  | 
| Cree el archivo `DzDataMeshMemberStackSet.yaml`. | Para crear el archivo `DzDataMeshMemberStackSet.yaml`, vaya al directorio raíz del repositorio e inicie el siguiente script de bash:<pre>./lib/scripts/create_dz_data_mesh_member_stack_set.sh</pre> | Arquitecto de nube, DevOps ingeniero | 
| Confirme la creación de la plantilla. | Asegúrese de que el archivo CloudFormation de plantilla se haya creado en la `lib/cfn-templates/DzDataMeshMemberStackSet.yaml` ubicación. | Arquitecto e DevOps ingeniero de la nube | 

### Implementación de recursos en la cuenta de gobernanza central
<a name="deploy-resources-in-the-central-governance-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Modifique la configuración. | En el archivo `config/Config.ts`, modifique los siguientes parámetros:<pre>DZ_APPLICATION_NAME - Name of the application.<br />DZ_STAGE_NAME - Name of the stage. <br />DZ_DOMAIN_NAME - Name of the Amazon DataZone domain<br />DZ_DOMAIN_DESCRIPTION - Description of the Amazon DataZone domain<br />DZ_DOMAIN_TAG - Tag of the Amazon DataZone domain<br />DZ_ADMIN_PROJECT_NAME - Name of the Amazon DataZone project for administrators<br />DZ_ADMIN_PROJECT_DESCRIPTION - Description of the Amazon DataZone project for administrators<br />CDK_EXEC_ROLE_ARN - ARN of the cdk execution role<br />DZ_ADMIN_ROLE_ARN - ARN of the administrator role</pre>Mantenga los parámetros restantes vacíos. | Arquitecto de nube, DevOps ingeniero | 
| Actualiza la configuración del DataZone glosario de Amazon. | Para actualizar la configuración del DataZone glosario de Amazon en el `lib/utils/glossary_config.json` archivo, usa el siguiente ejemplo de configuración:<pre>{<br />    "GlossaryName": "PII Data",<br />    "GlossaryDescription": "If data source contains PII attributes",<br />    "GlossaryTerms": [{<br />            "Name": "Yes",<br />            "ShortDescription": "Yes",<br />            "LongDescription": "Yes Glossary Term"<br />        },<br />        {<br />            "Name": "No",<br />            "ShortDescription": "No",<br />            "LongDescription": "No Glossary Term"<br />        }<br />    ]<br />}</pre> | Arquitecto e ingeniero de nube DevOps  | 
| Actualiza la configuración del formulario de DataZone metadatos de Amazon. | Para actualizar la configuración del formulario de DataZone metadatos de Amazon en`lib/utils/metadata_form_config.json file`, utilice el siguiente ejemplo de configuración:<pre>{<br />    "FormName": "ScheduleDataRefresh",<br />    "FormDescription": "Form for data refresh schedule",<br />    "FormSmithyModel": "@amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\nstructure ScheduleDataRefresh {\n    @documentation(\"Schedule of Data Refresh\")\n    @required\n    @amazon.datazone#searchable\n    @amazon.datazone#displayname(defaultName: \"Data Refresh Schedule\")\n    data_refresh_schedule: String\n}"<br />}</pre> | Arquitecto e DevOps ingeniero de nube | 
| Exporte las AWS credenciales. | Para exportar AWS las credenciales a su entorno de desarrollo para el rol de IAM con permisos administrativos, utilice el siguiente formato:<pre>export AWS_ACCESS_KEY_ID=<br />export AWS_SECRET_ACCESS_KEY=<br />export AWS_SESSION_TOKEN=</pre> | Arquitecto de nube, ingeniero DevOps  | 
| Sintetice la plantilla. | Para sintetizar la CloudFormation plantilla, ejecute el siguiente comando:<pre>npx cdk synth</pre> | Arquitecto de nube, ingeniero DevOps  | 
| Implemente la solución. | Ejecute el siguiente comando para implementar la solución:<pre>npx cdk deploy --all</pre> | Arquitecto de nube, DevOps ingeniero | 

### Configuración de nuevas cuentas de miembros
<a name="configure-new-member-accounts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la plantilla. | Implemente la CloudFormation plantilla ubicada `lib/cfn-templates/DzDataMeshCfnStackSetExecutionRole.yaml` en la cuenta del miembro con los siguientes parámetros de entrada: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquitecto de nube, ingeniero DevOps  | 
| Actualice el ARNs. | Para actualizar la lista de funciones de CloudFormation StackSet ejecución ARNs de las cuentas de los miembros, utilice el siguiente código:<pre>DZ_MEMBER_STACK_SET_EXEC_ROLE_LIST  - List of Stack set execution role arns for the member accounts.</pre> | Arquitecto de nube, DevOps ingeniero | 
| Sintetice e implemente. | Para sintetizar la CloudFormation plantilla e implementar la solución, ejecute los siguientes comandos:<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Arquitecto de nube, ingeniero DevOps  | 
| Asocie la cuenta de miembro | Para asociar la cuenta de miembro a la cuenta de gobernanza central, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquitecto e DevOps ingeniero de nube | 
| Actualice los parámetros. | Para actualizar los parámetros específicos de la cuenta de miembro en el archivo de configuración de `config/Config.ts`, utilice el siguiente formato:<pre>export const DZ_MEMBER_ACCOUNT_CONFIG: memberAccountConfig = {<br />  '123456789012' : {<br />    PROJECT_NAME: 'TEST-PROJECT-123456789012',<br />    PROJECT_DESCRIPTION: 'TEST-PROJECT-123456789012',<br />    PROJECT_EMAIL: 'user@xyz.com'<br />  }<br />}</pre> | Arquitecto de nube, DevOps ingeniero | 
| Sintetice e implemente la plantilla. | Para sintetizar la CloudFormation plantilla e implementar la solución, ejecute los siguientes comandos:<pre>npx cdk synth<br />npx cdk deploy --all</pre> | Arquitecto de nube, ingeniero DevOps  | 
| Agregue cuentas de miembro. | Para crear y configurar cuentas de miembros adicionales en la solución de datos, repita los pasos anteriores para cada cuenta de miembro.Esta solución no diferencia entre productores y consumidores de datos. | Arquitecto de nube, DevOps ingeniero | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine la asociación de las cuentas de miembros. | Para desasociar las cuentas, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquitecto e DevOps ingeniero de nube | 
| Elimine las instancias de pila. | Para eliminar las instancias de la CloudFormation pila, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquitecto de nube, ingeniero DevOps  | 
| Elimine todos los recursos. | Para eliminar recursos, realice los siguientes pasos en su entorno de desarrollo local (Linux o macOS):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-enterprise-data-mesh-amazon-data-zone.html) | Arquitecto e ingeniero de nube DevOps  | 

## Recursos relacionados
<a name="build-enterprise-data-mesh-amazon-data-zone-resources"></a>
+ [Guía de DataZone inicio rápido de Amazon con datos AWS Glue](https://docs.aws.amazon.com/datazone/latest/userguide/quickstart-glue.html)
+ [Tutorial: Crea tu primera aplicación AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [¿Cómo empezar con CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html)
+ [Estrategias para crear una solución empresarial basada en una malla de datos en AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-data-mesh/introduction.html)

## Información adicional
<a name="build-enterprise-data-mesh-amazon-data-zone-additional"></a>

**Objetivos**

Con la implementación de este patrón logrará lo siguiente:
+ **Propiedad descentralizada de los datos**: traslade la propiedad de los datos de un equipo central a equipos que representen los sistemas de origen, las unidades de negocio o los casos de uso de su organización.
+ **Pensamiento dedicado al producto**: introduzca una mentalidad basada en el producto que incluya a los clientes, el mercado y otros factores cuando tenga que considerar los activos de datos de su organización.
+ **Gobernanza federada**: mejore las barreras de protección, los controles y la conformidad en todos los productos de datos de su organización.
+ **Soporte para varias cuentas y proyectos**: ayuda para el intercambio de datos y la colaboración eficientes y seguros entre las unidades de negocio o los proyectos de su organización.
+ **Supervisión y notificaciones centralizadas**: supervise los recursos en la nube de su red de datos mediante Amazon CloudWatch y notifique a los usuarios cuando se asocie una nueva cuenta de miembro.
+ **Escalabilidad y extensibilidad**: añada nuevos casos de uso a la malla de datos a medida que su organización evoluciona.

**Alcance de la solución**

Al utilizar esta solución, puede empezar poco a poco y ampliarla a medida que avanza en su transición hacia la malla de datos. A menudo, cuando una cuenta de miembro adopta la solución de datos, esta contiene configuraciones de cuenta específicas para la organización, el proyecto o la unidad de negocio. Esta solución se adapta a estas diversas Cuenta de AWS configuraciones al admitir las siguientes funciones:
+ AWS Glue Data Catalog como fuente de datos para Amazon DataZone
+ Gestión del dominio de DataZone datos de Amazon y el portal de datos relacionado
+ Administración de la adición de cuentas de miembros a la solución de datos basada en la malla de datos
+ Gestión de DataZone proyectos y entornos de Amazon
+ Gestión de los DataZone glosarios y formularios de metadatos de Amazon
+ Administración de roles de IAM que corresponden a los usuarios de la solución de datos basada en la malla de datos
+ Notificaciones para los usuarios de soluciones de datos basadas en la malla de datos
+ Supervisión de la infraestructura en la nube aprovisionada

  Esta solución utiliza AWS CDK y despliega CloudFormation la infraestructura de la nube. Suele CloudFormation hacer lo siguiente:
  + Definir e implementar los recursos de la nube con un nivel de abstracción inferior.
  + Implemente recursos en la nube desde Consola de administración de AWS. Al utilizar este enfoque, puede implementar la infraestructura sin un entorno de desarrollo.

  La solución de malla de datos se utiliza AWS CDK para definir los recursos a un nivel de abstracción superior. Como resultado, la solución proporciona un enfoque desacoplado, modular y escalable al elegir la herramienta adecuada para implementar los recursos de la nube.

**Pasos siguientes**

Puedes ponerte en contacto con AWS[expertos](https://aws.amazon.com/professional-services) para que te asesoren sobre cómo crear una malla de datos con Amazon DataZone.

La naturaleza modular de esta solución permite crear soluciones de administración de datos con diferentes arquitecturas, como tejidos y lagos de datos. Además, en función de los requisitos de su organización, puede extender la solución a otras fuentes de DataZone datos de Amazon.

# Calcule el valor en riesgo (VaR) mediante los servicios de AWS
<a name="calculate-value-at-risk-var-by-using-aws-services"></a>

*Sumon Samanta, Amazon Web Services*

## Resumen
<a name="calculate-value-at-risk-var-by-using-aws-services-summary"></a>

Este patrón describe cómo implementar un sistema de cálculo del valor en riesgo (VaR) mediante los servicios de AWS. En un entorno en las instalaciones, la mayoría de los sistemas VaR emplean una gran infraestructura dedicada y un software de programación de redes interno o comercial para ejecutar procesos por lotes. Este patrón presenta una arquitectura simple, fiable y escalable para gestionar el procesamiento de VaR en la nube de AWS. Crea una arquitectura sin servidor que utiliza Amazon Kinesis Data Streams como servicio de streaming, Amazon Simple Queue Service (Amazon SQS) como servicio de colas gestionado ElastiCache , Amazon como servicio de almacenamiento en caché y AWS Lambda para procesar los pedidos y calcular el riesgo.

El VaR es una medida estadística que usan los operadores y gestores de riesgos para estimar las posibles pérdidas de su cartera más allá de cierto nivel de confianza. La mayoría de los sistemas VaR implican la ejecución de una gran cantidad de cálculos matemáticos y estadísticos, así como el almacenamiento de los resultados. Estos cálculos requieren importantes recursos de cómputo, por lo que los procesos por lotes del VaR deben dividirse en conjuntos más pequeños de tareas de computación. Es posible dividir un lote grande en tareas más pequeñas, ya que estas tareas son, en su mayoría, independientes (es decir, los cálculos de una tarea no dependen de otras tareas). 

Otro requisito importante de una arquitectura de VaR es la escalabilidad de la computación. Este patrón emplea una arquitectura sin servidor que escala vertical u horizontalmente de manera automática en función de la carga de cálculo. Como la demanda de procesamiento por lotes o en línea es difícil de predecir, es necesario contar con un escalado dinámico para completar el proceso dentro del plazo impuesto por un acuerdo de nivel de servicio (SLA). Además, una arquitectura con costos optimizados debería poder reducir verticalmente la escala de cada recurso informático tan pronto como se completen las tareas de ese recurso. 

Los servicios de AWS son adecuados para los cálculos de VaR, ya que ofrecen procesamiento y almacenamiento escalables, servicios de análisis para el procesamiento con costos optimizados y diferentes tipos de programadores para ejecutar los flujos de trabajo de administración de riesgos. Además, usted solo paga por los recursos de almacenamiento y computación que usa en AWS.

## Requisitos previos y limitaciones
<a name="calculate-value-at-risk-var-by-using-aws-services-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Archivos de entrada, que dependen de las necesidades de su empresa. Un caso de uso típico incluye los siguientes archivos de entrada:
  + Archivo de datos de mercado (entrada al motor de cálculo del VaR)
  + Archivo de datos comerciales (a menos que los datos comerciales provengan de un flujo).
  + Archivo de datos de configuración (modelo y otros datos de configuración estáticos)
  + Archivos de modelo de motor de cálculo (bibliotecas cuantitativas)
  + Archivo de datos de serie temporal (para datos históricos, como el precio de las acciones de los últimos cinco años)
+ Si los datos de mercado u otra entrada provienen de un flujo, permisos de Amazon Kinesis Data Streams y Amazon Identity and Access Management (IAM) configurados para escribir en dicho flujo.  

Este patrón crea una arquitectura en la que los datos comerciales se escriben desde un sistema comercial a un flujo de datos de Kinesis. En lugar de usar un servicio de streaming, puede guardar sus datos comerciales en archivos de lotes pequeños, almacenarlos en un bucket de Amazon Simple Storage Service (Amazon S3) e invocar un evento para comenzar a procesar los datos.

**Limitaciones**
+ La secuenciación del flujo de datos de Kinesis está garantizada en cada partición, por lo que no se garantiza que las órdenes comerciales que se escriben en varias particiones se entreguen en el mismo orden que las operaciones de escritura.
+ Actualmente, el límite de tiempo de ejecución de AWS Lambda es de 15 minutos. (Para más información, consulte las [Preguntas frecuentes sobre Lambda](https://aws.amazon.com/lambda/faqs/))

## Arquitectura
<a name="calculate-value-at-risk-var-by-using-aws-services-architecture"></a>

**Arquitectura de destino**

El siguiente diagrama de arquitectura muestra los servicios y flujos de trabajo de AWS para el sistema de evaluación de riesgos.

![\[Sistema de cálculo de VaR con servicios de AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/eb615fc5-3cc3-445a-af2c-8446ee7b5276/images/c60aec03-ff6c-410c-8ee8-f1f6efa22cf7.png)


En el siguiente diagrama se ilustra lo siguiente:

1. Las operaciones se transmiten desde el sistema de gestión de pedidos.

1. La función de Lambda de *compensación de posiciones de tickets* procesa los pedidos y escribe los mensajes consolidados de cada ticker en una cola de riesgos de Amazon SQS.

1. La función Lambda *del motor de cálculo de riesgos* procesa los mensajes de Amazon SQS, realiza cálculos de riesgo y actualiza la información de pérdidas y ganancias (PnL) del VaR en la caché de riesgos de Amazon. ElastiCache

1. La función Lambda de *lectura de ElastiCache datos* recupera los resultados del riesgo y los almacena en una base de datos ElastiCache y en un bucket de S3.

Para obtener más información sobre estos servicios y pasos, consulte la sección *Épica*.

**Automatización y escala**

Puede implementar toda la arquitectura mediante el Kit de desarrollo en la nube de AWS (AWS CDK) o las CloudFormation plantillas de AWS. La arquitectura es compatible tanto con procesamiento por lotes como con procesamiento intradiario (en tiempo real).

El escalado está integrado en la arquitectura. A medida que se escriban más operaciones en el flujo de datos de Kinesis y estén pendientes de ser procesadas, es posible invocar funciones de Lambda adicionales para procesar esas operaciones y, a continuación, reducir verticalmente una vez finalizado el procesamiento. El procesamiento mediante varias colas de cálculo de riesgos de Amazon SQS también es una opción. Si es necesario mantener un orden o consolidación estrictos en todas las colas, el procesamiento no se puede paralelizar. Sin embargo, para un end-of-the-day lote o un minilote intradía, las funciones Lambda pueden procesar en paralelo y almacenar los resultados finales en él. ElastiCache 

## Tools (Herramientas)
<a name="calculate-value-at-risk-var-by-using-aws-services-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) es un motor de base de datos relacional compatible con MySQL y completamente administrado que le permite configurar, administrar y escalar implementaciones de MySQL. Este patrón emplea MySQL como ejemplo, pero puede usar cualquier sistema RDBMS para almacenar datos.
+ [Amazon](https://docs.aws.amazon.com/elasticache/) le ElastiCache ayuda a configurar, gestionar y escalar entornos de caché en memoria distribuidos en la nube de AWS.
+ [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) le ayuda a recopilar y procesar grandes secuencias de registros de datos en tiempo real.
+ [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 Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos.
+ [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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Código**

Este patrón proporciona un ejemplo de arquitectura para un sistema de VaR en la nube de AWS y describe cómo usar las funciones de Lambda para cálculos de VaR. Para crear las funciones de Lambda, consulte los ejemplos de código en la [documentación de Lambda.](https://docs.aws.amazon.com/lambda/latest/dg/service_code_examples.html) Para obtener ayuda, póngase en contacto con [AWS Professional Services](https://pages.awscloud.com/AWS-Professional-Services.html).

## Prácticas recomendadas
<a name="calculate-value-at-risk-var-by-using-aws-services-best-practices"></a>
+ Intente que cada tarea de cómputo del VaR sea lo más pequeña y ligera posible. Experimente con diferentes números de operaciones en cada tarea de cómputo para optimizar al máximo el tiempo y costo del cómputo.
+ Almacena objetos reutilizables en Amazon ElastiCache. Use un marco como Apache Arrow para reducir la serialización y la deserialización.
+ Tenga en cuenta la limitación de tiempo de Lambda. Si cree que sus tareas de computación pueden superar los 15 minutos, intente dividirlas en tareas más pequeñas para evitar el tiempo de espera de Lambda. Si no es posible, considere una solución de orquestación de contenedores con AWS Fargate, Amazon Elastic Container Service (Amazon ECS) y Amazon Elastic Kubernetes Service (Amazon EKS).

## Epics
<a name="calculate-value-at-risk-var-by-using-aws-services-epics"></a>

### Sistema de flujo comercial a riesgo
<a name="trade-flow-to-risk-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Comience a escribir operaciones.  | Las operaciones nuevas, liquidadas o parcialmente liquidadas se escriben desde el sistema de gestión de pedidos a un flujo de riesgo. Este patrón usa Amazon Kinesis como servicio de flujo gestionado. El hash del ticker de la orden comercial se usa para colocar las órdenes comerciales en varias particiones. | Amazon Kinesis | 

### Ejecute funciones de Lambda para el procesamiento de pedidos
<a name="run-lambda-functions-for-order-processing"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el procesamiento de riesgos con Lambda. | Ejecute una función de AWS Lambda para los nuevos pedidos. En función del número de órdenes comerciales pendientes, Lambda escalará automáticamente. Cada instancia de Lambda tiene uno o más pedidos y recupera la última posición de cada ticker de Amazon. ElastiCache (Puede utilizar un identificador CUSIP, un nombre de curva o un nombre de índice para otros productos derivados financieros como clave para almacenar y recuperar datos). ElasticCache *En ElastiCache, la posición total (cantidad) y el par clave-valor < indicador, posición *neta >,* donde la *posición neta* es el factor de escala, se actualizan una vez para cada indicador.*  | Amazon Kinesis, AWS Lambda, Amazon ElastiCache | 

### Escriba los mensajes de cada ticker en la cola
<a name="write-messages-for-each-ticker-into-queue"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Escriba mensajes consolidados en la cola de riesgos. | Escriba el mensaje en una cola. Este patrón emplea Amazon SQS como servicio de colas gestionado. Una sola instancia de Lambda puede recibir un minilote de órdenes comerciales en un momento dado, pero solo escribirá un mensaje para cada ticker en Amazon SQS. Se calcula un factor de escala: (*posición neta anterior* \$1 *posición actual*) / *posición neta anterior*. | Amazon SQS, AWS Lambda | 

### Invoque el motor de riesgo
<a name="invoke-risk-engine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie los cálculos de riesgo. | Se invoca la función de Lambda para el motor de riesgo Lambda. Cada posición es procesada por una sola función de Lambda. Sin embargo, con fines de optimización, cada función de Lambda puede procesar varios mensajes de Amazon SQS. | Amazon SQS, AWS Lambda | 

### Recupere los resultados de riesgo de la memoria caché
<a name="retrieve-risk-results-from-cache"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Recupere y actualice la caché de riesgos. | Lambda recupera la posición neta actual de cada ticker de. ElastiCache También recupera una matriz de ganancias y pérdidas (pNL) de VaR para cada ticker de. ElastiCache Si la matriz pNL ya existe, la función de Lambda actualiza la matriz y el VaR con una escala que proviene del mensaje de Amazon SQS escrito por la función de Lambda de compensación. Si la matriz pNL no está incluida ElasticCache, se calculan un pNL y un VaR nuevos utilizando datos simulados de series de precios de cotizadores. | Amazon SQS, AWS Lambda, Amazon ElastiCache | 

### Actualice los datos en Elastic Cache y almacénelos en la base de datos
<a name="update-data-in-elastic-cache-and-store-in-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Almacene los resultados de riesgo. | Una vez actualizados los números VaR y PnL ElastiCache, se invoca una nueva función Lambda cada cinco minutos. Esta función lee todos los datos almacenados ElastiCache y los almacena en una base de datos compatible con Aurora MySQL y en un bucket de S3. | AWS Lambda, Amazon ElastiCache | 

## Recursos relacionados
<a name="calculate-value-at-risk-var-by-using-aws-services-resources"></a>
+ [Marco VaR de Basel](https://www.bis.org/basel_framework/chapter/DIS/50.htm)

# Configurar el acceso entre cuentas a un catálogo de datos de AWS Glue compartido con Amazon Athena
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena"></a>

*Denis Avdonin, Amazon Web Services*

## Resumen
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-summary"></a>

Este patrón proporciona step-by-step instrucciones, incluidos ejemplos de políticas de AWS Identity and Access Management (IAM), para configurar el uso compartido entre cuentas de un conjunto de datos almacenado en un depósito de Amazon Simple Storage Service (Amazon S3) mediante el catálogo de datos de AWS Glue. Puede almacenar el conjunto de datos en un bucket de S3. Un rastreador de AWS Glue recopila los metadatos y los coloca en el catálogo de datos de AWS Glue. El bucket de S3 y el catálogo de datos de AWS Glue residen en una cuenta de AWS denominada *cuenta de datos*. Puede proporcionar acceso a las entidades principales de IAM en otra cuenta de AWS denominada *cuenta de consumidor*. Los usuarios pueden consultar los datos de la cuenta del consumidor mediante el motor de consultas sin servidor Amazon Athena.

## Requisitos previos y limitaciones
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-prereqs"></a>

**Requisitos previos **
+ Dos [cuentas de AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) activas
+ Un [bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en una de las cuentas de AWS
+ [Versión 2 del motor Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html#engine-versions-reference-0002)
+ Interfaz de línea de comandos de AWS (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) instalada [y](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurada (o [ CloudShellAWS](https://aws.amazon.com/cloudshell/) para ejecutar comandos de la CLI de AWS)

**Versiones de producto**

Este patrón solo funciona con la [versión 2 del motor Athena ](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html) y la [versión 3 del motor Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0003.html). Le recomendamos que actualice a la versión 3 del motor Athena. Si no puede actualizar de la versión 1 del motor Athena a la versión 3, siga el enfoque de [Acceso entre cuentas al catálogo de datos de AWS Glue con Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) en el blog sobre macrodatos de AWS.

## Arquitectura
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-architecture"></a>

**Pila de tecnología de destino**
+ Amazon Athena
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity y Access Management (IAM)
+ AWS Key Management Service (AWS KMS)

El siguiente diagrama muestra una arquitectura que usa permisos de IAM para compartir datos de un bucket de S3 en una cuenta de AWS (cuenta de datos) con otra cuenta de AWS (cuenta de consumidor) a través del catálogo de datos de AWS Glue.

![\[Uso compartido de un conjunto de datos de un bucket de S3 entre una cuenta de datos y una cuenta de consumidor mediante el catálogo de datos de AWS Glue.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4ee1d6f5-f8e1-4acb-8a9c-7601c832a87d/images/e73a2b47-c0b1-49f1-be66-9c563c11c9f9.png)


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

1. La política de bucket de S3 de la cuenta de datos concede permisos a un rol de IAM en la cuenta de consumidor y al rol de servicio de rastreador de AWS Glue en la cuenta de datos.

1. La clave de AWS KMS de la cuenta de datos concede permisos a un rol de IAM en la cuenta de consumidor y al rol de servicio de rastreador de AWS Glue en la cuenta de datos.

1. El rastreador AWS Glue de la cuenta de datos descubre el esquema de los datos que están almacenados en el bucket de S3.

1. La política de recursos del catálogo de datos de AWS Glue de la cuenta de datos otorga acceso al rol de IAM en la cuenta del consumidor.

1. Un usuario crea una referencia de catálogo con nombre en la cuenta del consumidor mediante un comando de la CLI de AWS.

1. Una política de IAM otorga a un rol de IAM en la cuenta del consumidor el acceso a los recursos de la cuenta de datos. La siguiente política de confianza del rol de IAM permite a los usuarios de la cuenta de consumidor asumir un rol de IAM.

1. Un usuario de la cuenta de consumidor asume el rol de IAM y accede a los objetos del catálogo de datos mediante consultas SQL.

1.  El motor sin servidor Athena ejecuta las consultas SQL.

**nota**  
[Las prácticas recomendadas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) recomiendan conceder permisos a un rol de IAM y utilizar la [federación de identidades](https://aws.amazon.com/identity/federation/).

## Tools (Herramientas)
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar.
+ [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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.
+ [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.

## Epics
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-epics"></a>

### Configura los permisos en la cuenta de datos
<a name="set-up-permissions-in-the-data-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Conceder acceso a los datos al bucket de S3. | [Cree una política de bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) basada en la siguiente plantilla y asígnela al bucket en el que se almacenan los datos.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                     "arn:aws:iam::<consumer account id>:role/<role name>",<br />                     "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                      "arn:aws:iam::<consumer account id>:role/<role name>",<br />                      "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action": "s3:ListBucket",<br />            "Resource": "arn:aws:s3:::data-bucket"<br />        }<br />    ]<br />}</pre>La política de bucket concede permisos a un rol de IAM en la cuenta de consumidor y al rol de servicio de rastreador de AWS Glue en la cuenta de datos. | Administrador de la nube | 
| (Si es necesario) Conceda acceso a la clave de cifrado de datos. | Si el bucket de S3 está cifrado con una clave de AWS KMS, conceda el permiso `kms:Decrypt` sobre la clave al rol de IAM en la cuenta del consumidor y al rol de servicio de rastreador de AWS Glue en la cuenta de datos.Actualice la [política de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) con la siguiente declaración:<pre>{<br />    "Effect": "Allow",<br />    "Principal": {<br />        "AWS": [<br />            "arn:aws:iam::<consumer account id>:role/<role name>",<br />            "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />        ]<br />    },<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrador de la nube | 
| Conceda al rastreador acceso a los datos. | Adjunte la siguiente política de IAM al rol de servicio del rastreador:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:ListBucket",<br />            "Resource": "arn:aws:s3:::data-bucket"<br />        }<br />    ]<br />} </pre> | Administrador de la nube | 
| (Si es necesario) Conceda acceso al rastreador a la clave de cifrado de datos. | Si el bucket de S3 está cifrado mediante una clave de AWS KMS, conceda el permiso `kms:Decrypt` sobre la clave al rol de servicio de rastreador adjuntándole la siguiente política:<pre>{<br />    "Effect": "Allow",<br />    "Action": "kms:Decrypt",<br />    "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrador de la nube | 
| Conceda el rol de IAM en la cuenta del consumidor y al rastreador el acceso al catálogo de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena.html)<pre>{<br />    "Version" : "2012-10-17",<br />    "Statement" : [ <br />        {<br />            "Effect" : "Allow",<br />            "Principal" : {<br />                "AWS" : [<br />                     "arn:aws:iam::<consumer account id>:role/<role name>",<br />                    "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler"<br />                ]<br />            },<br />            "Action" : "glue:*",<br />            "Resource" : [ <br />                 "arn:aws:glue:<region>:<data account id>:catalog", <br />                 "arn:aws:glue:<region>:<data account id>:database/*", <br />                 "arn:aws:glue:<region>:<data account id>:table/*" <br />            ]<br />        } <br />    ]<br />}</pre>Esta política permite realizar todas las acciones de AWS Glue en todas las bases de datos y tablas de la cuenta de datos. Puede personalizar la política para conceder únicamente los permisos necesarios a las entidades principales consumidoras. Por ejemplo, puede proporcionar acceso de solo lectura a tablas o vistas específicas de una base de datos. | Administrador de la nube | 

### Acceda a los datos de la cuenta de consumidor
<a name="access-data-from-the-consumer-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una referencia con nombre para el catálogo de datos. | Para crear una referencia de catálogo de datos con nombre, utilice [CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html)o una AWS CLI instalada localmente para ejecutar el siguiente comando:<pre>aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id></pre> | Administrador de la nube | 
| Conceder acceso a los datos al rol de IAM en la cuenta del consumidor. | Adjunte la siguiente política al rol de IAM en la cuenta de consumidor para conceder al rol acceso entre cuentas a los datos:<pre>{<br />     "Version": "2012-10-17",		 	 	 <br />     "Statement": [<br />        {<br />             "Effect": "Allow",<br />             "Action": "s3:GetObject",<br />             "Resource": "arn:aws:s3:::data-bucket/*"<br />        },<br />        {<br />             "Effect": "Allow",<br />             "Action": "s3:ListBucket",<br />             "Resource": "arn:aws:s3:::data-bucket"<br />        },<br />        {<br />            "Effect": "Allow",<br />            "Action": "glue:*",<br />            "Resource": [<br />                 "arn:aws:glue:<region>:<data account id>:catalog",<br />                 "arn:aws:glue:<region>:<data account id>:database/*",<br />                 "arn:aws:glue:<region>:<data account id>:table/*"<br />            ]<br />        }<br />    ]<br />}</pre>A continuación, utilice la siguiente plantilla para especificar qué usuarios pueden aceptar el rol de IAM en su política de confianza:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />       {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre>Por último, conceda permisos a los usuarios para que asuman el rol de IAM adjuntando la misma política al grupo de usuarios al que pertenecen. | Administrador de la nube | 
| (Si es necesario) Conceda acceso a la clave de cifrado de datos al rol de IAM en la cuenta del consumidor. | Si el bucket de S3 está cifrado mediante una clave de AWS KMS, conceda el permiso `kms:Decrypt` sobre la clave al rol de IAM en la cuenta de consumidor adjuntándole la siguiente política:<pre>{<br />     "Effect": "Allow",<br />     "Action": "kms:Decrypt",<br />     "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>"<br />}</pre> | Administrador de la nube | 
| Cambie al rol de IAM en la cuenta del consumidor para acceder a los datos. | [Cambie al rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) en la cuenta del consumidor para acceder a los datos. | Consumidor de datos | 
| Acceda a los datos. | Realizar consultas mediante Athena. Por ejemplo, abra el editor de consultas de Athena y ejecute la siguiente consulta:<pre>SELECT *<br />  FROM <shared catalog name>.<database name>.<table name></pre>En lugar de utilizar una referencia de catálogo con nombre, también puede hacer referencia al catálogo por su nombre de recurso de Amazon (ARN).Si utiliza una referencia de catálogo dinámica en una consulta o vista, ponga la referencia entre comillas dobles escapadas (\$1"). Por ejemplo:<pre>SELECT * <br />  FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name></pre>Para obtener más información, consulte [Acceso entre cuentas a los catálogos de datos de AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) en la Guía del usuario de Amazon Athena. | Consumidor de datos | 

## Recursos relacionados
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-resources"></a>
+ [Acceso entre cuentas a los catálogos de datos de AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html) (documentación de Athena)
+ [(AWS CLI) create-data-catalog](https://docs.aws.amazon.com/cli/latest/reference/athena/create-data-catalog.html) (Referencia de comandos de la CLI de AWS)
+ [Acceso entre cuentas al catálogo de datos de AWS Glue con Amazon Athena](https://aws.amazon.com/blogs/big-data/cross-account-aws-glue-data-catalog-access-with-amazon-athena/) (blog sobre macrodatos de AWS)
+ [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentación de IAM)

## Información adicional
<a name="configure-cross-account-access-to-a-shared-aws-glue-data-catalog-using-amazon-athena-additional"></a>

**Uso de Lake Formation como alternativa para compartir entre cuentas**

También puede usar AWS Lake Formation para compartir el acceso a los objetos del catálogo de AWS Glue entre cuentas. Lake Formation proporciona un control de acceso detallado a nivel de columnas y filas, control de acceso basado en etiquetas, tablas gobernadas para transacciones ACID y otras funciones. Aunque Lake Formation está bien integrado con Athena, requiere una configuración adicional en comparación con el enfoque exclusivo de IAM de este patrón. Recomendamos que considere la decisión de utilizar los controles de acceso exclusivos de Lake Formation o IAM en el contexto más amplio de la arquitectura general de su solución. Las consideraciones incluyen qué otros servicios están involucrados y cómo se integran con ambos enfoques.

# Convierta la característica temporal NORMALIZE de Teradata en Amazon Redshift SQL
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

## Resumen
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-summary"></a>

**NORMALIZE** es una extensión de Teradata del estándar ANSI SQL. Cuando una tabla SQL incluye una columna que tiene un tipo de datos tipo **PERIOD**, **NORMALIZE** combina los valores que coinciden o se superponen en esa columna para formar un período único que consolida varios valores de períodos individuales. Para utilizar **NORMALIZE**, al menos una columna de la lista SQL **SELECT** debe ser del tipo de datos **PERIOD** temporal de Teradata. Para obtener más información sobre **NORMALIZE**, consulte la [documentación de Teradata](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g). 

Amazon Redshift no admite **NORMALIZE**, pero puede implementar esta funcionalidad mediante la sintaxis SQL nativa y la función de ventana **LAG** en Amazon Redshift. Este patrón se centra en el uso de la extensión **NORMALIZE** de Teradata con la condición **ON MEETS OR OVERLAPS**, que es el formato más popular. En él se explica cómo funciona esta función en Teradata y cómo se puede convertir a la sintaxis SQL nativa de Amazon Redshift.

## Requisitos previos y limitaciones
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-prereqs"></a>

**Requisitos previos **
+ Conocimientos y experiencia básicos de Teradata SQL
+ Conocimiento y experiencia en Amazon Redshift

## Arquitectura
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-architecture"></a>

**Pila de tecnología de origen**
+ Almacenamiento de datos de Teradata

**Pila de tecnología de destino**
+ Amazon Redshift

**Arquitectura de destino**

Para obtener una arquitectura de alto nivel para migrar una base de datos de Teradata a Amazon Redshift, consulte el patrón [Migración de una base de datos de Teradata a Amazon Redshift mediante agentes de extracción de datos SCT de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html). La migración no convierte automáticamente la frase **NORMALIZE** de Teradata en Amazon Redshift SQL. Puede convertir esta extensión de Teradata siguiendo las pautas de este patrón.

## Tools (Herramientas)
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-tools"></a>

**Código**

Para ilustrar el concepto y la funcionalidad de **NORMALIZE**, considere la siguiente definición de tabla en Teradata:

```
CREATE TABLE systest.project
     (    emp_id        INTEGER,
          project_name  VARCHAR(20),
          dept_id       INTEGER,
          duration      PERIOD(DATE)
     );
```

Ejecute el siguiente código SQL para insertar datos de ejemplo en la tabla:

```
BEGIN TRANSACTION;

INSERT INTO systest.project VALUES (10, 'First Phase', 1000,  PERIOD(DATE '2010-01-10', DATE '2010-03-20') );
INSERT INTO systest.project VALUES (10, 'First Phase', 2000,  PERIOD(DATE '2010-03-20', DATE '2010-07-15') );

INSERT INTO systest.project VALUES (10, 'Second Phase', 2000,  PERIOD(DATE '2010-06-15', DATE '2010-08-18') );
INSERT INTO systest.project VALUES (20, 'First Phase', 2000,  PERIOD(DATE '2010-03-10', DATE '2010-07-20') );

INSERT INTO systest.project VALUES (20, 'Second Phase', 1000,  PERIOD(DATE '2020-05-10', DATE '2020-09-20') );

END TRANSACTION;
```

Resultados:

```
select * from systest.project order by 1,2,3;
 
 *** Query completed. 4 rows found. 4 columns returned.
 *** Total elapsed time was 1 second.
 
     emp_id  project_name              dept_id  duration
-----------  --------------------  -----------  ------------------------
         10  First Phase                  1000  ('10/01/10', '10/03/20')        
         10  First Phase                  2000  ('10/03/20', '10/07/15')
         10  Second Phase                 2000  ('10/06/15', '10/08/18')
         20  First Phase                  2000  ('10/03/10', '10/07/20')
         20  Second Phase                 1000  ('20/05/10', '20/09/20')
```

*Caso de uso de Teradata NORMALIZE*

Ahora añada la cláusula SQL **NORMALIZE** de Teradata a la sentencia **SELECT:**:

```
SELECT NORMALIZE ON MEETS OR OVERLAPS emp_id, duration 
FROM systest.project 
ORDER BY 1,2;
```

Esta operación **NORMALIZE** se realiza en una sola columna (`emp_id`). En este `emp_id=10` caso, los tres valores de período superpuestos en cuanto a la duración se fusionan en un único valor de período, de la siguiente manera:  

```
     emp_id  duration
-----------  ------------------------
         10  ('10/01/10', '10/08/18')
         20  ('10/03/10', '10/07/20')
         20  ('20/05/10', '20/09/20')
```

La siguiente instrucción **SELECT** realiza una operación **NORMALIZE** en `project_name` y. `dept_id` Tenga en cuenta que la lista **SELECT** contiene solo una columna **PERIOD**,`duration`.

```
SELECT NORMALIZE project_name, dept_id, duration 
FROM systest.project;
```

Salida:

```
project_name              dept_id  duration
--------------------  -----------  ------------------------
First Phase                  1000  ('10/01/10', '10/03/20')
Second Phase                 1000  ('20/05/10', '20/09/20')
First Phase                  2000  ('10/03/10', '10/07/20')
Second Phase                 2000  ('10/06/15', '10/08/18')
```

*SQL equivalente a Amazon Redshift*

Amazon Redshift actualmente no admite el tipo de datos **PERIOD** en una tabla. En su lugar, debe dividir un campo de datos **PERIOD** de Teradata en dos partes:`start_date, end_date`, de la siguiente manera:  

```
CREATE TABLE systest.project
     (    emp_id        INTEGER,
          project_name  VARCHAR(20),
          dept_id       INTEGER,
          start_date  DATE,
          end_date    DATE
     );
```

Inserte una fila de datos en la tabla:

```
BEGIN TRANSACTION;
 
INSERT INTO systest.project VALUES (10, 'First Phase', 1000,  DATE '2010-01-10', DATE '2010-03-20' );
INSERT INTO systest.project VALUES (10, 'First Phase', 2000,  DATE '2010-03-20', DATE '2010-07-15');
 
INSERT INTO systest.project VALUES (10, 'Second Phase', 2000,  DATE '2010-06-15', DATE '2010-08-18' );
INSERT INTO systest.project VALUES (20, 'First Phase', 2000,  DATE '2010-03-10', DATE '2010-07-20' );
 
INSERT INTO systest.project VALUES (20, 'Second Phase', 1000,  DATE '2020-05-10', DATE '2020-09-20' );
 
END TRANSACTION;
```

Salida:

```
 emp_id | project_name | dept_id | start_date |  end_date
--------+--------------+---------+------------+------------
     10 | First Phase  |    1000 | 2010-01-10 | 2010-03-20
     10 | First Phase  |    2000 | 2010-03-20 | 2010-07-15
     10 | Second Phase |    2000 | 2010-06-15 | 2010-08-18
     20 | First Phase  |    2000 | 2010-03-10 | 2010-07-20
     20 | Second Phase |    1000 | 2020-05-10 | 2020-09-20
(5 rows)
```

Para reescribir la cláusula **NORMALIZE** de Teradata, puede utilizar la [función de ventana LAG de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html). Esta función devuelve los valores para una fila en un desplazamiento dado arriba (antes) de la fila actual en la partición.

Puede usar la función **LAG** para identificar cada fila que comienza un nuevo período determinando si un período coincide o se superpone con el período anterior (0 en caso afirmativo y 1 en caso negativo). Cuando este indicador se suma de forma acumulativa, proporciona un identificador de grupo que se puede utilizar en la cláusula externa **Group By** para obtener el resultado deseado en Amazon Redshift.  

A continuación, se muestra un ejemplo de sentencia SQL de Amazon Redshift que utiliza **LAG()**:

```
SELECT emp_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY emp_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project 
ORDER BY 1,2;
```

Salida:

```
 emp_id | start_date |  end_date  | groupstartflag
--------+------------+------------+----------------
     10 | 2010-01-10 | 2010-03-20 |              1
     10 | 2010-03-20 | 2010-07-15 |              0
     10 | 2010-06-15 | 2010-08-18 |              0
     20 | 2010-03-10 | 2010-07-20 |              1
     20 | 2020-05-10 | 2020-09-20 |              1
(5 rows)
```

La siguiente sentencia SQL de Amazon Redshift solo se normaliza en la columna: `emp_id`

```
SELECT T2.emp_id, MIN(T2.start_date) as new_start_date, MAX(T2.end_date) as new_end_date
FROM 
( SELECT T1.*, SUM(GroupStartFlag) OVER (PARTITION BY emp_id ORDER BY start_date ROWS UNBOUNDED PRECEDING) As GroupID
FROM ( SELECT emp_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY emp_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project ) T1
) T2
GROUP BY T2.emp_id, T2.GroupID
ORDER BY 1,2;
```

Salida:  

```
 emp_id | new_start_date | new_end_date
--------+----------------+------------------------------------
     10 | 2010-01-10     | 2010-08-18
     20 | 2010-03-10     | 2010-07-20
     20 | 2020-05-10     | 2020-09-20
(3 rows)
```

** **

La siguiente sentencia SQL de Amazon Redshift se normaliza en las columnas y: `project_name` `dept_id`

```
SELECT T2.project_name, T2.dept_id, MIN(T2.start_date) as new_start_date, MAX(T2.end_date) as new_end_date
FROM 
( SELECT T1.*, SUM(GroupStartFlag) OVER (PARTITION BY project_name, dept_id ORDER BY start_date ROWS UNBOUNDED PRECEDING) As GroupID
FROM ( SELECT project_name, dept_id, start_date, end_date, 
            (CASE WHEN start_date <= LAG(end_date) OVER (PARTITION BY project_name, dept_id ORDER BY start_date, end_date) THEN 0 ELSE 1 END) AS GroupStartFlag
FROM systest.project ) T1
) T2
GROUP BY T2.project_name, T2.dept_id, T2.GroupID
ORDER BY 1,2,3;
```

Salida:

```
 project_name | dept_id | new_start_date | new_end_date
--------------+---------+----------------+--------------
 First Phase  |    1000 | 2010-01-10     | 2010-03-20
 First Phase  |    2000 | 2010-03-10     | 2010-07-20
 Second Phase |    1000 | 2020-05-10     | 2020-09-20
 Second Phase |    2000 | 2010-06-15     | 2010-08-18
(4 rows)
```

## Epics
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-epics"></a>

### Convierta NORMALIZE en Amazon Redshift SQL
<a name="convert-normalize-to-amazon-redshift-sql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree código SQL en Teradata. | Use la frase NORMALIZE en función de sus necesidades. | Desarrollador SQL | 
| Convierta el código a Amazon Redshift SQL. | Para convertir el código, siga las instrucciones de la sección «Herramientas» de este patrón. | Desarrollador SQL | 
| Ejecute el código en Amazon Redshift. | Cree la tabla, cargue los datos en la tabla y ejecute el código en Amazon Redshift. | Desarrollador SQL | 

## Recursos relacionados
<a name="convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql-resources"></a>

**Referencias**
+ [Característica temporal NORMALIZE de Teradata](https://docs.teradata.com/reader/2_MC9vCtAJRlKle2Rpb0mA/MIGI5UMEwgERC3Un7tEZ6g) (documentación de Teradata)
+ [Función de ventana LAG](https://docs.aws.amazon.com/redshift/latest/dg/r_WF_LAG.html) (documentación de Amazon Redshift)
+ [Migración a Amazon Redshift](https://aws.amazon.com/redshift/data-warehouse-migration/) (sitio web de AWS)
+ [Migración de una base de datos de Teradata a Amazon Redshift con los agentes de extracción de datos de AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html) (Recomendaciones de AWS)
+ [Convertir la característica RESET WHEN de Teradata a Amazon Redshift SQL](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.html) (Recomendaciones de AWS)

**Herramientas**
+ [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Socios**
+ [Socios con competencias en migración de AWS](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Convierta la característica RESET WHEN de Teradata en Amazon Redshift SQL
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql"></a>

*Po Hong, Amazon Web Services*

## Resumen
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-summary"></a>

**RESET WHEN** es una característica de Teradata que se utiliza en las funciones de la ventana analítica de SQL. Es una extensión del estándar ANSI SQL. **RESET WHEN** determina la partición sobre la que opera una función de ventana SQL basada en alguna condición específica. Si la condición se evalúa como **TRUE**, se crea una nueva subpartición dinámica dentro de la partición de ventana existente. Para obtener más información acerca de **RESET WHEN**, consulte la documentación de [Teradat](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg).

Amazon Redshift no admite **RESET WHEN** en las funciones de ventana de SQL. Para implementar esta funcionalidad, debe convertir **RESET WHEN** a la sintaxis SQL nativa de Amazon Redshift y utilizar varias funciones anidadas. Este patrón demuestra cómo puede utilizar lacaracterística **RESET WHEN** de Teradata y cómo puede convertirla a la sintaxis SQL de Amazon Redshift. 

## Requisitos previos y limitaciones
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-prereqs"></a>

**Requisitos previos **
+ Conocimientos básicos del almacén de datos de Teradata y su sintaxis SQL
+ Buen conocimiento de Amazon Redshift y su sintaxis SQL

## Arquitectura
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-architecture"></a>

**Pila de tecnología de origen**
+ Almacenamiento de datos de Teradata

**Pila de tecnología de destino**
+ Amazon Redshift

**Arquitectura**

Para obtener una arquitectura de alto nivel para migrar una base de datos de Teradata a Amazon Redshift, consulte el patrón [Migración de una base de datos de Teradata a Amazon Redshift mediante agentes de extracción de datos SCT de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html). La migración no convierte automáticamente la frase **RESET WHEN** de Teradata en Amazon Redshift SQL. Puede convertir esta extensión de Teradata siguiendo las pautas de la siguiente sección.

## Tools (Herramientas)
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-tools"></a>

**Código**

Para ilustrar el concepto de **RESET WHEN**, considere la siguiente definición de tabla en Teradata:

```
create table systest.f_account_balance                                
( account_id integer NOT NULL,
  month_id integer,
  balance integer )
unique primary index (account_id, month_id);
```

Ejecute el siguiente código SQL para insertar datos de ejemplo en la tabla:

```
BEGIN TRANSACTION;
Insert Into systest.f_account_balance values (1,1,60);
Insert Into systest.f_account_balance values (1,2,99);
Insert Into systest.f_account_balance values (1,3,94);
Insert Into systest.f_account_balance values (1,4,90);
Insert Into systest.f_account_balance values (1,5,80);
Insert Into systest.f_account_balance values (1,6,88);
Insert Into systest.f_account_balance values (1,7,90);
Insert Into systest.f_account_balance values (1,8,92);
Insert Into systest.f_account_balance values (1,9,10);
Insert Into systest.f_account_balance values (1,10,60);
Insert Into systest.f_account_balance values (1,11,80);
Insert Into systest.f_account_balance values (1,12,10);
END TRANSACTION;
```

La tabla de muestra tiene los siguientes datos:


| 
| 
| account\$1id | month\$1id | balance | 
| --- |--- |--- |
| 1 | 1 | 60 | 
| 1 | 2 | 99 | 
| 1 | 3 | 94 | 
| 1 | 4 | 90 | 
| 1 | 5 | 80 | 
| 1 | 6 | 88 | 
| 1 | 7 | 90 | 
| 1 | 8 | 92 | 
| 1 | 9 | 10 | 
| 1 | 10 | 60 | 
| 1 | 11 | 80 | 
| 1 | 12 | 10 | 

Para cada cuenta, digamos que desea analizar la secuencia de aumentos de saldo mensuales consecutivos. Cuando el saldo de un mes es inferior o igual al saldo del mes anterior, es necesario restablecer el contador a cero y reiniciarlo.

*Teradata se restablece en caso de uso*

Para analizar estos datos, Teradata SQL utiliza una función de ventana con un agregado anidado y una frase **RESET WHEN**, de la siguiente manera:

```
SELECT account_id, month_id, balance,
 ( ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY month_id
RESET WHEN balance <= SUM(balance) over (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) ) -1 ) as balance_increase
FROM systest.f_account_balance
ORDER BY 1,2;
```

Salida:


| 
| 
|  account\$1id | month\$1id | balance | balance\$1increase | 
| --- |--- |--- |--- |
| 1 | 1 | 60 | 0 | 
| 1 | 2 | 99 | 1 | 
| 1 | 3 | 94 | 0 | 
| 1 | 4 | 90 | 0 | 
| 1 | 5 | 80 | 0 | 
| 1 | 6 | 88 | 1 | 
| 1 | 7 | 90 | 2. | 
| 1 | 8 | 92 | 3 | 
| 1 | 9 | 10 | 0 | 
| 1 | 10 | 60 | 1 | 
| 1 | 11 | 80 | 2. | 
| 1 | 12 | 10 | 0 | 

La consulta se procesa de la siguiente manera en Teradata:

1. La función de agregado **SUM (saldo)** calcula la suma de todos los saldos de una cuenta determinada en un mes determinado.

1. Comprobamos si el saldo de un mes determinado (para una cuenta determinada) es superior al saldo del mes anterior.

1. Si el saldo aumentó, registramos un valor de recuento acumulado. Si la condición **RESET WHEN** se evalúa como **false**, lo que significa que el saldo ha aumentado durante meses sucesivos, seguiremos aumentando el recuento.

1. La función analítica ordenada **ROW\$1NUMBER ()** calcula el valor del recuento. **Cuando llegamos a un mes cuyo saldo es inferior o igual al saldo del mes anterior, la condición **RESET WHEN** se evalúa como verdadera.** Si es así, iniciamos una nueva partición y **ROW\$1NUMBER ()** reinicia el conteo desde 1. Usamos **FILAS ENTRE 1 ANTERIOR Y 1 ANTERIOR** para acceder al valor de la fila anterior.

1. Restamos 1 para asegurarnos de que el valor del recuento comience por 0.

*SQL equivalente a Amazon Redshift*

Amazon Redshift no admite la frase **RESET WHEN** en una función de ventana analítica de SQL.  Para obtener el mismo resultado, debe reescribir el SQL de Teradata con la sintaxis SQL nativa de Amazon Redshift y las subconsultas anidadas, de la siguiente manera: 

```
SELECT account_id, month_id, balance,
   (ROW_NUMBER() OVER(PARTITION BY account_id, new_dynamic_part ORDER BY month_id) -1) as balance_increase
FROM
( SELECT account_id, month_id, balance, prev_balance,
SUM(dynamic_part) OVER (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) As new_dynamic_part
FROM ( SELECT account_id, month_id, balance,
SUM(balance) over (PARTITION BY account_id ORDER BY month_id ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) as prev_balance,
(CASE When balance <= prev_balance Then 1 Else 0 END) as dynamic_part
FROM systest.f_account_balance ) A
) B
ORDER BY 1,2;
```

Como Amazon Redshift no admite funciones de ventana anidadas en la cláusula **SELECT** de una sola sentencia SQL, debe utilizar dos subconsultas anidadas.
+ En la subconsulta interna (alias A), se crea y rellena un indicador de partición dinámica (**dynamic\$1part**). **dynamic\$1part** se establece en 1 si el saldo de un mes es inferior o igual al saldo del mes anterior; de lo contrario, se establece en 0. 
+ **En la siguiente capa (alias B), se genera un atributo **new\$1dynamic\$1part** como resultado de unacaracterística de ventana SUM.** 
+ Por último, añada **new\$1dynamic\$1part** como un nuevo atributo de partición (**partición dinámica**) al atributo de partición existente (**account\$1id**) y aplique la misma función de ventana **ROW\$1NUMBER()** que en Teradata (y menos una). 

Tras estos cambios, Amazon Redshift SQL genera el mismo resultado que Teradata.

## Epics
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-epics"></a>

### Convierta RESET WHEN en Amazon Redshift SQL
<a name="convert-reset-when-to-amazon-redshift-sql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree su función de ventana de Teradata. | Use agregados anidados y la frase RESET WHEN de acuerdo con sus necesidades. | Desarrollador SQL | 
| Convierta el código a Amazon Redshift SQL. | Para convertir el código, siga las instrucciones de la sección «Herramientas» de este patrón. | Desarrollador SQL | 
| Ejecute el código en Amazon Redshift. | Cree la tabla, cargue los datos en la tabla y ejecute el código en Amazon Redshift. | Desarrollador SQL | 

## Recursos relacionados
<a name="convert-the-teradata-reset-when-feature-to-amazon-redshift-sql-resources"></a>

**Referencias**
+ [Frase RESET WHEN](https://docs.teradata.com/reader/1DcoER_KpnGTfgPinRAFUw/b7wL86OoMTPno6hrSPNdDg) (Documentación Teradata)
+ [Explicación de RESET WHEN](https://stackoverflow.com/questions/53344536/teradata-reset-when-partition-by-order-by) (Stack Overflow)
+ [Migración a Amazon Redshift](https://aws.amazon.com/redshift/data-warehouse-migration/) (sitio web de AWS)
+ [Migración de una base de datos de Teradata a Amazon Redshift con los agentes de extracción de datos de AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-a-teradata-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.html) (Recomendaciones de AWS)
+ [Convierta la función temporal NORMALIZE de Teradata en Amazon Redshift](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.html) SQL (AWS Prescriptive Guidance)

**Herramientas**
+ [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)

**Socios**
+ [Socios con competencias en migración de AWS](https://aws.amazon.com/migration/partner-solutions/#delivery)

# Implementar y administrar un lago de datos sin servidor en la nube de AWS mediante el uso de la infraestructura como código
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code"></a>

*Kirankumar Chandrashekar y Abdel Jaidi, Amazon Web Services*

## Resumen
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-summary"></a>

Este patrón describe cómo utilizar la [computación sin servidor](https://aws.amazon.com/serverless/) y la [infraestructura como código](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) para implementar y administrar un lago de datos en la nube de Amazon Web Services (AWS). Este patrón se basa en el taller sobre el [marco de lago de datos sin servidor (SDLF)](https://sdlf.workshop.aws/) desarrollado por AWS.

El SDLF es un conjunto de recursos reutilizables que aceleran la entrega de lagos de datos empresariales en la nube de AWS y permiten una implementación más rápida en la producción. Se utiliza para implementar la estructura fundamental de un lago de datos siguiendo las prácticas recomendadas.

SDLF implementa un proceso de integración e implementación continuas (CI/CD) durante todo el despliegue del código y la infraestructura mediante servicios de AWS como AWS, CodePipeline AWS CodeBuild y AWS. CodeCommit

Este patrón utiliza varios servicios sin servidor de AWS para simplificar la administración de los lagos de datos. Entre ellas se incluyen Amazon Simple Storage Service (Amazon S3) y Amazon DynamoDB para el almacenamiento, AWS Lambda y AWS Glue para la informática, y Amazon Events, Amazon Simple Queue Service (Amazon SQS) CloudWatch y AWS Step Functions para la orquestación.

AWS CloudFormation y los servicios de código de AWS actúan como capa IaC para proporcionar implementaciones rápidas y reproducibles con operaciones y administración sencillas.

## Requisitos previos y limitaciones
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) instalada y configurada. 
+ Un cliente Git, instalado y configurado.
+ El [taller de SDLF](https://sdlf.workshop.aws/), abierto en la ventana de un navegador web y listo para usar. 

## Arquitectura
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-architecture"></a>

![\[Implementar y administrar un lago de datos en la nube de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f4fc3ad2-1c4f-45ea-bc86-2db13105a173/images/e0cfff30-f0f8-4fc1-8e84-a152ef615c58.png)


 El diagrama de arquitectura ilustra un proceso basado en eventos con los siguientes pasos. 

1. Tras añadir un archivo al bucket de datos sin procesar de S3, se coloca una notificación de evento de Amazon S3 en una cola de SQS. Cada notificación se entrega como un archivo JSON, que contiene metadatos como el nombre del bucket de S3, la clave del objeto o la marca de tiempo.

1. Esta notificación la consume una función de Lambda que enruta el evento al proceso correcto de extracción, transformación y carga (ETL) en función de los metadatos. La función de Lambda también puede usar configuraciones contextuales almacenadas en una tabla de Amazon DynamoDB. Este paso permite desacoplar y escalar múltiples aplicaciones en el lago de datos.

1. El evento se dirige a la primera función de Lambda del proceso ETL, que transforma y mueve los datos del área de datos sin procesar al área de almacenamiento del lago de datos. El primer paso es actualizar el catálogo completo. Se trata de una tabla de DynamoDB que contiene todos los metadatos de archivos del lago de datos. Cada fila de esta tabla contiene metadatos operativos sobre un único objeto almacenado en Amazon S3. Se realiza una llamada sincrónica a una función de Lambda que realiza una ligera transformación, que es una operación económica desde el punto de vista computacional (como convertir un archivo de un formato a otro), en el objeto S3. Como se ha agregado un objeto nuevo al bucket provisional de S3, se actualiza el catálogo completo y se envía un mensaje a la cola de SQS a la espera de la siguiente fase de ETL.

1. Una regla de CloudWatch eventos activa una función Lambda cada 5 minutos. Esta función comprueba si los mensajes de la fase ETL anterior se enviaron a la cola de SQS. Si se ha entregado un mensaje, la función de Lambda inicia la segunda función desde [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/sample-start-workflow.html) en el proceso ETL.

1. A continuación, se aplica una transformación profunda a un lote de archivos. Esta importante transformación es una operación costosa desde el punto de vista computacional, como una llamada sincrónica a un trabajo de AWS Glue, una tarea de AWS Fargate, un paso de Amazon EMR o un bloc de notas de Amazon. SageMaker Los metadatos de las tablas se extraen de los archivos de salida mediante un rastreador de AWS Glue, que actualiza el catálogo de AWS Glue. Los metadatos de los archivos también se añaden a la tabla de catálogo completa de DynamoDB. Por último, también se ejecuta un paso de calidad de datos aprovechando [Deequ](https://github.com/awslabs/deequ).

**Pila de tecnología**
+  CloudWatch Eventos de Amazon
+ AWS CloudFormation
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon DynamoDB
+ AWS Glue
+ AWS Lambda
+ Amazon S3
+ Amazon SQS
+ AWS Step Functions

## Tools (Herramientas)
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-tools"></a>
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — CloudWatch Events ofrece una transmisión casi en tiempo real de los eventos del sistema que describen los cambios en los recursos de AWS.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): CloudFormation ayuda a crear y aprovisionar las implementaciones de infraestructura de AWS de forma predecible y repetitiva.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html): CodeBuild es un servicio de compilación totalmente gestionado que compila el código fuente, ejecuta pruebas unitarias y produce artefactos listos para su implementación.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html): CodeCommit es un servicio de control de versiones hospedado por AWS que puede usar para almacenar y administrar activos de forma privada (como código fuente y archivos binarios).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html): CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para publicar los cambios de software de forma continua.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html): DynamoDB es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido y predecible, así como escalabilidad. 
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html): AWS Glue es un servicio ETL totalmente gestionado que facilita la preparación y la carga de datos para su análisis.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): Lambda admite la ejecución de código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html): Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos altamente escalable. Amazon S3 se puede utilizar para una amplia gama de soluciones de almacenamiento, incluyendo sitios web, aplicaciones móviles, copias de seguridad y lagos de datos.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html): AWS Step Functions es un orquestador de funciones sin servidor que facilita la secuenciación de las funciones de AWS Lambda y varios servicios de AWS en aplicaciones esenciales desde el punto de vista empresarial.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html): Amazon Simple Queue Service (Amazon SQS) es un servicio de cola de mensajes totalmente gestionado que le permite desacoplar y escalar microservicios, sistemas distribuidos y aplicaciones sin servidor.
+ [Deequ](https://github.com/awslabs/deequ): Deequ es una herramienta que le ayuda a calcular las métricas de calidad de los datos para conjuntos de datos de gran tamaño, a definir y verificar las limitaciones de calidad de los datos y a mantenerse informado sobre los cambios en la distribución de los datos.

**Repositorio de código**

El código fuente y los recursos del SDLF están disponibles en el [ GitHub repositorio de AWS Labs](https://github.com/awslabs/aws-serverless-data-lake-framework/).

## Epics
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-epics"></a>

### Configure la CI/CD canalización para aprovisionar el IaC
<a name="set-up-the-ci-cd-pipeline-to-provision-iac"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la CI/CD canalización para administrar el IaC para el lago de datos. | Inicie sesión en la consola de administración de AWS y siga los pasos de la sección de [Configuración inicial](https://sdlf.workshop.aws/en/10-deployment/100-setup.html) del taller de SDLF. Esto crea los CI/CD recursos iniciales, como los CodeCommit repositorios, los CodeBuild entornos y las CodePipeline canalizaciones que aprovisionan y administran el IaC para el lago de datos. | DevOps ingeniero | 

### Control de versiones de la IaC
<a name="version-control-the-iac"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clona el CodeCommit repositorio en tu máquina local. | Siga los pasos de la sección [Implementación de los fundamentos](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html) del taller sobre el SDLF. Esto le ayuda a clonar el repositorio de Git que aloja la IaC en su entorno local. Para obtener más información, consulte [Conectarse a CodeCommit repositorios](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) en la CodeCommit documentación. | DevOps ingeniero | 
| Modifique las CloudFormation plantillas. | Utilice su estación de trabajo local y un editor de código para modificar las CloudFormation plantillas según sus casos de uso o requisitos. Configúrelos en el repositorio de Git clonado localmente. Para obtener más información, consulte [Trabajar con CloudFormation plantillas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) en la CloudFormation documentación de AWS. | DevOps ingeniero | 
| Envía los cambios al CodeCommit repositorio.  | Su código de infraestructura está ahora bajo control de versiones y se realiza un seguimiento de las modificaciones de su base de código. Cuando introduce un cambio en el CodeCommit repositorio, lo aplica CodePipeline automáticamente a su infraestructura y lo envía allí CodeBuild. Si utiliza la CLI de AWS SAM en CodeBuild, ejecute los `sam deploy` comandos `sam package` y. Si usa la CLI de AWS, ejecute los comandos `aws cloudformation package` y `aws cloudformation deploy`. | DevOps ingeniero | 

## Recursos relacionados
<a name="deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code-resources"></a>

**Configure la CI/CD canalización para aprovisionar el IaC**
+ [Taller sobre el SDLF: Configuración inicial](https://sdlf.workshop.aws/en/10-deployment/100-setup.html)

**Control de versiones de la IaC**
+ [Taller sobre SDLF: Implementando las bases](https://sdlf.workshop.aws/en/10-deployment/200-foundations.html)
+ [Conexión a repositorios CodeCommit ](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Trabajar con CloudFormation plantillas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)

**Otros recursos**
+ [Arquitectura de referencia de la canalización de análisis de datos sin servidor de AWS](https://aws.amazon.com/blogs/big-data/aws-serverless-data-analytics-pipeline-reference-architecture/)
+ [Documentación de SDLF](https://sdlf.readthedocs.io/en/latest/)

# Imponga el etiquetado de los clústeres de Amazon EMR en el lanzamiento
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Resumen
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-summary"></a>

Este patrón proporciona un control de seguridad que garantiza que los clústeres de Amazon EMR se etiqueten cuando son creados. 

Amazon EMR es un servicio de Amazon Web Services (AWS) para procesar y analizar grandes cantidades de datos. Amazon EMR ofrece un servicio ampliable de baja configuración como alternativa más simple a la ejecución interna de computación en clústeres. Puede usar el etiquetado para clasificar los recursos de AWS de diversas maneras, por ejemplo, según su finalidad, propietario o entorno. Por ejemplo, puede etiquetar sus clústeres de Amazon EMR asignando metadatos personalizados a cada clúster. Una etiqueta consta de una clave y un valor que define el usuario. Le recomendamos que cree un conjunto de etiquetas coherente para satisfacer los requisitos de su organización. Al añadir una etiqueta a un clúster de Amazon EMR, la etiqueta también se propaga a cada instancia activa de Amazon Elastic Compute Cloud (Amazon EC2) asociada al clúster. Del mismo modo, cuando eliminas una etiqueta de un clúster de Amazon EMR, esa etiqueta también se elimina de cada EC2 instancia activa asociada.

El control de detectives supervisa las llamadas a la API e inicia un evento de Amazon CloudWatch Events para [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html), [AddTags[RemoveTags](https://docs.aws.amazon.com/emr/latest/APIReference/API_RemoveTags.html)](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddTags.html), y [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html) APIs. El evento llama a AWS Lambda, que ejecuta un script de Python. La función de Python obtiene el ID del clúster de Amazon EMR de la entrada JSON del evento y realiza las siguientes comprobaciones:
+ Comprobar si el clúster de Amazon EMR está configurado con los nombres de etiquetas que especifique.
+ Si no lo está, envía una notificación de Amazon Simple Notification Service (Amazon SNS) al usuario con la información pertinente: el nombre del clúster de Amazon EMR, los detalles de la infracción, la región de AWS, la cuenta de AWS y el nombre de recurso de Amazon (ARN) de Lambda del que proviene la notificación.

## Requisitos previos y limitaciones
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Cargue el código de Lambda proporcionado en un bucket de Amazon Simple Storage Service (Amazon S3). O bien, puede crear un bucket de S3 para este fin, tal y como se describe en la sección *Epics*.
+ Especifique una dirección de correo electrónico activa en la que desee recibir notificaciones de infracciones.
+ Una lista de etiquetas obligatorias que desea comprobar.

**Limitaciones**
+ Este control de seguridad es regional. Debe implementarlo en cada región de AWS que desee supervisar.

**Versiones de producto**
+ Amazon EMR 4.8.0 y versiones posteriores.

## Arquitectura
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-architecture"></a>

**Arquitectura de flujo de trabajo**

![\[Lanzamiento del clúster, monitoreo mediante APIs, generación de eventos, llamada a la función Lambda, notificación enviada.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/images/0d95c414-69d1-4f29-a9e7-09f202e27014.png)


**Automatización y escala**
+ Si utiliza [AWS Organizations](https://aws.amazon.com/organizations/), puede utilizar [AWS Cloudformation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para implementar esta plantilla en varias cuentas que desee supervisar.

## Tools (Herramientas)
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-tools"></a>

**Servicios de AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): AWS le CloudFormation ayuda a modelar y configurar sus recursos de AWS, a aprovisionarlos de forma rápida y coherente y a gestionarlos durante todo su ciclo de vida. Facilita poder usar una plantilla para describir los recursos y sus dependencias, y lanzarlos y configurarlos juntos como una pila, en lugar de administrarlos de forma individual. Puede administrar y aprovisionar pilas en varias cuentas y regiones de AWS.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html): Amazon CloudWatch Events ofrece una transmisión casi en tiempo real de los eventos del sistema que describen los cambios en los recursos de AWS.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html): Amazon EMR es un servicio web que simplifica la ejecución de marcos de macrodatos y el procesamiento eficiente de grandes cantidades de datos. 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): AWS Lambda es un servicio de computación que permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos. Puede utilizar Amazon S3 para almacenar y recuperar cualquier cantidad de datos en cualquier momento y desde cualquier parte de la web.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): Amazon Simple Notification Service (Amazon SNS) coordina y gestiona la entrega o el envío de mensajes entre publicadores y clientes, incluyendo los servidores web y las direcciones de correo electrónico. Los suscriptores reciben todos los mensajes publicados de los temas a los que están suscritos y todos los suscriptores de un tema reciben los mismos mensajes.

**Código**

Este patrón incluye los siguientes archivos adjuntos:
+ `EMRTagValidation.zip`: el código de Lambda para el control de seguridad.
+ `EMRTagValidation.yml`— La CloudFormation plantilla que configura el evento y la función Lambda.

## Epics
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-epics"></a>

### Configuración del bucket de S3
<a name="set-up-the-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Defina el bucket de S3. | En la [consola Amazon S3](https://console.aws.amazon.com/s3/), elija o cree un bucket de S3 para alojar el archivo .zip de código de Lambda. El bucket de S3 debe estar en la misma región de AWS que el clúster de Amazon EMR que desea supervisar. Un nombre de bucket de Amazon S3 es globalmente único y todas las cuentas de AWS comparten el espacio de nombres. El nombre de bucket de S3 no puede incluir barras a la izquierda. | Arquitecto de la nube | 
| Cargue el código de Lambda. | Cargue el archivo .zip de código de Lambda que se proporciona en la sección *Adjuntos* en el bucket de S3.                                               | Arquitecto de la nube | 

### Implemente la CloudFormation plantilla de AWS
<a name="deploy-the-aws-cloudformation-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lance la CloudFormation plantilla de AWS. | Abra la [ CloudFormation consola de AWS](https://console.aws.amazon.com/cloudformation/.) en la misma región de AWS que su bucket de S3 e implemente la plantilla. Para obtener más información sobre la implementación de CloudFormation plantillas de AWS, consulte [Crear una pila en la CloudFormation consola de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) en la CloudFormation documentación. | Arquitecto de la nube | 
| Complete los parámetros de la plantilla. | Al lanzar la plantilla, se le solicitará la siguiente información:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/enforce-tagging-of-amazon-emr-clusters-at-launch.html) | Arquitecto de la nube | 

### Confirmar la suscripción
<a name="confirm-the-subscription"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Confirmar la suscripción. | Cuando la CloudFormation plantilla se implementa correctamente, envía un correo electrónico de suscripción a la dirección de correo electrónico que has proporcionado. Debe confirmar esta suscripción de correo electrónico para recibir las notificaciones de infracciones. | Arquitecto de la nube | 

## Recursos relacionados
<a name="enforce-tagging-of-amazon-emr-clusters-at-launch-resources"></a>
+ [Guía para desarrolladores de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Etiquetado de clústeres de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html)

## Conexiones
<a name="attachments-1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/1a4fc0f8-b0c9-4391-9c79-9eb3898d6ecb/attachments/attachment.zip)

# Asegúrese de que el registro de Amazon EMR en Amazon S3 esté habilitado en el lanzamiento
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Resumen
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-summary"></a>

Este patrón proporciona un control de seguridad que supervisa la configuración de registro de los clústeres de Amazon EMR ejecutados en Amazon Web Services (AWS).

Amazon EMR es una herramienta de AWS para el procesamiento y el análisis de macrodatos. Amazon EMR ofrece un servicio ampliable de baja configuración como alternativa a la ejecución interna de computación en clústeres. Amazon EMR ofrece dos tipos de clústeres de EMR.
+ **Clústeres transitorios de Amazon EMR**: los clústeres transitorios de Amazon EMR se desactivan automáticamente y dejan de incurrir en costos cuando finaliza el procesamiento.
+ **Clústeres persistentes de Amazon EMR**: los clústeres persistentes de Amazon EMR siguen ejecutándose una vez finalizado el trabajo de procesamiento de datos.

Amazon EMR y Hadoop producen archivos de registro que notifican el estado en el clúster. De forma predeterminada, se escriben en el nodo principal del directorio**/mnt/var/log/**. En función de cómo configure el clúster en el momento de su lanzamiento, también podrá guardar estos registros en Amazon Simple Storage Service (Amazon S3) y consultarlos a través de la herramienta de depuración gráfica. Tenga en cuenta que el registro de Amazon S3 solo se puede especificar cuando se lanza el clúster. Con esta configuración, los registros se envían desde el nodo principal a la ubicación de Amazon S3 cada 5 minutos. En el caso de los clústeres transitorios, el registro en Amazon S3 es muy importante, ya que los clústeres desaparecen cuando se completa el procesamiento y estos archivos de registro pueden usarse para depurar cualquier trabajo fallido.

El patrón utiliza una CloudFormation plantilla de AWS para implementar un control de seguridad que monitorea las llamadas a la API e inicia Amazon CloudWatch Events en "»RunJobFlow. El disparador invoca AWS Lambda, que ejecuta un script de Python. La función de Lambda recupera la ID del clúster de EMR de la entrada JSON del evento, y también comprueba si hay un URI de registro de Amazon S3. Si no se encuentra un URI de Amazon S3, la función de Lambda envía una notificación de Amazon Simple Notification Service (Amazon SNS) en la que se detalla el nombre del clúster de EMR, los detalles de la infracción, la región de AWS, la cuenta de AWS y el nombre de recurso de Amazon (ARN) de Lambda del que proviene la notificación.

## Requisitos previos y limitaciones
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Un bucket de S3 para el archivo .zip de código de Lambda
+ La dirección de correo electrónico en la que desee recibir la notificación de infracción

**Limitaciones**
+ Este control de detección es regional, por lo que debe implementarse en las regiones de AWS que desee supervisar.

**Versiones de producto**
+ Amazon EMR 4.8.0 y versiones posteriores

## Arquitectura
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-architecture"></a>

**Pila de tecnología de destino**
+ Evento Amazon CloudWatch Events
+ Amazon EMR
+ Función de Lambda
+ Bucket de S3
+ Amazon SNS

**Arquitectura de destino**

![\[Flujo de trabajo para asegurarse de que el registro de Amazon EMR en Amazon S3 esté habilitado en el lanzamiento.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/images/3ba125cb-018a-4ace-838f-8c20992ecc20.png)


**Automatización y escala**
+ Si utiliza AWS Organizations, puede utilizar [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para implementar esta plantilla en varias cuentas que desee supervisar.

## Tools (Herramientas)
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-tools"></a>

**Herramientas**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): AWS le CloudFormation ayuda a modelar y configurar los recursos de AWS utilizando la infraestructura como código.
+ [AWS Cloudwatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html): AWS CloudWatch Events ofrece una transmisión casi en tiempo real de los eventos del sistema que describen los cambios en los recursos de AWS.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html): Amazon EMR es una plataforma de clúster administrada que simplifica la ejecución de marcos de trabajo de macrodatos.
+ [AWS Lambda](https://aws.amazon.com/lambda/): AWS Lambda permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html): Amazon S3 es una interfaz de servicios web que puede utilizar para almacenar y recuperar cualquier cantidad de datos desde cualquier lugar de la web.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): Amazon Simple Notification Service (Amazon SNS) coordina y gestiona la entrega o el envío de mensajes entre publicadores y clientes, incluyendo los servidores web y las direcciones de correo electrónico.

**Código**
+ El archivo .zip del proyecto está disponible como adjunto.

## Epics
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-epics"></a>

### Cómo definir el bucket de S3
<a name="define-the-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Defina el bucket de S3. | Para alojar el archivo .zip de código de Lambda, seleccione o cree un bucket de S3 con un nombre único que no contenga barras diagonales al inicio. Un nombre de bucket de S3 es globalmente único y todas las cuentas de AWS comparten el espacio de nombres. Su bucket de S3 debe estar en la misma región de AWS que el clúster de Amazon EMR que se evalúa. | Arquitecto de la nube | 

### Cómo cargar el código de Lambda en el bucket de S3
<a name="upload-the-lambda-code-to-the-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargue el código de Lambda en el bucket de S3. | Cargue el archivo .zip de código de Lambda que se proporciona en la sección “Adjuntos” del bucket de S3. El bucket de S3 debe encontrarse en la misma región que el clúster de Amazon EMR que se está evaluando. | Arquitecto de la nube | 

### Implemente la CloudFormation plantilla de AWS
<a name="deploy-the-aws-cloudformation-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la CloudFormation plantilla de AWS. | En la CloudFormation consola de AWS, en la misma región que su bucket de S3, implemente la CloudFormation plantilla de AWS que se proporciona como adjunto a este patrón. En la siguiente épica, proporcione los valores de los parámetros. Para obtener más información sobre la implementación de CloudFormation plantillas de AWS, consulte la sección «Recursos relacionados». | Arquitecto de la nube | 

### Complete los parámetros de la CloudFormation plantilla de AWS
<a name="complete-the-parameters-in-the-aws-cloudformation-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ponga nombre al bucket de S3. | Escriba el nombre del bucket de S3 que ha creado en la primera épica. | Arquitecto de la nube | 
| Proporcione la clave de Amazon S3. | Proporcione la ubicación del archivo .zip del código de Lambda en su bucket de S3, sin barras diagonales iniciales (por ejemplo, <directory>/<file-name>.zip). | Arquitecto de la nube | 
| Proporcione una dirección de correo electrónico. | Proporcione una dirección de correo electrónico activa en la que desea recibir las notificaciones de Amazon SNS. | Arquitecto de la nube | 
| Defina el nivel de registro. | Defina el nivel y la frecuencia de registro de la función de Lambda. “Info” designa mensajes informativos detallados sobre el progreso de la aplicación. “Error” designa eventos de error que permiten que la aplicación siga ejecutándose. “Advertencia” designa situaciones potencialmente peligrosas. | Arquitecto de la nube | 

### Confirmar la suscripción
<a name="confirm-the-subscription"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Confirmar la suscripción. | Cuando la plantilla se implementa correctamente, se envía un mensaje de correo electrónico de suscripción a la dirección de correo electrónico proporcionada. Debe confirmar esta suscripción de correo electrónico para recibir las notificaciones de infracciones. | Arquitecto de la nube | 

## Recursos relacionados
<a name="ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch-resources"></a>
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Registro de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-debugging.html)
+ [Implementación de CloudFormation plantillas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)

## Conexiones
<a name="attachments-079af32e-0418-4bb2-bc20-c67ea5ac3b6e"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/079af32e-0418-4bb2-bc20-c67ea5ac3b6e/attachments/attachment.zip)

# Genere datos de prueba con un trabajo de AWS Glue y Python
<a name="generate-test-data-using-an-aws-glue-job-and-python"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Resumen
<a name="generate-test-data-using-an-aws-glue-job-and-python-summary"></a>

Este patrón le muestra cómo generar de forma rápida y sencilla millones de archivos de muestra de forma simultánea mediante la creación de un trabajo de AWS Glue escrito en Python. El archivo de ejemplo se almacena en un bucket de Amazon Simple Storage Service (Amazon S3). La capacidad de generar rápidamente una gran cantidad de archivos de muestra es importante para probar o evaluar los servicios en la nube de AWS. Por ejemplo, puede probar el rendimiento de los DataBrew trabajos de AWS Glue Studio o AWS Glue realizando un análisis de datos en millones de archivos pequeños en un prefijo de Amazon S3.

Aunque puede utilizar otros servicios de AWS para generar conjuntos de datos de ejemplo, le recomendamos que utilice AWS Glue. No necesita administrar ninguna infraestructura porque AWS Glue es un servicio de procesamiento de datos sin servidor. Solo tiene que traer su código y ejecutarlo en un clúster de AWS Glue. Además, AWS Glue aprovisiona, configura y escala los recursos necesarios para ejecutar sus trabajos. Solo paga por los recursos que utilizan los trabajos mientras se ejecutan.

## Requisitos previos y limitaciones
<a name="generate-test-data-using-an-aws-glue-job-and-python-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Interfaz de la línea de comandos de AWS (AWS CLI) [instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) y [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) para funcionar con la cuenta AWS.

**Versiones de producto**
+ Python 3.9
+ CLI de AWS versión 2

**Limitaciones**

El número máximo de trabajos de AWS Glue por activador es 50. Para obtener más información, consulte [Puntos de conexión y cuotas de AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

## Arquitectura
<a name="generate-test-data-using-an-aws-glue-job-and-python-architecture"></a>

El siguiente diagrama muestra un ejemplo de arquitectura centrado en un trabajo de AWS Glue que escribe su salida (es decir, archivos de muestra) en un bucket de S3.

![\[El flujo de trabajo muestra que la AWS CLI inicia un trabajo de AWS Glue que escribe el resultado en un bucket de S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f35943e8-3b2b-410e-a3f0-05e1ebd357d0/images/452ccbda-71f2-42b8-976d-bcc968bb1dab.png)


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

1. Utilice la AWS CLI, la Consola de administración de AWS o una API para iniciar el trabajo de AWS Glue. La API o la CLI de AWS le permiten automatizar la paralelización del trabajo invocado y reducir el tiempo de ejecución necesario para generar archivos de muestra.

1. El trabajo de AWS Glue genera el contenido del archivo de forma aleatoria, lo convierte en formato CSV y, a continuación, lo almacena como un objeto de Amazon S3 con un prefijo común. Cada archivo ocupa menos de un kilobyte. El trabajo de AWS Glue acepta dos parámetros de trabajo definidos por el usuario: `START_RANGE` y `END_RANGE`. Puede utilizar estos parámetros para establecer los nombres de los archivos y el número de archivos generados en Amazon S3 por cada ejecución de trabajo. Puede ejecutar varias instancias de este trabajo en paralelo (por ejemplo, 100 instancias).

## Tools (Herramientas)
<a name="generate-test-data-using-an-aws-glue-job-and-python-tools"></a>
+ [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.
+ La [interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de extracción, transformación y carga (ETL) completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.

## Prácticas recomendadas
<a name="generate-test-data-using-an-aws-glue-job-and-python-best-practices"></a>

Tenga en cuenta las siguientes prácticas recomendadas de AWS Glue al implementar este patrón:
+ **Utilice el tipo de trabajador de AWS Glue adecuado para reducir los costos.** Recomendamos que comprenda las diferentes propiedades de los tipos de trabajadores y, a continuación, elija el tipo de trabajador adecuado para su carga de trabajo en función de los requisitos de CPU y memoria. Para este patrón, recomendamos que utilice un trabajo de intérprete de comandos de Python como tipo de trabajo para minimizar la DPU y reducir los costos. Para obtener más información, consulte [Cómo agregar trabajos en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html) en la Guía del desarrollador de AWS Glue.
+ **Use el límite de simultaneidad correcto para escalar su trabajo.** Le recomendamos que base la simultaneidad máxima de su trabajo de AWS Glue en sus requisitos de tiempo y en la cantidad de archivos requerida.
+ **Comience a generar una cantidad pequeña de archivos al principio.** Para reducir los costos y ahorrar tiempo a la hora de crear sus trabajos de AWS Glue, comience con un número reducido de archivos (por ejemplo, 1000). Esto puede facilitar la solución de problemas. Si la generación de un número reducido de archivos se realiza correctamente, puede escalar a un número mayor de archivos.
+ **Ejecute primero de forma local.** Para reducir los costos y ahorrar tiempo a la hora de crear sus trabajos de AWS Glue, inicie el desarrollo de forma local y pruebe el código. Para obtener instrucciones sobre cómo configurar un contenedor de Docker que pueda ayudarlo en la escritura de trabajos de AWS Glue de extracción, transformación y carga (ETL), tanto en un intérprete de comandos como en un entorno de desarrollo integrado (IDE), consulte la entrada [Desarrollo y prueba de trabajos de ETL de AWS Glue de forma local mediante un contenedor](https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/) en la el blog de AWS Big Data.

Para obtener más información sobre las prácticas recomendadas de AWS Glue, consulte las [Prácticas recomendadas](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html) en la documentación de AWS Glue.

## Epics
<a name="generate-test-data-using-an-aws-glue-job-and-python-epics"></a>

### Creación del bucket de Amazon S3 de destino y un rol de IAM
<a name="create-a-destination-s3-bucket-and-iam-role"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3; para almacenar los archivos. | Cree un [bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) y un [prefijo](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) dentro de él.Este patrón utiliza la ubicación `s3://{your-s3-bucket-name}/small-files/` con fines de demostración. | Desarrollador de aplicaciones | 
| Creación y configuración de un rol de IAM | Debe crear un rol de IAM que su trabajo de AWS Glue pueda usar para escribir en su bucket de S3.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desarrollador de aplicaciones | 

### Cree y configure un trabajo de AWS Glue para gestionar ejecuciones simultáneas
<a name="create-and-configure-an-aws-glue-job-to-handle-concurrent-runs"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un trabajo de AWS Glue. | Debe crear un trabajo de AWS Glue que genere su contenido y lo almacene en un bucket de S3.Cree un [trabajo de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html) y, a continuación, configure su trabajo siguiendo estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desarrollador de aplicaciones | 
| Actualizar el código del trabajo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desarrollador de aplicaciones | 

### Ejecute el trabajo de AWS Glue desde la línea de comandos o la consola
<a name="run-the-aws-glue-job-from-the-command-line-or-console"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute el trabajo de AWS Glue desde la línea de comandos. | Para ejecutar su trabajo de AWS Glue desde la CLI de AWS, ejecute el siguiente comando con sus valores:<pre>cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"1000000"}'<br />cmd:~$ aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000000","--END_RANGE":"2000000"}'</pre>Para obtener instrucciones sobre cómo ejecutar el trabajo de AWS Glue desde la consola de administración de AWS, consulte el artículo *Ejecute el trabajo de AWS Glue en la consola de administración de AWS* de este patrón.Recomendamos que utilice la AWS CLI para ejecutar trabajos de AWS Glue si quiere llevar a cabo varias ejecuciones a la vez con distintos parámetros, como se muestra en el ejemplo anterior.Para generar todos los comandos de la CLI de AWS necesarios para generar un número definido de archivos con un factor de paralelización determinado, ejecute el siguiente código bash (con sus valores):<pre># define parameters<br />NUMBER_OF_FILES=10000000;<br />PARALLELIZATION=50; <br /> <br /># initialize<br />_SB=0;<br />      <br /># generate commands<br />for i in $(seq 1 $PARALLELIZATION); <br />do <br />      echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i-1) + _SB))'","--END_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) * (i)))'"}'"'";<br />      _SB=1; <br />done</pre>Si utiliza el script anterior, tenga en cuenta lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) Para ver un ejemplo del resultado del script anterior, consulte *Resultado del script de intérprete de comandos* en la sección de *Información adicional *de este patrón. | Desarrollador de aplicaciones | 
| Ejecute el trabajo de AWS Glue en la consola de administración de AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desarrollador de aplicaciones | 
| Verifique el estado de su trabajo de AWS Glue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-test-data-using-an-aws-glue-job-and-python.html) | Desarrollador de aplicaciones | 

## Recursos relacionados
<a name="generate-test-data-using-an-aws-glue-job-and-python-resources"></a>

**Referencias**
+ [Registro de datos abiertos en AWS](https://registry.opendata.aws/)
+ [Conjuntos de datos para análisis](https://aws.amazon.com/marketplace/solutions/data-analytics/data-sets)
+ [Datos abiertos en AWS](https://aws.amazon.com/opendata/)
+ [Cómo añadir trabajos en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Introducción a AWS Glue](https://aws.amazon.com/glue/getting-started/)

**Guías y patrones**
+ [Prácticas recomendadas de AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/best-practices.html)
+ [Aplicaciones de pruebas de carga](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/welcome.html)

## Información adicional
<a name="generate-test-data-using-an-aws-glue-job-and-python-additional"></a>

**Prueba de evaluación comparativa**

Este patrón se utilizó para generar 10 millones de archivos utilizando diferentes parámetros de paralelización como parte de una prueba de evaluación comparativa. El resultado de la prueba mostrará lo siguiente:


| 
| 
| Paralelización | Número de archivos generados por la ejecución de una tarea | Duración del trabajo | Velocidad | 
| --- |--- |--- |--- |
| 10 | 1 000 000 | 6 horas, 40 minutos | Muy lento | 
| 50 | 200.000 | 80 minutos | Moderado | 
| 100 | 100 000 | 40 minutos | Fast | 

Si desea acelerar el proceso, puede configurar más ejecuciones simultáneas en la configuración de su trabajo. Puede ajustar fácilmente la configuración del trabajo en función de sus requisitos, pero tenga en cuenta que existe un límite de cuota de servicio de AWS Glue. Para obtener más información, consulte [Puntos de conexión y cuotas de AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html).

**Resultado del script de intérprete de comandos**

En el siguiente ejemplo, se muestra el resultado del script de intérprete de comandos de la historia *Ejecute the AWS Glue desde la línea de comandos* siguiendo este patrón.

```
user@MUC-1234567890 MINGW64 ~
  $ # define parameters
  NUMBER_OF_FILES=10000000;
  PARALLELIZATION=50;
  # initialize
  _SB=0;
   
  # generate commands
  for i in $(seq 1 $PARALLELIZATION);
   do
         echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION)  (i-1) + SB))'","--ENDRANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION)  (i)))'"}'"'";
         _SB=1;
   done
   
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"200001","--END_RANGE":"400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"400001","--END_RANGE":"600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"600001","--END_RANGE":"800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"800001","--END_RANGE":"1000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000001","--END_RANGE":"1200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1200001","--END_RANGE":"1400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1400001","--END_RANGE":"1600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1600001","--END_RANGE":"1800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1800001","--END_RANGE":"2000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2000001","--END_RANGE":"2200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2200001","--END_RANGE":"2400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2400001","--END_RANGE":"2600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2600001","--END_RANGE":"2800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2800001","--END_RANGE":"3000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3000001","--END_RANGE":"3200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3200001","--END_RANGE":"3400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3400001","--END_RANGE":"3600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3600001","--END_RANGE":"3800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3800001","--END_RANGE":"4000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4000001","--END_RANGE":"4200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4200001","--END_RANGE":"4400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4400001","--END_RANGE":"4600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4600001","--END_RANGE":"4800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4800001","--END_RANGE":"5000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5000001","--END_RANGE":"5200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5200001","--END_RANGE":"5400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5400001","--END_RANGE":"5600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5600001","--END_RANGE":"5800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5800001","--END_RANGE":"6000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6000001","--END_RANGE":"6200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6200001","--END_RANGE":"6400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6400001","--END_RANGE":"6600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6600001","--END_RANGE":"6800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6800001","--END_RANGE":"7000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7000001","--END_RANGE":"7200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7200001","--END_RANGE":"7400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7400001","--END_RANGE":"7600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7600001","--END_RANGE":"7800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7800001","--END_RANGE":"8000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8000001","--END_RANGE":"8200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8200001","--END_RANGE":"8400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8400001","--END_RANGE":"8600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8600001","--END_RANGE":"8800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8800001","--END_RANGE":"9000000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9000001","--END_RANGE":"9200000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9200001","--END_RANGE":"9400000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9400001","--END_RANGE":"9600000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9600001","--END_RANGE":"9800000"}'
  aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9800001","--END_RANGE":"10000000"}'
  
  user@MUC-1234567890 MINGW64 ~
```

**Preguntas frecuentes**

*¿Cuántas ejecuciones simultáneas o trabajos paralelos debo usar?*

El número de ejecuciones simultáneas y trabajos paralelos depende del tiempo requerido y del número deseado de archivos de prueba. Le recomendamos que compruebe el tamaño de los archivos que va a crear. En primer lugar, compruebe cuánto tiempo tarda un trabajo de AWS Glue en generar la cantidad de archivos deseada. A continuación, utilice el número correcto de ejecuciones simultáneas para cumplir sus objetivos. Por ejemplo, si supone que 100 000 archivos tardan 40 minutos en completar la ejecución, pero el tiempo objetivo es de 30 minutos, debe aumentar la configuración de simultaneidad para su trabajo de AWS Glue.

*¿Qué tipo de contenido puedo crear con este patrón?*

Puede crear cualquier tipo de contenido, como archivos de texto con distintos delimitadores (por ejemplo, PIPE, JSON o CSV). Este patrón usa Boto3 para escribir en un archivo y, a continuación, guarda el archivo en un bucket de S3.

*¿Qué nivel de permiso de IAM necesito en el bucket de S3?*

Debe tener una política basada en identidad que le permita a `Write` acceso a objetos de su bucket de S3. Para obtener más información, consulte [Amazon S3: permite el acceso de lectura y escritura a objetos de un bucket de S3](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html) en la documentación de Amazon S3.

# Capturar datos de IoT directamente en Amazon S3 de forma rentable con AWS IoT Greengrass
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass"></a>

*Sebastian Viviani y Rizwan Syed, Amazon Web Services*

## Resumen
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-summary"></a>

Este patrón le muestra cómo incorporar datos de Internet de las cosas (IoT) de forma rentable directamente en un depósito de Amazon Simple Storage Service (Amazon S3) mediante un dispositivo AWS IoT Greengrass versión 2. El dispositivo ejecuta un componente personalizado que lee los datos de IoT y los guarda en un almacenamiento persistente (es decir, un disco o volumen local). A continuación, el dispositivo comprime los datos de IoT en un archivo de Apache Parquet y los carga periódicamente en un bucket de S3.

La cantidad y la velocidad de los datos de IoT que ingiere están limitadas únicamente por las capacidades de su hardware periférico y el ancho de banda de la red. Puede utilizar Amazon Athena para analizar de forma rentable los datos ingeridos. Athena admite archivos comprimidos de Apache Parquet y la visualización de datos mediante el uso de [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html).

## Requisitos previos y limitaciones
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una [puerta de enlace perimetral](https://docs.aws.amazon.com/greengrass/v1/developerguide/quick-start.html) que se ejecuta en [AWS IoT Greengrass versión 2](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-v2-whats-new.html) y recopila datos de los sensores (las fuentes de datos y el proceso de recopilación de datos están fuera del alcance de este patrón, pero puede usar casi cualquier tipo de datos de sensores). Este patrón utiliza un intermediario [MQTT](https://mqtt.org/) local con sensores o puertas de enlace que publican los datos de forma local.
+ [Componentes](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html)[, [roles](https://docs.aws.amazon.com/greengrass/v1/developerguide/service-role.html) y dependencias del SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation) de AWS IoT Greengrass
+ Un [componente de administrador de transmisiones](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) para cargar los datos al bucket de S3
+ [AWS SDK para Java](https://aws.amazon.com/sdk-for-java/), [AWS SDK para JavaScript](https://aws.amazon.com/sdk-for-javascript/) o [AWS SDK para Python (Boto3) para ejecutar](https://docs.aws.amazon.com/pythonsdk/) el APIs

**Limitaciones**
+ Los datos de este patrón no se cargan en tiempo real en el bucket de S3. Hay un período de retraso y puede configurarlo. Los datos se almacenan temporalmente en el dispositivo perimetral y, una vez transcurrido el período, se cargan.
+ El SDK está disponible en Java, Node.js o Python.

## Arquitectura
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-architecture"></a>

**Pila de tecnología de destino**
+ Amazon S3
+ AWS IoT Greengrass
+ Intermediario MQTT
+ Componente Stream Manager

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura diseñada para capturar datos de sensores de IoT y almacenarlos en un bucket de S3.

![\[Diagrama de arquitectura\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/b9032ae2-fffb-4750-b161-09810e19d878/images/8c28e639-5dcf-4950-b4a6-8015ec1a2894.png)


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

1. Las actualizaciones de varios sensores (por ejemplo, de temperatura y válvula) se publican en un agente de MQTT local.

1. El compresor de archivos Parquet que está suscrito a estos sensores actualiza los temas y recibe estas actualizaciones.

1. El compresor de archivos Parquet almacena las actualizaciones de forma local.

1. Una vez transcurrido el período, los archivos almacenados se comprimen en archivos Parquet y se pasan al administrador de flujos para cargarlos en el bucket de S3 especificado.

1. El administrador de transmisión carga los archivos de Parquet en el bucket de S3.

**nota**  
El administrador de transmisiones (`StreamManager`) es un componente administrado. Para ver ejemplos de cómo exportar datos a Amazon S3, consulte [Stream Manager](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-manager-component.html) en la documentación de AWS IoT Greengrass. Puede utilizar un bróker MQTT local como componente u otro bróker como [Eclipse Mosquitto](https://mosquitto.org/).

## Tools (Herramientas)
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-tools"></a>

**Herramientas de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar.
+ [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.
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) es un servicio en la nube y de tiempo de ejecución de borde de IoT de código abierto que le ayuda a crear, implementar y administrar aplicaciones de IoT en los dispositivos.

**Otras herramientas**
+ [Apache Parquet](https://parquet.apache.org/) es un formato de archivo de datos de código abierto orientado por columnas diseñado para el almacenamiento y la recuperación.
+ [El MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html) (Message Queuing Telemetry Transport) es un protocolo de mensajería ligero diseñado para dispositivos restringidos.

## Prácticas recomendadas
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-best-practices"></a>

**Utilice el formato de partición adecuado para los datos cargados**

No hay requisitos específicos para los nombres de los prefijos raíz del bucket de S3 (por ejemplo, `"myAwesomeDataSet/"` o`"dataFromSource"`), pero le recomendamos que utilice una partición y un prefijo significativos para que sea fácil entender el propósito del conjunto de datos.

También le recomendamos que utilice la partición correcta en Amazon S3 para que las consultas se ejecuten de forma óptima en el conjunto de datos. En el siguiente ejemplo, los datos se dividen en formato HIVE para optimizar la cantidad de datos escaneados por cada consulta de Athena. Esto puede mejorar el rendimiento y reducir los costos.

`s3://<ingestionBucket>/<rootPrefix>/year=YY/month=MM/day=DD/HHMM_<suffix>.parquet`

## Epics
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-epics"></a>

### Configure su entorno
<a name="set-up-your-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desarrollador de aplicaciones | 
| Añada permisos de IAM al bucket de S3. | Para conceder a los usuarios acceso de escritura al bucket y al prefijo de S3 que creó anteriormente, añada la siguiente política de IAM a su rol de AWS IoT Greengrass:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3DataUpload",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:List*",<br />                "s3:Put*"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<ingestionBucket>",<br />                "arn:aws:s3:::<ingestionBucket>/<prefix>/*"<br />            ]<br />        }<br />    ]<br />}</pre>Para obtener más información, consulte [Creación de una política de IAM para acceder a los recursos de Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.html) en la documentación de Aurora.A continuación, actualice la política de recursos (si es necesario) del bucket de S3 para permitir el acceso de escritura con los [principios de AWS correctos.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-bucket-user-policy-specifying-principal-intro.html) | Desarrollador de aplicaciones | 

### Cree e implemente el componente AWS IoT Greengrass
<a name="build-and-deploy-the-aws-iot-greengrass-component"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualizar la receta del componente. | [Actualice la configuración del componente](https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html) al [crear una implementación](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html) según el siguiente ejemplo:<pre>{<br />  "region": "<region>",<br />  "parquet_period": <period>,<br />  "s3_bucket": "<s3Bucket>",<br />  "s3_key_prefix": "<s3prefix>"<br />}</pre>`<region>`Sustitúyalo por su región `<period>` de AWS, su intervalo periódico, `<s3Bucket>` su bucket de S3 y `<s3prefix>` por su prefijo. | Desarrollador de aplicaciones | 
| Cree el componente. | Realice una de las siguientes acciones:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desarrollador de aplicaciones | 
| Actualice el cliente MQTT. | El código de ejemplo no utiliza la autenticación porque el componente se conecta localmente al intermediario. Si su situación es diferente, actualice la sección del cliente de MQTT según sea necesario. Además, realice lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desarrollador de aplicaciones | 

### Añada el componente al dispositivo principal de AWS IoT Greengrass versión 2
<a name="add-the-component-to-the-aws-iot-greengrass-version-2-core-device"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice la implementación del dispositivo principal. | Si la implementación del dispositivo principal de AWS IoT Greengrass versión 2 ya existe, [revise la implementación](https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html). Si la implementación no existe, [cree una nueva](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html).Para asignar al componente el nombre correcto, [actualice la configuración del administrador de registros](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html) para el nuevo componente (si es necesario) en función de lo siguiente:<pre>{<br />  "logsUploaderConfiguration": {<br />    "systemLogsConfiguration": {<br />    ...<br />    },<br />    "componentLogsConfigurationMap": {<br />      "<com.iot.ingest.parquet>": {<br />        "minimumLogLevel": "INFO",<br />        "diskSpaceLimit": "20",<br />        "diskSpaceLimitUnit": "MB",<br />        "deleteLogFileAfterCloudUpload": "false"<br />      }<br />      ...<br />    }<br />  },<br />  "periodicUploadIntervalSec": "300"<br />}</pre>Por último, complete la revisión de la implementación de su dispositivo principal AWS IoT Greengrass. | Desarrollador de aplicaciones | 

### Verifique la captura de datos en el depósito de S3
<a name="verify-data-ingestion-into-the-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe los registros del volumen de AWS IoT Greengrass. | Compruebe lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desarrollador de aplicaciones | 
| Compruebe el bucket de S3. | Compruebe si los datos se cargan en el bucket de S3. Puede ver los archivos que se están cargando en cada período.También puede comprobar si los datos se han cargado en el depósito de S3 consultando los datos en la siguiente sección. | Desarrollador de aplicaciones | 

### Configurar consultas desde Athena
<a name="set-up-querying-from-athena"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una base de datos y tabla. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desarrollador de aplicaciones | 
| Concede a Athena acceso a los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | Desarrollador de aplicaciones | 

## Resolución de problemas
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| El cliente MQTT no se puede conectar | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| El cliente MQTT no se suscribe | Validar los permisos en el bróker MQTT. Si tiene un bróker MQTT de AWS, consulte Broker [MQTT 3.1.1 (Moquette) y [MQTT 5 Broker (EMQX](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html))](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html). | 
| Los archivos Parquet no se crean | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 
| Los objetos no se cargan en el bucket de S3 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.html) | 

## Recursos relacionados
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-resources"></a>
+ [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)(documentación de Pandas)
+ Documentación de [Apache Parquet](https://parquet.apache.org/docs/) (documentación de Parquet)
+ [Desarrollo de componentes de AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/develop-greengrass-components.html) (Guía para desarrolladores de AWS IoT Greengrass, versión 2)
+ [Implemente componentes de AWS IoT Greengrass en dispositivos](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-deployments.html) (Guía para desarrolladores de AWS IoT Greengrass, versión 2)
+ [Interactúe con dispositivos de IoT locales](https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html) (Guía para desarrolladores de AWS IoT Greengrass, versión 2)
+ [Broker MQTT 3.1.1 (Moquette)](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html) (Guía para desarrolladores de AWS IoT Greengrass, versión 2)
+ [Broker MQTT 5 (EMQX)](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-emqx-component.html) (Guía para desarrolladores de AWS IoT Greengrass, versión 2)

## Información adicional
<a name="cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass-additional"></a>

**Análisis de costos**

El siguiente escenario de análisis de costos demuestra cómo el enfoque de captura de datos incluido en este patrón puede afectar los costos de captura de datos en la nube de AWS. Los ejemplos de precios de este escenario se basan en los precios vigentes en el momento de la publicación. Los precios están sujetos a cambios. Además, los costos pueden variar en función de la región de AWS, las Service quotas de AWS y otros factores relacionados con el entorno de nube.

*Conjunto de señales de entrada*

Este análisis utiliza el siguiente conjunto de señales de entrada como base para comparar los costos de captura de IoT con otras alternativas disponibles.


| 
| 
| Número de señales | Frecuencia | Datos por señal | 
| --- |--- |--- |
| 125 | 25 Hz | 8 bytes | 

En este escenario, el sistema recibe 125 señales. Cada señal es de 8 bytes y se produce cada 40 milisegundos (25 Hz). Estas señales pueden venir individualmente o agrupadas en una carga útil común. Tiene la opción de dividir y empaquetar estas señales según sus necesidades. También puede determinar la latencia. La latencia consiste en el período de tiempo para recibir, acumular y capturar los datos.

A modo de comparación, la operación de captura de este escenario se basa en la región de AWS de `us-east-1`. La comparación de costos se aplica únicamente a los servicios de AWS. Otros costos, como el hardware o la conectividad, no se tienen en cuenta en el análisis.

*Comparaciones de costos*

La siguiente tabla muestra el costo mensual en dólares estadounidenses (USD) de cada método de ingestión.


| 
| 
| Método | Costo mensual | 
| --- |--- |
| AWS SiteWise *IoT\$1* | 331,77 USD | 
| AWS IoT SiteWise Edge con paquete de procesamiento de datos (mantiene todos los datos en el borde) | 200 USD | 
| Reglas de AWS IoT Core y Amazon S3 para acceder a datos sin procesar | 84,54 USD | 
| Compresión de archivos Parquet en el borde y carga a Amazon S3 | 0,5 USD | 

\$1Los datos se deben reducir para cumplir con las Service quotas. Esto significa que se pierden algunos datos con este método.

*Métodos alternativos*

En esta sección se muestran los costos equivalentes de los siguientes métodos alternativos:
+ **AWS IoT SiteWise**: cada señal debe cargarse en un mensaje individual. Por lo tanto, la cantidad total de mensajes por mes es de 125 × 25 × 3600 × 24 × 30, o sea, 8 100 millones de mensajes por mes. Sin embargo, AWS IoT solo SiteWise puede gestionar 10 puntos de datos por segundo por propiedad. Suponiendo que los datos se reduzcan a 10 Hz, la cantidad de mensajes por mes se reduce a 125 × 10 × 3600 × 24 × 30, o sea, 3,24 mil millones. Si utiliza el componente de publicación que agrupa las medidas en grupos de 10 (a 1 USD por millón de mensajes), el costo mensual será de 324 USD al mes. Suponiendo que cada mensaje tenga 8 bytes (1 Kb/125), se trata de 25,92 GB de almacenamiento de datos. Esto añade un costo mensual de 7,77 USD. El costo total del primer mes es de 331,77 USD y aumenta 7,77 USD cada mes.
+ **AWS IoT SiteWise Edge con paquete de procesamiento de datos, que incluye todos los modelos y señales completamente procesados en el borde (es decir, sin ingesta de nubes)**: puede usar el paquete de procesamiento de datos como alternativa para reducir los costos y configurar todos los modelos que se calculan en el borde. Esto puede funcionar solo para el almacenamiento y la visualización, incluso si no se realiza ningún cálculo real. En este caso, es necesario utilizar un hardware potente para la puerta de enlace perimetral. Hay un costo fijo de 200 USD al mes.
+ **Ingesta directa a AWS IoT Core por parte de MQTT y una regla de IoT para almacenar los datos sin procesar en Amazon S3**: suponiendo que todas las señales se publiquen en una carga útil común, el número total de mensajes publicados en AWS IoT Core es de 25 × 3600 × 24 × 30, es decir, 64,8 millones por mes. A 1 USD por millón de mensajes, se trata de un costo mensual de 64,8 USD al mes. A 0,15 USD por millón de activaciones de reglas y con una regla por mensaje, esto añade un costo mensual de 19,44 USD. Con un costo de 0,023 USD por GB de almacenamiento en Amazon S3, se añaden otros 1,5 USD al mes (aumentando cada mes para reflejar los nuevos datos). El costo total del primer mes es de 84,54 USD y aumenta 1,5 USD cada mes.
+ **Comprimir los datos en el borde de un archivo Parquet y subirlos a Amazon S3 (método propuesto**): la relación de compresión depende del tipo de datos. Con los mismos datos industriales probados para MQTT, el total de datos de salida de un mes completo es de 1,2 Gb. Esto cuesta 0,03 USD al mes. Los índices de compresión (que utilizan datos aleatorios) descritos en otros puntos de referencia son del orden del 66 por ciento (lo que se acerca más al peor de los casos). El total de datos es de 21 Gb y cuesta 0,5 USD al mes.

**Generador de archivos de parquet**

El siguiente ejemplo de código muestra la estructura de un generador de archivos Parquet escrito en Python. El ejemplo de código es solo para fines ilustrativos y no funcionará si se pega en su entorno.

```
import queue
import paho.mqtt.client as mqtt
import pandas as pd

#queue for decoupling the MQTT thread
messageQueue = queue.Queue()
client = mqtt.Client()
streammanager = StreamManagerClient()

def feederListener(topic, message):
    payload = {
        "topic" : topic,
        "payload" : message,
    }
    messageQueue.put_nowait(payload)

def on_connect(client_instance, userdata, flags, rc):
    client.subscribe("#",qos=0)

def on_message(client, userdata, message):
    feederListener(topic=str(message.topic), message=str(message.payload.decode("utf-8")))


filename = "tempfile.parquet"
streamname = "mystream"
destination_bucket= "amzn-s3-demo-bucket"
keyname="mykey"
period= 60

client.on_connect = on_connect
client.on_message = on_message
streammanager.create_message_stream(
            MessageStreamDefinition(name=streamname, strategy_on_full=StrategyOnFull.OverwriteOldestData)
        )


while True:
   try:
       message = messageQueue.get(timeout=myArgs.mqtt_timeout)
   except (queue.Empty):
       logger.warning("MQTT message reception timed out")

   currentTimestamp = getCurrentTime()
   if currentTimestamp >= nextUploadTimestamp:
       df = pd.DataFrame.from_dict(accumulator)
       df.to_parquet(filename)
       s3_export_task_definition = S3ExportTaskDefinition(input_url=filename, bucket=destination_bucket, key=key_name)
       streammanager.append_message(streamname, Util.validate_and_serialize_to_json_bytes(s3_export_task_definition))
       accumulator = {}
       nextUploadTimestamp += period
   else:
        accumulator.append(message)
```

# Lanzar un trabajo de Spark en un clúster EMR transitorio mediante una función de Lambda
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function"></a>

*Dhrubajyoti Mukherjee, Amazon Web Services*

## Resumen
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-summary"></a>

Este patrón utiliza la acción de la RunJobFlow API Amazon EMR para lanzar un clúster transitorio para ejecutar un trabajo de Spark desde una función de Lambda. Un clúster EMR transitorio está diseñado para finalizar tan pronto como se complete el trabajo o si se produce algún error. Un clúster transitorio permite ahorrar costos porque solo se ejecuta durante el tiempo de cálculo y proporciona escalabilidad y flexibilidad en un entorno de nube.

El clúster EMR transitorio se lanza mediante la API Boto3 y el lenguaje de programación Python en una función de Lambda. La función de Lambda, escrita en Python, proporciona la flexibilidad adicional de iniciar el clúster cuando es necesario.

Para demostrar un ejemplo de cálculo y salida por lotes, este patrón lanzará un trabajo de Spark en un clúster de EMR desde una función de Lambda y ejecutará un cálculo por lotes con los datos de ventas de ejemplo de una empresa ficticia. El resultado del trabajo de Spark será un archivo de valores separados por comas (CSV) en Amazon Simple Storage Service (Amazon S3). El archivo de datos de entrada, el archivo.jar de Spark, un fragmento de código y una CloudFormation plantilla de AWS para una nube privada virtual (VPC) y las funciones de AWS Identity and Access Management (IAM) para ejecutar el cálculo se proporcionan como datos adjuntos.

## Requisitos previos y limitaciones
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa

**Limitaciones**
+ Solo se puede iniciar un trabajo de Spark a partir del código a la vez. 

**Versiones de producto**
+ Probado en Amazon EMR 6.0.0

## Arquitectura
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-architecture"></a>

**Pila de tecnología de destino**
+ Amazon EMR 
+ AWS Lambda
+ Amazon S3
+ Apache Spark

**Arquitectura de destino**

![\[Lambda a Amazon EMR y de Spark a Amazon S3\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6c999fa7-9550-4929-a5c1-60394142175d/images/eb4fbb3f-2114-44d2-b9da-3fdcb9ca456e.png)


**Automatizar y escalar**

Para automatizar el cálculo por lotes de Spark-EMR, puede utilizar cualquiera de las siguientes opciones.
+ Implemente una EventBridge regla de Amazon que pueda iniciar la función Lambda en una programación cron. Para obtener más información, consulte el [tutorial: Programe funciones de AWS Lambda mediante](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-run-lambda-schedule.html). EventBridge
+ Configure [las notificaciones de eventos de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) para iniciar la función de Lambda al llegar el archivo.
+ Transfiera los parámetros de entrada a la función de AWS Lambda a través del cuerpo del evento y de las variables de entorno de Lambda. 

## Tools (Herramientas)
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-tools"></a>

**Servicios de AWS**
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) es una plataforma de clúster administrada que simplifica la ejecución de marcos de macrodatos en AWS para procesar y analizar grandes cantidades de 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 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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otras herramientas**
+ [Apache Spark](https://spark.apache.org/docs/latest/) es un motor de análisis en varios idiomas para el procesamiento de datos a gran escala.

## Epics
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-epics"></a>

### Cree las funciones de IAM de Amazon EMR y Lambda y la VPC
<a name="create-the-amazon-emr-and-lambda-iam-roles-and-the-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear las funciones de IAM y la VPC. | Si ya tiene las funciones de IAM de AWS Lambda y Amazon EMR y una VPC, puede omitir este paso. Para ejecutar el código, tanto el clúster de EMR como la función de Lambda requieren funciones de IAM. El clúster de EMR también requiere una VPC con una subred pública o una subred privada con una gateway NAT. *Para crear automáticamente todas las funciones de IAM y una VPC, implemente la plantilla de CloudFormation AWS adjunta tal cual, o bien, puede crear las funciones y la VPC manualmente, tal como se especifica en la sección Información adicional.* | Arquitecto de la nube | 
| Anote las claves de salida CloudFormation de la plantilla de AWS. | Una vez que la CloudFormation plantilla se haya implementado correctamente, vaya a la pestaña **Outputs** de la CloudFormation consola de AWS. Tenga en cuenta las cinco claves de salida: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function.html)Utilizará los valores de estas claves cuando cree la función de Lambda. | Arquitecto de la nube | 

### Cargue el archivo .jar de Spark
<a name="upload-the-spark-jar-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Subir el archivo.jar de Spark. | Cargue el archivo.jar de Spark en el depósito de S3 que creó la CloudFormation pila de AWS. El nombre del bucket es el mismo que el de la clave de salida`S3Bucket`.  | AWS general | 

### Crear la función de Lambda para lanzar el clúster de EMR
<a name="create-the-lambda-function-to-launch-the-emr-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Creación de una función de Lambda. | En la consola Lambda, cree una función de Lambda de Python 3.9\$1 con un rol de ejecución. La política de funciones de ejecución debe permitir a Lambda lanzar un clúster de EMR. (Consulte la CloudFormation plantilla de AWS adjunta). | Ingeniero de datos, ingeniero de nube | 
| Copie y pegue el código. | Sustituya el código del archivo `lambda_function.py` por el código de la sección de *Información adicional* de este patrón. | Ingeniero de datos, ingeniero de nube | 
| Cambie los parámetros del código. | Siga los comentarios del código para cambiar los valores de los parámetros para que se ajusten a su cuenta de AWS. | Ingeniero de datos, ingeniero de nube | 
| Inicie la función para iniciar el clúster. | Inicie la función para iniciar la creación de un clúster EMR transitorio con el archivo .jar de Spark proporcionado. Ejecutará el trabajo de Spark y finalizará automáticamente cuando se complete el trabajo. | Ingeniero de datos, ingeniero de nube | 
| Compruebe el estado del clúster de EMR. | Una vez iniciado el clúster de EMR, aparece en la consola de Amazon EMR, en la pestaña **Clústeres**. Se puede comprobar en consecuencia cualquier error que se produzca al lanzar el clúster o al ejecutar el trabajo. | Ingeniero de datos, ingeniero de nube | 

### Crear y ejecutar la ejemplo de ejemplo
<a name="set-up-and-run-the-sample-demo"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Subir el archivo.jar de Spark.  | Descargar el archivo.jar de Spark de la sección de *Adjuntos* y cárgalo en el bucket de S3. | Ingeniero de datos, ingeniero de nube | 
| Cargue el conjunto de datos de entrada. | Cargue el archivo `fake_sales_data.csv` en el bucket de S3. | Ingeniero de datos, ingeniero de nube | 
| Pegue el código de Lambda y cambie los parámetros. | Copie el código de la sección **Herramientas** y péguelo en una función de Lambda, sustituyendo el archivo de código `lambda_function.py`. Cambie los valores de los parámetros para que se ajusten a su cuenta. | Ingeniero de datos, ingeniero de nube | 
| Iniciar la función y verificar la salida. | Una vez que la función de Lambda inicia el clúster con el trabajo de Spark proporcionado, genera un archivo.csv en el bucket de S3. | Ingeniero de datos, ingeniero de nube | 

## Recursos relacionados
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-resources"></a>
+ [Construyendo Spark](https://spark.apache.org/docs/latest/building-spark.html)
+ [Apache Spark y Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark.html)
+ [Documentación sobre run\$1job\$1flow de Boto3 Docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html#EMR.Client.run_job_flow)
+ [Información y documentación de Apache Spark](https://spark.apache.org/)

## Información adicional
<a name="launch-a-spark-job-in-a-transient-emr-cluster-using-a-lambda-function-additional"></a>

**Código**

```
"""
Copy paste the following code in your Lambda function. Make sure to change the following key parameters for the API as per your account

-Name (Name of Spark cluster)
-LogUri (S3 bucket to store EMR logs)
-Ec2SubnetId (The subnet to launch the cluster into)
-JobFlowRole (Service role for EC2)
-ServiceRole (Service role for Amazon EMR)

The following parameters are additional parameters for the Spark job itself. Change the bucket name and prefix for the Spark job (located at the bottom).

-s3://your-bucket-name/prefix/lambda-emr/SparkProfitCalc.jar (Spark jar file)
-s3://your-bucket-name/prefix/fake_sales_data.csv (Input data file in S3)
-s3://your-bucket-name/prefix/outputs/report_1/ (Output location in S3)
"""
import boto3

client = boto3.client('emr')


def lambda_handler(event, context):
    response = client.run_job_flow(
        Name='spark_job_cluster',
        LogUri='s3://your-bucket-name/prefix/logs',
        ReleaseLabel='emr-6.0.0',
        Instances={
            'MasterInstanceType': 'm5.xlarge',
            'SlaveInstanceType': 'm5.large',
            'InstanceCount': 1,
            'KeepJobFlowAliveWhenNoSteps': False,
            'TerminationProtected': False,
            'Ec2SubnetId': 'subnet-XXXXXXXXXXXXXX'
        },
        Applications=[{'Name': 'Spark'}],
        Configurations=[
            {'Classification': 'spark-hive-site',
             'Properties': {
                 'hive.metastore.client.factory.class': 'com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory'}
             }
        ],
        VisibleToAllUsers=True,
        JobFlowRole='EMRLambda-EMREC2InstanceProfile-XXXXXXXXX',
        ServiceRole='EMRLambda-EMRRole-XXXXXXXXX',
        Steps=[
            {
                'Name': 'flow-log-analysis',
                'ActionOnFailure': 'TERMINATE_CLUSTER',
                'HadoopJarStep': {
                    'Jar': 'command-runner.jar',
                    'Args': [
                        'spark-submit',
                        '--deploy-mode', 'cluster',
                        '--executor-memory', '6G',
                        '--num-executors', '1',
                        '--executor-cores', '2',
                        '--class', 'com.aws.emr.ProfitCalc',
                        's3://your-bucket-name/prefix/lambda-emr/SparkProfitCalc.jar',
                        's3://your-bucket-name/prefix/fake_sales_data.csv',
                        's3://your-bucket-name/prefix/outputs/report_1/'
                    ]
                }
            }
        ]
    )
```

**Funciones de IAM y creación de VPC**

Para lanzar el clúster de EMR en una función de Lambda, se necesitan funciones de VPC e IAM. Puede configurar las funciones de VPC e IAM mediante la CloudFormation plantilla de AWS de la sección de adjuntos de este patrón, o puede crearlas manualmente mediante los siguientes enlaces. 

Las siguientes funciones de IAM son necesarias para ejecutar Lambda y Amazon EMR. 

*Rol de ejecución de Lambda*

El [rol de ejecución](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) de una función de AWS Lambda concede permiso a la función para que tenga acceso a los servicios y recursos de AWS.

*Roles de servicio para Amazon EMR*

La [función Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html) define las acciones permitidas para Amazon EMR al aprovisionar recursos y realizar tareas de nivel de servicio que no se realizan en el contexto de una instancia de Amazon Elastic Compute Cloud (Amazon) que se ejecuta dentro de un clúster. EC2 Por ejemplo, la función de servicio se utiliza para aprovisionar EC2 instancias cuando se lanza un clúster.

*Función de servicio para EC2 instancias*

La [función de servicio para EC2 las instancias de clúster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) (también denominada perfil de EC2 instancia para Amazon EMR) es un tipo especial de función de servicio que se asigna a todas las instancias de un clúster de Amazon EMR cuando se lanza la EC2 instancia. Los procesos de aplicación que se ejecutan sobre el ecosistema de Apache asumen este rol para los permisos, e interactuar así con otros servicios de AWS.

*Creación de VPC y subredes*

Puede [crear una VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#create-vpc-and-other-resources) desde la consola de VPC. 

## Conexiones
<a name="attachments-6c999fa7-9550-4929-a5c1-60394142175d"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/6c999fa7-9550-4929-a5c1-60394142175d/attachments/attachment.zip)

# Migración de cargas de trabajo de Apache Cassandra a Amazon Keyspaces mediante AWS Glue
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue"></a>

*Nikolai Kolesnikov, Karthiga Priya Chandran y Samir Patel, Amazon Web Services*

## Resumen
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-summary"></a>

Este patrón le muestra cómo migrar sus cargas de trabajo actuales de Apache Cassandra a Amazon Keyspaces (para Apache Cassandra) mediante AWS Glue. CQLReplicator Puede usarlo CQLReplicator en AWS Glue para minimizar el retraso en la replicación que se produce al migrar sus cargas de trabajo en cuestión de minutos. También aprenderá a usar un bucket de Amazon Simple Storage Service (Amazon S3) para almacenar los datos necesarios para la migración, incluidos los archivos de configuración, los scripts y los archivos de [Apache Parquet](https://parquet.apache.org/). Este patrón supone que las cargas de trabajo de Cassandra están alojadas en instancias de Amazon Elastic Compute Cloud EC2 (Amazon) en una nube privada virtual (VPC).

## Requisitos previos y limitaciones
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-prereqs"></a>

**Requisitos previos **
+ Clúster de Cassandra con tabla de origen
+ Tabla objetivo en Amazon Keyspaces para replicar la carga de trabajo
+ Bucket de S3 para almacenar archivos intermedios de Parquet que contienen cambios de datos graduales
+ Bucket de S3 para almacenar archivos de configuración de trabajos y scripts

**Limitaciones**
+ CQLReplicator en AWS Glue se necesita algún tiempo para aprovisionar las unidades de procesamiento de datos (DPUs) para las cargas de trabajo de Cassandra. El retraso de la replicación entre el clúster de Cassandra y el espacio de claves y la tabla de destino en Amazon Keyspaces se reducirá a pocos minutos.

## Arquitectura
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-architecture"></a>

**Pila de tecnología de origen**
+ Apache Cassandra
+ DataStax Servidor
+ ScyllaDB

**Pila de tecnología de destino**
+ Amazon Keyspaces

**Arquitectura de migración **

El siguiente diagrama muestra un ejemplo de arquitectura en el que un clúster de Cassandra se aloja en EC2 instancias y se distribuye en tres zonas de disponibilidad. Los nodos de Cassandra están alojados en subredes privadas.

![\[Rol de servicio personalizado, Amazon Keyspaces y Amazon S3, con AWS Glue conectado a la VPC de los nodos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e08048da-8996-4f2c-b8ed-da49fe9e693b/images/76256ab3-a1e6-4c9e-9c40-dc78f51edf0f.png)


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

1. Un rol de servicio personalizado proporciona acceso a Amazon Keyspaces y al bucket de S3.

1. Un trabajo de AWS Glue lee la configuración del trabajo y los scripts del bucket de S3.

1. El trabajo de AWS Glue se conecta a través del puerto 9042 para leer los datos del clúster de Cassandra.

1. El trabajo de AWS Glue se conecta a través del puerto 9142 para escribir los datos en Amazon Keyspaces.

## Tools (Herramientas)
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-tools"></a>

**Servicios y herramientas de AWS**
+ La [interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.
+ [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) es un shell basado en navegador que puede utilizar para administrar los servicios de AWS mediante la interfaz de línea de comandos de AWS (AWS CLI) y una gama de herramientas de desarrollo preinstaladas.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de ETL totalmente gestionado que le permite clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [Amazon Keyspaces (para Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) es un servicio de base de datos administrada que le permite migrar, ejecutar y escalar sus cargas de trabajo de Cassandra en la nube de AWS.

**Código**

El código de este patrón está disponible en el repositorio. GitHub [CQLReplicator](https://github.com/aws-samples/cql-replicator/tree/main/glue)

## Prácticas recomendadas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-best-practices"></a>
+ Para determinar los recursos de AWS Glue necesarios para la migración, calcule el número de filas de la tabla de Cassandra de origen. Por ejemplo, 250 000 filas por 0,25 DPU (2 vCPUs, 4 GB de memoria) con un disco de 84 GB.
+ Calienta previamente las mesas de Amazon Keyspaces antes de ponerlas en marcha. CQLReplicator Por ejemplo, ocho CQLReplicator mosaicos (trabajos con AWS Glue) pueden escribir hasta 22 K WCUs por segundo, por lo que el objetivo debe precalentarse entre 25 y 30 K WCUs por segundo.
+ Para permitir la comunicación entre los componentes de AWS Glue, utilice una regla de entrada con autorreferencia para todos los puertos TCP del grupo de seguridad.
+ Utilice la estrategia de tráfico gradual para distribuir la carga de trabajo de migración a lo largo del tiempo.

## Epics
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-epics"></a>

### Implemente CQLReplicator
<a name="deploy-cqlreplicator"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un espacio de claves y una tabla de destino.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | Propietario de la aplicación, administrador de AWS, administrador de bases de datos, desarrollador de aplicaciones | 
| Configure el controlador de Cassandra para conectarse a Cassandra. | Utilice el siguiente script dde configuración:<pre>Datastax-java-driver {<br />  basic.request.consistency = "LOCAL_QUORUM"<br />  basic.contact-points = ["127.0.0.1:9042"]<br />   advanced.reconnect-on-init = true<br />   basic.load-balancing-policy {<br />        local-datacenter = "datacenter1"<br />}<br />advanced.auth-provider = {<br />       class = PlainTextAuthProvider<br />       username = "user-at-sample"<br />       password = "S@MPLE=PASSWORD="<br />}<br />}</pre>El anterior script usa el conector Spark Cassandra. Para obtener más información, consulte la configuración de referencia para [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | Administrador de base de datos | 
| Configure el controlador de Cassandra para conectarse a Amazon Keyspaces. | Utilice el siguiente script dde configuración:<pre>datastax-java-driver {<br />basic {<br />  load-balancing-policy {<br />    local-datacenter = us-west-2<br />        }<br />  contact-points = [<br />            "cassandra.us-west-2.amazonaws.com:9142"<br />        ]<br />  request {<br />  page-size = 2500<br />  timeout = 360 seconds<br />  consistency = LOCAL_QUORUM<br />        }<br />    }<br />advanced {<br /> control-connection {<br />  timeout = 360 seconds<br />        }<br /> session-leak.threshold = 6<br /> connection {<br /> connect-timeout = 360 seconds<br /> init-query-timeout = 360 seconds<br /> warn-on-init-error = false<br />        }<br /> auth-provider = {<br />  class = software.aws.mcs.auth.SigV4AuthProvider<br />  aws-region = us-west-2<br /> }<br /><br /> ssl-engine-factory {<br />  class = DefaultSslEngineFactory<br />        }<br />    }<br />}</pre>El anterior script usa el conector Spark Cassandra. Para obtener más información, consulte la configuración de referencia para [Cassandra](https://docs.datastax.com/en/developer/java-driver/4.17/manual/core/configuration/reference/). | Administrador de base de datos | 
| Cree un rol de IAM para el trabajo de AWS Glue. | Cree un nuevo rol de servicio de AWS denominado `glue-cassandra-migration` con AWS Glue como entidad de confianza.La `glue-cassandra-migration` debería proporcionar acceso de lectura y escritura al bucket de S3 y a Amazon Keyspaces. El bucket de S3 contiene los archivos .jar, los archivos de configuración para Amazon Keyspaces y Cassandra y los archivos Parquet intermedios. Por ejemplo, contiene las políticas administradas `AWSGlueServiceRole`, `AmazonS3FullAccess` y `AmazonKeyspacesFullAccess`. | AWS DevOps | 
|  CQLReplicator Descárguelo en AWS CloudShell. | Para descargar el proyecto en la carpeta de inicio, ejecute el siguiente comando:<pre>git clone https://github.com/aws-samples/cql-replicator.git<br />cd cql-replicator/glue<br /># Only for AWS CloudShell, the bc package includes bc and dc. Bc is an arbitrary precision numeric processing arithmetic language<br />sudo yum install bc -y</pre> |  | 
| Modifique los archivos de configuración de referencia. | Copie `CassandraConnector.conf` y `KeyspacesConnector.conf` en el directorio `../glue/conf` de la carpeta del proyecto. | AWS DevOps | 
| Inicie el proceso de migración. | El siguiente comando inicializa el CQLReplicator entorno. La inicialización implica copiar los artefactos .jar y crear un conector de AWS Glue, un bucket de S3, un trabajo de AWS Glue, el espacio de claves `migration` y la tabla `ledger`:<pre>cd cql-replicator/glue/bin<br />./cqlreplicator --state init --sg '"sg-1","sg-2"' \ <br />                --subnet "subnet-XXXXXXXXXXXX" \ <br />                --az us-west-2a --region us-west-2 \ <br />                --glue-iam-role glue-cassandra-migration \ <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2<br /></pre>Este script incluye los siguientes parámetros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 
| Valide la implementación. | Tras ejecutar el comando anterior, la cuenta de AWS debe contener lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | AWS DevOps | 

### Corre CQLReplicator
<a name="run-cqlreplicator"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el proceso de migración. | Para operar CQLReplicator en AWS Glue, debe usar el `--state run` comando seguido de una serie de parámetros. Sus requisitos de migración únicos determinan principalmente la configuración precisa de estos parámetros. Por ejemplo, esta configuración puede variar si decide replicar los valores y las actualizaciones del periodo de vida (TTL) o si descarga objetos que superen 1 MB a Amazon S3.Para replicar la carga de trabajo del clúster de Cassandra a Amazon Keyspaces, ejecute el siguiente comando: <pre>./cqlreplicator --state run --tiles 8  \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \ <br />                --region us-west-2 \                              <br />                --src-keyspace source_keyspace \ <br />                --src-table source_table \  <br />                --trg-keyspace taget_keyspace \<br />                --writetime-column column_name \<br />                --trg-table target_table --inc-traffic</pre>El espacio de claves y la tabla de origen son `source_keyspace.source_table` en el clúster de Cassandra. El espacio de claves y la tabla de destino son `target_keyspace.target_table` en Amazon Keyspaces. El parámetro `--inc-traffic` ayuda a evitar que el tráfico gradual sobrecargue el clúster de Cassandra y Amazon Keyspaces con un número elevado de solicitudes.Para replicar las actualizaciones, agregue `--writetime-column regular_column_name` a la línea de comandos. La columna normal se utilizará como origen de la marca de tiempo de escritura. | AWS DevOps | 

### Supervisión del proceso de migración
<a name="monitor-the-migration-process"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las filas de Cassandra migradas durante la fase de migración del historial. | Para obtener el número de filas replicadas durante la fase de relleno, ejecute el siguiente comando:<pre>./cqlreplicator --state stats \<br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \  <br />                --src-keyspace source_keyspace --src-table source_table --region us-west-2</pre> | AWS DevOps | 

### Detención del proceso de migración
<a name="stop-the-migration-process"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice el comando `cqlreplicator` o la consola de AWS Glue. | Para detener el proceso de migración correctamente, ejecute el siguiente comando:<pre>./cqlreplicator --state request-stop --tiles 8 \                         <br />                --landing-zone s3://cql-replicator-1234567890-us-west-2 \     <br />                --region us-west-2 \                     <br />                --src-keyspace source_keyspace --src-table source_table</pre>Para detener el proceso de migración de forma inmediata, utilice la consola AWS Glue. | AWS DevOps | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los recursos implementados. | El siguiente comando eliminará el trabajo de AWS Glue, el conector, el bucket de S3 y la tabla `ledger` de Keyspaces:<pre>./cqlreplicator --state cleanup --landing-zone s3://cql-replicator-1234567890-us-west-2</pre> | AWS DevOps | 

## Resolución de problemas
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Los trabajos de AWS Glue fallaron y devolvieron el error de memoria insuficiente (OOM). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.html) | 

## Recursos relacionados
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-resources"></a>
+ [CQLReplicator con AWS Glue README.MD](https://github.com/aws-samples/cql-replicator/blob/main/glue/README.MD)
+ [Documentación de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [Documentación de Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html)
+ [Apache Cassandra](https://cassandra.apache.org/_/index.html)

## Información adicional
<a name="migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue-additional"></a>

**Consideraciones sobre la migración**

Puede usar AWS Glue para migrar la carga de trabajo de Cassandra a Amazon Keyspaces y, al mismo tiempo, mantener por completo la funcionalidad de sus bases de datos de origen de Cassandra durante el proceso de migración. Una vez completada la replicación, puede transferir sus aplicaciones a Amazon Keyspaces con un retraso de replicación mínimo (inferior a minutos) entre el clúster de Cassandra y Amazon Keyspaces. Para mantener la coherencia de datos, también puede seguir un proceso similar para replicar los datos de nuevo en el clúster de Cassandra desde Amazon Keyspaces.

**Cálculos de unidades de escritura**

Pongamos que, por ejemplo, desea escribir 500.000.000 con un tamaño de fila de 1 KiB durante una hora. El número total de unidades de escritura de Amazon Keyspaces (WCUs) que necesita se basa en este cálculo:

`(number of rows/60 mins 60s) 1 WCU per row = (500,000,000/(60*60s) * 1 WCU) = 69,444 WCUs required`

La tarifa de 1 hora es de 69.444 WCUs por segundo, pero podría añadir algo de amortiguación a los gastos generales.  Por ejemplo, `69,444 * 1.10 = 76,388 WCUs` tiene una capacidad adicional del 10 por ciento.

**Creación de un espacio de claves con CQL**

Para crear un espacio de claves con CQL, ejecute los siguientes comandos:

```
CREATE KEYSPACE target_keyspace WITH replication = {'class': 'SingleRegionStrategy'}
CREATE TABLE target_keyspace.target_table ( userid uuid, level text, gameid int, description text, nickname text, zip text, email text, updatetime text, PRIMARY KEY (userid, level, gameid) ) WITH default_time_to_live = 0 AND CUSTOM_PROPERTIES = {'capacity_mode':{ 'throughput_mode':'PROVISIONED', 'write_capacity_units':76388, 'read_capacity_units':3612 }} AND CLUSTERING ORDER BY (level ASC, gameid ASC)
```

# Migración de Oracle Business Intelligence 12c a la nube de AWS desde servidores en las instalaciones
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers"></a>

*Lanre (Lan-Ray) Showunmi y Patrick Huang, Amazon Web Services*

## Resumen
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-summary"></a>

Este patrón muestra cómo migrar [Oracle Business Intelligence Enterprise Edition 12c](https://www.oracle.com/business-analytics/business-intelligence/technologies/bi-enterprise-edition.html) de los servidores locales a la nube de AWS mediante AWS. CloudFormation También describe cómo puede usar otros servicios de AWS para implementar componentes de Oracle BI 12c y obtener alta disponibilidad, seguridad, flexibilidad y capacidad de escalado dinámico.

Para ver una lista de las prácticas recomendadas relacionadas con la migración de Oracle BI 12c a la nube de AWS, consulte la sección de **Información adicional** de este patrón.

**nota**  
Una práctica recomendada es ejecutar varias migraciones de prueba antes de transferir los datos existentes de Oracle BI 12c a la nube. Estas pruebas le ayudarán a ajustar su enfoque de migración, identificar y solucionar posibles problemas y estimar los requisitos de tiempo de inactividad con mayor precisión.

## Requisitos previos y limitaciones
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Conectividad de red segura entre los servidores en las instalaciones y AWS a través de los servicios de [AWS Virtual Private Network (AWS VPN)](https://aws.amazon.com/vpn/) o [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
+ Licencias de software para su sistema operativo Oracle, Oracle BI 12c, Oracle Database, Oracle WebLogic Server y Oracle HTTP Server

**Limitaciones**

Para obtener más información sobre límites de almacenamiento, consulte la documentación de [Amazon Relational Database Service (Amazon RDS) para Oracle](https://aws.amazon.com/rds/oracle/features/).

**Versiones de producto**
+ Oracle Business Intelligence Enterprise Edition 12c
+  WebLogic Servidor Oracle 12c
+ Oracle HTTP Server 12c
+ Oracle Database 12c (o posterior)
+ Oracle Java SE 8

## Arquitectura
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-architecture"></a>

El siguiente diagrama muestra un ejemplo de arquitectura para ejecutar componentes de Oracle BI 12c en la nube de AWS:

![\[Ejemplo de arquitectura para ejecutar componentes de Oracle BI 12c en la nube de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8bb72df1-7546-4208-bc70-5789767e3600/images/aae8f8f3-8125-4868-a8e5-eac1cc42812f.png)


 

En el siguiente diagrama se muestra la arquitectura:

1. Amazon Route 53 para proporcionar la configuración de sistema de nombres de dominio (DNS).

1. Elastic Load Balancing (ELB) distribuye el tráfico de red para mejorar la escalabilidad y la disponibilidad de los componentes de Oracle BI 12c en múltiples zonas de disponibilidad.

1. Los grupos de Auto Scaling de Amazon Elastic Compute Cloud (Amazon EC2) alojan los servidores HTTP de Oracle, el servidor Weblogic Admin y los servidores de BI gestionados en varias zonas de disponibilidad.

1. Amazon Relational Database Service (Amazon RDS) para bases de datos de Oracle almacena metadatos de BI Server en varias zonas de disponibilidad.

1. Amazon Elastic File System (Amazon EFS) está montado en todos los componentes de Oracle BI 12c para el almacenamiento de archivos compartidos.

**Pila de tecnología**
+ Amazon Elastic Block Store (Amazon EBS)
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ Amazon Elastic File System (Amazon EFS)
+ Amazon RDS para Oracle
+ AWS Certificate Manager (ACM)
+ Elastic Load Balancing (ELB)
+ Oracle BI 12c
+  WebLogic Servidor Oracle 12c
+ Oracle HTTP Server (OHS)

## Tools (Herramientas)
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) le ayuda a crear, almacenar y renovar claves y certificados SSL/TLS X.509 públicos y privados que protegen sus sitios web y aplicaciones de AWS.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) le permite migrar los almacenes de datos a la nube de AWS o entre combinaciones de configuraciones en la nube y en las instalaciones.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [Amazon EC2 Auto Scaling](https://aws.amazon.com/ec2/autoscaling/) le ayuda a mantener la disponibilidad de las aplicaciones y le permite añadir o eliminar automáticamente EC2 instancias de Amazon según las condiciones que defina. 
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) le ayuda a crear y configurar sistemas de archivos compartidos en la nube de AWS.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) permite distribuir el tráfico entrante de las aplicaciones entre distintos destinos. Por ejemplo, puede distribuir el tráfico entre instancias, contenedores y direcciones IP de Amazon Elastic Compute Cloud (Amazon EC2) en una o más zonas de disponibilidad.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) le ayuda a configurar, utilizar y escalar una base de datos relacional en la nube de AWS.
+ [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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le permite lanzar recursos de AWS en una red virtual que haya definido. Esta red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS.
+ [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) le ayuda a trasladar datos y metadatos de una base de datos a otra a altas velocidades.
+ [Oracle Fusion Middleware](https://www.oracle.com/middleware/technologies/business-intelligence-v12214-downloads.html) es un conjunto de herramientas de desarrollo de aplicaciones y soluciones de integración para la gestión de identidades, la colaboración y la generación de informes de inteligencia empresarial.
+ [Oracle](https://www.oracle.com/integration/goldengate/#:~:text=OCI%20GoldenGate%20is%20a%20real,in%20the%20Oracle%20Cloud%20Infrastructure.) le GoldenGate ayuda a diseñar, ejecutar, organizar y supervisar sus soluciones de procesamiento de datos y de replicación de datos en streaming en Oracle Cloud Infrastructure.
+ La [herramienta Oracle WebLogic Scripting Tool (WLST)](https://docs.oracle.com/middleware/12213/cross/wlsttasks.htm) proporciona una interfaz de línea de comandos que le ayuda a escalar horizontalmente sus clústeres. WebLogic 

## Epics
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-epics"></a>

### Evalúe el entorno de origen
<a name="assess-the-source-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Recopile información sobre el inventario de software. | Identifique las versiones y los niveles de parches de cada uno de los componentes de software de su pila de tecnología de origen, incluidos los siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 
| Recopile información sobre el inventario de cómputo y almacenamiento. | En su entorno de origen, revise las métricas de uso actuales e históricas para comprobar lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Asegúrese de tener en cuenta los picos históricos de uso. | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI, administrador de sistema | 
| Recopile información sobre la arquitectura del entorno de origen y sus requisitos. | Comprenda por completo la arquitectura de su entorno de origen y sus requisitos, incluidos los siguientes aspectos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 
| Identifique orígenes de datos de Java Database Connectivity (JDBC). | Recopile información sobre los orígenes de datos JDBC y los controladores de su entorno de origen para cada motor de base de datos que utilice. | Arquitecto de migración, propietario de la aplicación, administrador de Oracle BI, ingeniero o administrador de bases de datos | 
| Recopile información sobre la configuración específica del entorno. | Recopile información sobre los ajustes y configuraciones específicos de su entorno de origen, incluidos los siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 
| Identifique cualquier dependencia de otras aplicaciones. | Recopile información sobre las integraciones de su entorno de origen que crean dependencias con otras aplicaciones.Asegúrese de identificar las integraciones de Lightweight Directory Access Protocol (LDAP) y otros requisitos de red. | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 

### Diseñe su entorno de destino
<a name="design-your-target-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un documento de diseño de alto nivel. | Cree un documento de diseño de arquitectura de destino. Asegúrese de usar la información que recopiló al evaluar su entorno de origen para elaborar el documento de diseño. | Arquitecto de soluciones, arquitecto de aplicaciones, ingeniero de bases de datos, arquitecto de migraciones | 
| Obtenga la aprobación del documento de diseño. | Revise el documento de diseño con las partes interesadas y obtenga las aprobaciones necesarias. | Propietario de la aplicación o servicio, arquitecto de soluciones, arquitecto de aplicaciones | 

### Implementación de la infraestructura
<a name="deploy-the-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el código de infraestructura en CloudFormation. | Cree CloudFormation plantillas para aprovisionar su infraestructura de Oracle BI 12c en la nube de AWS.Para obtener más información, consulte [Trabajar con CloudFormation plantillas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) en la *Guía del CloudFormation usuario de AWS*.Se recomienda crear CloudFormation plantillas modulares para cada nivel de Oracle BI 12c, en lugar de crear una plantilla grande para todos los recursos. Para obtener más información sobre las prácticas CloudFormation recomendadas, consulte [8 prácticas recomendadas para automatizar las implementaciones con AWS CloudFormation en el blog](https://aws.amazon.com/blogs/infrastructure-and-automation/best-practices-automating-deployments-with-aws-cloudformation/) de AWS. | Arquitecto de infraestructura de nube, arquitecto de soluciones y arquitecto de aplicaciones | 
| Descargue el software necesario. | DDownload el siguiente software junto con las versiones y los parches necesarios del sitio web de [Oracle](https://www.oracle.com/):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migraciones, ingeniero de bases de datos, arquitecto de aplicaciones | 
| Prepare los scripts de instalación. | Cree scripts de instalación de software que ejecuten una instalación silenciosa. Estos scripts simplifican la automatización de la implementación.Para obtener más información, consulte [OBIEE 12c: ¿Cómo realizar una instalación silenciosa?](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2267490_1.html) en el sitio de Oracle Support. Necesitará una cuenta de Oracle Support para acceder a estos documentos. | Arquitecto de migraciones, ingeniero de bases de datos, arquitecto de aplicaciones | 
| Cree una AMI de Linux con respaldo Amazon EBS para los niveles de web y aplicaciones. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migraciones, ingeniero de bases de datos, arquitecto de aplicaciones | 
| Lance su infraestructura de AWS mediante CloudFormation. | Implemente sus niveles web y de aplicaciones de Oracle BI 12c en módulos mediante las CloudFormation plantillas que ha creado.Para obtener instrucciones, consulte [Introducción a AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) en la *Guía del CloudFormation usuario de AWS*. | Arquitecto de infraestructura de nube, arquitecto de soluciones y arquitecto de aplicaciones | 

### Migración de Oracle BI 12c a AWS mediante una instalación nueva
<a name="migrate-oracle-bi-12c-to-aws-by-using-a-fresh-installation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el software necesario. | Coloca el software necesario en una ubicación a la que puedan acceder las EC2 instancias de Amazon. Por ejemplo, puede instalar el software en Amazon S3 u otra EC2 instancia de Amazon a la que puedan acceder sus servidores web y de aplicaciones. | Arquitecto de migración, arquitecto de Oracle BI, arquitecto de infraestructura en la nube, arquitecto de soluciones y arquitecto de aplicaciones | 
| Prepare la base de datos del repositorio para la instalación de Oracle BI 12c. | Cree esquemas de Oracle BI 12c ejecutando la [utilidad de creación de repositorios de Oracle (RCU)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html#Oracle.Resources.RCU.Installing) en una nueva instancia de base de datos [Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html). | Arquitecto de infraestructura en la nube, arquitecto de soluciones, arquitecto de aplicaciones, arquitecto de migración, arquitecto de Oracle BI | 
| Instale Oracle Fusion Middleware 12c y Oracle BI 12c. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de Oracle BI | 
| Configure su dominio WebLogic de Oracle Server para Oracle BI 12c. | Configure su dominio de Oracle BI 12c como implementación no agrupada en clúster. Para obtener más información, consulte [Configurar el dominio BI](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-FD80C4C4-A2E9-4190-8B6A-7AD659D8FBE2.htm#BIEDG-GUID-D4FC2F0A-88B0-453C-BF14-17D365018252) en la *Guía de implementación empresarial de Oracle Fusion Middleware para Oracle Business Intelligence*. | Arquitecto de migración, arquitecto de Oracle BI | 
| Realice un escalado horizontal a partir de Oracle BI 12c. | Escale horizontalmente el nodo único hasta el número deseado de nodos. Para obtener más información, consulte [Escalado horizontal de Oracle Business Intelligence](https://docs.oracle.com/middleware/bi12214/lcm/BIEDG/GUID-B7BEA45C-A8C0-4591-B748-FC35C587DAE0.htm#BIEDG-GUID-B7BEA45C-A8C0-4591-B748-FC35C587DAE0) en la *Guía de implementación empresarial de Oracle Fusion Middleware para Oracle Business Intelligence*. | Arquitecto de migración, arquitecto de Oracle BI | 
| Instale el servidor HTTP 12c de Oracle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de Oracle BI | 
| Configure los equilibradores de carga para la finalización de SSL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de infraestructura de nube, arquitecto de migraciones | 
| Migre los artefactos de metadatos de inteligencia empresarial a AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de Oracle BI | 
| Realice las tareas posteriores a la migración. | Después de importar los archivos BAR, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Arquitecto de migración, arquitecto de Oracle BI | 

### Pruebe el nuevo entorno
<a name="test-the-new-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe el nuevo entorno de Oracle BI 12c. | Realice end-to-end pruebas en el nuevo entorno Oracle BI 12c. Utilice la automatización en la medida de lo posible.A continuación se muestran ejemplos de actividades de prueba:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html)Lleve a cabo pruebas y validaciones adicionales según sea necesario. | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 

### Realizar la transición al nuevo entorno
<a name="cut-over-to-the-new-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Desconecte el tráfico al entorno Oracle BI 12c en las instalaciones. | En la ventana de transición designada, detenga todo el tráfico al entorno Oracle BI 12c en las instalaciones. | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 
| Vuelva a sincronizar la nueva base de datos del repositorio Oracle BI 12c con la base de datos de origen. | Vuelva a sincronizar la base de datos del repositorio Oracle Oracle BI 12c de Amazon RDS con la base de datos en las instalaciones.Para sincronizar las bases de datos, puede realizar una [actualización de Oracle Data Pump](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html) o una [captura de datos de cambios (CDC) de AWS DMS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/). | Administrador de BI, ingeniero/administrador de bases de datos de Oracle | 
| Cambie su Oracle BI 12c URLs para que apunte al nuevo entorno de AWS. | Actualice Oracle BI 12c URLs en sus servidores DNS internos para que apunten a la nueva instalación de AWS. | Arquitecto de migración, arquitecto de soluciones, propietario de la aplicación, administrador de Oracle BI | 
| Supervise el nuevo entorno. | Supervise el nuevo entorno de Oracle BI 12c con cualquiera de las siguientes herramientas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers.html) | Administrador de Oracle BI, ingeniero/administrador de bases de datos, administrador de aplicaciones | 
| Obtenga la aprobación del proyecto. | Revise los resultados de las pruebas con las partes interesadas y obtenga las aprobaciones necesarias para finalizar la migración. | Propietario de la aplicación, propietario del servicio, arquitecto de infraestructura de nube, arquitecto de migración, arquitecto de BI de Oracle | 

## Recursos relacionados
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-resources"></a>
+ [Uso de Oracle Repository Creation Utility en Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) (*Guía de usuario de Amazon RDS*)
+ [Amazon RDS en Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) (*Guía de usuario de Amazon RDS*)
+ [Oracle WebLogic Server 12c en AWS (documento](https://d1.awsstatic.com/whitepapers/Oracle-WebLogic-12c-on-AWS.pdf) técnico de AWS)
+ [Implementación de Oracle Business Intelligence para una alta disponibilidad](https://docs.oracle.com/middleware/1221/biee/BIESG/highavail.htm#BIESG1584) (Centro de ayuda de Oracle)
+ [Archivos Oracle Business Intelligence Application (BAR)](https://docs.oracle.com/middleware/bi12214/biee/BIESG/GUID-7FCD90A3-E005-49BF-902F-30FBF9B41B07.htm#BIESG2889) (Centro de ayuda de Oracle)
+ [Cómo migrar OBI 12c entre entornos](https://support.oracle.com/knowledge/Enterprise%20Performance%20Management%20and%20Business%20Intelligence/2203360_1.html) (Soporte de Oracle) 

## Información adicional
<a name="migrate-oracle-business-intelligence-12c-to-the-aws-cloud-from-on-premises-servers-additional"></a>

La siguiente es una lista de prácticas recomendadas relacionadas con la migración de Oracle BI 12c a la nube de AWS.

**Bases de datos de repositorio**

Se recomienda alojar los esquemas de bases de datos de Oracle BI 12c en una instancia de Amazon RDS para Oracle. Este tipo de instancia proporciona una capacidad rentable y redimensionable, a la vez que automatiza tareas de administración como el aprovisionamiento de hardware, la configuración de bases de datos, la aplicación de parches y las copias de seguridad.

Para obtener más información, consulte [Uso de la utilidad de creación de repositorios de Oracle en RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Resources.RCU.html) en la *Guía del usuario de Amazon RDS*.

**Niveles web y de aplicaciones**

Las [ EC2 instancias de Amazon con memoria optimizada](https://aws.amazon.com/ec2/instance-types/) suelen ser adecuadas para los servidores Oracle BI 12c. Sea cual sea el tipo de instancia que elija, asegúrese de que las instancias que aprovisione cumplan con los requisitos de uso de memoria del sistema. Además, asegúrate de [configurar un tamaño de pila de máquina virtual WebLogic Java (JVM) suficiente](https://docs.oracle.com/cd/E49933_01/server.770/es_install/src/tins_postinstall_jvm_heap.html#:~:text=The%20default%20JVM%20heap%20size%20for%20WebLogic%20is%203GB.,file%20for%20Linux%20or%20setDomainEnv.) en función de la memoria disponible de tu EC2 instancia de Amazon.

**Almacenamiento local**

La E/S desempeña un papel importante en el rendimiento general de su aplicación Oracle BI 12c. Amazon Elastic Block Store (Amazon EBS) ofrece diferentes clases de almacenamiento optimizadas para distintos patrones de carga de trabajo. Asegúrese de elegir un tipo de volumen de Amazon EBS que se adapte a su caso de uso.

Para obtener más información acerca de tipo de volúmenes de EBS, consulte [Características de Amazon EBS](https://aws.amazon.com/ebs/features/) en la documentación de Amazon EBS.

**Almacenamiento compartido**

Un dominio Oracle BI 12c agrupado en clúster requiere almacenamiento compartido para los siguientes recursos:
+ Archivos de configuración
+ Directorio de datos singleton (SDD) de Oracle BI 12c
+ Caché global de Oracle
+ Scripts de Oracle BI Scheduler
+ Binarios de Oracle Server WebLogic 

Puede satisfacer este requisito de almacenamiento compartido con [Amazon EFS](https://aws.amazon.com/efs/), que proporciona un sistema de archivos Network File System (NFS) elástico, escalable y totalmente administrado.

*Optimizar el rendimiento del almacenamiento compartido*

Amazon EFS tiene dos [modos de rendimiento](https://docs.aws.amazon.com/efs/latest/ug/performance.html#throughput-modes): **aprovisionado** y **en ráfaga**. El servicio también tiene dos [modos de rendimiento](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes): de **uso general** y de **E/S máxima**.

Para ajustar el rendimiento, comience por probar sus cargas de trabajo en el modo de rendimiento de **uso general** y en el modo de rendimiento **aprovisionado**. Realizar estas pruebas le ayudará a determinar si dichos modos de referencia son suficientes para cumplir con los niveles de servicio deseados.

Para obtener más información, consulte [Rendimiento de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) en la *Guía del usuario de Amazon EFS*.

**Disponibilidad y recuperación de desastres**

Se recomienda implementar los componentes de Oracle BI 12c en varias zonas de disponibilidad para proteger los recursos en caso de que se produzca un fallo en una zona de disponibilidad. La siguiente lista incluye las prácticas recomendadas de disponibilidad y recuperación de desastres para recursos específicos de Oracle BI 12c alojados en la nube de AWS:
+ **Bases de datos de repositorios Oracle BI 12c**: implemente una instancia de base de datos de Amazon RDS con múltiples zonas de disponibilidad en su base de datos de repositorios Oracle BI 12c. En un despliegue Multi-AZ, Amazon RDS aprovisiona y mantiene automáticamente una réplica en espera sincrónica en una AZ diferente. Ejecutar una instancia de base de datos de repositorio de Oracle BI 12c entre regiones de alta disponibilidad puede mejorar la disponibilidad durante el mantenimiento de sistema planificado y ayuda a proteger sus bases de datos contra los errores de las instancias de base de datos y las interrupciones de las zonas de disponibilidad.
+ **Servidores gestionados Oracle BI 12c**: Para lograr la tolerancia a errores, se recomienda implementar los componentes del sistema Oracle BI 12c en los servidores gestionados de un grupo de Amazon EC2 Auto Scaling configurado para abarcar varias zonas de disponibilidad. Auto Scaling reemplaza las instancias defectuosas según los [controles de EC2 estado de Amazon](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html). En caso de que se produzca un error en la zona de disponibilidad, los servidores HTTP de Oracle seguirán dirigiendo el tráfico a los servidores gestionados de la zona de disponibilidad en funcionamiento. Después, Auto Scaling lanzará instancias para cumplir con sus requisitos de recuento de hosts. Se recomienda activar la replicación del estado de la sesión HTTP para garantizar que las sesiones existentes se conmuten por error a los servidores gestionados en funcionamiento.
+ **Servidores de administración Oracle BI 12c:** para asegurarse de que su Servidor de administración tiene alta disponibilidad, hospételo en un grupo de Amazon EC2 Auto Scaling configurado para abarcar varias zonas de disponibilidad. A continuación, defina el tamaño mínimo y máximo del grupo en **1**. Si se produce un error en una zona de disponibilidad, Amazon EC2 Auto Scaling inicia un servidor de administración de reemplazo en una zona de disponibilidad alternativa. Para recuperar cualquier host subyacente que haya fallado dentro de la misma zona de disponibilidad, puede activar [Amazon EC2 Auto Recovery](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-recover.html).
+ **Servidores Oracle Web Tier:** se recomienda asociar su servidor HTTP de Oracle con su dominio de Oracle WebLogic Server. Para obtener una alta disponibilidad, despliegue su servidor HTTP de Oracle en un grupo de Amazon EC2 Auto Scaling configurado para abrir múltiples zonas de disponibilidad. A continuación, instale el servidor detrás de un equilibrador de carga elástico ELB. Para ofrecer protección adicional contra errores en el host, puede activar Amazon EC2 Auto Recovery.

**Escalabilidad**

La elasticidad de la nube de AWS le ayuda a escalar las aplicaciones horizontal o verticalmente en respuesta a las necesidades de su carga de trabajo.

*Escalado vertical*

Para escalar verticalmente la aplicación, puede cambiar el tamaño y el tipo de las EC2 instancias de Amazon en las que se ejecutan los componentes de Oracle BI 12c. No necesita aprovisionar en exceso las instancias al inicio de la implementación, ni incurrir en costos innecesarios. 

*Escalado horizontal*

Amazon EC2 Auto Scaling le ayuda a escalar horizontalmente su aplicación al añadir o eliminar automáticamente servidores gestionados en función de los requisitos de carga de trabajo.

**nota**  
El escalado horizontal con Amazon EC2 Auto Scaling requiere habilidades de creación de scripts y pruebas exhaustivas para su implementación.

**Copia de seguridad y recuperación**

La siguiente lista incluye las prácticas recomendadas de disponibilidad y recuperación de desastres para recursos específicos de Oracle BI 12c alojados en la nube de AWS:
+ **Repositorios de metadatos de Oracle Business Intelligence:** Amazon RDS crea y guarda automáticamente copias de seguridad de las instancias de sus bases de datos. Estas copias de seguridad se retienen durante el período que usted especifique. Asegúrese de configurar la duración y retención de las copias de seguridad de Amazon RDS en función de sus requisitos de protección de datos. Para obtener información adicional, consulte [Copia de seguridad y restauración de Amazon RDS](https://aws.amazon.com/rds/features/backup/).
+ **Servidores gestionados, servidores de administración y servidores de nivel web:** asegúrese de configurar las [instantáneas de Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html) en función de sus requisitos de protección y retención de datos.
+ **Almacenamiento compartido:** puede gestionar las copias de seguridad y la recuperación de los archivos almacenados en Amazon EFS mediante [AWS Backup](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html). El servicio AWS Backup también se puede implementar para gestionar de forma centralizada las copias de seguridad y la recuperación de otros servicios, como Amazon EC2, Amazon EBS y Amazon RDS. Para obtener más información, consulte [¿Qué es AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) En la *guía para desarrolladores de AWS Lambda*.

**Seguridad y conformidad**

La siguiente lista de prácticas recomendadas de seguridad y servicios de AWS puede ayudarle a proteger sus aplicaciones de Oracle BI 12c en la nube de AWS:
+ **Cifrado en reposo:** Amazon RDS, Amazon EFS y Amazon EBS son compatibles con los algoritmos de cifrado estándar del sector. Puede utilizar [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) para crear y administrar claves criptográficas, así como a controlar su uso en una amplia gama de servicios de AWS y en sus aplicaciones. También puede configurar [Oracle Transparent Data Encryption (TDE)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.AdvSecurity.html) en la instancia de base de datos Amazon RDS para Oracle que aloja la base de datos del repositorio Oracle BI 12c.
+ **Cifrado en tránsito:** se recomienda activar los protocolos SSL o TLS para proteger los datos en tránsito entre las distintas capas de la instalación de Oracle BI 12c. Puede usar [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) para aprovisionar, administrar e implementar certificados SSL y TLS públicos y privados para los recursos de Oracle BI 12c.
+ **Seguridad de la red**: asegúrese de implementar los recursos de Oracle BI 12c en una VPC de Amazon con los controles de acceso adecuados configurados para su caso de uso. Configure sus grupos de seguridad para filtrar el tráfico entrante y saliente de las EC2 instancias de Amazon en las que se ejecuta la instalación. Además, asegúrese de configurar las [listas de control de acceso a la red (NACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) que permitan o denieguen el tráfico en función de las reglas definidas.
+ **Supervisión y registro**: puede utilizar [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) para realizar un seguimiento de las llamadas a las API a su infraestructura de AWS, incluidos los recursos de Oracle BI 12c. Esta funcionalidad resulta útil para supervisar los cambios en la infraestructura o para realizar análisis de seguridad. También puede utilizar [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) para ver datos operativos que le proporcionarán información útil sobre el rendimiento y el estado de su aplicación Oracle BI 12c. Puede configurar alarmas y tomar medidas automatizadas en función de esas alarmas. Amazon RDS proporciona herramientas de supervisión adicionales, incluidas [Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) y [Performance Insights](https://aws.amazon.com/rds/performance-insights/).

# Migración de ELK Stack a Elastic Cloud en AWS
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws"></a>

*Battulga Purevragchaa y Antony Prasad Thevaraj, Amazon Web Services*

*uday reddy, None*

## Resumen
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-summary"></a>

[Elastic](https://www.elastic.co/) ha prestado servicios durante muchos años y, por lo general, sus usuarios y clientes administran Elastic ellos mismos en las instalaciones. [Elastic Cloud](https://www.elastic.co/cloud), el [servicio gestionado de Elasticsearch](https://www.elastic.co/elasticsearch/service), proporciona una forma de consumir Elastic Stack (ELK Stack) y soluciones de [búsqueda empresarial](https://www.elastic.co/enterprise-search), [observabilidad](https://www.elastic.co/observability) y [seguridad](https://www.elastic.co/security). Puede acceder a las soluciones de Elastic con aplicaciones de registro, métricas, APM (supervisión del rendimiento de las aplicaciones) y SIEM (administración de eventos e información de seguridad). También puede usar características integradas como machine learning, gestión de ciclo de vida de índices y Kibana Lens (para visualizaciones de arrastrar y soltar).

Cuando transiciona de Elasticsearch autogestionado a Elastic Cloud, el servicio de Elasticsearch se ocupa de lo siguiente:
+ Aprovisionamiento y administración de la infraestructura subyacente
+ Creación y administración de clústeres de Elasticsearch
+ Escalado vertical y horizontal de los clústeres
+ Actualizaciones, parches y toma de instantáneas

Todo esto le brinda más tiempo para resolver otros desafíos.

Este patrón define cómo migrar de Elasticsearch 7.13 en las instalaciones a Elasticsearch en Elastic Cloud en Amazon Web Services (AWS). Es posible que otras versiones requieran pequeñas modificaciones de los procesos descritos en este patrón. Para obtener más información, contacte con su representante de Elastic.

## Requisitos previos y limitaciones
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-prereqs"></a>

**Requisitos previos **
+ Una [cuenta de AWS](https://aws.amazon.com/account/) activa con acceso a [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3) para las instantáneas
+ Un [enlace privado](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html) seguro y con un ancho de banda suficientemente alto para copiar archivos de datos de instantáneas a Amazon S3
+ [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/)
+ [Políticas de Elastic Snapshot](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html) para garantizar que la ingesta de datos se archive con regularidad, ya sea en un almacén de datos local lo suficientemente grande o en un almacenamiento remoto (Amazon S3)

Debe conocer el tamaño de sus instantáneas y las [políticas de ciclo de vida](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html) de los índices correspondientes en las instalaciones antes de iniciar la migración. Para obtener más información, [póngase en contacto con Elastic](https://www.elastic.co/contact).

**Roles y habilidades**

El proceso de migración también requiere los roles y la experiencia que se describen en la siguiente tabla.


| 
| 
| Rol | Experiencia | Responsabilidades | 
| --- |--- |--- |
| Compatibilidad con aplicaciones | Familiaridad con Elastic Cloud y Elastic en las instalaciones | Todas las tareas relacionadas con Elastic | 
| Administrador de sistemas o administrador de base de datos | Conocimiento profundo del entorno de Elastic en las instalaciones y su configuración | Capacidad de aprovisionar almacenamiento, instalar y usar la Interfaz de la línea de comandos de AWS (AWS CLI) e identificar todos los orígenes de datos que alimentan Elastic en las instalaciones | 
| Administrador de red | Conocimiento de la conectividad, la seguridad y el rendimiento de la red en las instalaciones a AWS | Creación de enlaces de red desde las instalaciones a Amazon S3 y conocimiento del ancho de banda de conectividad | 

**Limitaciones**
+ Elasticsearch en Elastic Cloud solo está disponible en [regiones de AWS compatibles (septiembre de 2021)](https://www.elastic.co/guide/en/cloud/current/ec-regions-templates-instances.html#ec-aws_regions).

**Versiones de producto**
+ Elasticsearch 7.13

## Arquitectura
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-architecture"></a>

**Pila de tecnología de origen**

Elasticsearch 7.13 o posterior en las instalaciones:
+ Instantáneas del clúster
+ Instantáneas de índice
+ Configuración de [Beats](https://www.elastic.co/beats/)

**Arquitectura de la tecnología de origen**

El siguiente diagrama muestra una arquitectura típica en las instalaciones con diferentes métodos de ingesta, tipos de nodos y Kibana. Los distintos tipos de nodos reflejan las funciones de clúster, autenticación y visualización de Elasticsearch.

![\[Proceso de ocho pasos que incluye Beats, Logstash, Elasticsearch y Kibana.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/937c4d22-429f-4673-86df-ae491d68389c.png)


1. Ingestión de Beats a Logstash

1. Ingestión de Beats a cola de mensajes de Apache Kafka

1. Ingestión de Filebeat a Logstash

1. Ingestión de cola de mensajes de Apache Kafka a Logstash

1. Ingestión de Logstash a clúster de Elasticsearch

1. Clúster de destino de Elasticsearch

1. Nodo de autenticación y notificación

1. Nodos de Kibana y blob

**Pila de tecnología de destino**

Elastic Cloud se implementa en su cuenta de software como servicio (SaaS) en varias regiones de AWS con replicación entre clústeres.
+ Instantáneas del clúster
+ Instantáneas de índice
+ Configuraciones de Beats
+ Elastic Cloud
+ Equilibrador de carga de red
+ Amazon Route 53
+ Amazon S3

**Arquitectura de destino**

![\[Los puntos de conexión de Route 53 dirigen el tráfico a entornos multi-AZ en dos regiones diferentes.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/16cbac49-0adb-4469-b546-ae4b1ca35357.png)


 

La infraestructura gestionada de Elastic Cloud es:
+ De alta disponibilidad, ya que está presente en varias [zonas de disponibilidad](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) y varias regiones de AWS.
+ Tolerante a fallos en la región, ya que los datos (índices e instantáneas) se replican mediante la [replicación entre clústeres (CCR)](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html) de Elastic Cloud
+ De archivo, porque las instantáneas se archivan en [Amazon S3](https://aws.amazon.com/s3/?p=pm&c=s3&z=4)
+ Tolerante a particiones de red mediante una combinación de [equilibradores de carga de red](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/) y [Route 53](https://aws.amazon.com/route53/)
+ La ingesta de datos se origina, entre otros, en [Elastic APM](https://www.elastic.co/apm/), [Beats](https://www.elastic.co/beats/) y [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html)

**Pasos de migración de alto nivel**

Elastic ha desarrollado su propia metodología prescriptiva para migrar de Elastic Cluster en las instalaciones a Elastic Cloud. La metodología de Elastic está directamente alineada y complementa la guía y las prácticas recomendadas de migración de AWS, incluidos el [marco Well-Architected](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc) y el [Programa de aceleración de la migración (MAP)](https://aws.amazon.com/migration-acceleration-program/). Por lo general, las tres fases de migración a AWS son las siguientes:
+ Evaluación
+ Movilización
+ Migración y modernización

Elastic sigue fases de migración similares con terminología complementaria:
+ Iniciar
+ Planificar
+ Implementar 
+ Entregar
+ Cerrar

Elastic usa la metodología de implementación de Elastic para facilitar la entrega de los resultados del proyecto. Su diseño es inclusivo para garantizar que Elastic, los equipos de consultoría y los equipos de cliente trabajen juntos con claridad para lograr, de forma conjunta, los resultados esperados.

La metodología de Elastic combina fases tradicionales en cascada con Scrum en la fase de implementación. Las configuraciones de los requisitos técnicos se proporcionan de forma iterativa y colaborativa, minimizando el riesgo.

![\[Diagrama que muestra las cinco etapas de la metodología de implementación de Elastic.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/23d1b437-22ff-420e-80ac-834f1116d234/images/b041c61d-980e-49a0-a721-791c20edde64.png)


 

## Tools (Herramientas)
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-tools"></a>

**Servicios de AWS**
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html): Amazon Route 53 es un servicio web de sistema de nombres de dominio (DNS) escalable y de alta disponibilidad. Puede utilizar Route 53 para realizar tres funciones principales en cualquier combinación: registro de dominio, direccionamiento DNS y comprobación de estado.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos. Puede utilizar Amazon S3 para almacenar y recuperar cualquier cantidad de datos en cualquier momento y desde cualquier parte de la web. Este patrón emplea un bucket de S3 y [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html).
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html): Elastic Load Balancing distribuye automáticamente el tráfico entrante entre varios destinos, como EC2 instancias, contenedores y direcciones IP, en una o más zonas de disponibilidad.

**Otras herramientas**
+ [Beats](https://www.elastic.co/beats/): Beats envía datos desde Logstash o Elasticsearch
+ [Elastic Cloud](https://www.elastic.co/cloud/): Elastic Cloud es un servicio gestionado para alojar Elasticsearch.
+ [Elasticsearch](https://www.elastic.co/elasticsearch/): Elasticsearch es un motor de búsqueda y análisis que usa Elastic Stack para almacenar de forma centralizada los datos con el fin de realizar búsquedas y análisis escalables. Este patrón también emplea creación de instantáneas y replicación entre clústeres.
+ [Logstash](https://www.elastic.co/logstash/): Logstash es un sistema de procesamiento de datos del servidor que ingiere datos de varias fuentes, los transforma y, a continuación, los envía al almacenamiento de datos.

## Epics
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-epics"></a>

### Preparativos para la migración
<a name="prepare-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique los servidores que ejecutan la solución Elastic en las instalaciones. | Confirme que se puede realizar la migración a Elastic. | Propietario de la aplicación | 
| Comprenda la configuración del servidor en las instalaciones. | Para comprender la configuración del servidor necesaria para gestionar correctamente las cargas de trabajo en las instalaciones, averigüe el tamaño del hardware del servidor, la configuración de la red y las características del almacenamiento actual | Compatibilidad con aplicaciones | 
| Recopile la información del usuario y de la cuenta de la aplicación. | Identifique los nombres de usuario y los nombres de las aplicaciones que emplea el entorno de Elastic en las instalaciones. | Administrador de sistemas, soporte de aplicaciones | 
| Documente la configuración de Beats y del remitente de datos. | Para documentar las configuraciones, consulte los orígenes de datos y los receptores de datos existentes. Para obtener más información, consulte la [documentación de Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html). | Compatibilidad con aplicaciones | 
| Determine la velocidad y el volumen de los datos. | Establezca una línea base para la cantidad de datos que gestiona el clúster. | Administrador de sistemas, soporte de aplicaciones | 
| Documente los escenarios de RPO y RTO. | Documente los escenarios de objetivo de punto de recuperación (RPO) y objetivo de tiempo de recuperación (RTO) en términos de interrupciones y acuerdos de nivel de servicio (). SLAs | Propietario de aplicaciones, administrador de sistemas, soporte de aplicaciones | 
| Determine la configuración óptima del ciclo de vida de las instantáneas. | Defina la frecuencia con la que se deben proteger los datos mediante el uso de instantáneas de Elastic *durante y después* de la migración. | Propietario de aplicaciones, administrador de sistemas, soporte de aplicaciones | 
| Defina las expectativas de rendimiento tras la migración. | Genere métricas sobre las actualizaciones de pantalla actuales y esperadas, los tiempos de ejecución de las consultas y el comportamiento de la interfaz de usuario. | Administrador de sistemas, soporte de aplicaciones | 
| Documente los requisitos de acceso a Internet, ancho de banda y disponibilidad. | Compruebe la velocidad, la latencia y la resistencia de las conexiones a Internet para copiar instantáneas en Amazon S3. | Administrador de red | 
| Documente los costos actuales del tiempo de ejecución de Elastic en las instalaciones. | Asegúrese de que el tamaño del entorno de destino de AWS esté diseñado para ser rentable y de alto rendimiento. | Administrador de base de datos, administrador de sistemas, soporte de aplicaciones | 
| Identifique las necesidades de autenticación y autorización. | Las características de seguridad de Elastic Stack proporcionan dominios integrados, como Protocolo ligero de acceso a directorios (LDAP), lenguaje de marcado de aserciones de seguridad (SAML) y OpenID Connect (OIDC). | Administrador de base de datos, administrador de sistemas, soporte de aplicaciones | 
| Conozca los requisitos regulatorios específicos en función de la ubicación geográfica. | Asegúrese de que los datos se exportan y cifran según sus necesidades y los requisitos regulatorios pertinentes. | Administrador de base de datos, administrador de sistemas, soporte de aplicaciones | 

### Implemente la migración
<a name="implement-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el área de almacenamiento en Amazon S3.  | Para recibir instantáneas en Amazon S3, [cree un bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) y un rol temporal de AWS Identity and Access Management (IAM) con acceso total al bucket recién creado. Para obtener más información, consulte [Creación de un rol para delegar permisos a un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html). También puede utilizar [AWS Security Token Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) para solicitar credenciales de seguridad temporales. Proteja la ID de clave de acceso, la clave de acceso secreta y el token de sesión.Activar [Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration-examples.html) en el bucket. | Administrador de AWS | 
| Instale AWS CLI y el complemento Amazon S3 en las instalaciones. | En cada nodo de Elasticsearch, ejecute el siguiente comando.<pre>sudo bin/elasticsearch-plugin install repository-s3</pre>A continuación, reinicie el nodo. | Administrador de AWS | 
| Configure el acceso de cliente de Amazon S3. | Añada las claves creadas anteriormente ejecutando los siguientes comandos.<pre>elasticsearch-keystore add s3.client.default.access_key</pre><pre>elasticsearch-keystore add s3.client.default.secret_key</pre><pre>elasticsearch-keystore add s3.client.default.session_token</pre> | Administrador de AWS | 
| Registre un repositorio de instantáneas para los datos de Elastic | Use [Kibana Dev Tools](https://www.elastic.co/guide/en/kibana/current/console-kibana.html) para indicar al clúster local en las instalaciones en qué bucket remoto de S3 debe escribir. | Administrador de AWS | 
| Configure la política de instantáneas. | Para configurar la administración del ciclo de vida de las instantáneas, en la pestaña **Políticas** de Kibana, seleccione **Política de SLM** y defina qué horas, flujos de datos o índices deben incluirse y qué nombres usar.Configure una política que tome instantáneas frecuentes. Las instantáneas son graduales, y hacen un uso eficiente del almacenamiento. Adecue esta configuración a la evaluación realizada. La política también puede especificar una [política de retención](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html) y eliminar automáticamente las instantáneas cuando ya no las necesite. | Compatibilidad con aplicaciones | 
| Compruebe que las instantáneas funcionan. | En Kibana Dev Tools, ejecute el siguiente comando.<pre>GET _snapshot/<your_repo_name>/_all</pre> | Administrador de sistemas, soporte de aplicaciones  | 
| Implemente un nuevo clúster en Elastic Cloud.  | [Inicie sesión en Elastic](https://cloud.elastic.co/login?redirectTo=%2Fhome) y elija un clúster de “observabilidad, búsqueda o seguridad” según el resultado de la evaluación de preparación empresarial llevada a cabo. | Administrador de sistemas, soporte de aplicaciones | 
| Configure el acceso al almacén de claves del clúster. | El nuevo clúster debe tener acceso al bucket de S3 que almacenará las instantáneas. En la consola de servicio de Elasticsearch, seleccione **Seguridad** e introduzca las claves de acceso y de IAM secretas que creó anteriormente. | Administrador de AWS | 
| Configure el clúster alojado de Elastic Cloud para acceder a Amazon S3. | Configure un nuevo acceso de clúster al repositorio de instantáneas creado anteriormente en Amazon S3. También puede hacer lo siguiente de Kibana:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-elk-stack-to-elastic-cloud-on-aws.html) | Administrador de sistemas, soporte de aplicaciones | 
| Verifique el nuevo repositorio de Amazon S3. | Asegúrese de poder acceder a su nuevo repositorio alojado en el clúster de Elastic Cloud. | Administrador de AWS | 
| Inicialice el clúster de servicios de Elasticsearch. | En la consola de servicio de Elasticsearch, inicialice el clúster de servicios de Elasticsearch a partir de la instantánea de S3.Ejecute los siguientes comandos como POST.<pre>*/_close?expand_wildcards=all</pre><pre>/_snapshot/<your-repo-name>/  <your-snapshot-name>/_restore</pre><pre>*/_open?expand_wildcards=all</pre> | Soporte de aplicaciones | 

### Complete la migración
<a name="complete-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe que la restauración de la instantánea se ha realizado correctamente. | En Kibana Dev Tools, ejecute el siguiente comando.<pre>GET _cat/indices</pre> | Compatibilidad con aplicaciones | 
| Vuelva a implementar los servicios de ingestión. | Conecte los puntos de conexión de Beats y Logstash al nuevo punto de conexión del servicio Elasticsearch. | Compatibilidad con aplicaciones | 

### Pruebe el entorno del clúster y límpielo
<a name="test-the-cluster-environment-and-clean-up"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide el entorno del clúster. | Tras migrar el entorno de clúster de Elastic en las instalaciones a AWS, puede conectarse a él y usar sus propias herramientas de pruebas de aceptación de usuarios (UAT) para validar el nuevo entorno. | Compatibilidad con aplicaciones | 
| Limpie los recursos. | Tras validar la correcta migración del clúster, elimine el bucket de S3 y el rol de IAM usado para la migración. | Administrador de AWS | 

## Recursos relacionados
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-resources"></a>

**Referencias de Elastic**
+ [Elastic Cloud](https://www.elastic.co/cloud/)
+ [Elasticsearch gestionado y Kibana en AWS](https://www.elastic.co/elasticsearch/service)
+ [Búsqueda empresarial de Elastic](https://www.elastic.co/enterprise-search)
+ [Integraciones de Elastic](https://www.elastic.co/integrations?search=amazon)
+ [Observabilidad de Elastic](https://www.elastic.co/observability)
+ [Seguridad de Elastic](https://www.elastic.co/security)
+ [Beats](https://www.elastic.co/beats/)
+ [Elastic APM](https://www.elastic.co/apm/)
+ [Migración a gestión de ciclo de vida de índice](https://www.elastic.co/guide/en/cloud-enterprise/current/ece-migrate-index-management.html)
+ [Suscripciones de Elastic](https://www.elastic.co/subscriptions)
+ [Contacte con Elastic](https://www.elastic.co/contact)

*Publicaciones de blog de Elastic*
+ [Cómo migrar de Elasticsearch autogestionado a Elastic Cloud en AWS](https://www.elastic.co/blog/how-to-migrate-from-self-managed-elasticsearch-to-elastic-cloud-on-aws) (publicación de blog)
+ [Migrar a Elastic Cloud](https://www.elastic.co/blog/migrating-to-elastic-cloud) (publicación de blog)

*Documentación de Elastic*
+ [Tutorial: Automatice las copias de seguridad con SLM](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/getting-started-snapshot-lifecycle-management.html)
+ [ILM: gestión del ciclo de vida del índice](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html)
+ [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html)
+ [Replicación entre clústeres (CCR)](https://www.elastic.co/guide/en/elasticsearch/reference/7.14/xpack-ccr.html)
+ [Procesos de ingesta](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html)
+ [Ejecute solicitudes de API de Elasticsearch](https://www.elastic.co/guide/en/kibana/current/console-kibana.html)
+ [Retención de instantáneas](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-retention.html)

*Video y seminario web de Elastic*
+ [Migración a Elastic Cloud](https://www.youtube.com/watch?v=WbPJi-APZ_Q)
+ [Elastic Cloud: ¿Por qué migran los clientes?](https://www.elastic.co/webinars/elastic-cloud-why-customers-are-migrating-now) (seminario web)

**Referencias de AWS**
+ [Elastic Cloud en AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=d8f59038-c24c-4a9d-a66d-6711d35d7305)
+ [Interfaz de línea de comandos de AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-aws-cli.html)
+ [AWS Direct Connect](https://aws.amazon.com/directconnect/)
+ [Programa de aceleración de la migración AWS](https://aws.amazon.com/migration-acceleration-program/)
+ [Equilibrador de carga de red](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/)
+ [Regiones y zonas de disponibilidad](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Amazon Simple Storage Service](https://aws.amazon.com/s3/)
+ [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/)
+ [Conexiones de VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)
+ [Marco de buena arquitectura](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc)

## Información adicional
<a name="migrate-an-elk-stack-to-elastic-cloud-on-aws-additional"></a>

Si desea migrar cargas de trabajo complejas, contrate los [servicios de consultoría de Elastic](https://www.elastic.co/consulting/engage). Si tiene dudas básicas sobre las configuraciones y los servicios, contacte con el equipo de [soporte de Elastic](mailto:support@elastic.co).

# Migre datos al Nube de AWS mediante Starburst
<a name="migrate-data-to-the-aws-cloud-by-using-starburst"></a>

*Antony Prasad Thevaraj y Suresh Veeragoni, Amazon Web Services*

*Shaun Van Staden, ninguno*

## Resumen
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-summary"></a>

Starburst ayuda a acelerar su migración de datos a Amazon Web Services (AWS) con un motor de consultas empresarial que reúne los orígenes de datos existentes en un único punto de acceso. Puede realizar análisis en varios orígenes de datos para obtener información valiosa antes de finalizar cualquier plan de migración. Sin interrumpir el business-as-usual análisis, puede migrar los datos mediante el motor Starburst o una aplicación dedicada a extraer, transformar y cargar (ETL).

## Requisitos previos y limitaciones
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Una nube privada virtual (VPC)
+ Un clúster de Amazon Elastic Kubernetes Service (Amazon EKS)
+ Un grupo de Auto Scaling de Amazon Elastic Compute Cloud (Amazon EC2)
+ Lista de las cargas de trabajo actuales del sistema que deben migrarse
+ Conectividad de red desde AWS su entorno local

## Arquitectura
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-architecture"></a>

**Arquitectura de referencia**

En el siguiente diagrama de arquitectura de alto nivel se muestra una implementación típica de Starburst Enterprise en la Nube de AWS:

1. El clúster de Starburst Enterprise se ejecuta en su Cuenta de AWS.

1. El usuario se autentica mediante el Protocolo ligero de acceso a directorios (LDAP) o la autorización abierta (OAuth) e interactúa directamente con el clúster de Starburst.

1. Starburst puede conectarse a varias fuentes de AWS datos AWS Glue, como Amazon Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS) y Amazon Redshift. Starburst proporciona capacidades de consulta federadas en todas las fuentes de datos en entornos de nube Nube de AWS, locales o en otros entornos de nube.

1. Para lanzar Starburst Enterprise en un clúster de Amazon EKS, use gráficos de Helm.

1. Starburst Enterprise utiliza los grupos de Amazon EC2 Auto Scaling y Amazon EC2 Spot Instances para optimizar la infraestructura.

1. Starburst Enterprise se conecta directamente a sus orígenes de datos existentes en las instalaciones para leer los datos en tiempo real. Además, si ya tiene una implementación de Starburst Enterprise en este entorno, puede conectar directamente su nuevo clúster de Starburst en él Nube de AWS a este clúster existente.

![\[Diagrama de arquitectura de alto nivel de la implementación de Starburst Enterprise en la nube de AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e9975d3a-f75b-41a2-8c08-5b82539adf8c.png)


Tenga en cuenta lo siguiente:
+ Starburst no es una plataforma de virtualización de datos. Es un motor de consultas de procesamiento paralelo masivo (MPP) basado en SQL que conforma la base de una estrategia global de malla de datos para el análisis.
+ Cuando Starburst se implementa como parte de una migración, tiene conectividad directa con la infraestructura existente en las instalaciones.
+ Starburst proporciona varios conectores empresariales y de código abierto integrados que facilitan la conectividad con diferentes sistemas heredados. Para obtener una lista completa de los conectores y sus capacidades, consulte [Conectores](https://docs.starburst.io/latest/connector.html) en la *Guía del usuario de Starburst Enterprise*.
+ Starburst puede consultar datos en tiempo real desde orígenes de datos en las instalaciones. Esto permite migrar los datos sin interrumpir las operaciones empresariales habituales.
+ Si vas a migrar desde una implementación local de Starburst Enterprise existente, puedes usar un conector especial, *Stargate, para conectar tu clúster de Starburst* Enterprise directamente a tu clúster local. AWS Esto proporciona beneficios de rendimiento adicionales cuando los usuarios empresariales y los analistas de datos federan las consultas de su entorno local. Nube de AWS 

**Descripción general del proceso**

Puede acelerar los proyectos de migración de datos con Starburst, ya que Starburst le permite obtener información de todos sus datos antes de migrarlos. La siguiente imagen muestra el proceso típico de migración de datos mediante Starburst.

![\[Flujo de proceso para migrar datos a la nube de AWS mediante Starburst\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/12ae0463-9029-4a32-9d7b-70cdb5406fb0/images/e79b0084-7275-4824-8854-646236ec23dc.png)


**Roles**

Por lo general, son necesarios los siguientes roles para completar una migración con Starburst:
+ **Administrador de la nube**: responsable de que los recursos de la nube estén disponibles para ejecutar la aplicación Starburst Enterprise
+ **Administrador de Starburst**: responsable de instalar, configurar, administrar y dar soporte a la aplicación Starburst
+ **Ingeniero de datos**: responsable de:
  + Migración de los datos antiguos a la nube
  + Crear vistas semánticas para respaldar la analítica
+ **Propietario de la solución o del sistema**: responsable de la implementación general de la solución

## Tools (Herramientas)
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) proporciona una capacidad informática escalable en el Nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes.

**Otras herramientas**
+ [Helm](https://helm.sh/docs/): Helm es un administrador de paquetes para Kubernetes que le ayuda a instalar y administrar aplicaciones en su clúster de Kubernetes.
+ [Starburst Enterprise](https://docs.starburst.io/latest/index.html): Starburst Enterprise es un motor de consulta de procesamiento paralelo masivo (MPP) basado en SQL que constituye la base de una estrategia global de malla de datos para análisis.
+ [Starburst Stargate](https://docs.starburst.io/latest/connector/starburst-stargate.html): vincula los catálogos y los orígenes de datos de un entorno de Starburst Enterprise, como un clúster de un centro de datos en las instalaciones, con los catálogos y orígenes de datos de otro entorno de Starburst Enterprise, como un clúster en la Nube de AWS.

## Epics
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-epics"></a>

### Evalúe los datos
<a name="assess-the-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique y priorice sus datos. | Identifique los datos que desea transferir. Los grandes sistemas heredados en las instalaciones pueden incluir datos cruciales que desee migrar y, además, datos que no quiera o pueda mover por motivos de cumplimiento. Comenzar inventariando sus datos le ayudará a priorizar cuáles deben migrarse primero. Para obtener más información, consulte [Introducción a la detección automática de cartera](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html). | Ingeniero de datos, Administrador de base de datos | 
| Explore, realice un inventario y haga copias de seguridad de sus datos. | Valide la calidad, cantidad y relevancia de los datos según su caso de uso. Realice copias de seguridad o cree una instantánea de los datos según sea necesario, y finalice el entorno de destino para los datos. | Ingeniero de datos, Administrador de base de datos | 

### Configure el entorno Starburst Enterprise
<a name="set-up-the-starburst-enterprise-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Starburst Enterprise en la Nube de AWS. | Mientras se catalogan los datos, configure Starburst Enterprise en un clúster gestionado de Amazon EKS. Para obtener más información, consulte [Implementación con Kubernetes](https://docs.starburst.io/latest/k8s.html) en la *Documentación de referencia de Starburst Enterprise*. Esto permite realizar análisis mientras la migración de datos está en proceso. business-as-usual | Administrador de AWS, desarrollador de aplicaciones | 
| Connect Starburst a los orígenes de datos. | Una vez que haya identificado los datos y configurado Starburst Enterprise, conecte Starburst a los orígenes de datos. Starburst lee los datos directamente del origen de datos como una consulta SQL. Para más información, consulte la [documentación de referencia de Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Administrador de AWS, desarrollador de aplicaciones | 

### Migración de datos
<a name="migrate-the-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y ejecute los procesos de ETL. | Comience el proceso de migración de datos. Esta actividad se puede realizar al mismo tiempo que la business-as-usual analítica. Puede realizar la migración con Starburst o con un producto de terceros. Starburst puede leer y escribir datos en diferentes fuentes. Para más información, consulte la [documentación de referencia de Starburst Enterprise](https://docs.starburst.io/latest/overview.html). | Ingeniero de datos | 
| Valide los datos. | Una vez migrados los datos, valídelos para asegurarse de que todos los datos necesarios se hayan trasladado y estén intactos. | Ingeniero de datos, DevOps ingeniero | 

### Realizar la transición
<a name="cut-over"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Transicione los datos. | Una vez finalizada la migración y validación de los datos, puede realizar la transición. Deberá cambiar los enlaces de conexión de datos en Starburst. En lugar de apuntar a las fuentes en las instalaciones, apunte a las nuevas fuentes en la nube y actualice las vistas semánticas. Para más información, consulte [Conectores](https://docs.starburst.io/latest/connector.html) en la *documentación de referencia de Starburst Enterprise*. | Ingeniero de datos, responsable de transición | 
| Implemente para los usuarios. | Los consumidores de datos comienzan a trabajar con los orígenes de datos migrados. Este proceso es invisible para los usuarios finales de análisis. | Responsable de transición; Ingeniero de datos | 

## Recursos relacionados
<a name="migrate-data-to-the-aws-cloud-by-using-starburst-resources"></a>

**AWS Marketplace**
+ [Starburst Galaxy](https://aws.amazon.com/marketplace/pp/prodview-yugyv4gbgn5ss?ref_=srh_res_product_title)
+ [Starburst Enterprise](https://aws.amazon.com/marketplace/pp/prodview-pwnl3c6p2jycg?ref_=srh_res_product_title)
+ [Datos de Starburst JumpStart](https://aws.amazon.com/marketplace/pp/prodview-ou6drb23gch2u?ref_=srh_res_product_title)
+ [Starburst Enterprise con Graviton](https://aws.amazon.com/marketplace/pp/prodview-2bpppdqlesn6w?ref_=srh_res_product_title)

**Documentación de Starburst**
+ [Guía del usuario de Starburst Enterprise](https://docs.starburst.io/index.html)
+ [Documentación de referencia de Starburst Enterprise](https://docs.starburst.io/latest/index.html)

**Otra documentación AWS **
+ [Comience con la detección automática de carteras](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html) (guía AWS prescriptiva)
+ [Optimización del costo y el rendimiento de la infraestructura en la nube con Starburst on AWS](https://aws.amazon.com/blogs/architecture/optimizing-cloud-infrastructure-cost-and-performance-with-starburst-on-aws/) (AWS entrada del blog)

# Optimice la incorporación ETL del tamaño del archivo de entrada en AWS
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws"></a>

*Apoorva Patrikar, Amazon Web Services*

## Resumen
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-summary"></a>

Este patrón muestra cómo optimizar el paso de incorporación del proceso de extracción, transformación y carga (ETL) para macrodatos y cargas de trabajo de Apache Spark en AWS Glue optimizando el tamaño de los archivos antes de procesarlos. Puede usar este patrón para evitar o resolver el problema de los *archivos pequeños*. Es decir, cuando un gran número de archivos pequeños ralentiza el procesamiento de datos debido al tamaño agregado de los archivos. Por ejemplo, cientos de archivos de solo unos pocos cientos de kilobytes cada uno pueden reducir considerablemente la velocidad de procesamiento de datos de sus trabajos de AWS Glue. Esto se debe a que AWS Glue realiza funciones de lista internas en Amazon Simple Storage Service (Amazon S3), y YARN (Yet Another Resource Negotiator) debe almacenar una gran cantidad de metadatos. Para mejorar la velocidad del procesamiento de datos, puede usar la agrupación de modo que sus tareas de ETL lean un grupo de archivos de entrada en una sola partición en memoria. La partición agrupa automáticamente los archivos más pequeños. Como alternativa, puede usar un código personalizado para añadir lógica de lotes a los archivos existentes.

## Requisitos previos y limitaciones
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Uno o más [trabajos](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) de AWS Glue
+ Una o más cargas de trabajo de macrodatos o [Apache Spark](https://spark.apache.org/)
+ Un [bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)

## Arquitectura
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-architecture"></a>

El siguiente patrón muestra cómo un trabajo de AWS Glue procesa los datos en distintos formatos y, a continuación, los almacena en un bucket de S3 para obtener visibilidad del rendimiento.

![\[Un trabajo de AWS Glue procesa los datos en distintos formatos y, a continuación, los almacena en un bucket de S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/88ee332f-2f12-4d88-b491-e78bbb173850/images/9a97b54a-3f67-4a48-94d2-5807373ace25.png)


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

1. 
**nota**  
Un trabajo de AWS Glue convierte archivos pequeños en formato CSV, JSON y Parquet en marcos dinámicos. : El tamaño del archivo de entrada es lo que más influye en el rendimiento del trabajo de AWS Glue.

1. El trabajo de AWS Glue realiza funciones de lista internas en un bucket de S3.

## Tools (Herramientas)
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-tools"></a>
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio ETL completamente administrado. Ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.
+ [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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

## Epics
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-epics"></a>

### Use la agrupación para optimizar la incorporación de ETL durante la lectura
<a name="use-grouping-to-optimize-etl-ingestion-during-reading"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Especifique el tamaño del grupo. | Si tiene más de 50 000 archivos, la agrupación se habilita de forma predeterminada. Sin embargo, también puede agrupar menos de 50 000 archivos especificando el tamaño del grupo en el parámetro `connectionOptions`. El parámetro `connectionOptions` está en el método `create_dynamic_frame.from_options`. | Ingeniero de datos | 
| Escriba el código de agrupamiento. | Use el método `create_dynamic_frame` para crear un marco dinámico. Por ejemplo:<pre>S3bucket_node1 = glueContext.create_dynamic_frame.from_options(<br />    format_options={"multiline": False},<br />    connection_type="s3",<br />    format="json",<br />    connection_options={<br />        "paths": ["s3://bucket/prefix/file.json"],<br />        "recurse": True,<br />        "groupFiles": 'inPartition', <br />        "groupSize": 1048576<br />    },<br />    transformation_ctx="S3bucket_node1",<br />)</pre>Use `groupFiles` para agrupar archivos en un grupo de particiones de Amazon S3. Se usa `groupSize` para establecer el tamaño objetivo del grupo que se va a leer en la memoria. Especifique `groupSize` en bytes (1048576 = 1 MB). | Ingeniero de datos | 
| Añada el código al flujo de trabajo. | Añada el código de agrupación a su [flujo de trabajo](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) en AWS Glue. | Ingeniero de datos | 

### Use lógica personalizada para optimizar la incorporación de ETL
<a name="use-custom-logic-to-optimize-etl-ingestion"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elija el lenguaje y la plataforma de procesamiento. | Elija el lenguaje de scripting y la plataforma de procesamiento adecuados a su caso de uso. | Arquitecto de la nube | 
| Escribir el código. | Escriba la lógica personalizada para agrupar sus archivos. | Arquitecto de la nube | 
| Añada el código al flujo de trabajo. | Añada el código a su [flujo de trabajo](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) en AWS Glue. Esto permite que su lógica personalizada se aplique cada vez que se ejecute el trabajo. | Ingeniero de datos | 

### Vuelva a crear particiones al escribir datos después de la transformación
<a name="repartition-when-writing-data-after-transformation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice los patrones de consumo. | Descubra cómo las aplicaciones posteriores usarán los datos que escriba. Por ejemplo, si consultan datos todos los días y solo crea particiones de los datos por región o tiene archivos de salida muy pequeños, como 2,5 KB por archivo, esto no es óptimo para el consumo. | Administrador de base de datos | 
| Vuelva a crear particiones de los datos antes de escribir. | Cree las nuevas particiones en función de uniones o consultas durante el procesamiento (según la lógica de procesamiento) y después del procesamiento (según el consumo). Por ejemplo, vuelva a crear particiones en función del tamaño de los bytes, como `.repartition(100000)`, o vuelva a crear particiones en función de las columnas, como `.repartition("column_name")`. | Ingeniero de datos | 

## Recursos relacionados
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-resources"></a>
+ [Lectura de archivos de entrada en grupos más grandes](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html)
+ [Supervisión de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-glue.html)
+ [Supervisión de AWS Glue mediante CloudWatch métricas de Amazon](https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)
+ [Monitorización y depuración de trabajo](https://docs.aws.amazon.com/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
+ [Introducción a ETL sin servidor en AWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/serverless-etl-aws-glue/welcome.html)

## Información adicional
<a name="optimize-the-etl-ingestion-of-input-file-size-on-aws-additional"></a>

**Determinar el tamaño del archivo**

No existe una forma sencilla de determinar si el tamaño de un archivo es demasiado grande o demasiado pequeño. El impacto del tamaño del archivo en el rendimiento del procesamiento dependerá de la configuración del clúster. En Hadoop básico, se recomienda usar archivos de 128 MB o 256 MB para aprovechar al máximo el tamaño del bloque.

Para la mayoría de las cargas de trabajo de archivos de texto en AWS Glue, recomendamos un tamaño de archivo de entre 100 MB y 1 GB para un clúster de 5 a 10 DPU. Para determinar el tamaño óptimo de los archivos de entrada, supervise la sección de preprocesamiento de su trabajo de AWS Glue y, a continuación, compruebe el uso de CPU y memoria del trabajo.

**Consideraciones adicionales**

Si el rendimiento en las primeras etapas de la ETL supone un obstáculo, considere agrupar o fusionar los archivos de datos antes de procesarlos. Si controla por completo el proceso de generación de archivos, puede resultar aún más eficiente agregar puntos de datos en el propio sistema de origen antes de enviar los datos sin procesar a AWS.

# Organice una canalización de ETL con validación, transformación y particionamiento mediante AWS Step Functions
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions"></a>

*Sandip Gangapadhyay, Amazon Web Services*

## Resumen
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-summary"></a>

Este patrón describe cómo crear un proceso de extracción, transformación y carga (ETL) sin servidor para validar, transformar, comprimir y particionar un conjunto de datos CSV de gran tamaño con el fin de optimizar el rendimiento y los costos. La canalización está orquestada por funciones de gestión de errores, reintentos automatizados AWS Step Functions y notificación al usuario, e incluye estas funciones.

Cuando se carga un archivo CSV a una carpeta de origen en un bucket de Amazon Simple Storage Service (Amazon S3), el proceso de ETL comienza a ejecutarse. El proceso valida el contenido y el esquema del archivo CSV de origen, transforma el archivo CSV a un formato comprimido de Apache Parquet, particiona el conjunto de datos por año, mes y día y lo almacena en una carpeta independiente para que las herramientas de análisis lo procesen.

El código que automatiza este patrón está disponible en el GitHub repositorio [ETL Pipeline with](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern). AWS Step Functions

## Requisitos previos y limitaciones
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ AWS Command Line Interface (AWS CLI) instalado y configurado con su Cuenta de AWS, para que pueda crear AWS recursos mediante el despliegue de una AWS CloudFormation pila. Recomendamos usar la AWS CLI versión 2. Para obtener instrucciones, consulte [Instalación o actualización a la última versión de AWS CLI en la](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) AWS CLI documentación. Para obtener instrucciones de configuración, consulte los [ajustes de configuración y del archivo de credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) en la AWS CLI documentación.
+ Un bucket de Amazon S3.
+ Un conjunto de datos CSV con el esquema correcto. (El [repositorio de código](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern/) incluido en este patrón proporciona un archivo CSV de muestra con el esquema y tipo de datos correctos para su uso).
+ Un navegador web compatible con. Consola de administración de AWS(Consulte la [lista de los navegadores compatibles](https://aws.amazon.com/premiumsupport/knowledge-center/browsers-management-console/)).
+ AWS Glue acceso a la consola.
+ AWS Step Functions acceso a la consola.

**Limitaciones**
+ En AWS Step Functions, el límite máximo para conservar los registros del historial es de 90 días. Para obtener más información, consulte las [cuotas de servicio de Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/service-quotas.html) en la AWS Step Functions documentación.

**Versiones de producto**
+ Python 3.13 para AWS Lambda
+ AWS Glue versión 4.0

## Arquitectura
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-architecture"></a>

![\[Proceso de ETL desde el bucket de origen de S3 hasta Step Functions, AWS Glue y Amazon SNS en 10 pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/054c8e9d-76a2-4334-b21a-cbe76af45923.png)


 

El flujo de trabajo que se muestra en el diagrama consta de los siguientes pasos de alto nivel:

1. El usuario carga un archivo CSV en la carpeta de origen de Amazon S3.

1. Un evento de notificación de Amazon S3 inicia una AWS Lambda función que inicia la máquina de AWS Step Functions estados.

1. La función de Lambda valida el esquema y el tipo de datos del archivo CSV sin procesar.

1. En función de los resultados de la validación:

   1. Si la validación del archivo de origen se realiza correctamente, el archivo se mueve a la carpeta transitoria para su posterior procesamiento.

   1. Si el archivo no se valida, se mueve a la carpeta de errores y se envía una notificación de error a través de Amazon Simple Notification Service (Amazon SNS).

1. Un AWS Glue rastreador crea el esquema del archivo sin procesar a partir de la carpeta del escenario en Amazon S3.

1. Un AWS Glue trabajo transforma, comprime y particiona el archivo sin procesar en formato Parquet.

1. El AWS Glue trabajo también mueve el archivo a la carpeta de transformación de Amazon S3.

1. El AWS Glue rastreador crea el esquema a partir del archivo transformado. El esquema resultante se puede utilizar en cualquier trabajo de análisis. Puede utilizar Amazon Athena para ejecutar consultas ad-hoc.

1. Si el proceso se completa sin errores, el archivo de esquema se mueve a la carpeta de almacenamiento. Si se encuentra algún error, el archivo se mueve a la carpeta de errores.

1. Amazon SNS envía una notificación en la que se indica el éxito o el error en función del estado de finalización del proceso.

Todos los AWS recursos utilizados en este patrón no tienen servidor. No es necesario administrar servidores.

## Tools (Herramientas)
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-tools"></a>

**Servicios de AWS**
+ [AWS Glue](https://aws.amazon.com/glue/)— AWS Glue es un servicio ETL totalmente gestionado que facilita a los clientes la preparación y carga de sus datos para su análisis.
+ [AWS Step Functions](https://aws.amazon.com/step-functions/)— AWS Step Functions es un servicio de organización sin servidor que le permite combinar AWS Lambda funciones y otras Servicios de AWS para crear aplicaciones críticas para la empresa. A través de la consola AWS Step Functions gráfica, puede ver el flujo de trabajo de su aplicación como una serie de pasos basados en eventos.
+ [Amazon S3:](https://aws.amazon.com/s3/) Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector.
+ [Amazon SNS](https://aws.amazon.com/sns/): Amazon Simple Notification Service (Amazon SNS) es un servicio de mensajería de alta disponibilidad, duradero, seguro y totalmente pub/sub gestionado que le permite desvincular microservicios, sistemas distribuidos y aplicaciones sin servidor.
+ [AWS Lambda](https://aws.amazon.com/lambda/)— AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrar servidores. AWS Lambda ejecuta el código solo cuando es necesario y se escala automáticamente, desde unas pocas solicitudes por día hasta miles por segundo.

**Código**

El código de este patrón está disponible en el GitHub AWS Step Functions repositorio [ETL Pipeline with](https://github.com/aws-samples/aws-step-functions-etl-pipeline-pattern). El repositorio de código contiene los siguientes archivos y carpetas:
+ `template.yml`— AWS CloudFormation plantilla con la que crear la canalización de ETL AWS Step Functions.
+ `parameter.json` – Contiene todos los parámetros y valores de los parámetros. Actualice este archivo para cambiar los valores de los parámetros, tal y como se describe en la sección *Épica*.
+ `myLayer/python`carpeta: contiene los paquetes de Python necesarios para crear la AWS Lambda capa requerida para este proyecto.
+ Carpeta `lambda` – Contiene las siguientes funciones de Lambda:
  + `move_file.py` – Mueve el conjunto de datos de origen a la carpeta de almacenamiento, transformación o errores.
  + `check_crawler.py`— Comprueba el estado del AWS Glue rastreador tantas veces como lo haya configurado la variable de `RETRYLIMIT ` entorno antes de enviar un mensaje de error.
  + `start_crawler.py`— Inicia el AWS Glue rastreador.
  + `start_step_function.py`— Empieza AWS Step Functions.
  + `start_codebuild.py`— Inicia el AWS CodeBuild proyecto.
  + `validation.py` – Valida el conjunto de datos sin procesar de entrada.
  + `s3object.py`: crea la estructura de directorios requerida dentro del bucket de Amazon S3.
  + `notification.py` – Envía notificaciones de éxito o error al final del proceso.

Para usar el código de muestra, siga las instrucciones en la sección *Epics *.

## Epics
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-epics"></a>

### Preparación del archivo de origen
<a name="prepare-the-source-files"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio de código de muestra. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desarrollador | 
| Actualice los valores de los parámetros. | En la copia local del repositorio, edite el archivo `parameter.json` y actualice los valores de los parámetros predeterminados de la siguiente manera:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desarrollador | 
| Cargue el código fuente en el bucket de Amazon S3. | Antes de implementar la AWS CloudFormation plantilla que automatiza la canalización de ETL, debe empaquetar los archivos fuente de la plantilla y subirlos a un bucket de Amazon S3. Para ello, ejecute el siguiente AWS CLI comando con su perfil preconfigurado:<pre>aws cloudformation package --template-file template.yml --s3-bucket <bucket_name> --output-template-file packaged.template --profile <profile_name></pre>donde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desarrollador | 

### Creación de la pila
<a name="create-the-stack"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la CloudFormation plantilla. | Para implementar la AWS CloudFormation plantilla, ejecute el siguiente AWS CLI comando:<pre>aws cloudformation deploy --stack-name <stack_name> --template-file packaged.template --parameter-overrides file://parameter.json --capabilities CAPABILITY_IAM --profile <profile_name></pre>donde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desarrollador | 
| Compruebe el progreso. | En la [consola de AWS CloudFormation](https://console.aws.amazon.com/cloudformation/), compruebe el progreso del desarrollo de la pila. Cuando el estado sea `CREATE_COMPLETE`, la pila se habrá implementado correctamente. | Desarrollador | 
| Anote el nombre de la AWS Glue base de datos. | La pestaña **Salidas** de la pila muestra el nombre de la AWS Glue base de datos. El nombre de la clave es `GlueDBOutput`. | Desarrollador | 

### Prueba la canalización
<a name="test-the-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el proceso de ETL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desarrollador | 
| Compruebe el conjunto de datos particionado. | Cuando se complete el proceso de ETL, compruebe que el conjunto de datos particionado esté disponible en la carpeta de transformación de Amazon S3 (`transform`, o el nombre de carpeta que haya establecido en el archivo `parameter.json`). | Desarrollador | 
| Comprueba la base de AWS Glue datos particionada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.html) | Desarrollador | 
| Ejecutar consultas. | (Opcional) Use Amazon Athena para ejecutar consultas ad hoc en la base de datos particionada y transformada. Para obtener instrucciones, consulte [Ejecutar consultas SQL en Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html) en la AWS documentación. | Análisis de la base de datos | 

## Resolución de problemas
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| AWS Identity and Access Management (IAM) para el AWS Glue trabajo y el rastreador | Si sigue personalizando el AWS Glue trabajo o el rastreador, asegúrese de conceder los permisos de IAM adecuados en la función de IAM utilizada por el AWS Glue trabajo o de proporcionarle permisos de datos. AWS Lake Formation Para obtener más información, consulte la [Documentación de AWS](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html). | 

## Recursos relacionados
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-resources"></a>

**Servicio de AWS documentación**
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/)
+ [AWS Glue](https://docs.aws.amazon.com/glue/)
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/)
+ [Amazon S3](https://docs.aws.amazon.com/s3/)
+ [Amazon SNS](https://docs.aws.amazon.com/sns/)

## Información adicional
<a name="orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions-additional"></a>

El siguiente diagrama muestra el AWS Step Functions flujo de trabajo para una canalización de ETL exitosa, desde el panel del AWS Step Functions **Inspector**. ****

![\[Flujo de trabajo de Step Functions para validar el archivo .csv de entrada, rastrear los datos y ejecutar el trabajo de AWS Glue.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/bd77de7b-4d04-44bb-95d2-3ec4599b3770.png)


El siguiente diagrama muestra el AWS Step Functions flujo de trabajo de una canalización de ETL que falla debido a un error de validación de entrada, desde el panel Step Functions **Inspector**. 

![\[El flujo de trabajo de Step Functions presenta errores, por lo que el archivo se mueve a la carpeta de errores.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8eb792b0-d35b-4a63-ba2d-71eb8d2c1203/images/5fd7dd79-ba4c-4c20-b1f0-ad4b5f22bdfc.png)


 

# Realizar análisis avanzados mediante Amazon Redshift ML
<a name="perform-advanced-analytics-using-amazon-redshift-ml"></a>

*Po Hong y Chyanna Antonio, Amazon Web Services*

## Resumen
<a name="perform-advanced-analytics-using-amazon-redshift-ml-summary"></a>

En la nube de Amazon Web Services (AWS), puede utilizar el machine learning de Amazon Redshift (Amazon Redshift ML) para realizar análisis de ML de los datos almacenados en un clúster de Amazon Redshift o en Amazon Simple Storage Service (Amazon S3). Amazon Redshift ML admite el aprendizaje supervisado, que se suele utilizar para análisis avanzados. Los casos de uso de Amazon Redshift ML incluyen la previsión de ingresos, la detección de fraudes con tarjetas de crédito y las predicciones del valor de por vida del cliente (CLV) o la pérdida de clientes.

Amazon Redshift ML facilita a los usuarios de bases de datos crear, entrenar e implementar modelos de machine learning mediante comandos SQL estándar. Amazon Redshift ML utiliza Amazon SageMaker Autopilot para entrenar y ajustar automáticamente los mejores modelos de aprendizaje automático para su clasificación o regresión en función de sus datos, sin perder el control y la visibilidad.

Todas las interacciones entre Amazon Redshift, Amazon S3 y Amazon SageMaker se resumen y automatizan. Una vez entrenado e implementado el modelo de ML, pasa a estar disponible como [función definida por el usuario](https://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html) (UDF) en Amazon Redshift y se puede usar en consultas de SQL.  

Este patrón complementa el tutorial [Crear, entrenar e implementar modelos de aprendizaje automático en Amazon Redshift mediante SQL con Amazon Redshift ML](https://aws.amazon.com/blogs/big-data/create-train-and-deploy-machine-learning-models-in-amazon-redshift-using-sql-with-amazon-redshift-ml/) del blog de AWS, y [el tutorial Crear, entrenar e implementar un modelo de aprendizaje automático con SageMaker Amazon](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) del Centro de recursos de [introducción](https://aws.amazon.com/getting-started/).

## Requisitos previos y limitaciones
<a name="perform-advanced-analytics-using-amazon-redshift-ml-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Datos existentes en una tabla de Amazon Redshift

**Habilidades**
+ Familiaridad con los términos y conceptos que utiliza Amazon Redshift ML, incluidos *machine learning*, *entrenamiento* y *predicción.*. Para obtener más información, consulte [Training ML models](https://docs.aws.amazon.com/machine-learning/latest/dg/training-ml-models.html) (Entrenar modelos de machine learning) en la documentación de Amazon Machine Learning (Amazon ML).
+ Experiencia en la configuración de usuarios, la administración de acceso y la sintaxis SQL estándar de Amazon Redshift. Para obtener más información, consulte [Introducción a Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) en la documentación de Amazon Redshift.
+ Conocimiento y experiencia en Amazon S3 y AWS Identity and Access Management (IAM). 
+ La experiencia en ejecución de comandos de la interfaz de la línea de comandos de AWS (AWS CLI) también es beneficiosa, pero no obligatoria. 

**Limitaciones**
+ El clúster de Amazon Redshift y el bucket de Amazon S3 deben estar en la misma región de AWS.
+ El enfoque de este patrón solo admite modelos de aprendizaje supervisado, como la regresión, la clasificación binaria y la clasificación multiclase. 

## Arquitectura
<a name="perform-advanced-analytics-using-amazon-redshift-ml-architecture"></a>

![\[El flujo de trabajo muestra cómo funciona Amazon Redshift ML SageMaker para crear, entrenar e implementar un modelo de aprendizaje automático.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/3b6a5f49-c647-45f4-940e-b623f989326a/images/36cc39fe-c1f3-4d68-b89e-e636156001a6.png)


En los siguientes pasos se explica cómo funciona Amazon Redshift ML SageMaker para crear, entrenar e implementar un modelo de aprendizaje automático: 

1. Amazon Redshift exporta los datos de entrenamiento a un bucket de S3.

1. SageMaker El piloto automático preprocesa automáticamente los datos de entrenamiento.

1. Una vez invocada la `CREATE MODEL` declaración, Amazon Redshift ML la utiliza SageMaker para la formación.

1. SageMaker Autopilot busca y recomienda el algoritmo de aprendizaje automático y los hiperparámetros óptimos que optimizan las métricas de evaluación.

1. Amazon Redshift ML registra el modelo de ML de salida como una función SQL en el clúster de Amazon Redshift.

1. La función del modelo ML se puede utilizar en una instrucción SQL. 

**Pila de tecnología**
+ Amazon Redshift
+ SageMaker
+ Amazon S3

## Tools (Herramientas)
<a name="perform-advanced-analytics-using-amazon-redshift-ml-tools"></a>
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/welcome.html): Amazon Redshift es un servicio de almacenamiento de datos completamente administrado, de nivel empresarial y de escala de petabytes.
+ [Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/machine_learning.html): Amazon Redshift machine learning (Amazon Redshift ML) es un servicio robusto basado en la nube que facilita el uso de la tecnología de machine learning a los analistas y científicos de datos con cualquier nivel de habilidades.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento para Internet. 
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html): SageMaker es un servicio de aprendizaje automático totalmente gestionado. 
+ [Amazon SageMaker Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html): el SageMaker piloto automático es un conjunto de funciones que automatiza las tareas clave de un proceso de aprendizaje automático (AutoML).

 

**Código**

Puede crear un modelo de ML supervisado en Amazon Redshift mediante el siguiente código:

```
"CREATE MODEL customer_churn_auto_model
FROM (SELECT state,
             account_length,
             area_code,
             total_charge/account_length AS average_daily_spend, 
             cust_serv_calls/account_length AS average_daily_cases,
             churn 
      FROM customer_activity
      WHERE  record_date < '2020-01-01' 
     )
TARGET churn
FUNCTION ml_fn_customer_churn_auto
IAM_ROLE 'arn:aws:iam::XXXXXXXXXXXX:role/Redshift-ML'
SETTINGS (
  S3_BUCKET 'your-bucket'
);")
```

**nota**  
Nota: El estado de `SELECT` puede hacer referencia a las tablas normales de Amazon Redshift, a las tablas externas de Amazon Redshift Spectrum o a ambas.

## Epics
<a name="perform-advanced-analytics-using-amazon-redshift-ml-epics"></a>

### Preparación de un conjunto de datos para entrenamiento y prueba
<a name="prepare-a-training-and-test-dataset"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare un conjunto de datos para entrenamiento y prueba. | Inicie sesión en la consola de administración de AWS y abra la SageMaker consola de Amazon. Siga las instrucciones del tutorial [Build, train, and deploy a machine learning model](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/) (Crear, entrenar e implementar un modelo de machine learning) para crear un archivo.csv o Apache Parquet con una columna de etiquetas (*entrenamiento supervisado*) y sin encabezado. Se recomienda mezclar el conjunto de datos sin procesar y dividirlo en un conjunto de entrenamiento para entrenar el modelo (70 por ciento) y un conjunto de prueba para evaluar el rendimiento del modelo (30 por ciento). | Científico de datos | 

### Preparación y configuración de la pila de tecnología
<a name="prepare-and-configure-the-technology-stack"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y configure un clúster de Amazon Redshift. | En la consola de Amazon Redshift, cree un clúster de acuerdo con sus requisitos. Para obtener más información, consulte [Create a cluster](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) (Crear un clúster) en la documentación de Amazon Redshift.  Los nuevos clústeres de Amazon Redshift deben crearse con la pista de mantenimiento `SQL_PREVIEW`. Para obtener más información acerca de las pistas de de previsualización, consulte [Choosing cluster maintenance tracks](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks) (Seleccionar pistas de mantenimiento del clúster) en la documentación de Amazon Redshift. | Administrador de base de datos, arquitecto de la nube | 
| Cree un bucket de S3 para almacenar los datos de entrenamiento y los artefactos del modelo. | En la consola de Amazon S3, cree un bucket de S3 para los datos de entrenamiento y prueba. Para obtener más información acerca de la creación de un bucket de S3, consulte [Creación de un bucket de S3](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html) en Inicios rápidos de AWS. Asegúrese de que el clúster de Amazon Redshift y el bucket de Amazon S3 se encuentren en la misma región.  | Administrador de base de datos, arquitecto de la nube | 
| Cree y asocie una política de IAM al clúster de Amazon Redshift. | Cree una política de IAM para permitir que el clúster de Amazon Redshift SageMaker acceda a Amazon S3. Para las instrucciones y los pasos a seguir, consulte [Cluster setup for using Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html) (Configuración del clúster para usar Amazon Redshift ML) en la documentación de Amazon Redshift. | Administrador de base de datos, arquitecto de la nube | 
| Permita que los usuarios y grupos de Amazon Redshift accedan a esquemas y tablas. | Otorgue permisos para permitir que los usuarios y grupos de Amazon Redshift accedan a tablas y esquemas internos y externos. Para ver los pasos e instrucciones, consulte [Managing permissions and ownership](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html) (Administrar los permisos y la propiedad) en la documentación de Amazon Redshift. | Administrador de base de datos | 

### Creación y entrenamiento del modelo de ML en Amazon Redshift
<a name="create-and-train-the-ml-model-in-amazon-redshift"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y entrene el modelo de ML en Amazon Redshift. | Cree y entrene el modelo de ML en Amazon Redshift ML. Para obtener más información, consulte la instrucción `CREATE MODEL` en la documentación de Amazon Redshift. | Desarrollador, científico de datos | 

### Cómo realizar inferencias y predicciones por lotes en Amazon Redshift
<a name="perform-batch-inference-and-prediction-in-amazon-redshift"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice una inferencia mediante la función del modelo de ML generado. | Para obtener más información sobre cómo realizar inferencias mediante la función del modelo de ML generado, consulte [Prediction](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) (Predicción) en la documentación de Amazon Redshift. | Científico de datos, usuario de inteligencia empresarial | 

## Recursos relacionados
<a name="perform-advanced-analytics-using-amazon-redshift-ml-resources"></a>

**Preparación de un conjunto de datos para entrenamiento y prueba**
+ [Creación, formación e implementación de un modelo de aprendizaje automático con Amazon SageMaker](https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/)

 

**Preparación y configuración de la pila de tecnología**
+ [Creación de un clúster de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html)
+ [Choosing Amazon Redshift cluster maintenance tracks ](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-mgmt-maintenance-tracks)(Seleccionar las pistas de mantenimiento de clústeres de Amazon Redshift)
+ [Creating an S3 bucket](https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html) (Crear un bucket de S3)
+ [Setting up an Amazon Redshift cluster for using Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/cluster-setup.html) (Configurar un clúster de Amazon Redshift para utilizar Amazon Redshift ML)
+ [Managing permissions and ownership in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/permissions-ownership.html) (Administrar permisos y propiedad en Amazon Redshift)

 

**Creación y entrenamiento del modelo de ML en Amazon Redshift**
+ [CREATE MODEL statement in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_MODEL.html#r_simple_create_model) (La instrucción CREATE MODEL en Amazon Redshift) 

 

**Cómo realizar inferencias y predicciones por lotes en Amazon Redshift)**
+ [Prediction in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/prediction.html) (Predicción en Amazon Redshift) 

 

**Otros recursos**
+ [Getting started with Amazon Redshift ML](https://docs.aws.amazon.com/redshift/latest/dg/geting-started-machine-learning.html) (Introducción a Amazon Redshift ML)
+ [Creating, training, and deploying ML models in Amazon Redshift using SQL with Amazon Redshift ML](https://aws.amazon.com/blogs/big-data/create-train-and-deploy-machine-learning-models-in-amazon-redshift-using-sql-with-amazon-redshift-ml/) (Crear, entrenar e implementar modelos de ML en Amazon Redshift mediante SQL con Amazon Redshift ML)
+ [Amazon Redshift partners](https://aws.amazon.com/redshift/partners/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=aschttps://aws.amazon.com/redshift/partners/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc) (Socios de Amazon Redshift.)
+ [AWS machine learning competency partners](https://aws.amazon.com/machine-learning/partner-solutions/?partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc) (Socios con competencias en machine learning de AWS)

# Consulta de las tablas de Amazon DynamoDB con SQL mediante Amazon Athena
<a name="query-amazon-dynamodb-tables-sql-amazon-athena"></a>

*Gavin Perrie, Ajit Ambike y Brad Yates, Amazon Web Services*

## Resumen
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-summary"></a>

Si sus datos incluyen orígenes distintos de Amazon Simple Storage Service (Amazon S3), puede utilizar consultas federadas para acceder a esos orígenes de datos relacionales, no relacionales, de objetos o personalizados. Este patrón muestra cómo configurar el acceso a consultas federadas de Amazon Athena a Amazon DynamoDB mediante un conector de origen de datos SQL.

Con este patrón, puede hacer lo siguiente:
+ Consultar tablas de DynamoDB mediante SQL.
+ Hacer consultas SQL federadas en Athena y combinar tablas de DynamoDB con otros orígenes de datos compatibles.

## Requisitos previos y limitaciones
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-prereqs"></a>

**Requisitos previos **
+ Una tabla de DynamoDB.
+ Un grupo de trabajo de Athena configurado para utilizar el la versión 2 del motor Athena. Para obtener instrucciones, consulte la [documentación de Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-changing.html).
+ Un depósito de S3 donde la `AthenaDynamoDBConnector` AWS Lambda función puede filtrar los datos. La función de Lambda debe estar en la misma región de AWS que el bucket de S3.

Si es la primera vez que accede a Athena, necesitará un bucket de S3 adicional para usarlo como ubicación de los resultados de la consulta. Para obtener instrucciones, consulte la [documentación de Athena](https://docs.aws.amazon.com/athena/latest/ug/querying.html#query-results-specify-location-console).

**Limitaciones**
+ No se admiten operaciones de escritura como [INSERT INTO](https://docs.aws.amazon.com/athena/latest/ug/insert-into.html).** **

**Versiones de producto**
+ [Athena Query Federation se publica el GitHub](https://github.com/awslabs/aws-athena-query-federation/releases)

## Arquitectura
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-architecture"></a>

**Arquitectura de destino**

El siguiente diagrama muestra el flujo de conexión después de establecer el patrón. El usuario se conecta a Amazon Athena para realizar la consulta. Athena pasa la consulta y el destino a la función de Lambda del conector del origen de datos de DynamoDB, que recupera y devuelve los datos a Athena. Si se devuelven grandes cantidades de datos, Athena almacena los resultados temporales en el bucket de desbordamiento antes de empaquetar y devolver el conjunto de datos completo.

![\[Flujo de trabajo de los usuarios a Athena y Lambda, que se conecta al bucket de S3 y a la tabla de DynamoDB.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9d1ee529-36f3-4c7e-a2e7-05b76e09a3d8/images/e50a00cf-a55a-4def-81d5-4d2755dc9a97.png)


## Tools (Herramientas)
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-tools"></a>

**Servicios de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar. Este patrón utiliza [Amazon Athena DynamoDB Connector, una herramienta](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) creada con el SDK de Amazon Athena Query Federation e instalada como una aplicación a través del. AWS Lambda AWS Serverless Application Repository
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
+ [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 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 de GitHub [Athena Query Federation](https://github.com/awslabs/aws-athena-query-federation/releases).

## Epics
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-epics"></a>

### Configuración del conector de origen de datos de DynamoDB y pruebas
<a name="set-up-and-test-the-ddb-data-source-connector"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la AthenaDynamo DBConnector aplicación. | Para AthenaDynamo DBConnecter implementarla, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Cree un origen de datos para Athena. | Para crear un origen de datos, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | AWS DevOps | 
| Utilice Athena para consultar la tabla de DynamoDB. | Para consultar la tabla de DynamoDB, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/query-amazon-dynamodb-tables-sql-amazon-athena.html) | Desarrollador de aplicaciones | 

## Resolución de problemas
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| La consulta devuelve el error `GENERIC_INTERNAL_ERROR: The bucket is in this region: <region>`*.* | Asegúrese de que el bucket de desbordamiento de Athena y la función de Lambda estén creadas en la misma Región de AWS. | 
| El origen de datos recién creado no está visible en la consola de Athena. | Los catálogos de datos de Athena son regionales. Asegúrese de que `AthenaDynamoDBConnector` se haya implementado en la región en la que está intentando utilizar Athena. | 
| No puede poner en marcha la consulta en el origen de datos recién creado. | Compruebe que se haya definido **Ubicación del resultado de la consulta**. | 

## Recursos relacionados
<a name="query-amazon-dynamodb-tables-sql-amazon-athena-resources"></a>
+ [Conector Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb)
+ [Consultas federadas de Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html)

# Acceder, consultar y unirse a las tablas de Amazon DynamoDB con Athena
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena"></a>

*Moinul Al-Mamun, Amazon Web Services*

## Resumen
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-summary"></a>

Este patrón muestra cómo configurar una conexión entre Amazon Athena y Amazon DynamoDB mediante el conector DynamoDB de Amazon Athena. El conector utiliza una función de AWS Lambda para consultar los datos en DynamoDB. No es necesario escribir ningún código para configurar la conexión. Una vez establecida la conexión, puede acceder y analizar rápidamente las tablas de DynamoDB mediante la [Consulta federada de Athena](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html) para ejecutar comandos SQL desde Athena. También puede unir una o más tablas de DynamoDB entre sí o con otros orígenes de datos, como Amazon Redshift o Amazon Aurora.

## Requisitos previos y limitaciones
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa con permisos para gestionar tablas de DynamoDB, los orígenes de datos de Athena, Lambda y roles de (IAM) de AWS Identity and Access Management
+ Un bucket de Amazon Simple Storage Service (Amazon S3) en el que Athena puede almacenar resultados de consultas
+ Un bucket de S3 en el que el conector DynamoDB de Athena puede guardar los datos a corto plazo
+ Una región de AWS compatible con la [versión 2 del motor Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0002.html)
+ Permisos de IAM para acceder a Athena y a los buckets de S3 necesarios
+ [Conector Amazon Athena DynamoDB](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb), instalado

**Limitaciones**

La consulta de las tablas de DynamoDB conlleva un costo. Los tamaños de tabla que superen unos pocos gigabytes (GBs) pueden suponer un coste elevado. Le recomendamos que considere el costo antes de realizar cualquier operación de escaneo de una tabla completa. Para obtener más información, consulte los precios de [Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/). Para reducir los costos y lograr un alto rendimiento, le recomendamos que utilice siempre LIMIT en la consulta (por ejemplo, `SELECT * FROM table1 LIMIT 10`). Además, antes de realizar una consulta JOIN (unirse a) o GROUP BY (agrupar por) en un entorno de producción, tenga en cuenta el tamaño de sus tablas. Si sus tablas son demasiado grandes, considere opciones alternativas, como [migrar la tabla a Amazon S3](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/).

## Arquitectura
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-architecture"></a>

En el siguiente diagrama se muestra la forma en que un usuario puede ejecutar una consulta SQL en una tabla de DynamoDB desde Athena.

![\[Flujo de trabajo para conectar Athena y DynamoDB para ejecutar una consulta SQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e6ff94af-d208-40c7-94e4-af257755a603/images/bc8e0132-b578-463b-bf55-3c39ce359c17.png)


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

1. Para consultar una tabla de DynamoDB, el usuario ejecuta una consulta SQL desde Athena.

1. Athena inicia una función de Lambda.

1. La función de Lambda consulta los datos solicitados en la tabla de DynamoDB.

1. DynamoDB regresa los datos solicitados a la función de Lambda. A continuación, la función transfiere los resultados de la consulta al usuario a través de Athena.

1. La función de Lambda almacena los datos en el bucket de S3.

**Pila de tecnología**
+ Amazon Athena
+ Amazon DynamoDB
+ Amazon S3
+ AWS Lambda

## Tools (Herramientas)
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar.
+ El [Conector de DynamoDB de Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) es una herramienta de AWS que permite a Athena conectarse con DynamoDB y acceder a sus tablas mediante consultas SQL.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
+ [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.

## Epics
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-epics"></a>

### Crear tablas de DynamoDB de muestra
<a name="create-sample-dynamodb-tables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la primera tabla de muestra.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desarrollador | 
| Inserte datos de muestra en la primera tabla. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>{<br />  "PK1": "1234",<br />  "SK1": "info",<br />  "Salary": "5000"<br /> }</pre><pre>{<br />  "PK1": "1235",<br />  "SK1": "info",<br />  "Salary": "5200"<br /> }</pre> | Desarrollador | 
| Cree la segunda tabla de muestra.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desarrollador | 
| Inserte datos de muestra en la segunda tabla. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>{<br />  "PK2": "1234",<br /> "SK2": "bonus",<br /> "Bonus": "500"<br />}</pre><pre>{<br />  "PK2": "1235",<br /> "SK2": "bonus",<br /> "Bonus": "1000"<br />}</pre> | Desarrollador | 

### Crear un origen de datos en Athena para DynamoDB
<a name="create-a-data-source-in-athena-for-dynamodb"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el conector del origen de datos. | Cree un origen de datos para DynamoDB y, a continuación, cree una función de Lambda para conectarse a ese origen de datos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desarrollador | 
| Compruebe que la función de Lambda pueda acceder al bucket para derrames de S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)Si se producen errores, consulte la sección de *Información adicional* de este patrón como guía. | Desarrollador | 

### Acceso a las tablas de DynamoDB desde Athena
<a name="access-dynamodb-tables-from-athena"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Consultar las tablas de DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html) | Desarrollador | 
| Unir las dos tablas de DynamoDB. | DynamoDB es un almacén de datos NoSQL y no admite la operación de unión de SQL. En consecuencia, debe realizar una operación de unión en dos tablas de DynamoDB:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html)<pre>SELECT pk1, salary, bonus FROM dydbtable1 t1<br /> JOIN dydbtable2 t2 ON t1.pk1 = t2.pk2;</pre> | Desarrollador | 

## Recursos relacionados
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-resources"></a>
+ [Conector para DynamoDB de Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) (Laboratorios de AWS)
+ [Consulte cualquier origen de datos con la nueva consulta federada de Amazon Athena](https://aws.amazon.com/blogs/big-data/query-any-data-source-with-amazon-athenas-new-federated-query/) (blog sobre macrodatos de AWS)
+ [Referencia de la versión del motor Athena](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html) (Guía del usuario de Athena)
+ [Simplifique la extracción y el análisis de datos de Amazon DynamoDB con AWS Glue y Amazon Athena](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/) (blog sobre bases de datos de AWS)

## Información adicional
<a name="access-query-and-join-amazon-dynamodb-tables-using-athena-additional"></a>

Si ejecuta una consulta en Athena con `spill_bucket` en formato `{bucket_name}/folder_name/`, puede recibir el siguiente mensaje de error:

```
"GENERIC_USER_ERROR: Encountered an exception[java.lang.RuntimeException] from your LambdaFunction[arn:aws:lambda:us-east-1:xxxxxx:function:testdynamodb] executed in context[retrieving meta-data] with message[You do NOT own the spill bucket with the name: s3://amzn-s3-demo-bucket/athena_dynamodb_spill_data/]
This query ran against the "default" database, unless qualified by the query. Please post the error message on our forum  or contact customer support with Query Id: [query-id]"
```

Para resolver este error, actualice la variable de entorno de la función de Lambda de `spill_bucket` a `{bucket_name_only}` y, a continuación, actualice la siguiente política de IAM de Lambda para el acceso de escritura al bucket:

```
{
             "Action": [
                 "s3:GetObject",
                 "s3:ListBucket",
                 "s3:GetBucketLocation",
                 "s3:GetObjectVersion",
                 "s3:PutObject",
                 "s3:PutObjectAcl",
                 "s3:GetLifecycleConfiguration",
                 "s3:PutLifecycleConfiguration",
                 "s3:DeleteObject"
            ],
             "Resource": [
                 "arn:aws:s3:::spill_bucket",
                 "arn:aws:s3:::spill_bucket/*"
            ],
             "Effect": "Allow"
        }
```

Como alternativa, puede quitar el conector de origen de datos de Athena que creó anteriormente y volver a crearlo utilizando solo `{bucket_name}` para `spill_bucket`.

# Configure la clasificación por idioma para los resultados de las consultas de Amazon Redshift mediante una UDF escalar de Python
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf"></a>

*Ethan Stark, Amazon Web Services*

## Resumen
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-summary"></a>

Este patrón proporciona los pasos y un código de ejemplo para usar una UDF (función definida por el usuario) de Python escalar para configurar una clasificación lingüística que no distinga entre mayúsculas y minúsculas para los resultados de las consultas de Amazon Redshift. Es necesario utilizar una UDF de Python escalar porque Amazon Redshift devuelve los resultados en función del orden binario de UTF-8 y no admite la clasificación por idiomas específicos. Una UDF de Python es un código de procesamiento que no es de SQL que se basa en un programa de Python y se ejecuta en un almacén de datos. Puede ejecutar código UDF de Python con una instrucción SQL en una sola consulta. Para obtener más información, consulte la entrada del blog [Introducción a Python UDFs en Amazon Redshift](https://aws.amazon.com/blogs/big-data/introduction-to-python-udfs-in-amazon-redshift/) AWS Big Data.

Los datos de muestra de este patrón se basan en el alfabeto turco con fines de demostración. La UDF escalar de Python de este patrón está diseñada para que los resultados de las consultas predeterminados de Amazon Redshift se ajusten al orden lingüístico de los caracteres del idioma turco. Para obtener más información, consulte *Ejemplo de lengua turca* en la sección * Información adicional* de este patrón. Puede modificar la UDF escalar de Python en este patrón para otros lenguajes.

## Requisitos previos y limitaciones
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-prereqs"></a>

**Requisitos previos **
+ [Clúster de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) con base de datos, esquema y tablas
+ [Usuario de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_Users.html) con permisos `CREATE TABLE` y `CREATE FUNCTION`.
+ [Python 2.7](https://www.python.org/download/releases/2.7/) o posterior

**Limitaciones**

La clasificación lingüística utilizada por las consultas en este patrón no distingue entre mayúsculas y minúsculas.

## Tools (Herramientas)
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-tools"></a>

**Servicios de AWS**
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) es un servicio de almacén de datos administrado que opera a escala de petabytes en la Nube de AWS. Amazon Redshift está integrado en el lago de datos, lo que permite usar los datos para adquirir nueva información para su empresa y sus clientes.

**Otras herramientas**
+ Las [funciones definidas por el usuario de Python (UDFs)](https://docs.snowflake.com/en/developer-guide/udf/python/udf-python-introduction.html) son funciones que puede escribir en Python y, a continuación, invocar sentencias SQL.

## Epics
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-epics"></a>

### Desarrolle código para ordenar los resultados de las consultas en orden lingüístico
<a name="develop-code-to-sort-query-results-in-linguistic-order"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una tabla para los datos de su muestra. | Para crear una tabla en Amazon Redshift e insertar los datos de muestra en la tabla, utilice las siguientes instrucciones SQL:<pre>CREATE TABLE my_table (first_name varchar(30));<br /><br />INSERT INTO my_table (first_name)<br />VALUES<br />    ('ali'),<br />    ('Ali'),<br />    ('ırmak'),<br />    ('IRMAK'),<br />    ('irem'),<br />    ('İREM'),<br />    ('oğuz'),<br />    ('OĞUZ'),<br />    ('ömer'),<br />    ('ÖMER'),<br />    ('sedat'),<br />    ('SEDAT'),<br />    ('şule'),</pre>Los primeros nombres de los datos de muestra incluyen caracteres especiales del alfabeto turco. Para obtener más información sobre las consideraciones relativas al idioma turco en este ejemplo, consulte *Ejemplo de lengua turca* en la sección *Información adicional* de este patrón. | Ingeniero de datos | 
| Compruebe la clasificación predeterminada de los datos de la muestra. | Para ver la clasificación predeterminada de los datos de muestra en Amazon Redshift, ejecute la siguiente consulta:<pre>SELECT first_name FROM my_table ORDER BY first_name;</pre>La consulta devuelve la lista de nombres de la tabla que creó anteriormente:<pre>first_name<br />---------------<br />Ali<br />IRMAK<br />OĞUZ<br />SEDAT<br />ali<br />irem<br />oğuz<br />sedat<br />ÖMER<br />ömer<br />İREM<br />ırmak<br />ŞULE<br />şule</pre>Los resultados de la consulta no están en el orden correcto porque el orden binario predeterminado en UTF-8 no se adapta al orden lingüístico de los caracteres especiales turcos. | Ingeniero de datos | 
| Creación de una UDF de Python escalar. | Para crear una UDF de Python escalar, utilice el siguiente código SQL: <pre>CREATE OR REPLACE FUNCTION collate_sort (value varchar) <br />RETURNS varchar <br />IMMUTABLE <br />AS <br />$$    <br />    def sort_str(val):<br />        import string<br />        <br />        dictionary = {<br />            'I': 'ı', <br />            'ı': 'h~', <br />            'İ': 'i', <br />            'Ş': 's~', <br />            'ş': 's~', <br />            'Ğ': 'g~', <br />            'ğ': 'g~', <br />            'Ü': 'u~', <br />            'ü': 'u~', <br />            'Ö': 'o~', <br />            'ö': 'o~', <br />            'Ç': 'c~', <br />            'ç': 'c~'<br />        }<br />        <br />        for key, value in dictionary.items():<br />            val = val.replace(key, value)<br />        <br />        return val.lower()<br /> <br />    return sort_str(value)<br />    <br />$$ LANGUAGE plpythonu;</pre> | Ingeniero de datos | 
| Consulta del ejemplo de datos. | Para consultar del ejemplo de datos mediante la UDF de Python, ejecute la siguiente consulta SQL:<pre>SELECT first_name FROM my_table ORDER BY collate_sort(first_name);</pre>La consulta ahora devuelve los datos de la muestra en orden lingüístico turco:<pre>first_name<br />---------------<br />ali<br />Ali<br />ırmak<br />IRMAK<br />irem<br />İREM<br />oğuz<br />OĞUZ<br />ömer<br />Ömer<br />sedat<br />SEDAT<br />şule<br />ŞULE</pre> | Ingeniero de datos | 

## Recursos relacionados
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-resources"></a>
+ [Cláusula ORDER BY](https://docs.aws.amazon.com/redshift/latest/dg/r_ORDER_BY_clause.html) (documentación de Amazon Redshift)
+ [Creación de una UDF de Python escalar](https://docs.aws.amazon.com/redshift/latest/dg/udf-creating-a-scalar-udf.html) (documentación de Amazon Redshift)

## Información adicional
<a name="set-up-language-specific-sorting-for-amazon-redshift-query-results-using-a-scalar-python-udf-additional"></a>

**Ejemplo de idioma turco**

Amazon Redshift devuelve los resultados de las consultas en función de la ordenación binaria de UTF-8, no de una ordenación específica del idioma. Esto significa que si consulta una tabla de Amazon Redshift que contenga caracteres turcos, los resultados de la consulta no se ordenarán según el orden lingüístico del idioma turco. El idioma turco contiene seis caracteres especiales (ç, ı, ğ, ö, ş y ü) que no aparecen en el alfabeto latino. Estos caracteres especiales se colocan al final de un conjunto de resultados ordenados según el orden binario UTF-8, como se muestra en la siguiente tabla.


| 
| 
| Orden binario en UTF-8 | Ordenamiento lingüístico turco | 
| --- |--- |
| a | a | 
| b | b | 
| c | c | 
| d | **ç (\$1)** | 
| e | d | 
| f | e | 
| g | f | 
| h | g | 
| i | **ğ (\$1)** | 
| j | h | 
| k | **ı (\$1)** | 
| l | i | 
| m | j | 
| n | k | 
| o | l | 
| p | m | 
| r | n | 
| s | o | 
| t | **ö (\$1)** | 
| u | p | 
| v | r | 
| y | s | 
| z | **ş (\$1)** | 
| **ç (\$1)** | t | 
| **ğ (\$1)** | u | 
| **ı (\$1)** | **ü (\$1)** | 
| **ö (\$1)** | v | 
| **ş (\$1)** | y | 
| **ü (\$1)** | z | 

**nota**  
El asterisco (\$1) indica un carácter especial en el idioma turco.

Como se muestra en la tabla anterior, el carácter especial **ç** se encuentra entre la **c** y la **d** en el orden lingüístico turco, pero aparece después de la **z** en el orden binario UTF-8. La UDF de Python escalar de este patrón utiliza el siguiente diccionario de reemplazo de caracteres para reemplazar los caracteres especiales turcos por los correspondientes caracteres equivalentes en latín.


| 
| 
| Carácter especial turco | Carácter equivalente en latín | 
| --- |--- |
| ç | c\$1 | 
| ı | h\$1 | 
| ğ | g\$1 | 
| ö | o\$1 | 
| ş | s\$1 | 
| ü | u\$1 | 

**nota**  
Se agrega un carácter de tilde (\$1) al final de los caracteres latinos que sustituyen a sus correspondientes caracteres especiales turcos.

**Cómo modificar una función UDF de Python escalar**

Para modificar la función UDF de Python escalar a partir de este patrón para que la función acepte un parámetro de localización y admita un diccionario de transacciones múltiples, utilice el siguiente código SQL:

```
CREATE OR REPLACE FUNCTION collate_sort (value varchar, locale varchar) 
RETURNS varchar 
IMMUTABLE 
AS 
$$    
    def sort_str(val):
       import string
       # Turkish Dictionary
       if locale == 'tr-TR':
            dictionary = {
               'I': 'ı', 
               'ı': 'h~', 
               'İ': 'i', 
               'Ş': 's~', 
               'ş': 's~', 
               'Ğ': 'g~', 
               'ğ': 'g~', 
               'Ü': 'u~', 
               'ü': 'u~', 
               'Ö': 'o~', 
               'ö': 'o~', 
               'Ç': 'c~', 
               'ç': 'c~'
        }
        # German Dictionary
        if locale == 'de-DE':
            dictionary = {
               ....
               ....
        }
        
        for key, value in dictionary.items():
            val = val.replace(key, value)
        
        return val.lower()
 
    return sort_str(value)
    
$$ LANGUAGE plpythonu;
```

En el siguiente ejemplo de código se muestra cómo se consulta del UDF de Python modificado:

```
SELECT first_name FROM my_table ORDER BY collate_order(first_name, 'tr-TR');
```

# Suscripción de una función de Lambda a las notificaciones de eventos de buckets de S3 en diferentes regiones de AWS
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions"></a>

*Suresh Konathala, Amazon Web Services*

*Andrew Preston y Arindom Sarkar, ninguno*

## Resumen
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-summary"></a>

[Notificaciones de eventos de Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html) publica notificaciones de determinados eventos en su bucket de S3 (por ejemplo, eventos creados por objetos, eventos de eliminación de objetos o eventos de restauración de objetos). Puede usar una función de AWS Lambda para procesar estas notificaciones de acuerdo con los requisitos de su aplicación. Sin embargo, la función de Lambda no puede suscribirse directamente a las notificaciones de los buckets de S3 alojados en distintas regiones de AWS.

El enfoque de este patrón implementa un [escenario de distribución ramificada](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) para procesar las notificaciones de Amazon S3 procedentes de buckets de S3 entre regiones mediante un tema del Amazon Simple Notification Service (Amazon SNS) para cada región. Estos temas de SNS regional envían las notificaciones de eventos de Amazon S3 a una cola de Amazon Simple Queue Service (Amazon SQS) en una región central que también contiene la función de Lambda. La función de Lambda se suscribe a esta cola de SQS y procesa las notificaciones de eventos de acuerdo con los requisitos de su organización.

## Requisitos previos y limitaciones
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Buckets de S3 existentes en varias regiones, incluida una región central para alojar la cola de Amazon SQS y la función de Lambda.
+ Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada. Para obtener más información, consulte [Instalar, actualizar y desinstalar la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) en la documentación de la CLI de AWS. 
+ Familiaridad con el escenario de distribución ramificada en Amazon SNS. Para obtener más información al respecto, consulte [Escenarios comunes de Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-common-scenarios.html) en la documentación de Amazon SNS.

## Arquitectura
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-architecture"></a>

El siguiente diagrama muestra la arquitectura para el enfoque de este patrón. 

![\[El flujo de trabajo utiliza Amazon SNS, S3 y SQS para procesar las notificaciones de eventos de buckets de S3 entre regiones.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cf6c1804-8c41-46f1-9f17-ff361708c595/images/760cf4c0-0cb3-48d1-92ae-1cf0fa8ae076.png)


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

1. Amazon S3 envía notificaciones de eventos sobre buckets de S3 (por ejemplo, objetos creados, objetos retirados o objetos restaurados) a un tema de SNS de la misma región.

1. El tema de SNS publica el evento en una cola de SQS en la región central.

1. La cola SQS está configurada como el origen de eventos de la función de Lambda y almacena en búfer los mensajes de eventos de la función de Lambda. 

1. La función de Lambda sondea la cola de SQS en busca de mensajes y procesa las notificaciones de eventos de Amazon S3 según los requisitos de la aplicación.

 

**Pila de tecnología**
+ Lambda
+ Amazon SNS
+ Amazon SQS
+ Amazon S3

## Tools (Herramientas)
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-tools"></a>
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): la interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto para interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de línea de comandos. Con una configuración mínima, puede ejecutar comandos de la CLI de AWS que implementan una funcionalidad equivalente a la proporcionada por la consola de administración de AWS basada en navegador desde un símbolo del sistema.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): AWS le CloudFormation ayuda a modelar y configurar sus recursos de AWS, a aprovisionarlos de forma rápida y coherente y a gestionarlos durante todo su ciclo de vida. Facilita poder usar una plantilla para describir los recursos y sus dependencias, y lanzarlos y configurarlos juntos como una pila, en lugar de administrarlos de forma individual. Puede administrar y aprovisionar pilas en varias cuentas y regiones de AWS.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): AWS Lambda es un servicio de computación que permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. Solo pagará por el tiempo de computación que consuma, no se aplican cargos cuando el código no se está ejecutando.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): Amazon Simple Notification Service (Amazon SNS) coordina y gestiona la entrega o el envío de mensajes entre publicadores y clientes, incluyendo los servidores web y las direcciones de correo electrónico. Los suscriptores reciben todos los mensajes publicados de los temas a los que están suscritos y todos los suscriptores de un tema reciben los mismos mensajes.
+ [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html): Amazon Simple Queue Service (Amazon SQS) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos. Amazon SQS admite tanto las colas estándar como las colas FIFO.

## Epics
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-epics"></a>

### Crear la cola SQS y la función de Lambda en su región central
<a name="create-the-sqs-queue-and-lambda-function-in-your-central-region"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una cola de SQS con un desencadenador Lambda. | Inicie sesión en la consola de administración de AWS y siga las instrucciones del tutorial [Uso de Lambda con Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-example.html) de la documentación de AWS Lambda para crear los siguientes recursos en su región central:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)Asegúrese de configurar la cola de SQS como origen de eventos de la función de Lambda. | AWS DevOps, arquitecto de nube | 

### Cree un tema de SNS y configure las notificaciones de eventos para los buckets de S3 de cada región requerida
<a name="create-an-sns-topic-and-set-up-event-notifications-for-the-s3-buckets-in-each-required-region"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Cree un tema de SNS para recibir notificaciones de eventos de Amazon S3. | Cree un tema de SNS en una región de la que desee recibir notificaciones de eventos de Amazon S3. Para obtener más información al respecto, consulte [Creación de un tema SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) en la documentación de Amazon SNS. Asegúrese de registrar el nombre de recurso de Amazon (ARN) de su tema de SNS.  | AWS DevOps, arquitecto de nube | 
| Suscriba el tema SNS a la cola SQS central. | Suscriba su tema de SNS a la cola de SQS alojada en su región central. Para obtener más información al respecto, consulte [Suscripción a un tema SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) en la documentación de Amazon SNS. | AWS DevOps, arquitecto de nube | 
| Actualice la política de acceso del tema SNS.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "0",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Service": "s3.amazonaws.com"<br />      },<br />      "Action": "sns:Publish",<br />      "Resource": "arn:aws:sns:us-west-2::s3Events-SNSTopic-us-west-2"<br />    }<br />  ]<br />}</pre> | AWS DevOps, arquitecto de nube | 
| Configure las notificaciones para cada bucket de S3 de la región. | Configure las notificaciones de eventos para cada bucket de S3 de la región. Para obtener más información al respecto, consulte [Activación y configuración de las notificaciones de eventos mediante la consola de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications.html) en la documentación de Amazon S3.En la sección **Destino**, elija el **tema de SNS** y especifique el ARN del tema de SNS que creó anteriormente. | AWS DevOps, arquitecto de nube | 
| Repita esta épica en todas las regiones requeridas. | Repita las tareas de esta epic para cada región de la que quiere recibir notificaciones de eventos de Amazon S3, lo que incluye la región central. | AWS DevOps, arquitecto de nube | 

## Recursos relacionados
<a name="subscribe-a-lambda-function-to-event-notifications-from-s3-buckets-in-different-aws-regions-resources"></a>
+ [Configuración de una política de acceso](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html) (documentación de Amazon SQS)
+ [Configuración de una cola de SQS como fuente de eventos](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#events-sqs-eventsource) (documentación de AWS Lambda)
+ [Configuración de una cola de SQS para iniciar una función de Lambda](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-lambda-function-trigger.html) (documentación de Amazon SQS)
+ [AWS::Lambda::Function recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) ( CloudFormation documentación de AWS)

# Tres tipos de trabajos de AWS Glue ETL para convertir datos a Apache Parquet
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet"></a>

*Adnan Alvee, Nith Govindasivan y Karthikeyan Ramachandran, Amazon Web Services*

## Resumen
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-summary"></a>

En la nube de Amazon Web Services (AWS), AWS Glue es un servicio de extracción, transformación y carga (ETL) totalmente administrado. Con AWS Glue puede categorizar datos, limpiarlos, enriquecerlos y trasladarlos de manera fiable entre distintos almacenes y flujos de datos de manera rentable.

Este patrón proporciona diferentes tipos de trabajos en AWS Glue y utiliza tres scripts diferentes para demostrar la creación de trabajos de ETL.

Puede usar AWS Glue para escribir trabajos de ETL en un entorno de intérprete de comandos de Python. También puede crear trabajos ETL por lotes o en streaming mediante Python (PySpark) o Scala en un entorno Apache Spark gestionado. Para empezar a crear trabajos de ETL, este patrón se centra en los trabajos de ETL por lotes utilizando Python shell y Scala. PySpark Los trabajos de intérprete de comandos de Python están pensados para cargas de trabajo que requieren menos potencia de cálculo. El entorno gestionado de Apache Spark está diseñado para cargas de trabajo que requieren una gran potencia de cálculo.

Apache Parquet está diseñado para admitir esquemas de compresión y codificación eficientes. Puede acelerar sus cargas de trabajo de análisis porque almacena los datos en forma de columnas. La conversión de datos a Parquet puede ahorrarle espacio de almacenamiento, costos y tiempo a largo plazo. Para obtener más información sobre Parquet, consulte la entrada del blog [Apache Parquet: cómo ser un héroe con el formato de datos en columnas de código abierto](https://blog.openbridge.com/how-to-be-a-hero-with-powerful-parquet-google-and-amazon-f2ae0f35ee04).

## Requisitos previos y limitaciones
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-prereqs"></a>

**Requisitos previos **
+ Rol de AWS Identity and Access Management (IAM) (si no tiene un rol, consulte la sección de [Información adicional](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional)).

## Arquitectura
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-architecture"></a>

**Pila de tecnología de destino**
+ AWS Glue
+ Amazon Simple Storage Service (Amazon S3)
+ Apache Parquet

**Automatizar y escalar**
+ [Los flujos de trabajo de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/workflows_overview.html) admiten la automatización total de una canalización de ETL.
+ Puede cambiar el número de unidades de procesamiento de datos (DPUs), o los tipos de trabajadores, para escalar horizontal y verticalmente.

## Tools (Herramientas)
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-tools"></a>

**Servicios de AWS**
+ [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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) es un servicio de ETL totalmente gestionado que le ayuda a clasificar, limpiar, enriquecer y mover datos de forma fiable entre almacenes de datos y flujos de datos.

**Otras herramientas**
+ [Apache Parquet](https://parquet.apache.org/) es un formato de archivo de datos de código abierto orientado por columnas diseñado para el almacenamiento y la recuperación.

**Configuración**

Utilice los siguientes ajustes para configurar la potencia de procesamiento de AWS Glue ETL. Para reducir los costos, utilice la configuración mínima cuando ejecute la carga de trabajo que se proporciona en este patrón. 
+ **Intérprete de comandos de Python**: puede usar 1 DPU para utilizar 16 GB de memoria o 0,0625 DPU para utilizar 1 GB de memoria. Este patrón usa 0,0625 DPU, que es el valor predeterminado en la consola de AWS Glue.
+ **Python o Scala para Spark**: si elige los tipos de trabajo relacionados con Spark en la consola, AWS Glue utiliza de forma predeterminada 10 trabajadores y el tipo de trabajador G.1X. Este patrón utiliza dos trabajadores, que es el número mínimo permitido, y el tipo de trabajador estándar es suficiente y rentable.

En la siguiente tabla se muestran los distintos tipos de trabajadores de AWS Glue para el entorno Apache Spark. Como un trabajo de intérprete de comandos de Python no utiliza el entorno Apache Spark para ejecutar Python, no se incluye en la tabla.


| 
| 
|  | Standard | G.1 X | G.2X | 
| --- |--- |--- |--- |
| vCPU | 4 | 4 | 8 | 
| Memoria | 16 GB | 16 GB | 32 GB | 
| Espacio en disco | 50 GB | 64 GB | 128 GB | 
| Ejecutor por trabajo | 2. | 1  | 1 | 

**Código**

Para ver el código que se utiliza en este patrón, incluida la configuración del rol de IAM y los parámetros de IAM, consulte la sección de [Información adicional](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional).

## Epics
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-epics"></a>

### Carga de datos
<a name="upload-the-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargue los datos en un bucket de S3 nuevo o en un bucket de S3 ya existente. | Cree utilice un bucket de S3 existente en su cuenta. Cargue el archivo sample\$1data.csv de la sección de [Adjuntos](#attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f) y anote el bucket de S3 y la ubicación del prefijo. | AWS general | 

### Cree y ejecute el trabajo de AWS Glue
<a name="create-and-run-the-aws-glue-job"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el trabajo de AWS Glue | En la sección ETL de la consola de AWS Glue, añada un trabajo de AWS Glue. Seleccione el tipo de trabajo adecuado, la versión de AWS Glue y el DPU/Worker tipo y número de trabajadores correspondientes. Para más información, consulte la sección *Configuración*. | Desarrollador, nube o datos | 
| Cambie las ubicaciones de entrada y salida. | Copie el código correspondiente a su trabajo de AWS Glue y cambie la ubicación de entrada y salida que indicó en la descripción de la épica **Cargar los datos**. | Desarrollador, nube o datos | 
| Configure los parámetros. | Puede utilizar los fragmentos que se proporcionan en la sección de [Additional information](#three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional) (Información adicional) para establecer los parámetros de su trabajo de ETL. AWS Glue utiliza cuatro nombres de argumentos internamente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet.html)El parámetro `--JOB_NAME` debe introducirse de forma explícita en la consola de AWS Glue. Elija **Trabajos**, **Edit Job** (Editar trabajo), **Security configuration, script libraries, and job parameters (optional)** (Configuración de seguridad, bibliotecas de scripts y parámetros de trabajo (opcional)). Introduzca `--JOB_NAME` como clave y proporcione un valor. También puede utilizar la Interfaz de la línea de comandos de AWS (AWS CLI) o la API de AWS Glue para configurar este parámetro. Spark usa el parámetro `--JOB_NAME` y no es necesario en un trabajo de entorno de intérprete de comandos de Python.Debe añadir `--` antes del nombre de cada parámetro; de lo contrario, el código no funcionará. Por ejemplo, en el caso de los fragmentos de código, los parámetros de ubicación deben invocarse mediante `--input_loc` y `--output_loc`. | Desarrollador, nube o datos | 
| Ejecute el trabajo de ETL. | Ejecute su trabajo y compruebe el resultado. Observe cuánto espacio se ha reducido con respecto al archivo original. | Desarrollador, nube o datos | 

## Recursos relacionados
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-resources"></a>

**Referencias**
+ [Apache Spark](https://spark.apache.org/)
+ [AWS Glue: cómo funciona](https://docs.aws.amazon.com/glue/latest/dg/how-it-works.html)
+ [Precios de AWS Glue](https://aws.amazon.com/glue/pricing/)

**Tutoriales y videos**
+ [¿Qué es AWS Glue?](https://www.youtube.com/watch?v=qgWMfNSN9f4)

## Información adicional
<a name="three-aws-glue-etl-job-types-for-converting-data-to-apache-parquet-additional"></a>

**Rol de IAM**

Al crear los trabajos de AWS Glue, puede usar un rol de IAM existente que tenga los permisos que se muestran en el siguiente fragmento de código o un rol nuevo.

Para crear un nuevo rol, utilice el siguiente código YAML.

```
# (c) 2022 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. This AWS Content is provided subject to the terms of the AWS Customer
# Agreement available at https://aws.amazon.com/agreement/ or other written agreement between Customer and Amazon Web Services, Inc.

AWSTemplateFormatVersion: "2010-09-09"

Description: This template will setup IAM role for AWS Glue service.

Resources:
  rGlueRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: "Allow"
            Principal:
              Service:
                - "glue.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole
      Policies:
        - PolicyName: !Sub "${AWS::StackName}-s3-limited-read-write-inline-policy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action:
                  - "s3:PutObject"
                  - "s3:GetObject"
                Resource: "arn:aws:s3:::*/*"
      Tags:
        - Key  : "Name"
          Value : !Sub "${AWS::StackName}"

Outputs:
  oGlueRoleName:
    Description: AWS Glue IAM role
    Value:
      Ref: rGlueRole
    Export:
      Name: !Join [ ":", [ !Ref "AWS::StackName", rGlueRole ] ]
```

**AWS Glue (intérprete de comandos de Python)**

El código Python usa los Pandas y PyArrow las bibliotecas para convertir los datos a Parquet. La biblioteca Pandas ya está disponible. La PyArrow biblioteca se descarga al ejecutar el patrón, ya que se ejecuta una sola vez. Puede usar archivos de rueda PyArrow para convertirlos en una biblioteca y proporcionar el archivo como un paquete de biblioteca. Para obtener más información, consulte [Proporcionar su propia biblioteca de Python](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html)

*Parámetros del intérprete de comandos de Python de AWS Glue*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["input_loc", "output_loc"])
```

*Código del intérprete de comandos para Python de AWS Glue*

```
from io import BytesIO
import pandas as pd
import boto3
import os
import io
import site
from importlib import reload
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "pyarrow"] )
reload(site)
import pyarrow


input_loc = "s3://bucket-name/prefix/sample_data.csv"
output_loc = "s3://bucket-name/prefix/"


input_bucket = input_loc.split('/', 1)[0]
object_key = input_loc.split('/', 1)[1]


output_loc_bucket = output_loc.split('/', 1)[0]
output_loc_prefix = output_loc.split('/', 1)[1] 


s3 = boto3.client('s3')
obj = s3.get_object(Bucket=input_bucket, Key=object_key)
df = pd.read_csv(io.BytesIO(obj['Body'].read()))


parquet_buffer = BytesIO()
s3_resource = boto3.resource('s3')
df.to_parquet(parquet_buffer, index=False) 
s3_resource.Object(output_loc_bucket, output_loc_prefix +  'data' + '.parquet').put(Body=parquet_buffer.getvalue())
```

**Trabajo de AWS Glue Spark con Python**

Para usar un tipo de trabajo de AWS Glue Spark con Python, elija **Spark** como tipo de trabajo. Elija **Spark 3.1, Python 3 con un tiempo de inicio de trabajo mejorado (Glue versión 3.0)** como versión AWS Glue.

*Parámetros de Python de AWS Glue*

```
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ["JOB_NAME", "input_loc", "output_loc"])
```

*Trabajo de AWS Glue Spark con el código de Python*

```
import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.transforms import *
from awsglue.dynamicframe import DynamicFrame
from awsglue.utils import getResolvedOptions
from awsglue.job import Job


sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)

input_loc = "s3://bucket-name/prefix/sample_data.csv"
output_loc = "s3://bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(\
    connection_type = "s3", \
    connection_options = { 
        "paths": [input_loc]}, \
    format = "csv",
    format_options={
        "withHeader": True,
        "separator": ","
    })


outputDF = glueContext.write_dynamic_frame.from_options(\
    frame = inputDyf, \
    connection_type = "s3", \
    connection_options = {"path": output_loc \
        }, format = "parquet")
```

En el caso de un gran número de archivos comprimidos de gran tamaño (por ejemplo, 1000 archivos de aproximadamente 3 MB cada uno), utilice el parámetro `compressionType` junto con el parámetro `recurse` para leer todos los archivos disponibles en el prefijo, tal y como se muestra en el código siguiente.

```
input_loc = "bucket-name/prefix/"
output_loc = "bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(
                    connection_type = "s3", 
                    connection_options = {"paths": [input_loc], 
                                            "compressionType":"gzip","recurse" :"True",
                                            },
                    format = "csv",
                    format_options={"withHeader": True,"separator": ","}
                    )
```

Para un gran número de archivos pequeños comprimidos (por ejemplo, 1000 archivos de aproximadamente 133 KB cada uno), utilice el parámetro`groupFiles` junto con los parámetros `compressionType` y `recurse`. El parámetro `groupFiles` agrupa los archivos pequeños en varios archivos grandes y el parámetro `groupSize` controla la agrupación según el tamaño especificado en bytes (por ejemplo, 1 MB). El siguiente fragmento de código proporciona un ejemplo del uso de estos parámetros en el código.

```
input_loc = "bucket-name/prefix/"
output_loc = "bucket-name/prefix/"

inputDyf = glueContext.create_dynamic_frame_from_options(
                    connection_type = "s3", 
                    connection_options = {"paths": [input_loc], 
                                            "compressionType":"gzip","recurse" :"True",
                                             "groupFiles" :"inPartition",  "groupSize" :"1048576",
                                            },
                    format = "csv",
                    format_options={"withHeader": True,"separator": ","}
                    )
```

Sin ningún cambio en los nodos de trabajo, esta configuración permite que el trabajo de AWS Glue lea varios archivos (grandes o pequeños, con o sin compresión) y los escriba en el destino en formato Parquet.

**Trabajo de AWS Glue Spark con Scala**

Para usar un tipo de trabajo de AWS Glue Spark con Scala, elija **Spark** como tipo de trabajo y un **Language** (Idioma) como **Scala**. Elija **Spark 3.1, Scala 2 con un tiempo de inicio de trabajo mejorado (Glue versión 3.0)** como versión de AWS Glue. Para ahorrar espacio de almacenamiento, en el siguiente ejemplo de AWS Glue with Scala también se utiliza la característica `applyMapping` para convertir tipos de datos.

*Parámetros de AWS Glue Scala*

```
import com.amazonaws.services.glue.util.GlueArgParser val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME", "inputLoc", "outputLoc").toArray)
```

*Trabajo de AWS Glue Spark con código Scala*

```
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.DynamicFrame
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._


object GlueScalaApp {
  def main(sysArgs: Array[String]) {
    
    @transient val spark: SparkContext = SparkContext.getOrCreate()
    val glueContext: GlueContext = new GlueContext(spark)

    val inputLoc = "s3://bucket-name/prefix/sample_data.csv"
    val outputLoc = "s3://bucket-name/prefix/"

    val readCSV = glueContext.getSource("csv", JsonOptions(Map("paths" -> Set(inputLoc)))).getDynamicFrame()

    val applyMapping = readCSV.applyMapping(mappings = Seq(("_c0", "string", "date", "string"), ("_c1", "string", "sales", "long"),
    ("_c2", "string", "profit", "double")), caseSensitive = false)

    val formatPartition = applyMapping.toDF().coalesce(1)

    val dynamicFrame = DynamicFrame(formatPartition, glueContext)

    val dataSink = glueContext.getSinkWithFormat(
        connectionType = "s3", 
        options = JsonOptions(Map("path" -> outputLoc )),
        transformationContext = "dataSink", format = "parquet").writeDynamicFrame(dynamicFrame)
  }
}
```

## Conexiones
<a name="attachments-8c926709-8fa4-417f-9aaf-bcc8113d018f"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/8c926709-8fa4-417f-9aaf-bcc8113d018f/attachments/attachment.zip)

# Visualice los registros de auditoría de Amazon Redshift con Amazon Athena y Amazon QuickSight
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight"></a>

*Sanket Sirsikar y Gopal Krishna Bhatia, Amazon Web Services*

## Resumen
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-summary"></a>

La seguridad es una parte integral de las operaciones de base de datos en la nube de Amazon Web Services (AWS). Su organización debe asegurarse de supervisar las actividades y las conexiones de los usuarios de la base de datos para detectar posibles incidentes y riesgos de seguridad. Este patrón ayuda a supervisar las bases de datos con fines de seguridad y solución de problemas, un proceso que suele denominarse auditoría de base de datos.

 Este patrón proporciona un script SQL que automatiza la creación de una tabla de Amazon Athena y vistas para un panel de informes en Amazon que le ayuda a auditar los registros de QuickSight Amazon Redshift. Esto garantiza que los usuarios responsables de supervisar las actividades de la base de datos tengan un acceso cómodo a las características de seguridad de los datos.  

## Requisitos previos y limitaciones
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Un clúster de Amazon Redshift existente. Para obtener más información, consulte [Create an Amazon Redshift cluster](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-data-launch-cluster.html) (Crear un clúster de Amazon Redshift) en la documentación de Amazon Redshift.
+ Acceso a un grupo de trabajo de Athena existente. Para obtener más información, consulte [How workgroups work](https://docs.aws.amazon.com/athena/latest/ug/user-created-workgroups.html) (Cómo funcionan los grupos de trabajo) en la documentación de Amazon Athena. 
+ Un bucket de origen de Amazon Simple Storage Service (Amazon S3) con los permisos de AWS Identity and Access Management (IAM) requeridos. Para obtener más información, consulte [Bucket permissions for Amazon Redshift audit logging](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) (Permisos de bucket para el registro de auditoría de Amazon Redshift) en [Database audit logging](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html) (Registros de auditoría de bases de datos) de la documentación de Amazon Redshift.

## Arquitectura
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-architecture"></a>

![\[Data flow diagram showing Amazon Redshift, logs, S3 bucket, Amazon Athena, and Amazon Quick.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/90e69009-001e-4ced-bef0-3c361f93ae87/images/9fde7f01-17ab-4207-8a59-a12daf85a382.png)


 

**Pila de tecnología**
+ Athena
+ Amazon Redshift 
+ Amazon S3 
+ QuickSight

## Tools (Herramientas)
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-tools"></a>
+ [Amazon Athena ](https://docs.aws.amazon.com/athena/latest/ug/what-is.html): Athena es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar. 
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html): QuickSight es un servicio de inteligencia empresarial (BI) escalable, sin servidor, integrable y basado en el aprendizaje automático. 
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html): Amazon Redshift es un servicio de almacenamiento de datos completamente administrado, de nivel empresarial y de escala de petabytes. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento para Internet.

## Epics
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-epics"></a>

### Configurar el clúster de Amazon Redshift
<a name="configure-the-amazon-redshift-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Habilite el registro de auditoría para el clúster de Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight.html) | Administrador de base de datos, ingeniero de datos | 
| Habilite el registro en el grupo de parámetros del clúster de Amazon Redshift. | Puede habilitar la auditoría de los registros de conexión, los registros de usuario y los registros de actividad de los usuarios al mismo tiempo mediante la Consola de administración de AWS, la API de referencia de Amazon Redshift o la interfaz de la línea de comandos de AWS (AWS CLI).  Para auditar los registros de actividad de los usuarios, también debe habilitar el parámetro `enable_user_activity_logging` de la base de datos. Si habilita solo la característica de registro de auditoría y no el parámetro asociado, los registros de auditoría de la base de datos registrarán únicamente la información de los registros de conexión y de usuario, pero no la del registro de actividad del usuario. El parámetro `enable_user_activity_logging` no está habilitado de forma predeterminada, pero puede activarlo cambiándolo de `false` a`true`.Debe crear un nuevo grupo de parámetros de clúster con el parámetro `user_activity_logging` activado y adjuntarlo a su clúster de Amazon Redshift. Para obtener más información, consulte [Modifying a cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#modify-cluster) (Cómo modificar un clúster) en la documentación de Amazon Redshift.Para obtener más información sobre esta tarea, consulte [Amazon Redshift parameter groups](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html) (Grupos de parámetros de Amazon Redshift) y [Configuring auditing using the console](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing-console.html) (Configurar la auditoría mediante la consola) en la documentación de Amazon Redshift. | Administrador de base de datos, ingeniero de datos | 
| Configure los permisos del bucket de S3 para el registro de clúster de Amazon Redshift. | Al habilitar el registro, Amazon Redshift recopila la información de los registros y la carga en los archivos de registro almacenados en el bucket de S3. Puede crear un nuevo bucket de S3 o utilizar un bucket existente.Asegúrese de que Amazon Redshift tenga los permisos de IAM requeridos para tener acceso al bucket de S3. Para obtener más información al respecto, consulte [Bucket permissions for Amazon Redshift audit logging](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html#db-auditing-bucket-permissions) (Permisos de bucket para el registro de auditoría de Amazon Redshift) en [Database audit logging](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html) (Registros de auditoría de bases de datos) de la documentación de Amazon Redshift. | Administrador de base de datos, ingeniero de datos | 

### Crear la tabla y las vistas de Athena
<a name="create-the-athena-table-and-views"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la tabla y las vistas de Athena para consultar los datos del registro de auditoría de Amazon Redshift desde el bucket de S3. | Abra la consola de Amazon Athena y utilice la consulta del lenguaje de definición de datos (DDL) del script de SQL `AuditLogging.sql` (adjunto) para crear la tabla y las vistas de los registros de actividad de los usuarios, los registros de usuarios y los registros de conexión.Para obtener más información e instrucciones, consulte el tutorial [Create tables and run queries](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html) (Crear tablas y ejecutar consultas) del taller de Amazon Athena. | Ingeniero de datos | 

### Configure la supervisión de registros en el panel de control QuickSight
<a name="set-up-log-monitoring-in-the-quicksight-dashboard"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un QuickSight cuadro de mando con Athena como fuente de datos. | Abre la QuickSight consola de Amazon y crea un QuickSight panel de control siguiendo las instrucciones del tutorial [Visualiza QuickSight con Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html) del taller de Amazon Athena. | Administrador de base de datos, ingeniero de datos | 

## Recursos relacionados
<a name="visualize-amazon-redshift-audit-logs-using-amazon-athena-and-amazon-quicksight-resources"></a>
+ [Create tables and run queries in Athena](https://athena-in-action.workshop.aws/30-basics/301-create-tables.html) (Crear crear tablas y ejecutar consultas en Athena)
+ [Visualice QuickSight con Athena](https://athena-in-action.workshop.aws/30-basics/307-quicksight.html)

## Conexiones
<a name="attachments-90e69009-001e-4ced-bef0-3c361f93ae87"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/90e69009-001e-4ced-bef0-3c361f93ae87/attachments/attachment.zip)

# Visualice los informes de credenciales de IAM para todas las cuentas de AWS mediante Amazon Quick Sight
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight"></a>

*Parag Nagwekar y Arun Chandapillai, Amazon Web Services*

## Resumen
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-summary"></a>


| 
| 
| Advertencia: Los usuarios de IAM tienen credenciales de larga duración, lo que supone un riesgo de seguridad. Para ayudar a mitigar este riesgo, le recomendamos que brinde a estos usuarios únicamente los permisos que necesitan para realizar la tarea y que los elimine cuando ya no los necesiten. | 
| --- |

Puede utilizar los informes de credenciales de AWS Identity and Access Management (IAM) para ayudarle a cumplir los requisitos de seguridad, auditoría y conformidad de su organización. [Los informes de credenciales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html) proporcionan una lista de todos los usuarios de sus cuentas de AWS y muestran el estado de sus credenciales, como las contraseñas, claves de acceso y dispositivos de autenticación multifactor (MFA). Puede usar informes de credenciales para varias cuentas de AWS administradas por [AWS Organizations](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/core-concepts.html).

Este patrón incluye pasos y código para ayudarle a crear y compartir informes de credenciales de IAM para todas las cuentas de AWS de su organización mediante los paneles de Amazon Quick Sight. Puede compartir los paneles con las partes interesadas de su organización. Los informes pueden ayudar a su organización a lograr los siguientes resultados empresariales previstos:
+ Identifique los incidentes de seguridad relacionados con los usuarios de IAM
+ Realice un seguimiento de la migración en tiempo real de los usuarios de IAM a la autenticación de inicio de sesión único (SSO)
+ Realice un seguimiento de las regiones de AWS a las que acceden los usuarios de IAM
+ Manténgase en conformidad
+ Comparta información con otras partes interesadas

## Requisitos previos y limitaciones
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Las cuentas miembro de una [organización](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html)
+ Un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) con permisos para acceder a las cuentas de Organizations
+ Interfaz de la línea de comandos de AWS (AWS CLI) versión 2, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) y [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Una [suscripción](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) a la [edición Amazon Quick Enterprise](https://docs.aws.amazon.com/quicksight/latest/user/editions.html)

## Arquitectura
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-architecture"></a>

**Pila de tecnología**
+ Amazon Athena
+ Amazon EventBridge
+ Amazon Quick Suite
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue
+ AWS Identity y Access Management (IAM)
+ AWS Lambda
+ AWS Organizations

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura para configurar un flujo de trabajo que captura los datos de los informes de credenciales de IAM de varias cuentas de AWS.

![\[La siguiente captura de pantalla ilustra el diagrama de arquitectura\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8724ff28-40f6-4c43-9c65-fbd18bbbfd0f/images/e780916a-4ab7-4fdc-8ecc-c837c7d90d13.png)


1. EventBridge invoca una función Lambda a diario.

1. La función de Lambda asume un rol de IAM en todas las cuentas de AWS de la organización. A continuación, la función crea el informe de credenciales de IAM y almacena los datos del informe en un bucket de S3 centralizado. Debe habilitar el cifrado y desactivar el acceso público en el bucket de S3.

1. Un rastreador de AWS Glue rastrea el depósito de S3 a diario y actualiza la tabla de Athena en consecuencia.

1. Quick Sight importa y analiza los datos del informe de credenciales y crea un panel que las partes interesadas pueden visualizar y compartir con ellas.

## Tools (Herramientas)
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-tools"></a>

**Servicios de AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) es un servicio de consultas interactivo que facilita el análisis de datos en Amazon S3 con SQL estándar.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, funciones de Lambda, puntos de conexión de invocación HTTP que utilizan destinos API o buses de eventos en otras cuentas de AWS.
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) es un servicio de inteligencia empresarial (BI) a escala de la nube que lo ayuda a visualizar, analizar y generar informes de sus datos en un único panel. Quick Sight es un componente central de Amazon Quick, que proporciona visualización interactiva de datos, análisis en memoria de SPICE, análisis integrados y uso compartido de paneles.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.
+ [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.

**Código**

El código de este patrón está disponible en el GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)repositorio. Puede usar el código de este repositorio para crear informes de credenciales de IAM en todas las cuentas de AWS en Organizations y almacenarlos en una ubicación central.

## Epics
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-epics"></a>

### Configuración de la infraestructura
<a name="set-up-the-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configura la edición Amazon Quick Enterprise. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrador de AWS DevOps, administrador de la nube, arquitecto de la nube | 
| Integre Amazon Quick Sight con Amazon S3 y Athena. | Debe [autorizar](https://docs.aws.amazon.com/quicksight/latest/user/troubleshoot-connect-to-datasources.html) a Quick Sight a utilizar Amazon S3 y Athena antes de implementar la pila de AWS CloudFormation . | Administrador de AWS DevOps, administrador de la nube, arquitecto de la nube | 

### Implementación de la infraestructura
<a name="deploy-the-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clona el GitHub repositorio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrador de AWS | 
| Implemente la infraestructura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | Administrador de AWS | 
| Cree una política de permisos de IAM. | [Cree una política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) para cada cuenta de AWS de su organización con los siguientes permisos:<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Action": [<br />        "iam:GenerateCredentialReport",<br />        "iam:GetCredentialReport"<br />        ],<br />      "Resource": "*"<br />    }<br />  ]<br />}</pre> | AWS DevOps, administrador de nube, arquitecto de nube, ingeniero de datos | 
| Cree un rol de IAM con una política de confianza. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html)<pre>{<br />   "Version": "2012-10-17",		 	 	 <br />   "Statement":[<br />      {<br />         "Effect":"Allow",<br />         "Principal":{<br />            "AWS":[<br />               "arn:aws:iam::<MasterAccountID>:role/<LambdaRole>"<br />            ]<br />         },<br />         "Action":"sts:AssumeRole"<br />      }<br />   ]<br />}</pre>Sustituya `arn:aws:iam::<MasterAccountID>:role/<LambdaRole>` por el ARN de la función de Lambda que indicó anteriormente.Las organizaciones suelen utilizar la automatización para crear funciones de IAM para sus cuentas de AWS. Le recomendamos que utilice esta automatización, si está disponible. Como alternativa, puede utilizar el `CreateRoleforOrg.py` script del repositorio de código ****. El script requiere una función administrativa existente o cualquier otro rol de IAM que tenga permiso para crear una política y un rol de IAM en cada cuenta de AWS. | Administrador de la nube, arquitecto de la nube, administrador de AWS | 
| Configure Amazon Quick Sight para visualizar los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight.html) | AWS DevOps, administrador de nube, arquitecto de nube, ingeniero de datos | 

## Información adicional
<a name="visualize-iam-credential-reports-for-all-aws-accounts-using-amazon-quicksight-additional"></a>

**Consideraciones adicionales**

Considere lo siguiente:
+ Después de implementar la infraestructura, puede esperar a que Athena cree los informes en Amazon S3 y los analice hasta que Lambda y AWS Glue se ejecuten según lo programado. CloudFormation Como alternativa, puede ejecutar Lambda manualmente para obtener los informes en Amazon S3 y, a continuación, ejecutar el rastreador AWS Glue para obtener la tabla Athena que se crea a partir de los datos.
+ Quick es una poderosa herramienta para analizar y visualizar datos en función de los requisitos de su empresa. Puedes usar [los parámetros](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) de Quick para controlar los datos de los widgets en función de los campos de datos que elijas. Además, puedes usar un análisis rápido para crear parámetros (por ejemplo, campos de cuenta, fecha y usuario, por ejemplo, y `partition_0``partition_1`, `user` respectivamente) a partir de tu conjunto de datos para añadir controles a los parámetros de cuenta, fecha y usuario.
+ Para crear sus propios paneles de Quick Sight, consulte [Quick Workshops](https://catalog.workshops.aws/quicksight/en-US) en el sitio web de AWS Workshop Studio.
+ Para ver ejemplos de cuadros de mando de Quick Sight, consulte el repositorio de GitHub [getiamcredsreport-allaccounts-org](https://github.com/aws-samples/getiamcredsreport-allaccounts-org)códigos.

**Resultados empresariales específicos**

Puede utilizar esta guía para lograr los siguientes resultados empresariales:
+ **Identifique los incidentes de seguridad relacionados con los usuarios de IAM**: investigue a todos los usuarios de todas las cuentas de AWS de su organización mediante un único panel de control. Puede realizar un seguimiento de la tendencia de las regiones de AWS individuales a las que accedió más recientemente un usuario de IAM y de los servicios que utilizó.
+ **Realice un seguimiento de la migración en tiempo real de los usuarios de IAM a la autenticación de SSO**: mediante el SSO, los usuarios pueden iniciar sesión una vez con una sola credencial y acceder a varias cuentas y aplicaciones de AWS. Si planea migrar sus usuarios de IAM al SSO, este patrón puede ayudarlo a realizar la transición al SSO y a realizar un seguimiento del uso de todas las credenciales de los usuarios de IAM (como el acceso a la consola de administración de AWS o el uso de claves de acceso) en todas las cuentas de AWS.
+ **Realice un seguimiento de las regiones de AWS a las que acceden los usuarios de IAM**: puede controlar el acceso de los usuarios de IAM a las regiones con diversos fines, como la soberanía de los datos y el control de costos. También puede realizar un seguimiento del uso de las regiones por parte de cualquier usuario de IAM.
+ **Cumpla con las normas**: si sigue el principio de privilegios mínimos, solo puede conceder los permisos de IAM específicos necesarios para realizar una tarea específica. Además, puede realizar un seguimiento del acceso a los servicios de AWS, a la consola de administración de AWS y al uso prolongado de las credenciales.
+ **Comparta información con otras partes interesadas**: puede compartir paneles seleccionados con otras partes interesadas, sin darles acceso a los informes de credenciales de IAM ni a las cuentas de AWS.

# Más patrones
<a name="analytics-more-patterns-pattern-list"></a>

**Topics**
+ [Autentique a los usuarios de la aplicación React mediante las interfaces de usuario de Amazon Cognito y AWS Amplify](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Extraer contenido de archivos PDF automáticamente con Amazon Textract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Cree un modelo de previsión de arranque en frío utilizando DeepAR para series temporales en SageMaker Amazon AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Crear informes detallados de costos y uso para los clústeres de Amazon EMR mediante el explorador de costos de AWS.](create-detailed-cost-and-usage-reports-for-amazon-emr-clusters-by-using-aws-cost-explorer.md)
+ [Crear informes detallados de costos y uso para Amazon RDS y Amazon Aurora](create-detailed-cost-and-usage-reports-for-amazon-rds-and-amazon-aurora.md)
+ [Crear informes detallados de costos y uso para los trabajos de AWS Glue con el explorador de costos de AWS](create-detailed-cost-and-usage-reports-for-aws-glue-jobs-by-using-aws-cost-explorer.md)
+ [Entregue registros de DynamoDB a Amazon S3 mediante Kinesis Data Streams y Firehose con AWS CDK](deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.md)
+ [Implemente un trabajo de AWS Glue con una canalización de CodePipeline CI/CD de AWS](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Incorpore componentes visuales de Amazon Quick Sight en aplicaciones web mediante Amazon Cognito y la automatización iAC](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Costos de almacenamiento estimados para una tabla de Amazon DynamoDB](estimate-storage-costs-for-an-amazon-dynamodb-table.md)
+ [Ejecución de consultas SQL en Amazon Redshift mediante Terraform](execute-redshift-sql-queries-using-terraform.md)
+ [Extraer y consultar atributos de AWS IoT SiteWise metadatos en un lago de datos](extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.md)
+ [Genere información de datos mediante AWS Mainframe Modernization Amazon Q en Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Genere información sobre z/OS datos de Db2 mediante AWS Mainframe Modernization Amazon Q en Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Otorgue a las instancias de SageMaker notebook acceso temporal a un CodeCommit repositorio de otra cuenta de AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Identifique y avise cuando los recursos de Amazon Data Firehose no estén cifrados con una clave AWS KMS](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Importe la biblioteca psycopg2 para interactuar con su base de AWS Lambda datos PostgreSQL](import-psycopg2-library-lambda.md)
+ [Ingesta y análisis de registros de seguridad de AWS en Microsoft Sentinel](ingest-analyze-aws-security-logs-sentinel.md)
+ [Migración de Amazon RDS para Oracle a Amazon RDS para PostgreSQL en modo SSL mediante AWS DMS](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.md)
+ [Migre una base de datos Oracle a Amazon RDS for Oracle mediante adaptadores de archivos planos de GoldenGate Oracle](migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.md)
+ [Migración de una base de datos de Oracle a Amazon Redshift con AWS DMS y AWS SCT](migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct.md)
+ [Migre datos de un entorno Hadoop local a Amazon S3 con DistCp AWS PrivateLink para Amazon S3](migrate-data-from-an-on-premises-hadoop-environment-to-amazon-s3-using-distcp-with-aws-privatelink-for-amazon-s3.md)
+ [Migración de Couchbase Server a Couchbase Capella en AWS](migrate-from-couchbase-server-to-couchbase-capella-on-aws.md)
+ [Migración de cargas de trabajo de Cloudera en las instalaciones a la plataforma de datos de Cloudera en AWS](migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.md)
+ [Administración de la conmutación por error de multi-AZ para clústeres de EMR mediante el Controlador de recuperación de aplicaciones](multi-az-failover-spark-emr-clusters-arc.md)
+ [Automatice blue/green las implementaciones de las bases de datos globales de Amazon Aurora mediante los principios de la IaC](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [AWS Service Catalog Aprovisione productos en función de AWS CloudFormation plantillas mediante GitHub acciones](provision-aws-service-catalog-products-using-github-actions.md)
+ [Ejecute pruebas unitarias para trabajos ETL de Python AWS Glue utilizando el marco pytest](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Configurar un panel de monitoreo de Grafana para AWS ParallelCluster](set-up-a-grafana-monitoring-dashboard-for-aws-parallelcluster.md)
+ [Descarga de datos de un clúster de Amazon Redshift entre las cuentas a Amazon S3](unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.md)
+ [Visualice los resultados del AI/ML modelo con Flask y AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)