

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.

# Migración y modernización
<a name="migration-modernization-pattern-list"></a>

**Topics**
+ [Migración](migration-pattern-list.md)
+ [Modernización](modernization-pattern-list.md)
+ [Unidades centrales](mainframe-pattern-list.md)

# Migración
<a name="migration-pattern-list"></a>

**Topics**
+ [Cree CloudFormation plantillas de AWS para las tareas de AWS DMS con Microsoft Excel y Python](create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python.md)
+ [Introducción a la detección automática de cartera](get-started-with-automated-portfolio-discovery.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)
+ [Resolver los errores de conexión después de migrar Microsoft SQL Server a la nube de AWS](resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.md)
+ [Reinicie el AWS Replication Agent automáticamente sin deshabilitarlo SELinux después de reiniciar un servidor fuente de RHEL](restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server.md)
+ [Rediseñar](migration-rearchitect-pattern-list.md)
+ [Volver a alojar](migration-rehost-pattern-list.md)
+ [Reubicar](migration-relocate-pattern-list.md)
+ [Redefinir la plataforma](migration-replatform-pattern-list.md)
+ [Patrones de migración por carga de trabajo](migration-migration-patterns-by-workload-pattern-list.md)
+ [Más patrones](migration-more-patterns-pattern-list.md)

# Cree CloudFormation plantillas de AWS para las tareas de AWS DMS con Microsoft Excel y Python
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python"></a>

*Venkata Naveen Koppula, Amazon Web Services*

## Resumen
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-summary"></a>

Este patrón describe los pasos para crear automáticamente CloudFormation plantillas de AWS para [AWS Database Migration Service](https://aws.amazon.com/dms/) (AWS DMS) mediante Microsoft Excel y Python.

La migración de bases de datos mediante AWS DMS suele implicar la creación de CloudFormation plantillas de AWS para aprovisionar las tareas de AWS DMS. Anteriormente, la creación de CloudFormation plantillas de AWS requería conocimientos del lenguaje de programación JSON o YAML. Con esta herramienta, solo necesita conocimientos básicos de Excel y de cómo ejecutar un script de Python mediante una terminal o una ventana de comandos.

Como entrada, la herramienta utiliza un libro de trabajo de Excel que incluye los nombres de las tablas que se van a migrar, los nombres de los recursos de Amazon (ARNs) de los puntos de enlace de AWS DMS y las instancias de replicación de AWS DMS. A continuación, la herramienta genera CloudFormation plantillas de AWS para las tareas de AWS DMS necesarias.

Para ver los pasos detallados y la información básica, consulte la entrada del blog [Crear CloudFormation plantillas de AWS para tareas de AWS DMS con Microsoft Excel](https://aws.amazon.com/blogs/database/create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel/) en el blog AWS Database.

## Requisitos previos y limitaciones
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Microsoft Excel versión 2016 o posterior
+ Python versión 2.7 o posterior
+ El módulo Python **xlrd** (instalado en una línea de comandos con el comando: **pip install xlrd**)
+ Puntos de conexión de origen y destino de AWS DMS e instancia de replicación de AWS DMS

**Limitaciones**
+ Los nombres de los esquemas, las tablas y las columnas asociadas se transforman en minúsculas en los puntos de conexión de destino.
+ Esta herramienta no aborda la creación de instancias de replicación y puntos de conexión de AWS DMS.
+ Actualmente, la herramienta solo admite un esquema para cada tarea de AWS DMS.

## Arquitectura
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos en las instalaciones
+ Microsoft Excel

**Pila de tecnología de destino**
+  CloudFormation Plantillas de AWS
+ Una base de datos en la nube de AWS 

**Arquitectura**

![\[Flujo de trabajo para usar Excel y Python para crear automáticamente CloudFormation plantillas para AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/778c7c1e-2647-496f-8afd-52ff1ef02489/images/8fe1550d-8966-41aa-a480-5f7bef20629f.png)


## Tools (Herramientas)
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-tools"></a>
+ [Pycharm IDE](https://aws.amazon.com/pycharm/) o cualquier entorno de desarrollo integrado (IDE) compatible con Python versión 3.6
+ Microsoft Office 2016 (para Microsoft Excel)

## Epics
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-epics"></a>

### Configurar la red, la instancia de replicación de AWS DMS y los puntos de conexión
<a name="configure-the-network-aws-dms-replication-instance-and-endpoints"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Si es necesario, solicite un aumento de cuota de servicio. | Solicite un aumento de cuota de servicio para las tareas de AWS DMS si es necesario. | AWS general | 
| Configure la región de AWS, las nubes privadas virtuales (VPCs), los rangos de CIDR, las zonas de disponibilidad y las subredes. |  | AWS general | 
| Configure la instancia de replicación de AWS DMS. | La instancia de replicación de AWS DMS puede conectarse tanto a bases de datos en las instalaciones como de AWS. | AWS general | 
| Configure los puntos de conexión de AWS DMS. | Configure los puntos de conexión para las bases de datos de origen y de destino. | AWS general | 

### Preparación de las hojas de trabajo para las tareas y etiquetas de AWS DMS
<a name="prepare-the-worksheets-for-aws-dms-tasks-and-tags"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la lista de tablas. | Enumere todas las tablas implicadas en la migración. | Base de datos | 
| Prepare la hoja de trabajo de tareas. | Prepare la hoja de cálculo de Excel con la lista de tablas que configuró. | AWS general, Microsoft Excel | 
| Prepare la hoja de trabajo sobre las etiquetas. | Detalle las etiquetas de recursos de AWS que se deben adjuntar a las tareas de AWS DMS. | AWS general, Microsoft Excel | 

### Descargar y ejecutar la herramienta
<a name="download-and-run-the-tool"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue y extraiga la herramienta de generación de plantillas del GitHub repositorio. | GitHub repositorio: https://github.com/aws-samples/dms-cloudformation-templates-generator/ |  | 
| Ejecute la herramienta. | Siga las instrucciones detalladas de la entrada del blog que aparece en la sección "Referencias y ayuda". |  | 

## Recursos relacionados
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-resources"></a>
+ [Cree CloudFormation plantillas de AWS para tareas de AWS DMS con Microsoft Excel (entrada del blog)](https://aws.amazon.com/blogs/database/create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel/)
+ [Generador de CloudFormation plantillas de DMS (repositorio) GitHub ](https://github.com/aws-samples/dms-cloudformation-templates-generator/tree/v1.0)
+ [Documentación de Python](https://www.python.org/)
+ [Descripción y descarga en xlrd](https://pypi.org/project/xlrd/)
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/)
+ [ CloudFormation Documentación de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/)

# Introducción a la detección automática de cartera
<a name="get-started-with-automated-portfolio-discovery"></a>

*Pratik Chunawala y Rodolfo Jr. Cerrada, Amazon Web Services*

## Resumen
<a name="get-started-with-automated-portfolio-discovery-summary"></a>

Evaluar la cartera y recopilar metadatos es un desafío fundamental al migrar aplicaciones y servidores a la nube de Amazon Web Services (AWS), especialmente en el caso de migraciones grandes con más de 300 servidores. El uso de una herramienta automatizada de detección de cartera puede ayudarle a recopilar información sobre sus aplicaciones, como la cantidad de usuarios, la frecuencia de uso, las dependencias y la información sobre la infraestructura de la aplicación. Esta información es esencial a la hora de planificar oleadas de migración, ya que le permite priorizar y agrupar adecuadamente las aplicaciones con características similares. El uso de una herramienta de detección agiliza la comunicación entre el equipo de cartera y los propietarios de las aplicaciones, ya que el equipo de cartera puede validar los resultados de la herramienta de detección en lugar de recopilar los metadatos manualmente. En este patrón se analizan las consideraciones clave a la hora de seleccionar una herramienta de detección automatizada, y se ofrece información sobre cómo implementar y probar una en su entorno.

Este patrón incluye una plantilla que le servirá como punto de partida para crear su propia lista de verificación de actividades de alto nivel. Junto a la lista de verificación encontrará una plantilla para crear una matriz responsable, fiable, consultada y fundamentada (RACI). Puede usar esta matriz RACI para determinar quién es responsable de cada tarea de su lista de verificación.

## Epics
<a name="get-started-with-automated-portfolio-discovery-epics"></a>

### Selección una herramienta de detección
<a name="select-a-discovery-tool"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Determine si una herramienta de detección es apropiada para su caso de uso. | Es posible que una herramienta de detección no sea la mejor solución para su caso de uso. Tenga en cuenta la cantidad de tiempo que necesitará para seleccionar, adquirir, preparar e implementar una herramienta de detección. La configuración del dispositivo de escaneo para una herramienta de detección sin agente en su entorno, o la instalación de agentes en todas las cargas de trabajo incluidas en el ámbito de aplicación, puede llevar de 4 a 8 semanas. Una vez implementada, la herramienta de detección tardará de 4 a 12 semanas en recopilar los metadatos escaneando las cargas de trabajo de las aplicaciones y realizar un análisis del conjunto de aplicaciones. Si va a migrar menos de 100 servidores, es posible que pueda recopilar los metadatos manualmente y analizar las dependencias en menos tiempo del que tardaría en implementar y recopilar los metadatos con una herramienta de detección automatizada.  | Líder de migración, ingeniero de migraciones | 
| Selección una herramientas de detección. | Consulte las **Consideraciones para seleccionar una herramienta de detección automática** en la sección [Información adicional](#get-started-with-automated-portfolio-discovery-additional). Determine los criterios adecuados para seleccionar una herramienta de detección para su caso de uso y, a continuación, evalúe cada herramienta en función de dichos criterios. Para obtener una lista completa de herramientas de detección automatizadas, consulte [Herramientas de detección, planificación y migración recomendadas](https://aws.amazon.com/prescriptive-guidance/migration-tools/migration-discovery-tools/). | Líder de migración, ingeniero de migraciones | 

### Preparación para la instalación
<a name="prepare-for-installation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare la lista de verificación previa a la implementación.  | Cree una lista de verificación con las tareas que debe completar antes de implementar la herramienta. Para ver un ejemplo, consulte la [Lista de verificación previa a la implementación](https://docs.flexera.com/foundationcloudscape/ug/Content/helplibrary/FCGS_Predeployment.htm) en el sitio web de documentación de Flexera. | Responsable de compilación, ingeniero de migraciones, líder de migración, administrador de red | 
| Prepare los requisitos de la red. | Aprovisione los puertos, protocolos, direcciones IP y enrutamiento necesarios para que la herramienta se ejecute y acceda a los servidores de destino. Para obtener más información, consulte la guía de instalación de su herramienta de detección. Para ver un ejemplo, consulte la [Requisitos para la implementación](https://docs.flexera.com/foundationcloudscape/help/RCDeployReq.htm) en el sitio web de documentación de Flexera. | Ingeniero migraciones, administrador de redes, arquitecto de la nube | 
| Prepare los requisitos de cuenta y credenciales. | Identifique las credenciales que necesita para acceder a los servidores de destino e instalar todos los componentes de la herramienta. | Administrador de la nube, AWS general, ingeniero de migraciones, líder de migración, administrador de redes, administrador de AWS | 
| Prepare los dispositivos en los que va a instalar la herramienta. | Asegúrese de que los dispositivos en los que va a instalar los componentes de la herramienta cumplen las especificaciones y los requisitos de plataforma de la herramienta. | Ingeniero de migraciones, ingeniero de migraciones, líder de migraciones, administrador de red | 
| Prepare las órdenes de cambio. | Siguiendo el proceso de gestión de cambios de su organización, prepare las órdenes de cambio necesarias y asegúrese de que se aprueben. | Responsable de compilación, líder de migración | 
| Envíe los requisitos a las partes interesadas. | Envíe la lista de verificación previa a la implementación y los requisitos de red a las partes interesadas. Las partes interesadas deben revisar, evaluar y preparar los requisitos necesarios antes de proceder con la implementación. | Responsable de compilación, líder de migración | 

### Implemente la herramienta
<a name="deploy-the-tool"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue el instalador. | Descargue el instalador o la imagen de máquina virtual. Las imágenes de máquinas virtuales suelen estar en formato de virtualización abierta (OVF). | Responsable de compilación, líder de migración | 
| Extraiga los archivos. | Si usa un instalador, debe descargarlo y ejecutarlo en un servidor en las instalaciones. | Responsable de compilación, líder de migración | 
| Implemente la herramienta en los servidores. | Implemente la herramienta de detección en los servidores de destino en las instalaciones de la siguiente manera:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html) | Responsable de compilación, líder de migración, administrador de red | 
| Inicie sesión en la herramienta de detección. | Siga las indicaciones que aparecen en pantalla e inicie sesión para usar la herramienta. | Líder de migración, responsable de compilación | 
| Active el producto. | Introduzca su clave de licencia. | Responsable de compilación, líder de migración | 
| Configure la herramienta. | Introduzca las credenciales necesarias para acceder a los servidores de destino, como las credenciales de Windows VMware, el Protocolo simple de administración de redes (SNMP) y el Protocolo Secure Shell (SSH), o las bases de datos. | Responsable de compilación, líder de migración | 

### Pruebe la herramienta
<a name="test-the-tool"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione los servidores de prueba. | Identifique un conjunto pequeño de subredes o direcciones IP que no sean de producción y que pueda usar para probar la herramienta de detección. Esto le ayudará a validar los escaneos rápidamente, identificar y solucionar cualquier error con prontitud y aislar las pruebas de los entornos de producción. | Responsable de compilación, líder de migración, administrador de red | 
| Comience a escanear los servidores de prueba seleccionados. | Si usa una herramienta de detección sin agente, introduzca las subredes o direcciones IP de los servidores de prueba seleccionados en la consola de la herramienta de detección e inicie el escaneo.Si usa una herramienta de detección basada en agente, instale el agente en los servidores de prueba seleccionados. | Responsable de compilación, líder de migración, administrador de red | 
| Revise los resultados escaneados. | Revise los resultados del escaneo de los servidores de prueba. Si encuentra algún error, corríjalo. Documente los errores y las soluciones. Puede hacer referencia a esta información en el futuro y añadirla al manual de procedimientos de su cartera. | Responsable de compilación, líder de migración, administrador de red | 
| Vuelva a escanear los servidores de prueba. | Una vez completado el rescaneo, repítalo hasta que no surjan errores. | Responsable de compilación, líder de migración, administrador de red | 

## Recursos relacionados
<a name="get-started-with-automated-portfolio-discovery-resources"></a>

**AWS resources**
+ [Guía de evaluación de la cartera de aplicaciones para la migración Nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/application-portfolio-assessment-guide/introduction.html)
+ [Herramientas de detección, planificación y migración recomendadas](https://aws.amazon.com/prescriptive-guidance/migration-tools/migration-discovery-tools/)

**Guías de implementación para las herramientas de detección más comunes**
+ [Implemente el dispositivo virtual RN15 0](https://docs.flexera.com/foundationcloudscape/ug/Content/helplibrary/FCGS_QSG_DeployRN150.htm) (documentación de Flexera)
+ [Instalación de Gatherer](https://www.modelizeit.com/documentation/ADC-Gatherer-Install.html) (documentación de ModelizeIT)
+ [Instalación de On-Prem Analysis Server](https://www.modelizeit.com/documentation/RejuvenApptor-Install.html) (documentación de ModelizeIt)

## Información adicional
<a name="get-started-with-automated-portfolio-discovery-additional"></a>

**Consideraciones para seleccionar una herramienta de detección automatizada**

Cada herramienta de detección tiene sus ventajas y limitaciones. A la hora de seleccionar la herramienta adecuada para su caso de uso, tenga en cuenta lo siguiente:
+ Seleccione una herramienta de detección que pueda recopilar la mayoría, si no todos, de los metadatos que necesita para alcanzar el objetivo de evaluación de su cartera.
+ Identifique los metadatos incompatibles con la herramienta que necesite recopilar manualmente.
+ Comunique los requisitos de la herramienta de detección a las partes interesadas para que puedan revisarla y evaluarla en función de sus necesidades internas de seguridad y conformidad, como los requisitos de servidor, red y credenciales.
  + ¿Es necesario que la herramienta instale un agente en la carga de trabajo prevista?
  + ¿Es necesario que la herramienta configure un dispositivo virtual en su entorno?
+ Determine sus requisitos de residencia de datos. Algunas organizaciones no desean almacenar sus datos fuera de su entorno. Para abordar este aspecto, es posible que deba instalar algunos componentes de la herramienta en el entorno en las instalaciones.
+ Asegúrese de que la herramienta sea compatible con el sistema operativo (SO) y la versión del sistema operativo de la carga de trabajo pertinente.
+ Determine si su cartera incluye servidores mainframe, de gama media y heredados. La mayoría de las herramientas de detección pueden detectar estas cargas de trabajo como dependencias, pero es posible que algunas herramientas no puedan obtener detalles del dispositivo, como la utilización y las dependencias del servidor. Las herramientas de detección Device42 y ModernizeIT son compatibles con servidores de mainframe y de gama media.

## Conexiones
<a name="attachments-8c9d84de-e84a-4b0c-bcaa-389cd90be1f0"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/8c9d84de-e84a-4b0c-bcaa-389cd90be1f0/attachments/attachment.zip)

# Migración de cargas de trabajo de Cloudera en las instalaciones a la plataforma de datos de Cloudera en AWS
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws"></a>

*Battulga Purevragchaa y Nidhi Gupta, Amazon Web Services*

*Nijjwol Lamsal, Cloudera, Inc.*

## Resumen
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-summary"></a>

Este patrón describe los pasos de alto nivel para migrar sus cargas de trabajo en las instalaciones Cloudera Distributed Hadoop (CDH), Hortonworks Data Platform (HDP) y Cloudera Data Platform (CDP) a la nube pública de CDP en AWS. Le recomendamos que se asocie con los servicios profesionales de Cloudera y con un integrador de sistemas (SI) para implementar estos pasos.

Hay muchos motivos por los que los clientes de Cloudera quieren trasladar sus cargas de trabajo en las instalaciones de CDH, HDP y CDP a la nube. Algunas de las razones más habituales son las siguientes:
+ Optimizar la adopción de nuevos paradigmas de plataformas de datos, como Data Lakehouse o Data Mesh
+ Aumentar la agilidad empresarial, democratice el acceso y la inferencia sobre los activos de datos existentes
+ Reducir el costo total de propiedad (TCO)
+ Mejorar la elasticidad de la carga
+ Permitir una mayor escalabilidad; reducir drásticamente el tiempo de aprovisionamiento de los servicios de datos en comparación con la base de instalación en las instalaciones heredada
+ Eliminar el hardware heredado y reducir significativamente los ciclos de actualización del hardware
+ Aproveche los pay-as-you-go precios, que se extienden a las cargas de trabajo de Cloudera en AWS con el modelo de licencias (CCU) de Cloudera
+ Aprovechar una implementación más rápida y una mejor integración con las plataformas de integración continua y entrega continua (CI/CD)
+ Utilizar una única plataforma unificada (CDP) para múltiples cargas de trabajo

Cloudera es compatible con las principales cargas de trabajo, incluidas Machine Learning, Data Engineering, Data Warehouse, Operational Database, Stream Processing (CSP) y seguridad y gobierno de datos. Cloudera lleva muchos años ofreciendo estas cargas de trabajo en las instalaciones, y puede migrarlas a la nube de AWS mediante la nube pública de CDP con Workload Manager y Replication Manager. 

Cloudera Shared Data Experience (SDX) proporciona un catálogo de metadatos compartido entre estas cargas de trabajo para facilitar la gestión y las operaciones de datos coherentes. SDX también incluye seguridad integral y granular para proteger contra las amenazas y una gobernanza unificada para las capacidades de auditoría y búsqueda a fin de cumplir con estándares como el Estándar de Seguridad de Datos del Sector de Tarjetas de Pago (PCI DSS) y el GDPR. 

**La migración a CDP de un vistazo**


|  |  | 
| --- |--- |
|    Carga de trabajo | Carga de trabajo de origen | Nube privada de CDH, HDP y CDP | 
| --- |--- |--- |
| Entorno de origen | Windows, LinuxEn las instalaciones, coubicación o en cualquier entorno que no sea de AWS | 
| Carga de trabajo del destino | Nube pública de CDP en AWS | 
| Entorno de destino | Modelo de implementación: cuenta de clienteModelo operativo: plano de control customer/Cloudera  | 
| ** **** ****Migración** | Estrategia de migración (7Rs) | Volver a alojar, redefinir la plataforma o refactorizar | 
| ¿Se trata de una actualización de la versión de carga de trabajo? | Sí | 
| Duración de la migración | Implementación: aproximadamente 1 semana para crear una cuenta de cliente, una nube privada virtual (VPC) y un entorno de nube pública de CDP administrado por el cliente.Duración de la migración: de 1 a 4 meses, según la complejidad y el tamaño de la carga de trabajo. | 
| **Costo** | Costo de ejecutar la carga de trabajo en AWS | A un alto nivel, el costo de una migración de cargas de trabajo CDH a AWS asume que establecerá un nuevo entorno en AWS. Incluye el cálculo de tiempo y esfuerzo del personal, así como el aprovisionamiento de los recursos informáticos y las licencias de software para el nuevo entorno.El modelo de precios de Cloudera basado en el consumo de la nube le ofrece la flexibilidad necesaria para aprovechar las amplias capacidades de escalado automático. Para obtener más información, consulte las [tarifas del servicio de nube pública de CDP](https://www.cloudera.com/products/pricing/cdp-public-cloud-service-rates.html) en el sitio web de Cloudera.Cloudera Enterprise [Data Hub](https://www.cloudera.com/products/enterprise-data-hub.html) se basa en Amazon Elastic Compute Cloud (Amazon EC2) y modela fielmente los clústeres tradicionales. Data Hub se puede [personalizar](https://docs.cloudera.com/data-hub/cloud/create-cluster-aws/topics/mc-creating-a-cluster.html), pero esto repercutirá en los costos.[CDP Public Cloud Data Warehouse](https://docs.cloudera.com/data-warehouse/cloud/index.html), [Cloudera Machine Learning](https://docs.cloudera.com/machine-learning/cloud/product/topics/ml-product-overview.html) y [Cloudera Data Engineering (CDE)](https://docs.cloudera.com/data-engineering/cloud/index.html) están basados en contenedores y se pueden configurar para que se escalen automáticamente. | 
| ** **** ****Marco y acuerdos de infraestructura** | Requisitos del sistema | Consulte la sección [Requisitos previos](#migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-prereqs). | 
| SLA | Consulte el [Acuerdo de nivel de servicio de Cloudera para la nube pública de CDP](https://www.cloudera.com/legal/terms-and-conditions/cdp-public-cloud-sla.html). | 
| DR | Consulte la [recuperación de desastres](https://docs.cloudera.com/cdp-reference-architectures/latest/cdp-ra-operations/topics/cdp-ra-abstract.html) en la documentación de Cloudera. | 
| Licencia y modelo operativo (para la cuenta de AWS objetivo) | Modelo Traiga su propia licencia (BYOL) | 
| ** ****Conformidad** | Requisitos de seguridad | Consulte la [descripción general de seguridad de Cloudera](https://docs.cloudera.com/cdp-private-cloud-base/7.1.6/security-overview/topics/cm-security-overview.html) en la documentación de Cloudera. | 
| Otras [certificaciones de conformidad](https://aws.amazon.com/compliance/programs) | Consulte la información en el sitio web de Cloudera sobre el cumplimiento del [Reglamento General de Protección de Datos (GDPR](https://www.cloudera.com/solutions/lower-business-risks/general-data-protection-regulation.html)) y el [CDP](https://www.cloudera.com/products/trust-center.html) Trust Center. | 

## Requisitos previos y limitaciones
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-prereqs"></a>

**Requisitos previos **
+ [Requisitos de las cuentas de AWS](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-requirements-aws.html), incluidas las cuentas, los recursos, los servicios y los permisos, como la configuración de las políticas y los roles de AWS Identity and Access Management (IAM)
+ [Requisitos previos para la implementación de CDP](https://docs.cloudera.com/cdp-public-cloud/cloud/getting-started/topics/cdp-set_up_cdp_prerequisites.html) desde el sitio web de Cloudera

La migración requiere los siguientes roles y experiencia:


| 
| 
| Rol | Habilidades y responsabilidades | 
| --- |--- |
| Líder de migración | Garantiza el apoyo ejecutivo, la colaboración en equipo, la planificación, la implementación y la evaluación | 
| Cloudera SME | Conocimientos especializados en administración, administración de sistemas y arquitectura de CDH, HDP y CDP | 
| Arquitecto de AWS | Habilidades en servicios, redes, seguridad y arquitecturas de AWS | 

## Arquitectura
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-architecture"></a>

Construir según la arquitectura adecuada es un paso fundamental para garantizar que la migración y el rendimiento satisfagan sus expectativas. Para que su esfuerzo de migración cumpla con las suposiciones de este manual, su entorno de datos de destino en la nube de AWS, ya sea en instancias alojadas en la nube privada virtual (VPC) o en CDP, debe coincidir de manera equivalente con su entorno de origen en términos de versiones del sistema operativo y software, así como de las principales especificaciones de las máquinas.

El siguiente diagrama (reproducido con el permiso de la [hoja de datos de Cloudera Shared Data Experience](https://www.cloudera.com/content/dam/www/marketing/resources/datasheets/cloudera-sdx-datasheet.pdf?daqp=true)) muestra los componentes de infraestructura del entorno CDP y la forma en que interactúan los niveles o los componentes de la infraestructura. 

![\[Componentes del entorno de CDP\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bb47435e-2638-425c-ac37-7d55053452ac/images/91d62277-7fde-4ec6-8e2b-86a446e2f6ee.png)


La arquitectura incluye los siguientes componentes del CDP:
+ Data Hub es un servicio para lanzar y gestionar clústeres de cargas de trabajo con tecnología Cloudera Runtime. Puede usar las definiciones de clústeres de Data Hub para aprovisionar clústeres de carga de trabajo y acceder a ellos para casos de uso personalizados y definir configuraciones de clústeres personalizadas. Para obtener más información, consulte el [sitio web de Cloudera](https://docs.cloudera.com/data-hub/cloud/index.html).
+ El flujo y la transmisión de datos abordan los principales desafíos a los que se enfrentan las empresas con los datos en movimiento. Gestiona lo siguiente:
  + Procesamiento del flujo de datos en tiempo real a gran volumen y a gran escala
  + Seguimiento de la procedencia de los datos y del linaje de los datos de streaming
  + Gestión y supervisión de las aplicaciones periféricas y las fuentes de streaming

  Para obtener más información, consulte [Cloudera DataFlow](https://www.cloudera.com/products/dataflow.html) y [CSP](https://www.cloudera.com/products/stream-processing.html) en el sitio web de Cloudera.
+ La ingeniería de datos incluye la integración, la calidad y el gobierno de los datos, lo que ayuda a las organizaciones a crear y mantener flujos de trabajo y flujos de datos. Para obtener más información, consulte el [sitio web de Cloudera](https://docs.cloudera.com/data-engineering/cloud/index.html). Aprenda sobre la [compatibilidad con instancias de spot para facilitar el ahorro de costos en las cargas de trabajo de ingeniería de datos de AWS](https://docs.cloudera.com/data-engineering/cloud/cost-management/topics/cde-spot-instances.html) for Cloudera.
+ Data Warehouse**** le permite crear data warehouses y data marts independientes que se escalan automáticamente para satisfacer las demandas de carga de trabajo. Este servicio proporciona instancias informáticas aisladas y una optimización automatizada para cada almacén de datos y mercado de datos, y le ayuda a ahorrar costes durante las reuniones. SLAs Para obtener más información, consulte el [sitio web de Cloudera](https://docs.cloudera.com/data-warehouse/cloud/index.html). Aprenda sobre la [administración de costos](https://docs.cloudera.com/data-warehouse/cloud/planning/topics/dw-manage-cloud-costs.html) y el [autoscalamiento](https://docs.cloudera.com/data-warehouse/cloud/auto-scaling/topics/dw-public-cloud-autoscaling-overview.html) de Cloudera Data Warehouse en AWS.
+ La base de datos operativa de CDP proporciona una base fiable y flexible para aplicaciones escalables y de alto rendimiento. Ofrece una base de datos escalable, siempre disponible y en tiempo real que proporciona datos estructurados tradicionales junto con datos nuevos y no estructurados dentro de una plataforma operativa y de almacenamiento unificada. Para obtener más información, consulte el [sitio web de Cloudera](https://www.cloudera.com/products/operational-db.html).
+ Machine Learning es una plataforma de machine learning nativa de la nube que combina las capacidades de autoservicio de ciencia de datos e ingeniería de datos en un único servicio portátil dentro de una nube de datos empresarial. Permite la implementación escalable del machine learning y la inteligencia artificial (IA) en los datos en cualquier lugar. Para obtener más información, consulte el [sitio web de Cloudera](https://docs.cloudera.com/machine-learning/cloud/index.html).

**CDP en AWS**

El siguiente diagrama (adaptado con permiso del sitio web de Cloudera) muestra la arquitectura de alto nivel de CDP en AWS. CDP implementa su [propio modelo de seguridad](https://docs.cloudera.com/runtime/7.1.0/cdp-security-overview/topics/security-management-console-security.html) para administrar tanto las cuentas como el flujo de datos. Se integran con la [IAM](https://aws.amazon.com/iam/) mediante el uso de [roles entre cuentas](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-aws-req-credential.html). 

![\[Arquitectura de alto nivel de CDP en AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bb47435e-2638-425c-ac37-7d55053452ac/images/54420517-38b4-4e82-bd19-9ded50ed009c.png)


El plano de control del CDP reside en una cuenta maestra de Cloudera en su propia VPC. Cada cuenta de cliente tiene su propia subcuenta y una VPC única. Los roles de IAM entre cuentas y las tecnologías SSL redirigen el tráfico de administración hacia y desde el plano de control a los servicios de atención al cliente que residen en las subredes públicas enrutables por Internet dentro de cada VPC del cliente. En la VPC del cliente, la experiencia de datos compartidos (SDX) de Cloudera proporciona una seguridad empresarial sólida con una gobernanza y un cumplimiento unificados para que pueda obtener información a partir de sus datos con mayor rapidez. La SDX es una filosofía de diseño que se incorpora a todos los productos de Cloudera. Para obtener más información sobre [SDX](https://docs.cloudera.com/cdp-public-cloud/cloud/overview/topics/cdp-services.html) y la [arquitectura de red de nube pública CDP para AWS](https://docs.cloudera.com/cdp-public-cloud/cloud/aws-refarch/topics/cdp-pc-aws-refarch-overview.html), consulte la documentación de Cloudera.

## Tools (Herramientas)
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) le ayuda a ejecutar Kubernetes en AWS sin necesidad de instalar ni mantener su propio plano de control o nodos de Kubernetes.
+ [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.
+ [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.

**Automatizar y herramientas**
+ Para obtener herramientas adicionales, puede usar [Cloudera Backup Data Recovery (BDR),](https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_bdr_tutorials.html) [AWS Snowball](https://aws.amazon.com/snowball/) y [AWS Snowmobile](https://aws.amazon.com/snowmobile/) para ayudar a migrar los datos del CDH, HDP y CDP en las instalaciones al CDP alojado en AWS.
+ Para las nuevas implementaciones, le recomendamos que utilice la [solución para socios de AWS para CDP](https://aws.amazon.com/solutions/partners/terraform-modules/cdp-public-cloud/).

## Epics
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Involucre al equipo de Cloudera. | Cloudera sigue un modelo de interacción estandarizado con sus clientes y puede trabajar con su integrador de sistemas (SI) para promover el mismo enfoque. Póngase en contacto con el equipo de atención al cliente de Cloudera para que le brinden orientación y los recursos técnicos necesarios para iniciar el proyecto. Ponerse en contacto con el equipo de Cloudera garantiza que todos los equipos necesarios puedan prepararse para la migración a medida que se acerque su fecha. Puede ponerse en contacto con los servicios profesionales de Cloudera para que su implementación de Cloudera pase de la fase piloto a la fase de producción rápidamente, a un costo menor y con el máximo rendimiento. Para obtener una lista completa de ofertas, consulte el [sitio web de Cloudera](https://www.cloudera.com/about/services-and-support/professional-services.html). | Líder de migración | 
| Cree un entorno de nube pública de CDP en AWS para su VPC. | Trabaje con Cloudera Professional Services o su SI para planificar e implementar la nube pública de CDP en una VPC en AWS. | Arquitecto de la nube, Cloudera SME | 
| Priorice y evalúe las cargas de trabajo para la migración. | Evalúe todas sus cargas de trabajo en las instalaciones para determinar cuáles son las más fáciles de migrar. Es mejor migrar primero a las aplicaciones que no son esenciales para la misión, ya que tendrán un impacto mínimo en sus clientes. Guarde las cargas de trabajo esenciales para el final, después de migrar correctamente otras cargas de trabajo.Las cargas de trabajo transitorias (CDP Data Engineering) son más fáciles de migrar que las cargas de trabajo persistentes (CDP Data Warehouse). También es importante tener en cuenta el volumen y las ubicaciones de los datos al migrar. Los desafíos pueden incluir replicar los datos de forma continua desde un entorno en las instalaciones a la nube y cambiar los procesos de ingesta de datos para importarlos directamente a la nube. | Líder de migración | 
| Analice las actividades de migración de CDH, HDP, CDP y aplicaciones antiguas. | Considere y comience a planificar las siguientes actividades con Cloudera Workload Manager:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.html) | Líder de migración | 
| Complete los requisitos y recomendaciones de Cloudera Replication Manager. | Trabaje con Cloudera Professional Services y su SI para prepararse para migrar las cargas de trabajo a su entorno de nube pública de CDP en AWS. Comprender los siguientes requisitos y recomendaciones puede ayudarle a evitar problemas comunes durante y después de instalar el servicio Replication Manager.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.html) | Líder de migración | 

### Migración de CDP a AWS
<a name="migrate-cdp-to-aws"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre la primera carga de trabajo para dev/test los entornos con Cloudera Workload Manager. | Su SI puede ayudarlo a migrar su primera carga de trabajo a la nube de AWS. Debe ser una aplicación que no esté orientada al cliente ni sea esencial para la misión. Los candidatos ideales para dev/test la migración son las aplicaciones que tienen datos que la nube puede ingerir fácilmente, como las cargas de trabajo de ingeniería de datos de CDP. Se trata de una carga de trabajo transitoria a la que, por lo general, acceden menos usuarios, en comparación con una carga de trabajo persistente, como una carga de trabajo de CDP Data Warehouse, que podría tener muchos usuarios que necesitan un acceso ininterrumpido. Las cargas de trabajo de ingeniería de datos no son persistentes, lo que minimiza el impacto empresarial en caso de que algo vaya mal. Sin embargo, estas tareas pueden ser fundamentales para los informes de producción, así que priorice primero las cargas de trabajo de ingeniería de datos de bajo impacto. | Líder de migración | 
| Repita los pasos de migración según sea necesario. | Cloudera Workload Manager ayuda a identificar las cargas de trabajo que mejor se adaptan a la nube. Proporciona métricas como las calificaciones de rendimiento de la nube, sizing/capacity los planes para el entorno objetivo y los planes de replicación. Los mejores candidatos para la migración son las cargas de trabajo estacionales, los informes ad hoc y los trabajos intermitentes que no consumen muchos recursos.Cloudera Replication Manager mueve los datos en las instalaciones a la nube y de la nube a las instalaciones.Optimice de forma proactiva las cargas de trabajo, las aplicaciones, el rendimiento y la capacidad de la infraestructura para el almacenamiento de datos, la ingeniería de datos y el machine learning mediante Workload Manager. [Para obtener una guía completa sobre cómo modernizar un data warehouse, consulte el sitio web de Cloudera.](https://www.cloudera.com/content/dam/www/marketing/resources/webinars/modern-data-warehouse-fundamentals.png.landing.html) | Cloudera SME | 

## Recursos relacionados
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-resources"></a>

Documentación de Cloudera:
+ [Registro de clústeres clásicos con CDP, Cloudera Manager y Replication Manager:](https://docs.cloudera.com/replication-manager/cloud/operations/topics/rm-requirements-for-bdr-cdh-clusters.html)
  + [Consola de administración](https://docs.cloudera.com/management-console/cloud/overview/topics/mc-management-console.html)
  + [Replication en Hive de Replication Manager](https://docs.cloudera.com/replication-manager/cloud/core-concepts/topics/rm-replication-of-data-using-hive.html)
+ [Replicación de Sentry](https://docs.cloudera.com/replication-manager/cloud/core-concepts/topics/rm-sentry-policy-replication.html) 
+ [Permisos de Sentry](https://docs.cloudera.com/replication-manager/cloud/core-concepts/topics/rm-sentry-ranger-permissions.html)
+ [Lista de verificación para la planificación de clústeres de Data Hub](https://docs.cloudera.com/data-hub/cloud/cluster-planning/topics/dh-cluster-checklist.html)
+ [Arquitectura de Workload Manager](https://docs.cloudera.com/workload-manager/cloud/configuration/topics/wm-public-architecture-wm.html)
+ [Requisitos de Replication Manager](https://docs.cloudera.com/replication-manager/cloud/index.html)
+ [Observabilidad de la plataforma de datos de Cloudera](https://www.cloudera.com/products/observability.html)
+ [Requisitos de AWS](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-requirements-aws.html)

Documentación de AWS:
+ [Migración de datos a la nube](https://aws.amazon.com/cloud-data-migration/)

# Resolver los errores de conexión después de migrar Microsoft SQL Server a la nube de AWS
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud"></a>

*Premkumar Chelladurai, Amazon Web Services*

## Resumen
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-summary"></a>

Tras migrar Microsoft SQL Server que se ejecuta en Windows Server 2008 R2, 2012 o 2012 R2 a instancias de Amazon Elastic Compute Cloud (Amazon EC2) en la nube de Amazon Web Services (AWS), se produce un error en la conexión a SQL Server y aparecen los siguientes errores: 
+ `[Microsoft][ODBC SQL Server Driver][DBNETLIB] General Network error`
+ `ERROR [08S01] [Microsoft][SQL Native Client]Communication link failure. System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)`
+ `TCP Provider: The semaphore timeout period has expired`

Este patrón describe cómo puede resolver estos errores si desactiva las características del paquete de redes escalables (SNP) de Windows en el nivel del sistema operativo (SO) y de la interfaz de red para SQL Server que se ejecuta en Windows Server 2008 R2, 2012 o 2012 R2.

## Requisitos previos y limitaciones
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-prereqs"></a>

**Requisitos previos **
+ Privilegios de administrador para Windows Server.
+ Si utilizó AWS Application Migration Service como herramienta de migración, necesitará una de las siguientes versiones de Windows Server:
  + Windows Server 2008 R2 Service Pack 1, 2012 o 2012 R2
+ Si utilizó CloudEndure Migration como herramienta de migración, necesitará una de las siguientes versiones de Windows Server:
  + Windows Server 2003 R2 Service Pack 3, 2008, 2008 R2 Service Pack 1, 2012 o 2012 R2.

## Tools (Herramientas)
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-tools"></a>
+ [Amazon EC2](https://docs.aws.amazon.com/ec2/index.html): Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad informática escalable en la nube de AWS. Puede utilizar Amazon EC2 para lanzar tantos o tan pocos servidores virtuales como necesite, y puede ampliarlos de forma horizontal o horizontal. 
+ [Windows Server](https://docs.microsoft.com/en-us/windows-server/): Windows Server es una plataforma para crear una infraestructura de aplicaciones, redes y servicios web conectados.

## Epics
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-epics"></a>

### Cómo desactivar las características de SNP a nivel del sistema operativo y de la interfaz de red elástica
<a name="turn-off-snp-features-at-the-os-and-elastic-network-interface-levels"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Desactive las características de SNP a nivel del sistema operativo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.html) | Administrador de AWS, administrador de sistemas de AWS, ingeniero de migraciones, administrador de la nube | 
| Desactive las características de SNP a nivel de la interface de red elástica. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.html) | Administrador de AWS, administrador de la nube, administrador de sistemas de AWS | 

## Recursos relacionados
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-resources"></a>
+ [Solución de problemas de características avanzadas de rendimiento de red, como RSS y NetDMA](https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/troubleshoot-network-performance-features-rss-netdma)

# Reinicie el AWS Replication Agent automáticamente sin deshabilitarlo SELinux después de reiniciar un servidor fuente de RHEL
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server"></a>

*Anil Kunapareddy, Venkatramana Chintha y Shanmugam Shanker, Amazon Web Services*

## Resumen
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-summary"></a>

El servicio de migración de aplicaciones de AWS ayuda a simplificar, acelerar y automatizar la migración de la carga de trabajo de Red Hat Enterprise Linux (RHEL) a la nube de Amazon Web Services (AWS). Para añadir servidores de origen al Servicio de migración de aplicaciones, instale el agente de replicación de AWS en los servidores.

El servicio de migración de aplicaciones proporciona una replicación asíncrona a nivel de bloques en tiempo real. Esto significa que puede continuar con las operaciones de TI normales durante todo el proceso de replicación. Estas operaciones de TI pueden requerir que reinicie o reinicie el servidor de origen de RHEL durante la migración. Si esto ocurre, el agente de replicación de AWS no se reiniciará automáticamente y la replicación de datos se detendrá. Normalmente, puede configurar Security-Enhanced Linux (SELinux) en modo **deshabilitado** o **permisivo** para reiniciar automáticamente AWS Replication Agent. [Sin embargo, es posible que las políticas de seguridad de su organización prohíban la desactivación SELinux y que también tenga que volver a etiquetar los archivos.](https://access.redhat.com/solutions/3176)

Este patrón describe cómo reiniciar automáticamente el AWS Replication Agent sin apagarlo SELinux cuando el servidor de origen de RHEL se reinicia o se reinicia durante una migración. 

## Requisitos previos y limitaciones
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una carga de trabajo de RHEL en las instalaciones que desee migrar a la nube de AWS. 
+ El servicio de migración de aplicaciones se inicializó desde la consola del Servicio de migración de aplicaciones. La inicialización solo es necesaria la primera vez que utilice este servicio. Para obtener instrucciones, consulte la [documentación de Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/mandatory-setup.html).
+ [Política de AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) vigente para el Servicio de migración de aplicaciones. Para obtener más información, consulte la [documentación de Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/mgn-policies.html).

**Versiones**
+ RHEL versión 7 o posterior

## Tools (Herramientas)
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-tools"></a>

**Servicios de AWS**
+ [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) es una solución lift-and-shift (rehospedaje) altamente automatizada que simplifica, agiliza y reduce el costo de la migración de aplicaciones a AWS.

**Comandos de Linux**

La siguiente tabla proporciona una lista de los comandos de Linux que se ejecutarán en el servidor fuente de RHEL. Estos también se describen en las epics y las historias de este patrón. 


| 
| 
| Comando | Description (Descripción) | 
| --- |--- |
| `#systemctl –version` | Identifica la versión del sistema. | 
| `#systemctl list-units --type=service` | Muestra todos los servicios activos que están disponibles en el servidor RHEL. | 
| `#systemctl list-units --type=service \| grep running` | Muestra todos los servicios que se están ejecutando actualmente en el servidor RHEL. | 
| `#systemctl list-units --type=service \| grep failed` | Muestra todos los servicios que no se pudieron cargar después de que el servidor RHEL se reiniciara o se reiniciara. | 
| `restorecon -Rv /etc/rc.d/init.d/aws-replication-service` | Cambia el contexto a `aws-replication-service`. | 
| `yum install policycoreutils*` | Instala las utilidades principales de la política necesarias para el funcionamiento del sistema. SELinux  | 
| `ausearch -c "insmod" --raw \| audit2allow -M my-modprobe` | Busca en el registro de auditoría y crea un módulo para las políticas. | 
| `semodule -i my-modprobe.pp` | Activa la política. | 
| `cat my-modprobe.te` | Se muestra el contenido del archivo `my-modprobe.te`. | 
| `semodule -l \| grep my-modprobe` | Comprueba si la política se ha cargado en el SELinux módulo. | 

## Epics
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-epics"></a>

### Instale el agente de replicación de AWS y reinicie el servidor de origen de RHEL
<a name="install-the-aws-replication-agent-and-reboot-the-rhel-source-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un usuario de Application Migration Service con una clave de acceso y una clave de acceso secreta.  | Para instalar el agente de replicación de AWS, debe crear un usuario del Servicio de migración de aplicaciones con las credenciales de AWS requeridas. Para obtener instrucciones, consulte la [documentación del servicio de migración aplicación](https://docs.aws.amazon.com/mgn/latest/ug/credentials.html). | Ingeniero de migraciones | 
| Instale el agente de replicación de AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server.html) | Ingeniero de migraciones | 
| Reinicie o resetee el servidor de origen de RHEL. | Reinicie o resetee el servidor de origen de RHEL cuando el valor de **Estado de la replicación de datos** aparezca como **Estancado** en el [Panel de migración](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html). | Ingeniero de migraciones | 
| Compruebe el estado de la replicación de los datos. | Espere una hora y, a continuación, vuelva a comprobar el **estado de la Replicación de los datos** en el panel de migración. Debería estar como **En buen estado**. | Ingeniero de migraciones | 

### Compruebe el estado del agente de replicación de AWS en el servidor de origen de RHEL
<a name="check-aws-replication-agent-status-on-the-rhel-source-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifica la versión del sistema. | Abra la interfaz de la línea de comandos del servidor fuente de RHEL y ejecute el siguiente comando para identificar la versión del sistema:`#systemctl –version` | Ingeniero de migraciones | 
| Enumere todos los servicios activos. | Para ver todos los servicios activos disponibles en el servidor RHEL, ejecute el comando:`#systemctl list-units --type=service` | Ingeniero de migraciones | 
| Enumere todos los servicios en ejecución. | Para mostrar todos los servicios que se están ejecutando actualmente en el servidor RHEL, use el comando:`#systemctl list-units --type=service \| grep running` | Ingeniero de migraciones | 
| Enumere todos los servicios que no se pudieron cargar. | Para mostrar todos los servicios que no se pudieron cargar después de que el servidor RHEL se reiniciara o se reiniciara, ejecute el comando:`#systemctl list-units --type=service \| grep failed` | Ingeniero de migraciones | 

### Cree y ejecute el SELinux módulo
<a name="create-and-run-the-selinux-module"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie el contexto de seguridad. | En la interfaz de la línea de comandos del servidor de origen de RHEL, ejecute el siguiente comando para cambiar el contexto de seguridad al servicio de replicación de AWS:`restorecon -Rv /etc/rc.d/init.d/aws-replication-service` | Ingeniero de migraciones | 
| Instale las utilidades principales. | Para instalar las utilidades principales necesarias para el funcionamiento del SELinux sistema y sus políticas, ejecute el comando:`yum install policycoreutils*` | Ingeniero de migraciones | 
| Busca el registro de auditoría y crea un módulo para las políticas. | Ejecute el comando:`ausearch -c "insmod" --raw \| audit2allow -M my-modprobe` | Ingeniero de migraciones | 
| Muestra el contenido del my-modprobe-te archivo.  | **El archivo `my-modprobe.te` se genera mediante el comando audit2allow.** Incluye los SELinux dominios, el directorio de fuentes de políticas y los subdirectorios, y especifica las reglas y transiciones del vector de acceso asociadas a los dominios. Para mostrar el contenido del archivo, ejecute el comando:`cat my modprobe.te` | Ingeniero de migraciones | 
| Activa la política. | Para insertar el módulo y activar el paquete de políticas, ejecute el comando:`semodule -i my-modprobe.pp` | Ingeniero de migraciones | 
| Compruebe si el módulo se ha cargado.  | Ejecute el comando:`semodule -l \| grep my-modprobe`Una vez cargado el SELinux módulo, ya no tendrá que SELinux configurarlo en modo **deshabilitado** o **permisivo** durante la migración. | Ingeniero de migraciones | 
| Reinicie o resetee el servidor de origen de RHEL y compruebe el estado de la replicación de los datos. | Abra la consola de AWS Migration Service, vaya a **Progreso de la replicación de datos** y, a continuación, reinicie o resetee el servidor de origen de RHEL. La replicación de datos ahora debería reanudarse automáticamente después de que se reinicie el servidor de origen de RHEL. | Ingeniero de migraciones | 

## Recursos relacionados
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-resources"></a>
+ [Documentación de Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)
+ [Materiales de formación técnica](https://docs.aws.amazon.com/mgn/latest/ug/mgn-training.html)
+ [Solución de problemas con AWS Replication Agent](https://docs.aws.amazon.com/mgn/latest/ug/Troubleshooting-Agent-Issues.html)
+ [Políticas de Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/mgn-policies.html)

# Rediseñar
<a name="migration-rearchitect-pattern-list"></a>

**Topics**
+ [Convierta VARCHAR2 (1) el tipo de datos de Oracle en un tipo de datos booleano para Amazon Aurora PostgreSQL](convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.md)
+ [Crear usuarios y roles de aplicaciones en Aurora compatible con PostgreSQL](create-application-users-and-roles-in-aurora-postgresql-compatible.md)
+ [Emule Oracle DR mediante una base de datos global de Aurora compatible con PostgreSQL](emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.md)
+ [Implemente SHA1 el hash para los datos de PII al migrar de SQL Server a PostgreSQL](implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.md)
+ [Migración gradual de Amazon RDS para Oracle a Amazon RDS para PostgreSQL con Oracle SQL Developer y AWS SCT](incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.md)
+ [Cargar archivos BLOB en TEXT mediante la codificación de archivos en Aurora compatible con PostgreSQL](load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.md)
+ [Migre Amazon RDS for Oracle a Amazon RDS for PostgreSQL con y utilizando y AWS SCT AWS DMS AWS CLI CloudFormation](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.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)
+ [Migración de los paquetes pragma SERIALLY\$1REUTILIZABLE de Oracle a PostgreSQL](migrate-oracle-serially-reusable-pragma-packages-into-postgresql.md)
+ [Migración de tablas externas de Oracle a Amazon Aurora compatible con PostgreSQL](migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible.md)
+ [Migración de índices basados en funciones de Oracle a PostgreSQL](migrate-function-based-indexes-from-oracle-to-postgresql.md)
+ [Migración de las funciones nativas de Oracle a PostgreSQL mediante extensiones](migrate-oracle-native-functions-to-postgresql-using-extensions.md)
+ [Migre una base de datos Db2 de Amazon EC2 a Aurora compatible con MySQL mediante AWS DMS](migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.md)
+ [Migre una base de datos de Microsoft SQL Server de Amazon EC2 a Amazon DocumentDB mediante AWS DMS](migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms.md)
+ [Migre una base de datos ThoughtSpot Falcon local a Amazon Redshift](migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift.md)
+ [Migre de Oracle Database a Amazon RDS for PostgreSQL mediante Oracle GoldenGate](migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.md)
+ [Migración de una tabla particionada de Oracle a PostgreSQL mediante AWS DMS](migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms.md)
+ [Migración de de Amazon RDS para Oracle a Amazon RDS para MySQL](migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql.md)
+ [Migre de IBM Db2 en Amazon EC2 a Aurora compatible con PostgreSQL mediante AWS DMS y AWS SCT](migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.md)
+ [Migre de Oracle 8i o 9i a Amazon RDS para PostgreSQL mediante AWS DMS SharePlex](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms.md)
+ [Migración de Oracle 8i o 9i a Amazon RDS para PostgreSQL mediante la vista materializada y AWS DMS](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms.md)
+ [Migración de Oracle en Amazon EC2 a Amazon RDS para MySQL con AWS DMS y AWS SCT](migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [Migre una base de datos Oracle de Amazon EC2 a Amazon RDS para MariaDB con AWS DMS y AWS SCT](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para MySQL con AWS DMS y AWS SCT](migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para PostgreSQL mediante Oracle Bystander y AWS DMS](migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.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)
+ [Migración de una base de datos de Oracle a Aurora PostgreSQL con AWS DMS y AWS SCT](migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct.md)
+ [Migración de datos de una base de datos de Oracle en las instalaciones a Aurora PostgreSQL](migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql.md)
+ [Migración de SAP ASE a Amazon RDS para SQL Server utilizando AWS DMS](migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms.md)
+ [Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon Redshift mediante AWS DMS](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms.md)
+ [Migración de una base de datos en las instalaciones de Microsoft SQL Server a Amazon Redshift mediante agentes de extracción de datos de AWS SCT](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.md)
+ [Migración de aplicaciones heredadas de Oracle Pro\$1C a ECPG](migrate-legacy-applications-from-oracle-pro-c-to-ecpg.md)
+ [Migración de columnas generadas de forma virtual de Oracle a PostgreSQL](migrate-virtual-generated-columns-from-oracle-to-postgresql.md)
+ [Configure la funcionalidad UTL\$1FILE de Oracle en Aurora compatible con PostgreSQL](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Validar los objetos de la base de datos después de migrar de Oracle a Amazon Aurora PostgreSQL](validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql.md)

# Convierta VARCHAR2 (1) el tipo de datos de Oracle en un tipo de datos booleano para Amazon Aurora PostgreSQL
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql"></a>

*Naresh Damera, Amazon Web Services*

## Resumen
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-summary"></a>

Durante una migración de Amazon Relational Database Service (Amazon RDS) para Oracle a una edición compatible con PostgreSQL de Amazon Aurora, es posible que se produzca una discrepancia de datos al validar la migración en (). AWS Database Migration Service AWS DMS Para evitar esta discrepancia, puede convertir VARCHAR2 (1) el tipo de datos en un tipo de datos booleano.

VARCHAR2 el tipo de datos almacena cadenas de texto de longitud variable y VARCHAR2 (1) indica que la cadena tiene una longitud de 1 carácter o 1 byte. Para obtener más información VARCHAR2, consulte los [tipos de datos integrados de Oracle](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020) (documentación de Oracle).

En este patrón, en la columna de la tabla de datos fuente de muestra, los datos VARCHAR2 (1) son una **Y**, para *Sí*, o **N**, para *No*.  Este patrón incluye instrucciones para usar AWS DMS y AWS Schema Conversion Tool (AWS SCT) para convertir este tipo de datos de los valores **Y** y **N** de VARCHAR2 (1) a valores **verdaderos** o **falsos** en booleano.

**Destinatarios previstos**

Este patrón se recomienda para quienes tengan experiencia en la migración de bases de datos de Oracle a una versión de Aurora compatible con PostgreSQL mediante AWS DMS. A medida que complete la migración, siga las recomendaciones de Cómo [convertir Oracle a Amazon RDS for PostgreSQL o Amazon AWS SCT Aurora PostgreSQL](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.ToPostgreSQL.html) (documentación).

## Requisitos previos y limitaciones
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-prereqs"></a>

**Requisitos previos **
+ Un activo. Cuenta de AWS
+ Confirme que su entorno esté preparado para Aurora, incluida la configuración de credenciales, permisos y un grupo de seguridad. Para obtener más información, consulte [Configuración del entorno para Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_SettingUp_Aurora.html) (documentación de Aurora).
+ Una base de datos de Amazon RDS for Oracle de origen que contiene una columna de tabla VARCHAR2 con (1) datos.
+ Instancia de base de datos compatible con Amazon Aurora PostgreSQL. Para obtener más información, consulte [Creación de un clúster de base de datos y cómo conectarse a una base de datos en un clúster de base de datos de Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html#CHAP_GettingStarted.AuroraPostgreSQL.CreateDBCluster) (documentación de Aurora).

**Versiones de producto**
+ Opciones de Amazon RDS para Oracle Versión 12.1.0.2 o posterior.
+ AWS DMS versión 3.1.4 o posterior. Para obtener más información, consulte [Uso de una base de datos Oracle como fuente AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) y [Uso de una base de datos PostgreSQL como destino AWS DMS(documentación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)).AWS DMS Le recomendamos que utilice la última versión de AWS DMS para obtener el soporte más completo de versiones y funciones.
+ AWS Schema Conversion Tool (AWS SCT) versión 1.0.632 o posterior. Le recomendamos que utilice la última versión de AWS SCT para obtener el soporte más completo de versiones y funciones.
+ Aurora es compatible con las versiones de PostgreSQL que figuran en [Versiones del motor de base de datos para Aurora compatibles con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) (documentación de Aurora).

## Arquitectura
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-architecture"></a>

**Pila de tecnología de origen**

Recurso de instancia de base de datos de Amazon RDS para Oracle

**Pila de tecnología de destino**

Instancia de base de datos compatible con Amazon Aurora PostgreSQL

**Arquitectura de origen y destino**

![\[Cambiar los tipos de datos de VARCHAR2 (1) a booleanos\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5d4dc568-20d8-4883-a942-21c81039d8e6/images/9fd82ae2-56e6-439c-b4cd-9e74fe77b480.png)


## Tools (Herramientas)
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) le ayuda a migrar los almacenes de datos a una combinación de configuraciones locales y en la nube Nube de AWS o entre ellas.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) para Oracle lo ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle en la Nube de AWS.
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) admite migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayoría del código personalizado a un formato compatible con la base de datos de destino.

**Otros servicios**
+ [Oracle SQL Developer](https://docs.oracle.com/en/database/oracle/sql-developer/) es un entorno de desarrollo integrado que simplifica el desarrollo y la administración de bases de datos de Oracle, tanto en implementaciones tradicionales como en implementaciones basadas en la nube. En este patrón, utilice esta herramienta para conectarse a la instancia de base de datos Amazon RDS para Oracle y consultar los datos.
+ [pgAdmin](https://www.pgadmin.org/docs/) es una herramienta de gestión de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos. En este patrón, utilice esta herramienta para conectarse a la instancia de base de datos Aurora y consultar los datos.

## Epics
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un informe de migración de bases de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html) | Administrador de base de datos, desarrollador | 
| Elimine las restricciones de clave externa en la base de datos de destino. | En PostgreSQL, las claves foráneas se implementan mediante activadores. Durante la fase de carga completa, AWS DMS carga cada tabla de una en una. Recomendamos encarecidamente que deshabilite las restricciones de clave externa durante una carga completa, utilizando uno de los siguientes métodos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html)Si no es posible deshabilitar las restricciones de clave externa, cree una tarea de AWS DMS migración para los datos principales que sea específica de la tabla principal y la tabla secundaria. | Administrador de base de datos, desarrollador | 
| Deshabilite las claves principales y únicas en la base de datos de destino. | Con los siguientes comandos, deshabilite las claves y restricciones principales de la base de datos de destino. Esto ayuda a mejorar el rendimiento de la tarea de carga inicial.<pre>ALTER TABLE <table> DISABLE PRIMARY KEY;</pre><pre>ALTER TABLE <table> DISABLE CONSTRAINT <constraint_name>;</pre> | Administrador de base de datos, desarrollador | 
| Cree la tarea de carga inicial. | En AWS DMS, cree la tarea de migración para la carga inicial. Para obtener instrucciones, consulte [Creación de tareas](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html). En Migration type (Tipo de migración), elija **Migrate existing data** (Migración de datos existentes). Este método de migración se** **llama `Full Load` en la API. No inicie esta tarea todavía. | Administrador de base de datos, desarrollador | 
| Edite la configuración de la tarea de carga inicial. | Edite la configuración de la tarea para añadir la validación de datos. Estos ajustes de validación se deben crear en un archivo JSON. Para obtener instrucciones y ejemplos, consulte [Especificar la configuración de las tareas](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.html). Añada las siguientes validaciones:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html)Para validar el resto de la migración de datos, habilite la validación de datos en la tarea. Para obtener más información consulte [Configuración de tareas de validación de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.DataValidation.html). | Administrador de AWS, Administrador de base de datos | 
| Creación de una tarea de replicación continua. | En AWS DMS, cree la tarea de migración que mantenga la base de datos de destino sincronizada con la base de datos de origen. Para obtener instrucciones, consulte [Creación de tareas](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html). Para el método de migración, elija **Replicar solo los cambios de datos**. No inicie esta tarea todavía. | Administrador de base de datos | 

### Probar las tareas de migración
<a name="test-the-migration-tasks"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree datos de muestra para realizar pruebas. | En la base de datos de origen, cree una tabla de muestra con datos para realizar pruebas. | Desarrollador | 
| Confirme que no haya actividades conflictivas. | Utilice `pg_stat_activity` para comprobar si hay alguna actividad en el servidor que pueda afectar a la migración. Para obtener más información, consulte [Recopilador de estadísticas](https://www.postgresql.org/docs/current/monitoring-stats.html) (documentación de PostgreSQL). | Administrador de AWS | 
| Inicie las tareas de AWS DMS migración. | En la AWS DMS consola, en la página del **panel** de control, inicie la carga inicial y las tareas de replicación en curso que creó en la epopeya anterior. | Administrador de AWS | 
| Supervise las tareas y los estados de carga de la tabla. | Durante la migración, supervise el [estado de las tareas](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html#CHAP_Tasks.Status) y los [estados de la tabla](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html#CHAP_Tasks.CustomizingTasks.TableState). Cuando se complete la tarea de carga inicial, en la pestaña **Estadísticas de la tabla**:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html) | Administrador de AWS | 
| Compruebe los resultados de la migración. | Con pgAdmin, consulte la tabla en la base de datos de destino. Una consulta correcta indica que los datos se migraron correctamente. | Desarrollador | 
| Agregue claves principales y claves externas a la base de datos de destino. | Cree la clave principal y la clave externa en la base de datos de destino. Para obtener más información, consulte [ALTER TABLE](https://www.postgresql.org/docs/current/sql-altertable.html) (sitio web de PostgreSQL). | Administrador de base de datos | 
| Elimine los datos de la prueba. | En las bases de datos de origen y destino, limpie los datos que se crearon para las pruebas unitarias. | Desarrollador | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Completar la migración. | Repita la epopeya anterior, *pruebe las tareas de migración* utilizando los datos de origen reales. De este modo, se migran los datos desde la base de datos de origen a la base de datos de destino. | Desarrollador | 
| Valide que las bases de datos de origen y destino estén sincronizadas. | Valide que las bases de datos de origen y destino estén sincronizadas. Para obtener más información e instrucciones, consulte [Validación de datos de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html). | Desarrollador | 
| Detenga la base de datos de origen. | Detenga la base de datos de Amazon RDS para Oracle. Para obtener instrucciones, consulte [Detener temporalmente una instancia de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_StopInstance.html). Al detener la base de datos de origen, la carga inicial y las tareas de replicación en curso AWS DMS se detienen automáticamente. No es necesario realizar ninguna acción adicional para detener estas tareas. | Desarrollador | 

## Recursos relacionados
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-resources"></a>

**AWS referencias**
+ [Migre una base de datos Oracle a Aurora PostgreSQL AWS DMS mediante AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct.html) y AWS (Guía prescriptiva)
+ [Conversión de Oracle a Amazon RDS para PostgreSQL o Amazon AWS SCT Aurora PostgreSQL](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.ToPostgreSQL.html) (documentación)
+ [Cómo funciona (documentación) AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.html)AWS DMS 

**Otras referencias**
+ [Tipo de datos booleano](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-boolean/) (documentación de PostgreSQL)
+ [Tipos de datos integrados de Oracle](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020) (documentación de Oracle)
+ [pgAdmin](https://www.pgadmin.org/) (sitio web de pgAdmin)
+ [SQL Developer](https://www.oracle.com/database/technologies/appdev/sql-developer.html) (sitio web de Oracle)

**Tutoriales y videos**
+ [Cómo empezar con AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [Introduction to AWS DMS](https://www.youtube.com/watch?v=ouia1Sc5QGo) (video)
+ [Descripción de Amazon RDS](https://www.youtube.com/watch?v=eMzCI7S1P9M) (video)

## Información adicional
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-additional"></a>

**Script de validación de datos**

El siguiente script de validación de datos convierte **1** en **Y** y **0** **en N.** Esto ayuda a que la AWS DMS tarea se complete correctamente y supere la validación de la tabla.

```
{
"rule-type": "validation",
"rule-id": "5",
"rule-name": "5",
"rule-target": "column",
"object-locator": {
"schema-name": "ADMIN",
"table-name": "TEMP_CHRA_BOOL",
"column-name": "GRADE"
},
"rule-action": "override-validation-function",
"target-function": "case grade when '1' then 'Y' else 'N' end"
        }
```

La sentencia `case` del script realiza la validación. Si la validación falla, AWS DMS inserta un registro en la tabla **public.awsdms\$1validation\$1failures\$1v1** de la instancia de base de datos de destino. Este registro incluye el nombre de la tabla, el tiempo de error y detalles sobre los valores que no coinciden en las tablas de origen y destino.

**Si no agrega este script de validación de datos a la tarea y los datos se insertan en la tabla de destino, la AWS DMS tarea mostrará el estado de validación como Registros no coincidentes. AWS DMS **

Durante la AWS SCT conversión, la tarea de AWS DMS migración cambia el tipo de datos de VARCHAR2 (1) a booleano y añade una restricción de clave principal a la columna. `"NO"`

# Crear usuarios y roles de aplicaciones en Aurora compatible con PostgreSQL
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible"></a>

*Abhishek Verma, Amazon Web Services*

## Resumen
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-summary"></a>

Al migrar a la edición compatible con PostgreSQL de Amazon Aurora, los usuarios y roles de la base de datos que existen en la base de datos de origen deben crearse en la base de datos de Aurora compatible con PostgreSQL. Puede crear los usuarios y los roles en Aurora compatibles con PostgreSQL mediante dos enfoques diferentes:
+ Utilice usuarios y roles similares en la base de datos de destino y en la base de datos de origen. En este enfoque, los lenguajes de definición de datos (DDLs) se extraen para los usuarios y las funciones de la base de datos de origen. A continuación, se transforman y se aplican a la base de datos Aurora compatible con PostgreSQL de destino. Por ejemplo, la entrada del blog [Usar SQL para asignar usuarios, roles y concesiones de Oracle a PostgreSQL](https://aws.amazon.com/blogs/database/use-sql-to-map-users-roles-and-grants-from-oracle-to-postgresql) trata sobre el uso de la extracción de un motor de base de datos de origen de Oracle.
+ Utilice usuarios y roles estandarizados que se utilizan habitualmente durante el desarrollo, la administración y para realizar otras operaciones relacionadas en la base de datos. Esto incluye las operaciones de solo lectura, lectura/escritura, desarrollo, administración e implementación realizadas por los respectivos usuarios.

Este patrón contiene las concesiones necesarias para la creación de usuarios y roles en Aurora, compatible con PostgreSQL, necesarias para el enfoque estandarizado de usuarios y roles. Los pasos de creación de usuarios y roles están alineados con la política de seguridad de conceder el privilegio mínimo a los usuarios de la base de datos. La siguiente tabla muestra los usuarios, sus funciones correspondientes y sus detalles en la base de datos.


| 
| 
| Users | Roles | Finalidad | 
| --- |--- |--- |
| `APP_read` | `APP_RO` | Se utiliza para el acceso de solo lectura al esquema `APP` | 
| `APP_WRITE` | `APP_RW` | Se utiliza para las operaciones de escritura y lectura del esquema `APP` | 
| `APP_dev_user` | `APP_DEV` | Se utiliza con fines de desarrollo en el esquema `APP_DEV`, con acceso de solo lectura al esquema `APP` | 
| `Admin_User` | `rds_superuser` | Se utiliza para realizar operaciones de administrador en la base de datos | 
| `APP` | `APP_DEP` | Se utiliza para crear los objetos del esquema `APP` y para la implementación de objetos en el esquema `APP` | 

## Requisitos previos y limitaciones
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-prereqs"></a>

**Requisitos previos **
+ Una cuenta de Amazon Web Services (AWS) activa
+ Una base de datos PostgreSQL, una base de datos Amazon Aurora de edición compatible con PostgreSQL o una base de datos Amazon Relational Database Service (Amazon RDS) para PostgreSQL

**Versiones de producto**
+ Todas las versiones de PostgreSQL

## Arquitectura
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-architecture"></a>

**Pila de tecnología de origen**
+ Cualquier base de datos

**Pila de tecnología de destino**
+ Amazon Aurora compatible con PostgreSQL

**Arquitectura de destino**

El siguiente diagrama muestra los roles de usuario y la arquitectura del esquema en la base de datos Aurora compatible con PostgreSQL.

![\[Funciones de usuario y arquitectura de esquemas para la base de datos Aurora compatible con PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/80105a81-e3d1-4258-b3c1-77f3a5e78592/images/b95cb9bc-8bf7-47d1-92e7-66cfb37d7ce7.png)


                                                                                                                                    

**Automatizar y escalar**

Este patrón contiene los usuarios, los roles y el script de creación del esquema, que puede ejecutar varias veces sin que ello afecte a los usuarios actuales de la base de datos de origen o destino.

## Tools (Herramientas)
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.

**Otros servicios**
+ [psql](https://www.postgresql.org/docs/current/app-psql.html) es una herramienta frontend basada en un terminal que se instala con todas las instalaciones de PostgreSQL Database. Cuenta con una interfaz de la línea de comandos para ejecutar comandos de SQL, PL-PGSQL y del sistema operativo.
+ [pgAdmin](https://www.pgadmin.org/) es una herramienta de gestión de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.

## Epics
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-epics"></a>

### Crear los usuarios y los roles
<a name="create-the-users-and-roles"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el usuario de implementación. | El usuario de implementación `APP` se utilizará para crear y modificar los objetos de la base de datos durante las implementaciones. Utilice los siguientes scripts para crear el rol de usuario de implementación `APP_DEP` en el esquema `APP`. Valide los derechos de acceso para asegurarse de que este usuario solo tiene el privilegio de crear objetos en el esquema `APP` requerido.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | Administrador de base de datos | 
| Cree el usuario de solo lectura. | El usuario de solo lectura `APP_read` se utilizará para realizar la operación de solo lectura en el esquema `APP`. Utilice los siguientes scripts para crear el usuario de solo lectura. Valide los derechos de acceso para asegurarse de que este usuario tiene privilegios para leer únicamente los objetos del esquema `APP` y para conceder automáticamente el acceso de lectura a cualquier objeto nuevo creado en el esquema `APP`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | Administrador de base de datos | 
| Cree el read/write usuario. | El read/write usuario se `APP_WRITE` utilizará para realizar operaciones de lectura y escritura en el esquema`APP`. Utilice los siguientes scripts para crear el read/write usuario y asignarle el `APP_RW` rol. Valide los derechos de acceso para asegurarse de que este usuario solo tiene privilegios de lectura y escritura en los objetos del esquema `APP` y para conceder automáticamente el acceso de lectura y escritura a cualquier objeto nuevo creado en el esquema `APP`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) |  | 
| Cree el usuario administrador. | El usuario administrador `Admin_User` se utilizará para realizar operaciones de administración en la base de datos. Algunos ejemplos de estas operaciones son `CREATE ROLE` y `CREATE DATABASE`. `Admin_User` utiliza la función integrada `rds_superuser` para realizar operaciones de administración en la base de datos. Utilice los siguientes scripts para crear y probar el privilegio del usuario administrador `Admin_User` en la base de datos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | Administrador de base de datos | 
| Cree el usuario de desarrollo. | El usuario de desarrollo `APP_dev_user` tendrá derechos para crear los objetos en su esquema local `APP_DEV` y acceso de lectura en el esquema `APP`. Utilice los siguientes scripts para crear y probar los privilegios del usuario `APP_dev_user` en la base de datos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | Administrador de base de datos | 

## Recursos relacionados
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-resources"></a>

**Documentación de PostgreSQL**
+ [CREAR ROL](https://www.postgresql.org/docs/9.1/sql-createrole.html)
+ [CREAR USUARIO](https://www.postgresql.org/docs/8.0/sql-createuser.html)
+ [Roles predefinidos](https://www.postgresql.org/docs/14/predefined-roles.html)

 

## Información adicional
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-additional"></a>

**Mejora de PostgreSQL 14**

PostgreSQL 14 proporciona un conjunto de roles predefinidos que dan acceso a determinadas capacidades e información privilegiadas que se necesitan con frecuencia. Los administradores (incluidos roles con privilegios `CREATE ROLE`) pueden conceder estos roles u otros roles de su entorno a los usuarios, proporcionándoles acceso a la información y las capacidades especificadas.

Los administradores pueden conceder a los usuarios el acceso a estos roles mediante el comando `GRANT`. Por ejemplo, para conceder el rol `pg_signal_backend` al `Admin_User`, puede ejecutar el siguiente comando.

```
GRANT pg_signal_backend TO Admin_User;
```

El objetivo del rol `pg_signal_backend` es permitir a los administradores habilitar roles de confianza que no son de superusuario para enviar señales a otros backends. Para obtener más información, consulte [Mejora de PostgreSQL 14](https://www.postgresql.org/docs/14/predefined-roles.html).

**Afinar el acceso**

En algunos casos, puede ser necesario proporcionar un acceso más detallado a los usuarios (por ejemplo, acceso basado en tablas o en columnas). En esos casos, se pueden crear roles adicionales para conceder esos privilegios a los usuarios. Para obtener información, consulte [Concesiones de PostgreSQL](https://www.postgresql.org/docs/8.4/sql-grant.html).

# Emule Oracle DR mediante una base de datos global de Aurora compatible con PostgreSQL
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database"></a>

*HariKrishna Boorgadda, Amazon Web Services*

## Resumen
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-summary"></a>

Las prácticas recomendadas para la recuperación de desastres (DR) a nivel empresarial consisten, básicamente, en diseñar e implementar sistemas de hardware y software tolerantes a fallos que puedan sobrevivir a un desastre (*continuidad de la actividad empresarial*) y reanudar las operaciones normales (*reanudación de la actividad empresarial*) con una intervención mínima e, idealmente, sin pérdida de datos. Crear entornos tolerantes a fallos para cumplir los objetivos de la DR empresarial puede ser una empresa larga y costosa, y requiere un firme compromiso por parte de la empresa.

Oracle Database ofrece tres enfoques diferentes de recuperación de desastres que proporcionan el nivel más alto de protección y disponibilidad de datos en comparación con cualquier otro enfoque para proteger datos de Oracle.
+ Dispositivo de recuperación sin pérdida de datos de Oracle
+ Oracle Active Data Guard
+ Oráculo GoldenGate

Este patrón proporciona una forma de emular la recuperación ante GoldenGate desastres de Oracle mediante una base de datos global de Amazon Aurora. La arquitectura de referencia utiliza Oracle GoldenGate for DR en tres regiones de AWS. El patrón redefine la plataforma de la arquitectura de origen a la base de datos global de Aurora, nativa en la nube y basada en la edición compatible con PostgreSQL de Amazon Aurora.

Las bases de datos globales de Aurora están diseñadas para aplicaciones con una huella global. Una única base de datos de Aurora puede abarcar varias regiones de AWS con hasta cinco regiones secundarias. Las bases de datos globales de Aurora ofrecen las siguientes características:
+ Replicación física a nivel de almacenamiento
+ Lecturas globales de baja latencia
+ Recuperación de desastres rápida tras interrupciones en toda la región
+ Migraciones rápidas entre regiones
+ Bajo retraso de replicación en todas las regiones
+ Little-to-no impacto en el rendimiento de su base de datos

Para obtener más información sobre las características y ventajas de las bases de datos globales de Aurora, consulte [Uso de las bases de datos globales de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-overview). Para obtener más información sobre las conmutaciones por error gestionadas y no planificadas, consulte [Uso de la conmutación por error en una base de datos global de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-failover).

## Requisitos previos y limitaciones
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa 
+ Un controlador PostgreSQL de Java Database Connectivity (JDBC) para conectividad de aplicaciones
+ Una base de datos global de Aurora basada en Amazon Aurora compatible con PostgreSQL
+ Una base de datos de Oracle Real Application Clusters (RAC) migrada a la base de datos global de Aurora basada en Aurora compatible con PostgreSQL

**Limitaciones de las bases de datos globales de Aurora**
+ Las bases de datos globales de Aurora no están disponibles en todas las regiones de AWS. Para obtener una lista de las regiones compatibles, consulte [Bases de datos globales de Aurora con Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.apg).
+ Para obtener información sobre las características no compatibles y otras limitaciones de las bases de datos globales de Aurora, consulte [Limitaciones de las bases de datos globales de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database.limitations).

**Versiones de producto**
+ Amazon Aurora, edición compatible con PostgreSQL, versión 10.14 o posterior

## Arquitectura
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-architecture"></a>

**Pila de tecnología de origen**** **
+ Base de datos de Oracle RAC de cuatro nodos
+ Oracle GoldenGate

**Arquitectura de origen**** **

El siguiente diagrama muestra tres clústeres con Oracle RAC de cuatro nodos en diferentes regiones de AWS replicados mediante Oracle. GoldenGate 

![\[Oracle RAC en una región principal y dos regiones secundarias.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/11d4265b-31af-4ebf-a766-24196193ee01/images/9fc740fc-d339-422e-beaf-1f65690c9d14.png)


**Pila de tecnología de destino**
+ Una base de datos global de Amazon Aurora de tres clústeres basada en Aurora compatible con PostgreSQL, con un clúster en la región principal y dos clústeres en diferentes regiones secundarias

**Arquitectura de destino**

![\[Amazon Aurora en una región principal y dos regiones secundarias.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/11d4265b-31af-4ebf-a766-24196193ee01/images/8e3deca9-03f2-437c-9341-795ac17e2b42.png)


## Tools (Herramientas)
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ Las [bases de datos globales de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html) abarcan varias regiones de AWS, lo que permite lecturas globales de baja latencia y proporcionan una recuperación rápida de cualquier interrupción que pueda afectar a toda una región de AWS.

## Epics
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-epics"></a>

### Agregue regiones con instancias de base de datos de lectura
<a name="add-regions-with-reader-db-instances"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Adjunte uno o varios clústeres de Aurora secundarios. | En la Consola de administración de AWS, seleccione Amazon Aurora. Seleccione el clúster principal, elija **Acciones** y seleccione **Añadir región** en la lista desplegable. | Administrador de base de datos | 
| Seleccione la clase de instancia. | Puede cambiar la clase de instancia del clúster secundario. Sin embargo, le recomendamos mantenerla igual que la clase de instancia del clúster principal. | Administrador de base de datos | 
| Añada la tercera región. | Repita los pasos de esta épica para añadir un clúster en la tercera región. | Administrador de base de datos | 

### Error en la base de datos global Aurora
<a name="fail-over-the-aurora-global-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine el clúster secundario de la base de datos global de Aurora. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.html) | Administrador de base de datos | 
| Puede volver a configurar la aplicación para desviar el tráfico de escritura al clúster que acaba de promover. | Cambie el punto de conexión de la aplicación por el del clúster recién promocionado. | Administrador de base de datos | 
| Detenga la ejecución de cualquier operación de escritura en el clúster no disponible. | Detenga la aplicación y cualquier actividad del lenguaje de manipulación de datos (DML) en el clúster que ha eliminado. | Administrador de base de datos | 
| Crear una base de datos global de Aurora. | Ahora puede crear una base de datos global de Aurora con el clúster recién promovido como clúster principal. | Administrador de base de datos | 

### Inicie el clúster principal
<a name="start-the-primary-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione el clúster principal que se va a iniciar desde la base de datos global. | En la consola de Amazon Aurora, en la configuración de la base de datos global, elija el clúster principal. | Administrador de base de datos | 
| Iniciar el clúster. | En la lista desplegable **Acciones**, seleccione **Iniciar**. Este proceso puede tardar algún tiempo. Actualice la pantalla para ver el estado o compruebe, en la columna **Estado**, el estado actual del clúster una vez finalizada la operación. | Administrador de base de datos | 

### Limpie los recursos
<a name="clean-up-the-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los clústeres secundarios restantes. | Tras completar el piloto de conmutación por error, elimine los clústeres secundarios de la base de datos global. | Administrador de base de datos | 
| Elimine el clúster principal. | Eliminar el clúster. | Administrador de base de datos | 

## Recursos relacionados
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-resources"></a>
+ [Uso de bases de datos globales de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-detaching)
+ [Soluciones de recuperación de desastres de Aurora PostgreSQL mediante Base de datos global de Amazon Aurora](https://aws.amazon.com/blogs/database/aurora-postgresql-disaster-recovery-solutions-using-amazon-aurora-global-database/) (publicación de blog)

# Implemente SHA1 el hash para los datos de PII al migrar de SQL Server a PostgreSQL
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql"></a>

*Rajkumar Raghuwanshi y Jagadish Kantubugata, Amazon Web Services*

## Resumen
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-summary"></a>

Este patrón describe cómo implementar el hash del algoritmo de hash seguro 1 (SHA1) para las direcciones de correo electrónico al migrar de SQL Server a Amazon RDS for PostgreSQL o Amazon Aurora compatible con PostgreSQL. Una dirección de correo electrónico es un ejemplo de *información de identificación personal* (PII). La PII es información que, vista directamente o combinada con otros datos relacionados, puede utilizarse para deducir de manera razonable la identidad de una persona. 

Este patrón cubre los desafíos de mantener valores hash coherentes en diferentes intercalaciones de bases de datos y codificaciones de caracteres, y proporciona una solución con funciones y desencadenadores de PostgreSQL. Si bien este patrón se centra en el uso de SHA1 hash, se puede adaptar a otros algoritmos de hash compatibles con el módulo de PostgreSQL. `pgcrypto` Tenga siempre en cuenta las implicaciones de seguridad de su estrategia de hash y consulte con expertos en seguridad si maneja información confidencial.

## Requisitos previos y limitaciones
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ La base de datos de SQL Server de origen
+ La base de datos de PostgreSQL de destino (Amazon RDS para PostgreSQL o Aurora compatible con PostgreSQL)
+ Experiencia en codificación PL/pgSQL

**Limitaciones**
+ Este patrón requiere cambios en la intercalación en el nivel de base de datos en función de los casos de uso.
+ No se ha evaluado el impacto en el rendimiento de conjuntos de datos de gran tamaño.
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ Microsoft SQL Server 2012 o posterior

## Arquitectura
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-architecture"></a>

**Pila de tecnología de origen**
+ SQL Server
+ .NET Framework

**Pila de tecnología de destino**
+ PostgreSQL
+ Extensión `pgcrypto`

**Automatización y escala**
+ Considere la posibilidad de implementar la función de hash como un procedimiento almacenado para facilitar el mantenimiento.
+ Para conjuntos de datos grandes, evalúe el rendimiento y considere el procesamiento por lotes o las estrategias de indexación.

## Tools (Herramientas)
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-tools"></a>

**Servicios de AWS**
+ [Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, totalmente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) le ayuda a migrar los almacenes de datos a una combinación de configuraciones locales y en la nube Nube de AWS o entre ellas.
+ [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) lo ayuda a configurar, utilizar y escalar una base de datos relacional de PostgreSQL en la Nube de AWS.
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) admite migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayoría del código personalizado a un formato compatible con la base de datos de destino.

**Otras herramientas**
+ [pgAdmin](https://www.pgadmin.org/) es una herramienta de administración de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.
+ [SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms) es un entorno integrado para administrar infraestructuras de SQL Server.

## Prácticas recomendadas
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-best-practices"></a>
+ Utilice la configuración de intercalación adecuada para gestionar los caracteres especiales en la base de datos de destino.
+ Haga pruebas exhaustivas con una variedad de direcciones de correo electrónico, incluidas las direcciones con caracteres que no sean ASCII.
+ Mantenga la coherencia en la gestión de mayúsculas y minúsculas entre las capas de aplicación y base de datos.
+ Compare el rendimiento de las consultas utilizando los valores con hash.

## Epics
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-epics"></a>

### Análisis de la implementación del hash de origen
<a name="analyze-source-hashing-implementation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revisar el código de SQL Server. | Para revisar el código de SQL Server que genera SHA1 hashes, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Ingeniero de datos, administrador de base de datos, desarrollador de aplicaciones | 
| Documentar el algoritmo de hash y las transformaciones de los datos. | Para documentar el algoritmo de hash exacto y las transformaciones de los datos, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 

### Creación de la función de hash de PostgreSQL
<a name="create-postgresql-hashing-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear la extensión `pgcrypto`. | Para crear la extensión `pgcrypto`, use `pgAdmin/psql` para ejecutar el siguiente comando:<pre>CREATE EXTENSION pgcrypto;</pre> | Administrador de base de datos, ingeniero de datos | 
| Implementar una función de PostgreSQL. | Implemente la siguiente función de PostgreSQL para replicar la lógica de hash de SQL Server. En líneas generales, esta función utiliza los pasos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html)<pre>CREATE OR REPLACE FUNCTION utility.hex_to_bigint ( <br />     par_val character varying, <br />     par_upper character varying DEFAULT 'lower'::character varying) <br />RETURNS bigint <br />LANGUAGE 'plpgsql' <br />AS $BODY$ <br />DECLARE <br />    retnumber bigint; <br />    digest_bytes bytea;<br />BEGIN <br />    if lower(par_upper) = 'upper' <br />    then <br />        digest_bytes := digest(upper(par_val), 'sha1');<br />    else <br />        digest_bytes := digest((par_val), 'sha1');<br />    end if; <br />    retnumber := ('x' || encode(substring(digest_bytes, length(digest_bytes)-10+1), 'hex'))::bit(64)::bigint; <br />    RETURN retnumber; <br />END; <br />$BODY$;</pre> | Ingeniero de datos, administrador de base de datos, desarrollador de aplicaciones | 
| Pruebe la función. | Para probar la función, utilice datos de ejemplo de SQL Server para comprobar que los valores de hash coincidan. Use el siguiente comando:<pre>select 'alejandro_rosalez@example.com' as Email, utility.hex_to_bigint('alejandro_rosalez@example.com','upper') as HashValue;<br /><br />--OUTPUT<br />/*<br />email 	        hashvalue<br />"alejandro_rosalez@example.com"	451397011176045063<br />*/<br /></pre> | Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos | 

### Implementación de desencadenadores para el hash automático
<a name="implement-triggers-for-automatic-hashing"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear desencadenadores en las tablas pertinentes. | Para crear desencadenadores en las tablas pertinentes para generar automáticamente valores de hash al insertar o actualizar, ejecute el siguiente comando:<pre>CREATE OR REPLACE FUNCTION update_email_hash() <br />RETURNS TRIGGER <br />AS $$ <br />BEGIN <br />    NEW.email_hash = utility.hex_to_bigint(NEW.email, 'upper'); <br />    RETURN NEW; <br />END; <br />$$ LANGUAGE plpgsql;</pre><pre>CREATE TRIGGER email_hash_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_email_hash();</pre> | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Desarrolle o utilice un script de migración AWS DMS.  | Desarrolle un script de migración o AWS DMS utilícelo para rellenar los valores hash de los datos existentes (incluidos los valores hash almacenados `BIGINT` en el sistema de origen). Realice los siguientes pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Ingeniero de datos, desarrollador de aplicaciones, administrador de base de datos | 
| Utilizar la nueva función de hash de PostgreSQL. | Para utilizar la nueva función de hash de PostgreSQL y garantizar la coherencia, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, administrador de bases de datos, ingeniero DevOps  | 

### Actualización de consultas de aplicaciones
<a name="update-application-queries"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identificar las consultas de aplicaciones. | Para identificar las consultas de la aplicación que utilizan valores de hash, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos | 
| Modificar consultas. | Si es necesario, modifique las consultas para usar la nueva función de hash de PostgreSQL. Haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos | 

### Prueba y validación
<a name="test-and-validate"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Hacer pruebas. | Para llevar a cabo pruebas exhaustivas con un subconjunto de datos de producción, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 
| Validar que los valores de hash coincidan. | Para validar que los valores de hash coincidan entre SQL Server y PostgreSQL, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 
| Verificar la funcionalidad de la aplicación. | Para verificar la funcionalidad de la aplicación mediante los datos migrados y la nueva implementación de hash, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos | 

## Resolución de problemas
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Los valores de hash no coinciden. | Compruebe las codificaciones de caracteres y las intercalaciones entre el origen y el destino. Para obtener más información, consulte [Administrar los cambios de intercalación en PostgreSQL en Amazon Aurora y Amazon AWS RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/) (blog). | 

## Recursos relacionados
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-resources"></a>

**AWS Blogs**
+ [Manage collation changes in PostgreSQL on Amazon Aurora and Amazon RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)
+ [Migrate SQL Server to Amazon Aurora PostgreSQL using best practices and lessons learned from the field](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)

**Otros recursos**
+ [PostgreSQL pgcrypto module](https://www.postgresql.org/docs/current/pgcrypto.html) (documentación de PostgreSQL)
+ [PostgreSQL trigger functions](https://www.postgresql.org/docs/current/plpgsql-trigger.html) (documentación de PostgreSQL)
+ [SQL Server HASHBYTES function](https://docs.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql) (documentación de Microsoft)

# Migración gradual de Amazon RDS para Oracle a Amazon RDS para PostgreSQL con Oracle SQL Developer y AWS SCT
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct"></a>

*Pinesh Singal, Amazon Web Services*

## Resumen
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-summary"></a>

Muchas estrategias y enfoques de migración se ejecutan en varias fases y pueden durar desde unas semanas hasta varios meses. Durante este tiempo, puede experimentar retrasos debido a la aplicación de parches o actualizaciones en las instancias de base de datos de Oracle de origen que desee migrar a las instancias de base de datos de PostgreSQL. Para evitar esta situación, le recomendamos que migre de forma incremental el código de base de datos de Oracle restante al código de base de datos de PostgreSQL.

Este patrón proporciona una estrategia de migración incremental sin tiempo de inactividad para una instancia de base de datos de Oracle de varios terabytes que tiene un número elevado de transacciones realizadas después de la migración inicial y que debe migrarse a una base de datos PostgreSQL. Puede utilizar el step-by-step enfoque de este patrón para migrar de forma incremental una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle a una instancia de base de datos de Amazon RDS for PostgreSQL sin iniciar sesión en la consola de administración de Amazon Web Services (AWS).

El patrón utiliza [Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html) para encontrar las diferencias entre dos esquemas de la base de datos de Oracle de origen. A continuación, utilice la herramienta de conversión de esquemas de AWS (AWS SCT) para convertir los objetos de esquema de base de datos de Amazon RDS para Oracle en objetos de esquema de base de datos de Amazon RDS para PostgreSQL. A continuación, puede ejecutar un script de Python en la línea de comandos de Windows para crear objetos SCT de AWS para los cambios incrementales en los objetos de la base de datos de origen.

**nota**  
Antes de migrar sus cargas de trabajo de producción, le recomendamos que ejecute una prueba de concepto (PoC) para el enfoque de este patrón en un entorno de pruebas o que no sea de producción.

## Requisitos previos y limitaciones
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una instancia existente de base de datos de Amazon RDS para Oracle. 
+ Una instancia de base de datos de Amazon RDS para PostgreSQL.
+ AWS SCT, instalado y configurado con controladores JDBC para motores de bases de datos de Oracle y PostgreSQL. Para obtener más información al respecto, consulte [Instalación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure) e [Instalación de los controladores de base de datos necesarios](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.JDBCDrivers) en la documentación de AWS SCT. 
+ Oracle SQL Developer, instalado y configurado. Para obtener más información acerca de estos componentes, consulte la documentación de [Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html). 
+ El archivo (adjunto) `incremental-migration-sct-sql.zip`, descargado en su equipo local.

**Limitaciones**
+ Los requisitos mínimos para la instancia de base de datos de Amazon RDS para Oracle son:
  + Oracle versiones 10.2 y posteriores (para las versiones 10.x), 11g (versiones 11.2.0.3.v1 y posteriores) y hasta 12.2 y 18c para las ediciones Enterprise, Standard, Standard One y Standard Two
+ Los requisitos mínimos para su instancia de base de datos de Amazon RDS para PostgreSQL de destino son:  
  + PostgreSQL versiones 9.4 y posteriores (para las versiones 9.x), 10.x y 11.x
+ En este patrón, se utiliza Oracle SQL Developer. Los resultados pueden variar si utiliza otras herramientas para buscar y exportar las diferencias de esquema.
+ Los [scripts SQL](https://docs.oracle.com/database/121/AEUTL/sql_rep.htm#AEUTL191) generados por Oracle SQL Developer pueden generar errores de transformación, lo que significa que es necesario realizar una migración manual.
+ Si las conexiones de prueba de origen y destino de AWS SCT fallan, asegúrese de configurar las versiones del controlador JDBC y las reglas de entrada para que el grupo de seguridad de la nube privada virtual (VPC) acepte el tráfico entrante.

**Versiones de producto**
+ Instancia de base de datos Amazon RDS para Oracle, versión 12.1.0.2 (versión 10.2 y posteriores)
+ Instancia de base de datos Amazon RDS para PostgreSQL versión 11.5 (versión 9.4 y posteriores)
+ Oracle SQL Developer, versión 19.1 y posteriores
+ AWS SCT versión 1.0.632 y versiones posteriores

## Arquitectura
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**
+ Instancia de base de datos de Amazon RDS para Oracle

**Pila de tecnología de destino**
+ Amazon RDS para instancia de base de datos para PostgreSQL

**Arquitectura de origen y destino**

El siguiente diagrama muestra la migración de una instancia de base de datos Amazon RDS para Oracle a una instancia de base de datos Amazon RDS para PostgreSQL.

![\[Flujo de trabajo de migración de Amazon RDS para Oracle a Amazon RDS para PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/c7eed517-e496-4e8e-a520-c1e43397419e/images/bfbbed5e-db13-4a22-99aa-1a17f00f5faf.png)


En el diagrama, se muestra el siguiente flujo de migración:

1. Abra Oracle SQL Developer y conéctese a las bases de datos de origen y destino.

1. Genere un [informe de diferencias](https://docs.oracle.com/cd/E93130_01/rules_palette/Content/Diff%20Reports/Detailed_Diff_Reports.htm) y, a continuación, genere el archivo de scripts SQL para los objetos de diferencias de esquema. Para obtener más información acerca de los informes de diferencias, consulte [Informes de diferencias detallados](https://docs.oracle.com/cd/E93130_01/rules_palette/Content/Diff%20Reports/Detailed_Diff_Reports.htm) en la documentación de Oracle.

1. Configure AWS SCT y ejecute el código de Python.

1. El archivo de scripts SQL se convierte de Oracle a PostgreSQL.

1. Ejecute el archivo de scripts SQL en la instancia de base de datos PostgreSQL de destino. 

**Automatizar y escalar**

Para automatizar esta migración se pueden agregar parámetros adicionales y cambios relacionados con la seguridad para múltiples funcionalidades de un solo programa al Script de Python.

## Tools (Herramientas)
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-tools"></a>
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html): la herramienta de conversión de esquemas de AWS (AWS SCT) convierte el esquema de base de datos existente de un motor de base de datos a otro.
+ [Desarrollador de Oracle SQL](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html): Oracle SQL Developer es un entorno de desarrollo integrado (IDE) que simplifica el desarrollo y la administración de las bases de datos de Oracle, tanto en las implementaciones tradicionales como en las basadas en la nube.

**Código**

El archivo (adjunto) `incremental-migration-sct-sql.zip` contiene el código fuente completo de este patrón.

## Epics
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-epics"></a>

### Cree el archivo de scripts SQL para las diferencias del esquema de la base de datos de origen
<a name="create-the-sql-scripts-file-for-the-source-database-schema-differences"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute Database Diff en Oracle SQL Developer.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.html) | Administrador de base de datos | 
| Genere el archivo de scripts SQL. | Elija **Generar script** para generar las diferencias en los archivos SQL. Esto genera el archivo de scripts SQL que AWS SCT utiliza para convertir la base de datos de Oracle a PostgreSQL. | Administrador de base de datos | 

### Use el script de Python para crear los objetos de base de datos de destino en AWS SCT
<a name="use-the-python-script-to-create-the-target-db-objects-in-aws-sct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS SCT con la línea de comandos de Windows.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.html)<pre>#source_vendor,source_hostname,source_dbname,source_user,source_pwd,source_schema,source_port,source_sid,target_vendor,target_hostname,target_user,target_pwd,target_dbname,target_port<br /><br />ORACLE,myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com,ORCL,orcl,orcl1234,orcl,1521,ORCL,POSTGRESQL,mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com,pguser,pgpassword,pgdb,5432</pre>4. Modifique los parámetros de configuración de AWS SCT según sus requisitos y, a continuación, copie el archivo de scripts SQL en el directorio de trabajo del subdirectorio `input`. | Administrador de base de datos | 
| Ejecutar el script de Python .  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.html) | Administrador de base de datos | 
|  Cree los objetos en Amazon RDS para PostgreSQL | Ejecute los archivos SQL y cree objetos en su instancia de base de datos de Amazon RDS para PostgreSQL. | Administrador de base de datos | 

## Recursos relacionados
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-resources"></a>
+ [Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ [PostgreSQL en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)
+ [Uso de la interfaz de usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
+ [Uso de Oracle como origen para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)

## Conexiones
<a name="attachments-c7eed517-e496-4e8e-a520-c1e43397419e"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/c7eed517-e496-4e8e-a520-c1e43397419e/attachments/attachment.zip)

# Cargar archivos BLOB en TEXT mediante la codificación de archivos en Aurora compatible con PostgreSQL
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible"></a>

*Bhanu Ganesh Gudivada y Jeevan Shetty, Amazon Web Services*

## Resumen
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-summary"></a>

A menudo, durante la migración, hay casos en los que hay que procesar datos estructurados y no estructurados que se cargan desde archivos de un sistema de archivos local. Los datos también pueden estar en un juego de caracteres diferente del juego de caracteres de la base de datos.

Estos archivos contienen los siguientes tipos de datos:
+ **Metadatos** – Estos datos describen la estructura del archivo.
+ **Datos semiestructurados** – Son cadenas de texto en un formato específico, como JSON o XML. Es posible que pueda hacer afirmaciones sobre dichos datos, como "siempre empezará por '<' " o "no contiene caracteres de nueva línea".
+ **Texto completo** – Estos datos suelen contener todos los tipos de caracteres, incluyendo los caracteres de nueva línea y comillas. También puede consistir en caracteres multibyte en UTF-8.
+ **Datos binarios**: estos datos pueden contener bytes o combinaciones de bytes, incluidos valores nulos y end-of-file marcadores.

Cargar una combinación de estos tipos de datos puede ser complicado.

El patrón se puede utilizar con bases de datos Oracle locales, bases de datos Oracle que se encuentran en instancias de Amazon Elastic Compute Cloud (Amazon EC2) en la nube de Amazon Web Services (AWS) y Amazon Relational Database Service (Amazon RDS) para bases de datos Oracle. Por ejemplo, este patrón utiliza Amazon Aurora de edición compatible con PostgreSQL.

En la base de datos de Oracle, con la ayuda de un puntero `BFILE` (archivo binario), el paquete `DBMS_LOB` y las funciones del sistema Oracle, puede cargar desde un archivo y convertirlo a CLOB con codificación de caracteres. Como PostgreSQL no admite el tipo de datos BLOB al migrar a una base de datos de Amazon Aurora de edición compatible con PostgreSQL, estas funciones deben convertirse en scripts compatibles con PostgreSQL.

Este patrón proporciona dos enfoques para cargar un archivo en una base de datos de una sola columna en una base de datos de Amazon Aurora compatible con PostgreSQL:
+ Método 1: Usted importa datos de su bucket de Amazon Simple Storage Service (Amazon S3) utilizando la función `table_import_from_s3` de la extensión `aws_s3` con la opción de codificación.
+ Método 2: Usted codifica en formato hexadecimal fuera de la base de datos y, a continuación, decodifica para ver `TEXT` dentro de la base de datos.

Recomendamos usar el Método 1 porque Aurora, compatible con PostgreSQL, tiene una integración directa con la extensión `aws_s3`.

Este patrón utiliza el ejemplo de cargar un archivo plano que contiene una plantilla de correo electrónico, que tiene caracteres multibyte y formatos distintos, en una base de datos de Amazon Aurora compatible con PostgreSQL.

## Requisitos previos y limitaciones
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una instancia de Amazon RDS o una instancia de Aurora compatible con PostgreSQL
+ Conocimientos básicos de SQL y del sistema de administración de base de datos relacional (RDBMS)
+ Un bucket de Amazon Simple Storage Service (Amazon S3)
+ Conocimiento de las funciones del sistema en Oracle y PostgreSQL
+ Paquete RPM HexDump -XXD-0.1.1 (incluido con Amazon Linux 2)
**nota**  
Se acerca el fin de la compatibilidad de Amazon Linux 2. Para obtener más información, consulte [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).

**Limitaciones**
+ Para el tipo de datos `TEXT`, la cadena de caracteres más larga posible que se puede almacenar es de aproximadamente 1 GB.

**Versiones de producto**
+ Aurora es compatible con las versiones de PostgreSQL que aparecen en las [actualizaciones de PostgreSQL de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html).

## Arquitectura
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-architecture"></a>

**Pila de tecnología de destino**
+ Aurora compatible con PostgreSQL

**Arquitectura de destino**

*Método 1: Uso de aws\$1s3.table\$1import\$1from\$1s3*

Desde un servidor en las instalaciones, se transfiere a Amazon S3 un archivo que contiene una plantilla de correo electrónico con caracteres multibyte y un formato personalizado. La función de base de datos personalizada que proporciona este patrón utiliza la función `aws_s3.table_import_from_s3` con `file_encoding` para cargar archivos en la base de datos y regresar los resultados de las consultas como tipo de datos `TEXT`.

![\[Proceso de cuatro pasos desde el servidor en las instalaciones hasta la salida TEXT de la base de datos Aurora.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cbf63cac-dcea-4e18-ab4f-c4f6296f60e7/images/9c46b385-e8a0-4e50-b856-d522c44d79e3.png)


1. Los archivos se transfieren al bucket de S3 de almacenamiento temporal.

1. Los archivos se cargan en la base de datos Amazon Aurora compatible con PostgreSQL.

1. Mediante el cliente pgAdmin, la función `load_file_into_clob` personalizada se implementa en la base de datos Aurora.

1. La función personalizada usa internamente `table_import_from_s3` con file\$1encoding. El resultado de la función se obtiene utilizando `array_to_string` y `array_agg` como salida `TEXT`.

*Método 2: Codificar en hexadecimal fuera de la base de datos y decodificar para ver el TEXTO dentro de la base de datos*

Un archivo de un servidor en las instalaciones o de un sistema de archivos local se convierte en un volcado hexadecimal. A continuación, el archivo se importa a PostgreSQL como un campo `TEXT`.

![\[Proceso de tres pasos mediante un volcado hexadecimal.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cbf63cac-dcea-4e18-ab4f-c4f6296f60e7/images/563038ca-f890-4874-85df-d0f82d99800a.png)


1. Convierta el archivo en un volcado hexadecimal en la línea de comandos mediante la opción `xxd -p`.

1. Cargue los archivos de volcado hexadecimales en una versión de Aurora compatible con PostgreSQL mediante la opción `\copy` y, a continuación, decodifique los archivos de volcado hexadecimales en binarios.

1. Codifique los datos binarios para regresarlos como `TEXT`.

## Tools (Herramientas)
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ 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.

**Otras herramientas**
+ [pgAdmin4](https://www.pgadmin.org/) es una plataforma de administración y desarrollo de código abierto para PostgreSQL. pgAdmin4 se puede usar en Linux, Unix, mac OS y Windows para administrar PostgreSQL.  

## Epics
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-epics"></a>

### Método 1: Importación de datos de Amazon S3 a Aurora compatible con PostgreSQL
<a name="approach-1-import-data-from-amazon-s3-to-aurora-postgresql-compatible"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lance una EC2 instancia. | Para obtener instrucciones sobre cómo lanzar una instancia, consulte [Lanzar su instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html). | Administrador de base de datos | 
| Instale la herramienta pgAdmin del cliente PostgreSQL. | Descargue e instale [pgAdmin](https://www.pgadmin.org/download/). | Administrador de base de datos | 
| Cree una política de IAM. | Cree una de política AWS Identity and Access Management (IAM) denominada `aurora-s3-access-pol` que conceda acceso al bucket de S3 en el que se almacenarán los archivos. Use el siguiente código, sustituyendo `<bucket-name>` por el nombre de su bucket de S3.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:DeleteObject",<br />                "s3:ListMultipartUploadParts",<br />                "s3:PutObject",<br />                "s3:ListBucket"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<bucket-name>/*",<br />                "arn:aws:s3:::<bucket-name>"<br />            ]<br />        }<br />    ]<br />}</pre> | Administrador de base de datos | 
| Cree un rol de IAM para la importación de objetos de Amazon S3 a Aurora compatible con PostgreSQL. | Usa el siguiente código para crear un rol de IAM denominado `aurora-s3-import-role` con la relación de [AssumeRole](https://docs.amazonaws.cn/en_us/STS/latest/APIReference/API_AssumeRole.html)confianza. `AssumeRole`permite a Aurora acceder a otros servicios de AWS en su nombre.<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow","Principal": {<br />        "Service": "rds.amazonaws.com"<br />      },"Action": "sts:AssumeRole"<br />    }<br />  ]<br />}<br /></pre> | Administrador de base de datos | 
| Asocie el rol de IAM al clúster. | Para asociar el rol de IAM al clúster de base de datos compatible con Aurora PostgreSQL, ejecute el siguiente comando de la CLI de AWS. Cambie `<Account-ID>` al ID de la cuenta de AWS que aloja la base de datos Aurora compatible con PostgreSQL. Esto permite que la base de datos Aurora compatible con PostgreSQL acceda al bucket de S3.<pre>aws rds add-role-to-db-cluster --db-cluster-identifier aurora-postgres-cl<br />--feature-name s3Import --role-arn arn:aws:iam::<Account-ID>:role/aurora-s3-import-role</pre> | Administrador de base de datos | 
| Cargue el ejemplo en Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.html) | Administrador de base de datos, propietario de la aplicación | 
| Implemente la función personalizada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.html) | Administrador de base de datos, propietario de la aplicación | 
| Ejecute la función personalizada para importar los datos en la base de datos. | Ejecute el siguiente comando SQL y sustituya los elementos entre paréntesis angulares por los valores adecuados.<pre>select load_file_into_clob('aws-s3-import-test'::text,'us-west-1'::text,'employee.salary.event.notification.email.vm'::text);</pre>Sustituya los elementos entre paréntesis angulares por los valores adecuados, como se muestra en el siguiente ejemplo, antes de ejecutar el comando.<pre>Select load_file_into_clob('aws-s3-import-test'::text,'us-west-1'::text,'employee.salary.event.notification.email.vm'::text);</pre>El comando carga el archivo desde Amazon S3 y regresa el resultado como `TEXT`. | Administrador de base de datos, propietario de la aplicación | 

### Método 2: Convertir el archivo de plantilla en un volcado hexadecimal en un sistema Linux local
<a name="approach-2-convert-the-template-file-into-a-hex-dump-in-a-local-linux-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Convierta el archivo de plantilla en un volcado hexadecimal. | La utilidad Hexdump muestra el contenido de los archivos binarios en formato hexadecimal, decimal, octal o ASCII. El comando `hexdump` forma parte del paquete `util-linux` y viene preinstalado en las distribuciones de Linux. El paquete RPM Hexdump también forma parte de Amazon Linux 2. (: Amazon Linux 2 está a punto de finalizar el soporte. Para obtener más información, consulte [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).)Para convertir el contenido del archivo en un volcado hexadecimal, ejecute el siguiente comando del intérprete de comandos.<pre>xxd -p </path/file.vm> | tr -d '\n' > </path/file.hex></pre>Sustituya la ruta y el archivo por los valores adecuados, como se muestra en el siguiente ejemplo.<pre>xxd -p employee.salary.event.notification.email.vm | tr -d '\n' > employee.salary.event.notification.email.vm.hex</pre> | Administrador de base de datos | 
| Cargue el archivo hexdump en el esquema de la base de datos. | Utilice los siguientes comandos para cargar el archivo hexdump en la base de datos Aurora compatible con PostgreSQL.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.html) | Administrador de base de datos | 

## Recursos relacionados
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-resources"></a>

**Referencias**
+ [Utilizar una base de datos PostgreSQL como objetivo para el servicio de migración de bases de datos de AWS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)
+ [Manual de migración de la base de datos de Oracle 19c a Amazon Aurora con compatibilidad con PostgreSQL (12.4)](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook-12.4.pdf)
+ [Crear políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)
+ [Asociación de un rol de IAM con un clúster de base de datos Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.html)
+ [pgAdmin](https://www.pgadmin.org/)

**Tutoriales**
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [Migración de Oracle a Amazon Aurora](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)

## Información adicional
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-additional"></a>

**Función personalizada load\$1file\$1into\$1clob**

```
CREATE OR REPLACE FUNCTION load_file_into_clob(
    s3_bucket_name text,
    s3_bucket_region text,
    file_name text,
    file_delimiter character DEFAULT '&'::bpchar,
    file_encoding text DEFAULT 'UTF8'::text)
    RETURNS text
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
    blob_data BYTEA;
    clob_data TEXT;
    l_table_name CHARACTER VARYING(50) := 'file_upload_hex';
    l_column_name CHARACTER VARYING(50) := 'template';
    l_return_text TEXT;
    l_option_text CHARACTER VARYING(150);
    l_sql_stmt CHARACTER VARYING(500);
        
BEGIN
    
    EXECUTE format ('CREATE TEMPORARY TABLE %I (%I text, id_serial serial)', l_table_name, l_column_name);
    
    l_sql_stmt := 'select ''(format text, delimiter ''''' || file_delimiter || ''''', encoding ''''' || file_encoding ||  ''''')'' ';
    
    EXECUTE FORMAT(l_sql_stmt)
    INTO l_option_text;
    
    EXECUTE FORMAT('SELECT aws_s3.table_import_from_s3($1,$2,$6, aws_commons.create_s3_uri($3,$4,$5))')
    INTO l_return_text
    USING l_table_name, l_column_name, s3_bucket_name, file_name,s3_bucket_region,l_option_text;
    
    EXECUTE format('select array_to_string(array_agg(%I order by id_serial),E''\n'') from %I', l_column_name, l_table_name)
    INTO clob_data;
    
    drop table file_upload_hex;
    
    RETURN clob_data;
END;
$BODY$;
```

**Plantilla de correo electrónico**

```
######################################################################################
##                                                                                    ##
##    johndoe Template Type: email                                                    ##
##    File: johndoe.salary.event.notification.email.vm                                ##
##    Author: Aimée Étienne    Date 1/10/2021                                                ##
##  Purpose: Email template used by EmplmanagerEJB to inform a johndoe they         ##
##        have been given access to a salary event                                    ##
##    Template Attributes:                                                             ##
##        invitedUser - PersonDetails object for the invited user                        ##
##        salaryEvent - OfferDetails object for the event the user was given access    ##
##        buyercollege - CompDetails object for the college owning the salary event    ##
##        salaryCoordinator - PersonDetails of the salary coordinator for the event    ##
##        idp - Identity Provider of the email recipient                                ##
##        httpWebRoot - HTTP address of the server                                    ##
##                                                                                    ##
######################################################################################

$!invitedUser.firstname $!invitedUser.lastname,

Ce courriel confirme que vous avez ete invite par $!salaryCoordinator.firstname $!salaryCoordinator.lastname de $buyercollege.collegeName a participer a l'evenement "$salaryEvent.offeringtitle" sur johndoeMaster Sourcing Intelligence.

Votre nom d'utilisateur est $!invitedUser.username

Veuillez suivre le lien ci-dessous pour acceder a l'evenement.

${httpWebRoot}/myDashboard.do?idp=$!{idp}

Si vous avez oublie votre mot de passe, utilisez le lien "Mot de passe oublie" situe sur l'ecran de connexion et entrez votre nom d'utilisateur ci-dessus.

Si vous avez des questions ou des preoccupations, nous vous invitons a communiquer avec le coordonnateur de l'evenement $!salaryCoordinator.firstname $!salaryCoordinator.lastname au ${salaryCoordinator.workphone}.

*******

johndoeMaster Sourcing Intelligence est une plateforme de soumission en ligne pour les equipements, les materiaux et les services.

Si vous avez des difficultes ou des questions, envoyez un courriel a support@johndoeMaster.com pour obtenir de l'aide.
```

# Migre Amazon RDS for Oracle a Amazon RDS for PostgreSQL con y utilizando y AWS SCT AWS DMS AWS CLI CloudFormation
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation"></a>

*Pinesh Singal, Amazon Web Services*

## Resumen
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-summary"></a>

Este patrón muestra cómo migrar una instancia de base de datos Amazon [Relational Database Service (Amazon RDS) para](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) Oracle de varios terabytes a una instancia de base de datos [Amazon RDS for PostgreSQL mediante](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) (). AWS Command Line Interface AWS CLI Este enfoque proporciona un tiempo de inactividad mínimo y no requiere iniciar sesión en la Consola de administración de AWS.

Este patrón ayuda a evitar las configuraciones manuales y las migraciones individuales mediante el uso de las consolas () y (). AWS Schema Conversion Tool AWS SCT AWS Database Migration Service AWS DMS La solución establece una configuración única para varias bases de datos y realiza las migraciones utilizando AWS SCT y AWS DMS en. AWS CLI

El patrón se utiliza AWS SCT para convertir los objetos del esquema de la base de datos de Amazon RDS for Oracle a Amazon RDS para PostgreSQL y, a continuación, AWS DMS se utiliza para migrar los datos. Al utilizar scripts de Python AWS CLI, se crean AWS SCT objetos y AWS DMS tareas con una CloudFormation plantilla.

## Requisitos previos y limitaciones
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ Una instancia existente de base de datos de Amazon RDS para Oracle.
+ Una instancia de base de datos de Amazon RDS para PostgreSQL. 
+ Una instancia de Amazon Elastic Compute Cloud (Amazon EC2) o una máquina local con sistema operativo Windows o Linux para ejecutar scripts.
+ Comprensión de los siguientes tipos de tareas de AWS DMS migración:`full-load`,`cdc`,`full-load-and-cdc`.  Para obtener más información, consulte [Crear una tarea](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html) en la AWS DMS documentación. 
+ AWS SCT instalado y configurado con controladores JDBC (Java Database Connectivity) para motores de bases de datos de Oracle y PostgreSQL. Para obtener más información, consulte [Instalación y configuración AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure) en la AWS SCT documentación. 
+ El `AWSSchemaConversionToolBatch.jar` archivo de la AWS SCT carpeta instalada, copiado en su directorio de trabajo.
+ El archivo `cli-sct-dms-cft.zip` (adjunto), descargado y extraído en el directorio de trabajo.
+ La versión más reciente AWS DMS del motor de instancias de replicación. Para obtener más información, consulte [Cómo crear una instancia de AWS DMS replicación](https://aws.amazon.com/premiumsupport/knowledge-center/create-aws-dms-replication-instance/) en la AWS Support documentación y las [notas de la AWS DMS versión](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReleaseNotes.html). 
+ AWS CLI versión 2, instalada y configurada con el identificador de la clave de acceso, la clave de acceso secreta y el Región de AWS nombre predeterminado de la EC2 instancia o el sistema operativo en el que se ejecutan los scripts. Para obtener más información, consulte [Instalación o actualización a la versión más reciente AWS CLI y Configuración de](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [los ajustes AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) de la AWS CLI documentación. 
+ Familiaridad con las CloudFormation plantillas. Para obtener más información, consulte [Cómo CloudFormation funciona](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-overview.html) en la CloudFormation documentación. 
+ Python versión 3, instalado y configurado en la EC2 instancia o el sistema operativo donde se ejecutan los scripts. Para obtener más información, consulte la [documentación de Python](https://docs.python.org/3/). 

**Limitaciones**
+ Los requisitos mínimos para la instancia de base de datos de Amazon RDS para Oracle son: 
  + Versiones 12c (12.1.0.2, 12.2.0.1), 18c (18.0.0.0) y 19c (19.0.0.0) de Oracle para las ediciones Enterprise, Standard, Standard One y Standard Two.
  + Aunque Amazon RDS es compatible con Oracle 18c (18.0.0.0), esta versión está en desuso porque Oracle ya no proporciona parches para 18c después de esa fecha. end-of-support Para obtener más información, consulte [Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.Deprecate.11204) en la documentación de Amazon RDS.
  + Amazon RDS para Oracle 11g ya no se admite.
+ Los requisitos mínimos para la instancia de base de datos de Amazon RDS para PostgreSQL son: 
  + Versiones 9 (9.5 y 9.6), 10.x, 11.x, 12.x y 13.x de PostgreSQL.

**Versiones de producto**
+ Instancia de Amazon RDS para Oracle DB versión 12.1.0.2 y posterior
+ Instancia de Amazon RDS para PostgreSQL DB versión 11.5 y posterior
+ AWS CLI versión 2 
+ La última versión de AWS SCT
+ La versión más reciente de Python 3

## Arquitectura
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-architecture"></a>

**Pila de tecnología de origen**
+ Amazon RDS para Oracle

**Pila de tecnología de destino**
+ Amazon RDS para PostgreSQL

**Arquitectura de origen y destino**

El siguiente diagrama muestra la migración de una instancia de base de datos de Amazon RDS for Oracle a una instancia de base de datos de Amazon RDS for PostgreSQL AWS DMS mediante scripts de Python.

![\[Migración de una instancia de base de datos de RDS para Oracle a una instancia de base de datos de RDS para PostgreSQL mediante AWS DMS y Python.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5e041494-2e64-4f09-b6ec-0e0cba3a4972/images/77022e13-46fb-4aa8-ab49-85b0ca4c317a.png)


 

En el diagrama, se muestra el siguiente flujo de trabajo de migración:

1. El script de Python se utiliza AWS SCT para conectarse a las instancias de base de datos de origen y destino.

1. El usuario comienza AWS SCT con el script de Python, convierte el código de Oracle en código PostgreSQL y lo ejecuta en la instancia de base de datos de destino.

1. El script de Python crea tareas de AWS DMS replicación para las instancias de base de datos de origen y destino.

1. El usuario despliega scripts de Python para iniciar las AWS DMS tareas y, a continuación, las detiene una vez finalizada la migración de datos.

**Automatización y escala**

Para automatizar esta migración, se pueden agregar parámetros y cambios relacionados con la seguridad al script de Python a fin de proporcionar funcionalidad adicional. 

## Tools (Herramientas)
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que le ayuda a interactuar con los servicios de AWS mediante comandos en el shell de la línea de comandos.
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y administrarlos a lo largo de su ciclo de vida en todas Cuentas de AWS las regiones. Este patrón convierte el archivo de entrada `.csv` en un archivo de entrada `.json` mediante un script de Python. El `.json` archivo se utiliza en AWS CLI los comandos para crear una CloudFormation pila que cree varias tareas de AWS DMS replicación con los nombres de los recursos de Amazon (ARNs), los tipos de migración, la configuración de las tareas y las asignaciones de tablas.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) le ayuda a migrar los almacenes de datos a una combinación de configuraciones locales y en la nube Nube de AWS o entre ellas. Este patrón se utiliza AWS DMS para crear, iniciar y detener tareas con un script de Python que se ejecuta en la línea de comandos y para crear la CloudFormation plantilla.
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) admite migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayoría del código personalizado a un formato compatible con la base de datos de destino. Este patrón requiere el `AWSSchemaConversionToolBatch.jar` archivo del directorio instalado AWS SCT .

**Código**

El archivo `cli-sct-dms-cft.zip` (adjunto) contiene el código fuente completo de este patrón.

## Epics
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-epics"></a>

### Configure AWS SCT y cree objetos de base de datos en el AWS CLI
<a name="configure-awssct-and-create-database-objects-in-the-cli"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS SCT para ejecutarse desde AWS CLI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html) | Administrador de base de datos | 
| Ejecutar el script de Python `run_aws_sct.py`. | Ejecute el script de Python `run_aws_sct.py` mediante el comando siguiente:`$ python run_aws_sct.py database_migration.txt`El script de Python convierte los objetos de la base de datos de Oracle a PostgreSQL y crea archivos SQL en formato PostgreSQL. El script también crea el archivo `Database migration assessment report` PDF, que proporciona recomendaciones detalladas y estadísticas de conversión para los objetos de la base de datos. | Administrador de base de datos | 
| Cree objetos en Amazon RDS para PostgreSQL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html) | Administrador de base de datos | 

### Configure y cree AWS DMS tareas mediante el comando AWS CLI y CloudFormation
<a name="configure-and-create-dms-tasks-by-using-the-cli-and-cfn"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia AWS DMS de replicación. | Inicie sesión en Consola de administración de AWS, abra la [AWS DMS consola](https://console.aws.amazon.com/dms/v2/) y cree una instancia de replicación que esté configurada de acuerdo con sus requisitos.Para obtener más información, consulte [Crear una instancia de replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html) en la AWS DMS documentación y [Cómo crear una instancia de AWS DMS replicación](https://aws.amazon.com/premiumsupport/knowledge-center/create-aws-dms-replication-instance/) en la AWS Support documentación. | Administrador de base de datos | 
| Cree el punto de conexión de origen. | En la AWS DMS consola, elija **Endpoints** y, a continuación, cree un punto final de origen para la base de datos Oracle según sus necesidades. El atributo de conexión adicional debe ser `numberDataTypeScale` con el valor `-2`.Para obtener más información, consulte [Creación de puntos finales de origen y destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html) en la AWS DMS documentación. | Administrador de base de datos | 
| Cree el punto de conexión de destino. | En la AWS DMS consola, elija **Endpoints** y, a continuación, cree un punto final de destino para la base de datos PostgreSQL según sus necesidades.  Para obtener más información, consulte [Crear puntos de enlace de origen y destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html) en la documentación. AWS DMS  | DevOps ingeniero | 
| Configure los detalles de la AWS DMS replicación para que se ejecuten desde AWS CLI. | Configure los puntos finales de AWS DMS origen y destino y los detalles de la replicación en el `dms-arn-list.txt` archivo con el ARN del punto final de origen, el ARN del punto final de destino y el ARN de la instancia de replicación mediante el siguiente formato:<pre>#sourceARN,targetARN,repARN<br />arn:aws:dms:us-east-1:123456789012:endpoint:EH7AINRUDZ5GOYIY6HVMXECMCQ<br />arn:aws:dms:us-east-1:123456789012:endpoint:HHJVUV57N7O3CQF4PJZKGIOYY5<br />arn:aws:dms:us-east-1:123456789012:rep:LL57N77AQQAHHJF4PJFHNEDZ5G</pre> | Administrador de base de datos | 
| Ejecute el script de `dms-create-task.py` Python para crear las AWS DMS tareas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html) | Administrador de base de datos | 
| Compruebe que AWS DMS las tareas estén listas. | En la AWS DMS consola, comprueba que AWS DMS las tareas estén en `Ready` estado en la sección **Estado**. | Administrador de base de datos | 

### Inicie y detenga las AWS DMS tareas mediante el AWS CLI
<a name="start-and-stop-the-dms-tasks-by-using-the-cli"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie las AWS DMS tareas. | Ejecute el script de Python `dms-start-task.py` mediante el comando siguiente:<pre>$ python dms-start-task.py start '<cdc-start-datetime>'</pre>La fecha y la hora de inicio deben estar en los formatos `'DD-MON-YYYY'` o `'YYYY-MM-DDTHH:MI:SS'` (por ejemplo, `'01-Dec-2019'` o `'2018-03-08T12:12:12'`).Puede revisar el estado de la AWS DMS tarea en la pestaña de **estadísticas de la tabla** de la página **Tareas** de la AWS DMS consola. | Administrador de base de datos | 
| Valide los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html)Para obtener más información, consulte la [validación de AWS DMS datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html) en la AWS DMS documentación. | Administrador de base de datos | 
| Detenga las AWS DMS tareas. | Ejecute el script de Python mediante el comando siguiente:<pre>$ python dms-start-task.py stop</pre>AWS DMS es posible que las tareas se detengan con un `failed` estado, en función del estado de la validación. Para obtener más información, consulte la siguiente sección. | Administrador de base de datos | 

## Resolución de problemas
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| AWS SCT las conexiones de prueba de origen y destino fallan. | Configure las versiones del controlador JDBC y las reglas de entrada del grupo de seguridad de VPC para que acepten el tráfico entrante. | 
| La prueba del punto de conexión de origen o destino no se puede ejecutar. | Compruebe si la configuración del punto de conexión y la instancia de replicación están en estado `Available`. Compruebe si el estado de la conexión del punto de conexión es `Successful`. Para obtener más información, consulte [Cómo solucionar los errores de conectividad de los puntos de conexión de los puntos de conexión de AWS DMS](https://aws.amazon.com/premiumsupport/knowledge-center/dms-endpoint-connectivity-failures/) en la AWS Support documentación. | 
| La carga completa no se puede ejecutar. | Compruebe si las bases de datos de origen y destino tienen tipos y tamaños de datos coincidentes. Para obtener más información, consulte la sección [Solución de problemas de las tareas de migración AWS DMS en](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Troubleshooting.html) la AWS DMS documentación. | 
| Se producen errores en la ejecución de la validación. | Compruebe si la tabla tiene una clave principal, ya que las tablas de claves no principales no están validadas.Si la tabla tiene una clave principal y errores, compruebe que el atributo de conexión adicional del punto de conexión de origen tenga `numberDataTypeScale=-2`.Para obtener más información, consulte la [configuración de los terminales cuando se utiliza Oracle como fuente](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.ConnectionAttrib) y la [solución de problemas](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html#CHAP_Validating.Troubleshooting) en la AWS DMS documentación. AWS DMS[OracleSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_OracleSettings.html) | 

## Recursos relacionados
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-resources"></a>
+ [Instalación y configuración AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure)
+ [Introduction to AWS DMS](https://www.youtube.com/watch?v=ouia1Sc5QGo) (video)
+ [Ejemplos de comandos de operación de CloudFormation pila para AWS CLI y PowerShell](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-cli.html)
+ [Navegar por la interfaz de usuario del AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
+ [Uso de una base de datos Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Conectarse a bases de datos de Oracle con AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)
+ [Uso de una base de datos PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) 
+ [Orígenes para la migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)
+ [Destinos para la migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html)
+ [formación de nubes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/index.html) (documentación)AWS CLI 
+ [create-stack](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/create-stack.html) (documentación)AWS CLI  
+ [dms (documentación](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/dms/index.html))AWS CLI  

## Conexiones
<a name="attachments-5e041494-2e64-4f09-b6ec-0e0cba3a4972"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/5e041494-2e64-4f09-b6ec-0e0cba3a4972/attachments/attachment.zip)

# Migración de Amazon RDS para Oracle a Amazon RDS para PostgreSQL en modo SSL mediante AWS DMS
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms"></a>

*Pinesh Singal, Amazon Web Services*

## Resumen
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-summary"></a>

Este patrón proporciona una guía para migrar una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle a una base de datos de Amazon RDS para PostgreSQL en la nube de Amazon Web Services (AWS). Para cifrar las conexiones entre las bases de datos, el patrón utiliza la autoridad de certificación (CA) y el modo SSL en Amazon RDS y AWS Database Migration Service (AWS DMS).

El patrón describe una estrategia de migración en línea con poco o ningún tiempo de inactividad para una base de datos de origen de Oracle de varios terabytes con un número elevado de transacciones. Para garantizar la seguridad de los datos, el patrón utiliza SSL al transferir los datos.

Este patrón utiliza la herramienta de conversión de esquemas de AWS (AWS SCT) para convertir el esquema de base de datos de Amazon RDS para Oracle en un esquema de Amazon RDS para PostgreSQL. A continuación, el patrón utiliza AWS DMS para migrar los datos de la base de datos de Amazon RDS para Oracle a la base de datos de Amazon RDS para PostgreSQL.

## Requisitos previos y limitaciones
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa 
+ Autoridad de certificación (CA) de bases de datos de Amazon RDS configurada únicamente con ***rds-ca-rsa2048-g1*** 
  + El certificado ***rds-ca-2019*** venció en agosto de 2024.
  + El certificado ***rds-ca-2015*** venció el 5 de marzo de 2020
+ AWS SCT
+ AWS DMS
+ pgAdmin
+ Herramientas de SQL (por ejemplo, SQL Developer o SQL\$1Plus)

**Limitaciones**
+ Base de datos Amazon RDS para Oracle: el requisito mínimo es para las versiones 19c de Oracle, para las ediciones Enterprise y Standard Two.
+ Base de datos Amazon RDS para PostgreSQL: el requisito mínimo es para PostgreSQL versión 12 y versiones posteriores (para las versiones 9.x y posteriores).

**Versiones de producto**
+ Instancia de base de datos de Amazon RDS para Oracle versión 12.1.0.2
+ Instancia de base de datos de Amazon RDS para PostgreSQL versión 11.5

## Arquitectura
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Una instancia de base de datos de Amazon RDS para Oracle con la versión 12.1.0.2.v18.

**Pila de tecnología de destino**
+ AWS DMS
+ Instancia de base de datos de Amazon RDS para PostgreSQL con la versión 11.5.

**Arquitectura de destino**

El diagrama siguiente muestra la arquitectura de migración de datos entre las bases de datos de Oracle (origen) y de PostgreSQL (destino). La arquitectura incluye lo siguiente:
+ Una nube privada virtual (VPC)
+ Una zona de disponibilidad
+ Una subred privada
+ Una base de datos de Amazon RDS para Oracle
+ Una instancia de replicación de AWS DMS
+ Una base de datos RDS para PostgreSQL

Para cifrar las conexiones de las bases de datos de origen y destino, los modos CA y SSL deben estar habilitados en Amazon RDS y AWS DMS.

![\[Movimiento de datos entre RDS para Oracle y AWS DMS, y entre AWS DMS y RDS para PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7098e2a3-b456-4e14-8881-c97145aef483/images/55b50ff7-1e6a-4ff0-9bcd-2fd419d5316a.png)


## Tools (Herramientas)
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-tools"></a>

**Servicios 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 Relational Database Service (Amazon RDS) para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle en la nube de AWS.
+ [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de PostgreSQL en la nube de AWS.
+ La [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, lo que incluye las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino.

**Otros servicios**
+ [pgAdmin](https://www.pgadmin.org/) es una herramienta de administración de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.

## Prácticas recomendadas
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-best-practices"></a>

Amazon RDS proporciona nuevos certificados de entidad de certificación como una práctica recomendada de seguridad de AWS. Para obtener información sobre los nuevos certificados y las regiones de AWS compatibles, consulte [Uso SSL/TLS para cifrar una conexión a una instancia de base de datos o un clúster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html).

Si su instancia de RDS tiene actualmente el certificado CA `rds-ca-2019` y desea actualizar a `rds-ca-rsa2048-g1`, siga las instrucciones que se indican en [Actualización del certificado de entidad de certificación modificando la instancia o el clúster de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-updating) o [Actualización del certificado de entidad de certificación mediante la aplicación de mantenimiento](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-maintenance-update).

## Epics
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-epics"></a>

### Configurar la instancia de Amazon RDS para Oracle
<a name="configure-the-amazon-rds-for-oracle-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la instancia de base de datos de Oracle. | Inicie sesión en la cuenta de AWS, abra la Consola de administración de AWS y navegue hasta la consola de Amazon RDS. En la consola, seleccione **Create database** (Crear base de datos) y, a continuación, **Oracle**. | AWS general, administrador de bases de datos | 
| Configure grupos de seguridad. | Configure grupos de seguridad entrantes y salientes. | AWS general | 
| Cree un grupo de opciones. | Cree un grupo de opciones en la misma VPC y grupo de seguridad que la base de datos Amazon RDS para Oracle. En **Option**, seleccione **SSL**. Para **Port**, seleccione **2484** (para conexiones SSL). | AWS general | 
| Configure los ajustes de las opciones. | Utilice los siguientes valores:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Modifique la instancia de base de datos de RDS para Oracle. | Establezca el certificado de CA como **rds-ca-rsa2048-g1**. En **Option group** (Grupo de opciones), adjunte el grupo de opciones creado anteriormente. | Administrador de base de datos, AWS general | 
| Confirme que la instancia de base de datos de RDS para Oracle esté disponible. | Compruebe que la instancia de base de datos Amazon RDS para Oracle esté activa y en ejecución y que se pueda acceder al esquema de la base de datos.Para conectarse a la base de datos de RDS for Oracle, utilice el comando `sqlplus` de la línea de comandos.<pre>$ sqlplus orcl/****@myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com:1521/ORCL<br />SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 15 18:11:07 2019<br />Copyright (c) 1982, 2016, Oracle.  All rights reserved.<br />Last Successful login time: Mon Dec 16 2019 23:17:31 +05:30<br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br />SQL></pre> | Administrador de base de datos | 
| Cree objetos y datos en la base de datos de RDS para Oracle. | Cree objetos e inserte datos en el esquema. | Administrador de base de datos | 

### Configurar la instancia de Amazon RDS para PostgreSQL
<a name="configure-the-amazon-rds-for-postgresql-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la base de datos de RDS para PostgreSQL. | En la página **Create database** (Crear base de datos) de la consola de Amazon RDS, seleccione **PostgreSQL** para crear una instancia de base de datos de Amazon RDS para PostgreSQL. | Administrador de base de datos, AWS general | 
| Configure grupos de seguridad. | Configure grupos de seguridad entrantes y salientes. | AWS general | 
| Cree un grupo de parámetros. | Si utiliza la versión 11.x de PostgreSQL, cree un grupo de parámetros para configurar los parámetros de SSL. En la versión 12 de PostgreSQL, el grupo de parámetros SSL está habilitado de forma predeterminada. | AWS general | 
| Edite los parámetros. | Cambie el parámetro `rds.force_ssl` por `1` (activado).De forma predeterminada, el parámetro `ssl` está definido como `1` (activado). Al establecer el `rds.force_ssl` parámetro en `1`, se obliga a todas las conexiones a conectarse únicamente a través del modo SSL. | AWS general | 
| Modifique la instancia de base de datos RDS para PostgreSQL. | **Establezca el certificado de CA como 2048-g1. rds-ca-rsa** Adjunte el grupo de parámetros predeterminado o el grupo de parámetros creado anteriormente, según la versión de PostgreSQL. | Administrador de base de datos, AWS general | 
| Confirme que la instancia de base de datos de RDS para PostgreSQL esté disponible. | Compruebe que la base de datos de Amazon RDS para PostgreSQL esté activa y en funcionamiento.El comando `psql` establece una conexión SSL con el conjunto `sslmode` desde la línea de comandos.Una opción es configurar `sslmode=1` en el grupo de parámetros y usar una conexión `psql` sin incluir el parámetro `sslmode` en el comando.El resultado siguiente muestra que la conexión SSL está establecida.<pre>$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser"<br />Password for user pguser:<br />psql (11.3, server 11.5)<br />SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)<br />Type "help" for help.<br />pgdb=></pre>Una segunda opción es configurar `sslmode=1` en el grupo de parámetros e incluir el parámetro `sslmode` en el comando `psql`.El resultado siguiente muestra que la conexión SSL está establecida.<pre>$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser sslmode=require"<br />Password for user pguser: <br />psql (11.3, server 11.5)<br />SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)<br />Type "help" for help.<br />pgdb=></pre> | Administrador de base de datos | 

### Configuración y ejecución de AWS SCT
<a name="configure-and-run-aws-sct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale AWS SCT. | Instale la versión más reciente de la aplicación AWS SCT. | AWS general | 
| Configure AWS SCT con controladores JDBC. | Descargue los controladores de conectividad de bases de datos Java (JDBC) para Oracle ([ojdbc8.jar](https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc8.jar)) y PostgreSQL ([postgresql-42.2.5.jar](https://jdbc.postgresql.org/download/postgresql-42.2.19.jar)).Para configurar los controladores en AWS SCT, seleccione **Settings** (Configuración), **Global settings** (Configuración global) y **Drivers** (Controladores). | AWS general | 
| Cree el proyecto AWS SCT. | Cree el proyecto y el informe de AWS SCT con Oracle como motor de base de datos de origen y Amazon RDS para PostgreSQL como motor de base de datos de destino:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Valide los objetos de la base de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | Administrador de base de datos, AWS general | 

### Configurar y ejecutar AWS SCT
<a name="configure-and-run-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Importe el certificado. | Descargue la [agrupación de certificados (PEM)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesAllRegions) para su región de AWS.El paquete contiene los certificados intermedio y raíz de `rds-ca-2019`. El paquete también contiene los certificados CA raíz `rds-ca-rsa2048-g1`, `rds-ca-rsa4096-g1` y `rds-ca-ecc384-g1`. El almacén de confianza de la aplicación necesita registrar únicamente el certificado CA raíz. | AWS general | 
| Cree el punto de conexión de origen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html)Para obtener información, consulte [Using an Oracle database as a source for AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) (Usar una base de datos de Oracle como origen para AWS Database Migration Service (AWS DMS)). | AWS general | 
| Cree el punto de conexión de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html)Para obtener más información, consulte [Using a PostgreSQL database as a target for AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) (Usar una base de datos de PostgreSQL como destino para AWS Database Migration Service (AWS DMS)). | AWS general | 
| Pruebe los puntos de conexión. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Cree tareas de migración. | Para crear una tarea de migración para la captura completa de datos y cambios (CDC) o para la validación de datos, siga los pasos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Planifique el ciclo de producción. | Confirme el tiempo de inactividad con las partes interesadas, como los propietarios de las aplicaciones, para ejecutar AWS DMS en los sistemas de producción. | Líder de migración | 
| Ejecute la tarea de migración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Valide los datos. | Revise los resultados y los datos de las tareas de migración en las bases de datos de Oracle de origen y PostgreSQL de destino:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | Administrador de base de datos | 
| Detenga la tarea de migración. | Tras completarse correctamente la validación de datos, detenga la tarea de migración. | AWS general | 

### Limpie los recursos
<a name="clean-up-the-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine las tareas de AWS DMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Elimine los puntos de conexión de AWS DMS. | Seleccione los puntos de conexión de origen y destino que creó, elija **Actions** y, a continuación **Delete** (Eliminar). | AWS general | 
| Elimine la instancia de replicación de AWS DMS. | Seleccione la instancia de replicación, elija **Actions** y, a continuación, **Delete** (Eliminar). | AWS general | 
| Elimine la base de datos de PostgreSQL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | AWS general | 
| Elimine la base de datos de Oracle. | En la consola de Amazon RDS, seleccione la instancia de la base de datos de Oracle, elija **Actions** y, a continuación, **Delete** (Eliminar). | AWS general | 

## Resolución de problemas
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Las conexiones de prueba de origen y destino de AWS SCT no funcionan. | Configure las versiones del controlador JDBC y las reglas de entrada del grupo de seguridad de VPC para que acepten el tráfico entrante. | 
| La prueba del punto de conexión de origen de Oracle no se puede ejecutar. | Compruebe la configuración del punto de conexión y si la instancia de replicación está disponible. | 
| Se produce un error en la ejecución a plena carga de la tarea de AWS DMS. | Compruebe si las bases de datos de origen y destino tienen tipos y tamaños de datos coincidentes. | 
| La tarea de migración de validación de AWS DMS devuelve errores. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.html) | 

## Recursos relacionados
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-resources"></a>

**Bases de datos**
+ [Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ [Amazon RDS para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)

**SSL DB connection** (Conexión de bases de datos SSL)
+ [Se utiliza SSL/TLS para cifrar una conexión a una instancia de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
  + [Using SSL with an RDS for Oracle DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Concepts.SSL.html) (Usar SSL con una instancia de base de datos de RDS para Oracle)
  + [Securing connections to RDS for PostgreSQL with SSL/TLS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.Security.html) (Proteger las conexiones a RDS para PostgreSQL con SSL/TLS)
  + [Descarga de agrupaciones de certificados para regiones de AWS específicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesAllRegions)
    + [Descarga del certificado raíz CA-2019](https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem) (que venció en agosto de 2024)
+ [Working with option groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html) (Trabajar con grupos de opciones)
  + [Adding options to Oracle DB instances](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.html) (Cómo añadir opciones a instancias de base de datos de Oracle)
  + [Oracle Secure Sockets Layer](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.SSL.html) (Capa de conexión segura de Oracle)
+ [Working with parameter groups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html) (Trabajar con grupos de parámetros)
+ [PostgreSQL sslmode connection parameter](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) (Parámetro de conexión sslmode de PostgreSQL)
+ [Using SSL from JDBC](https://jdbc.postgresql.org/documentation/ssl/) (Usar SSL desde JDBC)
+ [Rotación del certificado SSL/TLS ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
  + [Actualización del certificado de CA mediante la modificación de la instancia de base de datos o el clúster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-updating)
  + [Actualizar su certificado de CA mediante la aplicación del mantenimiento](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-maintenance-update)

**AWS SCT**
+ [Herramienta de conversión de esquemas de AWS](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [Guía del usuario de la herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Uso de la interfaz de usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
+ [Using Oracle Database as a source for AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html) (Utilizar la base de datos de Oracle como origen para AWS SCT)

**AWS DMS**
+ [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/)
+ [AWS Database Migration Service User Guide](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) (Guía del usuario de AWS Database Migration Service)
  + [Uso de una base de datos de Oracle como origen de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
  + [Using a PostgreSQL database as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) (Utilizar una base de datos de PostgreSQL como destino para AWS DMS)
+ [Using SSL with AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.SSL.html) (Usar SSL con AWS Database Migration Service (AWS DMS))
+ [Migración de aplicaciones que ejecutan bases de datos relacionales a AWS](https://d1.awsstatic.com/whitepapers/Migration/migrating-applications-to-aws.pdf)

## Información adicional
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-additional"></a>

Los certificados `rds-ca-2019` de la entidad de certificación de Amazon RDS vencieron en agosto de 2024. Si utiliza o tiene pensado utilizar SSL o TLS con verificación de certificados para conectarse a las instancias de base de datos de RDS o clústeres de base de datos multi-AZ, considere la posibilidad de utilizar uno de los certificados CA nuevos: `rds-ca-rsa2048-g1`, `rds-ca-rsa4096-g1` o `rds-ca-ecc384-g1`.

# Migración de los paquetes pragma SERIALLY\$1REUTILIZABLE de Oracle a PostgreSQL
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql"></a>

*Vinay Paladi, Amazon Web Services*

## Resumen
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-summary"></a>

Este patrón proporciona un step-by-step enfoque para migrar paquetes de Oracle que se definen como pragma SERIALLY\$1REUTILIZABLE a PostgreSQL en Amazon Web Services (AWS). Este enfoque mantiene la funcionalidad del pragma SERIALLY\$1REUTILIZABLE.

PostgreSQL no admite el concepto de paquetes ni el pragma SERIALLY\$1REUTILIZABLE. Para obtener una funcionalidad similar en PostgreSQL, puede crear esquemas para paquetes e implementar todos los objetos relacionados (como funciones, procedimientos y tipos) dentro de los esquemas. Para lograr la funcionalidad del pragma SERIALLY\$1REUTILIZABLE, el script de función contenedora de ejemplo que se proporciona en este patrón utiliza un paquete de extensiones de [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html).

Para obtener más información, consulte [SERIALLY\$1REUSABLE Pragma](https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems046.htm) en la documentación de Oracle.

## Requisitos previos y limitaciones
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ La versión más reciente de AWS SCT y los controladores necesarios
+ Una base de datos de Edición compatible con Amazon Aurora PostgreSQL o una Amazon Relational Database Service (Amazon RDS) para PostgreSQL 

**Versiones de producto**
+ Oracle Database versión 10g y posteriores

## Arquitectura
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-architecture"></a>

**Pila de tecnología de origen**
+ Oracle Database en las instalaciones

**Pila de tecnología de destino**
+ [Aurora compatible con PostgreSQL](https://aws.amazon.com/rds/aurora/details/postgresql-details/) o Amazon RDS para PostgreSQL
+ AWS SCT

**Arquitectura de migración**

![\[Datos de bases de datos de Oracle en las instalaciones que se transfieren a AWS mediante AWS SCT, archivos .sql o conversión manual a PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/fe3c45d2-6ea4-43b5-adb1-18f068f126b9/images/2dc90708-e300-4251-9d12-de97b6588b72.png)


## Tools (Herramientas)
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-tools"></a>

**Servicios de AWS**
+ La [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, lo que incluye las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino.
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de PostgreSQL en la nube de AWS.

**Otras herramientas**
+ [pgAdmin](https://www.pgadmin.org/) es una herramienta de gestión de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.

## Epics
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-epics"></a>

### Migración del paquete de Oracle mediante AWS SCT
<a name="migrate-the-oracle-package-by-using-aws-sct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS SCT. | Configure la conectividad de AWS SCT con la base de datos de origen. Para obtener más información, consulte [Uso de una base de datos de Oracle como origen para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html). | Administrador de base de datos, desarrollador | 
| Convierta el script.  | Utilice AWS SCT para convertir el paquete de Oracle seleccionando la base de datos de destino como compatible con Aurora PostgreSQL. | Administrador de base de datos, desarrollador | 
| Guarde los archivos.sql. | Antes de guardar el archivo.sql, modifique la opción **Configuración del proyecto** en AWS SCT a **Archivo único por etapa**. AWS SCT separará el archivo.sql en varios archivos.sql según el tipo de objeto. | Administrador de base de datos, desarrollador | 
| Cambie el código. | Abra la función `init` generada por AWS SCT y cámbiela como se muestra en el ejemplo de la sección *Información adicional*. Añadirá una variable para lograr la funcionalidad de `pg_serialize = 0`. | Administrador de base de datos, desarrollador | 
| Pruebe la conversión. | Implemente la función `init` en la base de datos compatible con Aurora PostgreSQL y pruebe los resultados. | Administrador de base de datos, desarrollador | 

## Recursos relacionados
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-resources"></a>
+ [Herramienta de conversión de esquemas de AWS](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [Amazon RDS](https://aws.amazon.com/rds/)
+ [Características de Amazon Aurora](https://aws.amazon.com/rds/aurora/postgresql-features/)
+ [SERIALLY\$1REUTILIZABLE Pragma](https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/seriallyreusable_pragma.htm#LNPLS01346)

## Información adicional
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-additional"></a>

```
Source Oracle Code:

CREATE OR REPLACE PACKAGE test_pkg_var
IS
PRAGMA SERIALLY_REUSABLE;
PROCEDURE function_1
 (test_id number);
PROCEDURE function_2
 (test_id number
 );
END;

CREATE OR REPLACE PACKAGE BODY test_pkg_var
IS
PRAGMA SERIALLY_REUSABLE;
v_char VARCHAR2(20) := 'shared.airline';
v_num number := 123;

PROCEDURE function_1(test_id number)
IS
begin
dbms_output.put_line( 'v_char-'|| v_char);
dbms_output.put_line( 'v_num-'||v_num);
v_char:='test1';
function_2(0);
END;

PROCEDURE function_2(test_id number)
is
begin
dbms_output.put_line( 'v_char-'|| v_char);
dbms_output.put_line( 'v_num-'||v_num);
END;
END test_pkg_var;

Calling the above functions

set serveroutput on


EXEC test_pkg_var.function_1(1);


EXEC test_pkg_var.function_2(1);


Target Postgresql Code:


CREATE SCHEMA test_pkg_var;

CREATE OR REPLACE FUNCTION test_pkg_var.init(pg_serialize IN INTEGER DEFAULT 0)

RETURNS void
AS
$BODY$

DECLARE

BEGIN

if aws_oracle_ext.is_package_initialized( 'test_pkg_var' ) AND pg_serialize = 0

then

return;

end if;

PERFORM aws_oracle_ext.set_package_initialized( 'test_pkg_var' );

PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'shared.airline.basecurrency'::CHARACTER

VARYING(100));

PERFORM aws_oracle_ext.set_package_variable('test_pkg_var', 'v_num', 123::integer);

END;

$BODY$

LANGUAGE plpgsql;


CREATE OR REPLACE FUNCTION test_pkg_var.function_1(pg_serialize int default 1)

RETURNS void
AS

$BODY$
DECLARE

BEGIN

PERFORM test_pkg_var.init(pg_serialize);

raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char');

raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num');

PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'test1'::varchar);

PERFORM test_pkg_var.function_2(0);
END;

$BODY$
LANGUAGE plpgsql;


CREATE OR REPLACE FUNCTION test_pkg_var.function_2(IN pg_serialize integer default 1)

RETURNS void

AS

$BODY$

DECLARE

BEGIN

PERFORM test_pkg_var.init(pg_serialize);

raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char');

raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num');

END;
$BODY$
LANGUAGE plpgsql;


Calling the above functions

select test_pkg_var.function_1()

 select test_pkg_var.function_2()
```

# Migración de tablas externas de Oracle a Amazon Aurora compatible con PostgreSQL
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible"></a>

*Anuradha Chintha y Rakesh Raghav, Amazon Web Services*

## Resumen
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-summary"></a>

Las tablas externas permiten a Oracle consultar los datos almacenados fuera de la base de datos en archivos planos. Puede usar el controlador ORACLE\$1LOADER para acceder a cualquier dato almacenado en cualquier formato que pueda cargar la utilidad SQL\$1Loader. No puede usar el Lenguaje de Manipulación de Datos (DML) en tablas externas, pero puede usar las tablas externas para operaciones de consulta, unión y clasificación.

Amazon Aurora compatible con PostgreSQL no proporciona una funcionalidad similar a las tablas externas de Oracle. En su lugar, debe adoptar la modernización para desarrollar una solución escalable que cumpla con los requisitos funcionales y sea eficiente.

Este patrón proporciona los pasos para migrar diferentes tipos de tablas externas de Oracle a la edición de Aurora compatible con PostgreSQL en la nube de Amazon Web Services (AWS) mediante la extensión `aws_s3`.

Recomendamos probar exhaustivamente esta solución antes de implementarla en un entorno de producción.

## Requisitos previos y limitaciones
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Interfaz de la línea de comandos de AWS (AWS CLI)
+ Una instancia disponible de base de datos Aurora compatible con PostgreSQL.
+ Una base de datos de Oracle en las instalaciones con una tabla externa
+ API de pg.Client
+ Archivos de datos 

**Limitaciones**
+ Este patrón no proporciona la funcionalidad necesaria para sustituir a las tablas externas de Oracle. Sin embargo, los pasos y el código de muestra se pueden mejorar aún más para lograr sus objetivos de modernización de la base de datos.
+ Los archivos no deben contener el carácter que se emplea como delimitador en las funciones de exportación e importación de `aws_s3`.

**Versiones de producto**
+ Para realizar la importación de Amazon S3 en RDS para PostgreSQL, la base de datos debe ejecutar la versión PostgreSQL 10.7 o posterior.

## Arquitectura
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-architecture"></a>

**Pila de tecnología de origen**
+ Oracle

**Arquitectura de origen **

![\[Diagrama de los archivos de datos que van a un directorio y una tabla de la base de datos de Oracle en las instalaciones.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/555e69af-36fc-4ff5-b66c-af22b4cf262a/images/3fbc507d-b0fa-4e05-b999-043dc7327ed7.png)


**Pila de tecnología de destino**
+ Amazon Aurora compatible con PostgreSQL
+ Amazon CloudWatch
+ AWS Lambda
+ AWS Secrets Manager
+ Amazon Simple Notification Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)

**Arquitectura de destino**

En el siguiente diagrama se muestra una representación de alto nivel de la solución.

![\[La descripción se encuentra después del diagrama.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/555e69af-36fc-4ff5-b66c-af22b4cf262a/images/5421540e-d2e3-4361-89cc-d8415fcb21fd.png)


1. Los archivos se cargan en el bucket de S3.

1. Se inicia la función de Lambda.

1. La función de Lambda inicia la llamada a la función de base de datos.

1. Secrets Manager proporciona las credenciales para acceder a la base de datos.

1. Según la función de la base de datos, se crea una alarma de SNS.

**Automatizar y escalar**

Cualquier adición o cambio en las tablas externas se puede gestionar mediante el mantenimiento de los metadatos.

## Tools (Herramientas)
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-tools"></a>
+ [Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html): la edición de Amazon Aurora compatible con PostgreSQL es un motor de bases de datos relacionales, completamente administrado, compatible con PostgreSQL y conforme a ACID, que combina la velocidad y la fiabilidad de las bases de datos comerciales de tecnología avanzada con la rentabilidad de las bases de datos de código abierto.
+ [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 unificada para administrar los servicios de AWS. Con una única herramienta para descargar y configurar, puede controlar varios servicios de AWS desde la línea de comando y automatizarlos mediante scripts.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html): Amazon CloudWatch supervisa los recursos y la utilización de Amazon S3.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): AWS Lambda es un servicio de computación sin servidor que permite ejecutar código sin aprovisionar ni administrar servidores, crear una lógica de escalado de clústeres adaptada a las cargas de trabajo, mantener las integraciones de eventos o gestionar los tiempos de ejecución. En este patrón, Lambda ejecuta la función de base de datos cada vez que se carga un archivo en Amazon S3.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html): AWS Secrets Manager es un servicio de almacenamiento y recuperación de credenciales. Con Secrets Manager puede reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): Amazon Simple Storage Service (Amazon S3) proporciona una capa de almacenamiento que permite recibir y almacenar archivos para su consumo y transmisión hacia y desde el clúster de Aurora compatible con PostgreSQL.
+ [aws\$1s3](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#aws_s3.table_import_from_s3): la extensión `aws_s3` integra Amazon S3 y Aurora compatible con PostgreSQL.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): Amazon Simple Notification Service (Amazon SNS) coordina y administra la entrega o el envío de mensajes entre publicadores y clientes. En este patrón, Amazon SNS se usa para enviar notificaciones.

**Código**

Siempre que se ubique un archivo en el bucket de S3, se debe crear una función de base de datos a la que llamar desde la aplicación de procesamiento o la función de Lambda. Para obtener más información, consulte el código (adjunto).

## Epics
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-epics"></a>

### Cree un archivo externo
<a name="create-an-external-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Añada un archivo externo a la base de datos de origen. | Cree un archivo externo y trasládelo al directorio `oracle`. | Administrador de base de datos | 

### Configure el objetivo (Aurora compatible con PostgreSQL)
<a name="configure-the-target-aurora-postgresql-compatible"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una base de datos de Aurora PostgreSQL. | Cree una instancia de base de datos en su clúster de Amazon Aurora compatible con PostgreSQL. | Administrador de base de datos | 
| Cree un esquema, una extensión aws\$1s3 y tablas. | Use el código que aparece en la sección `ext_tbl_scripts` de *Información adicional*. Las tablas incluyen tablas reales, tablas de ensayo, tablas de errores y registros y una metatabla. | Administrador de base de datos, desarrollador | 
| Cree la función de base de datos. | Para crear la función de base de datos, use el código que aparece bajo la función `load_external_table_latest` en la sección de *Información adicional*. | Administrador de base de datos, desarrollador | 

### Creación y configuración de la función de Lambda
<a name="create-and-configure-the-lambda-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un rol. | Cree un rol con permisos para acceder a Amazon S3 y a Amazon Relational Database Service (Amazon RDS). Esta función se asignará a Lambda para ejecutar el patrón. | Administrador de base de datos | 
| Crear la función de Lambda. | Cree una función de Lambda que lea el nombre del archivo de Amazon S3 (por ejemplo, `file_key = info.get('object', {}).get('key')`) y llame a la función de base de datos (por ejemplo, `curs.callproc("load_external_tables", [file_key])`) con el nombre del archivo como parámetro de entrada.Según el resultado de la llamada a la función, se iniciará una notificación de SNS (por ejemplo, `client.publish(TopicArn='arn:',Message='fileloadsuccess',Subject='fileloadsuccess')`).En función de las necesidades de su empresa, puede crear una función de Lambda con código adicional si es necesario. Para más información, consulte la [documentación de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html). | Administrador de base de datos | 
| Configure un desencadenante de eventos en el bucket de S3. | Configure un mecanismo para llamar a la función de Lambda en todos los eventos de creación de objetos en el bucket de S3. | Administrador de base de datos | 
| Cree un secreto. | Cree un nombre secreto para las credenciales de la base de datos mediante Secrets Manager. Pase el secreto a la función de Lambda. | Administrador de base de datos | 
| Cargue los archivos de soporte de Lambda. | Cargue un archivo .zip que contenga los paquetes de soporte de Lambda y el script de Python adjunto para conectar a Aurora compatible con PostgreSQL. El código Python llamará a la función que creó en la base de datos. | Administrador de base de datos | 
| Cree un tema de SNS. | Cree un tema de SNS para enviar un correo si la carga de datos se ha realizado correctamente o no. | Administrador de base de datos | 

### Cómo añadir integración con Amazon S3
<a name="add-integration-with-amazon-s3"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | En la consola de Amazon S3, cree un bucket de S3 con un nombre único que no contenga barras diagonales en el inicio. Un nombre de bucket de S3 es globalmente único y todas las cuentas de AWS comparten el espacio de nombres. | Administrador de base de datos | 
| Cree políticas de IAM . | Para crear las políticas de AWS Identity and Access Management (IAM), use el código que se describe en la sección `s3bucketpolicy_for_import` de *Información adicional*. | Administrador de base de datos | 
| Cree roles. | Cree dos roles para Aurora compatible con PostgreSQL, uno para Importar y otro para Exportar. Asigne las políticas correspondientes a los roles. | Administrador de base de datos | 
| Adjunte los roles al clúster de Aurora compatible con PostgreSQL. | En **Administrar roles**, adjunte los roles de Importar y Exportar al clúster de Aurora PostgreSQL. | Administrador de base de datos | 
| Cree objetos de apoyo para Aurora compatible con PostgreSQL. | Para las tablas de scripts, utilice el código de `ext_tbl_scripts` en la sección *Información adicional*.Para la función personalizada, utilice el código de `load_external_Table_latest` en la sección *Información adicional*. | Administrador de base de datos | 

### Procese un archivo de prueba
<a name="process-a-test-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargar un archivo en el bucket de S3. | Para cargar un archivo de prueba en el bucket de S3, use la consola o ejecute el siguiente comando en la CLI de AWS. <pre>aws s3 cp /Users/Desktop/ukpost/exttbl/"testing files"/aps s3://s3importtest/inputext/aps</pre>En cuanto se carga el archivo, el evento de bucket inicia la función de Lambda, que ejecuta la función Aurora compatible con PostgreSQL. | Administrador de base de datos | 
| Compruebe los datos y los archivos de registro y error. | La función de Aurora compatible con PostgreSQL carga los archivos en la tabla principal y crea los archivos `.log` y `.bad` en el bucket de S3. | Administrador de base de datos | 
| Supervise la solución. | En la CloudWatch consola de Amazon, supervise la función Lambda. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-resources"></a>
+ [Integración de Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [Trabajar con la versión de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)
+ [AWS Lambda](https://aws.amazon.com/lambda/)
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)
+ [Configuración de notificaciones de Amazon SNS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)

## Información adicional
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-additional"></a>

**ext\$1table\$1scripts**

```
CREATE EXTENSION aws_s3 CASCADE;
CREATE TABLE IF NOT EXISTS meta_EXTERNAL_TABLE
(
    table_name_stg character varying(100) ,
    table_name character varying(100)  ,
    col_list character varying(1000)  ,
    data_type character varying(100)  ,
    col_order numeric,
    start_pos numeric,
    end_pos numeric,
    no_position character varying(100)  ,
    date_mask character varying(100)  ,
    delimeter character(1)  ,
    directory character varying(100)  ,
    file_name character varying(100)  ,
    header_exist character varying(5)
);
CREATE TABLE IF NOT EXISTS ext_tbl_stg
(
    col1 text
);
CREATE TABLE IF NOT EXISTS error_table
(
    error_details text,
    file_name character varying(100),
    processed_time timestamp without time zone
);
CREATE TABLE IF NOT EXISTS log_table
(
    file_name character varying(50) COLLATE pg_catalog."default",
    processed_date timestamp without time zone,
    tot_rec_count numeric,
    proc_rec_count numeric,
    error_rec_count numeric
);
sample insert scripts of meta data:
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'source_filename', 'character varying', 2, 8, 27, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'record_type_identifier', 'character varying', 3, 28, 30, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'fad_code', 'numeric', 4, 31, 36, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'session_sequence_number', 'numeric', 5, 37, 42, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'transaction_sequence_number', 'numeric', 6, 43, 48, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
```

**s3bucketpolicy\$1for import**

```
---Import role policy
--Create an IAM policy to allow, Get,  and list actions on S3 bucket
 {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "s3import",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::s3importtest",
                "arn:aws:s3:::s3importtest/*"
            ]
        }
    ]
}
--Export Role policy
--Create an IAM policy to allow, put,  and list actions on S3 bucket
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "s3export",
            "Action": [
                "S3:PutObject",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::s3importtest/*"
            ]
        }
    ]
}
```

**Ejemplo de función de base de datos load\$1external\$1tables\$1latest**

```
CREATE OR REPLACE FUNCTION public.load_external_tables(pi_filename text)
 RETURNS character varying
 LANGUAGE plpgsql
AS $function$
/* Loading data from S3 bucket into a APG table */
DECLARE
 v_final_sql TEXT;
 pi_ext_table TEXT;
 r refCURSOR;
 v_sqlerrm text;
 v_chunk numeric;
 i integer;
 v_col_list TEXT;
 v_postion_list CHARACTER VARYING(1000);
 v_len  integer;
 v_delim varchar;
 v_file_name CHARACTER VARYING(1000);
 v_directory CHARACTER VARYING(1000);
 v_table_name_stg CHARACTER VARYING(1000);
 v_sql_col TEXT;
 v_sql TEXT;
 v_sql1 TEXT;
 v_sql2 TEXT;
 v_sql3 TEXT;
 v_cnt integer;
 v_sql_dynamic TEXT;
 v_sql_ins TEXT;
 proc_rec_COUNT integer;
 error_rec_COUNT integer;
 tot_rec_COUNT integer;
 v_rec_val integer;
 rec record;
 v_col_cnt integer;
 kv record;
 v_val text;
 v_header text;
 j integer;
 ERCODE VARCHAR(5);
 v_region text;
 cr CURSOR FOR
 SELECT distinct DELIMETER,
   FILE_NAME,
   DIRECTORY
 FROM  meta_EXTERNAL_TABLE
 WHERE table_name = pi_ext_table
   AND DELIMETER IS NOT NULL;


 cr1 CURSOR FOR
   SELECT   col_list,
   data_type,
   start_pos,
   END_pos,
   concat_ws('',' ',TABLE_NAME_STG) as TABLE_NAME_STG,
   no_position,date_mask
 FROM  meta_EXTERNAL_TABLE
 WHERE table_name = pi_ext_table
 order by col_order asc;
cr2 cursor FOR
SELECT  distinct table_name,table_name_stg
   FROM  meta_EXTERNAL_TABLE
   WHERE upper(file_name) = upper(pi_filename);


BEGIN
 -- PERFORM utl_file_utility.init();
   v_region := 'us-east-1';
   /* find tab details from file name */


   --DELETE FROM  ERROR_TABLE WHERE file_name= pi_filename;
  -- DELETE FROM  log_table WHERE file_name= pi_filename;


 BEGIN


   SELECT distinct table_name,table_name_stg INTO strict pi_ext_table,v_table_name_stg
   FROM  meta_EXTERNAL_TABLE
   WHERE upper(file_name) = upper(pi_filename);
 EXCEPTION
   WHEN NO_DATA_FOUND THEN
    raise notice 'error 1,%',sqlerrm;
    pi_ext_table := null;
    v_table_name_stg := null;
      RAISE USING errcode = 'NTFIP' ;
    when others then
        raise notice 'error others,%',sqlerrm;
 END;
 j :=1 ;
  
for rec in  cr2
 LOOP




  pi_ext_table     := rec.table_name;
  v_table_name_stg := rec.table_name_stg;
  v_col_list := null;


 IF pi_ext_table IS NOT NULL
  THEN
    --EXECUTE concat_ws('','truncate table  ' ,pi_ext_table) ;
   EXECUTE concat_ws('','truncate table  ' ,v_table_name_stg) ;




       SELECT distinct DELIMETER INTO STRICT v_delim
       FROM  meta_EXTERNAL_TABLE
       WHERE table_name = pi_ext_table;


       IF v_delim IS NOT NULL THEN
     SELECT distinct DELIMETER,
       FILE_NAME,
       DIRECTORY ,
       concat_ws('',' ',table_name_stg),
       case  header_exist when 'YES' then 'CSV HEADER' else 'CSV' end as header_exist
     INTO STRICT v_delim,v_file_name,v_directory,v_table_name_stg,v_header
     FROM  meta_EXTERNAL_TABLE
     WHERE table_name = pi_ext_table
       AND DELIMETER IS NOT NULL;


     IF    upper(v_delim) = 'CSV'
     THEN
       v_sql := concat_ws('','SELECT aws_s3.table_import_FROM_s3 ( ''',
       v_table_name_stg,''','''',
       ''DELIMITER '''','''' CSV HEADER QUOTE ''''"'''''', aws_commons.create_s3_uri ( ''',
       v_directory,''',''',v_file_name,''', ''',v_region,'''))');
       ELSE
       v_sql := concat_ws('','SELECT aws_s3.table_import_FROM_s3(''',
           v_table_name_stg, ''','''', ''DELIMITER AS ''''^''''',''',','
          aws_commons.create_s3_uri
           ( ''',v_directory, ''',''',
           v_file_name, ''',',
            '''',v_region,''')
          )');
          raise notice 'v_sql , %',v_sql;
       begin
        EXECUTE  v_sql;
       EXCEPTION
         WHEN OTHERS THEN
           raise notice 'error 1';
         RAISE USING errcode = 'S3IMP' ;
       END;


       select count(col_list) INTO v_col_cnt
       from  meta_EXTERNAL_TABLE where table_name = pi_ext_table;






        -- raise notice 'v_sql 2, %',concat_ws('','update ',v_table_name_stg, ' set col1 = col1||''',v_delim,'''');


       execute concat_ws('','update ',v_table_name_stg, ' set col1 = col1||''',v_delim,'''');




       i :=1;
       FOR rec in cr1
       loop
       v_sql1 := concat_ws('',v_sql1,'split_part(col1,''',v_delim,''',', i,')',' as ',rec.col_list,',');
       v_sql2 := concat_ws('',v_sql2,rec.col_list,',');
   --    v_sql3 := concat_ws('',v_sql3,'rec.',rec.col_list,'::',rec.data_type,',');


       case
         WHEN upper(rec.data_type) = 'NUMERIC'
         THEN v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                 coalesce((trim(split_part(col1,''',v_delim,''',', i,')))::NUMERIC,0)::',rec.data_type,' END as ',rec.col_list,',') ;
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask = 'YYYYMMDD'
         THEN v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(split_part(col1,''',v_delim,''',', i,'))),''99990101''),''YYYYMMDD'')::',rec.data_type,' END as ',rec.col_list,',');
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask =  'MM/DD/YYYY hh24:mi:ss'
         THEN v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(split_part(col1,''',v_delim,''',', i,'))),''01/01/9999 0024:00:00''),''MM/DD/YYYY hh24:mi:ss'')::',rec.data_type,' END as ',rec.col_list,',');
          ELSE
        v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                  coalesce((trim(split_part(col1,''',v_delim,''',', i,'))),'''')::',rec.data_type,' END as ',rec.col_list,',') ;
       END case;


       i :=i+1;
       end loop;


         -- raise notice 'v_sql 3, %',v_sql3;


       SELECT trim(trailing ' ' FROM v_sql1) INTO v_sql1;
       SELECT trim(trailing ',' FROM v_sql1) INTO v_sql1;


       SELECT trim(trailing ' ' FROM v_sql2) INTO v_sql2;
       SELECT trim(trailing ',' FROM v_sql2) INTO v_sql2;


       SELECT trim(trailing ' ' FROM v_sql3) INTO v_sql3;
       SELECT trim(trailing ',' FROM v_sql3) INTO v_sql3;


       END IF;
      raise notice 'v_delim , %',v_delim;


     EXECUTE concat_ws('','SELECT COUNT(*) FROM ',v_table_name_stg)  INTO v_cnt;


    raise notice 'stg cnt , %',v_cnt;


    /* if upper(v_delim) = 'CSV' then
       v_sql_ins := concat_ws('', ' SELECT * from ' ,v_table_name_stg );
     else
      -- v_sql_ins := concat_ws('',' SELECT ',v_sql1,'  from (select col1 from ' ,v_table_name_stg , ')sub ');
       v_sql_ins := concat_ws('',' SELECT ',v_sql3,'  from (select col1 from ' ,v_table_name_stg , ')sub ');
       END IF;*/


v_chunk := v_cnt/100;




for i in 1..101
loop
     BEGIN
    -- raise notice 'v_sql , %',v_sql;
       -- raise notice 'Chunk number , %',i;
       v_sql_ins := concat_ws('',' SELECT ',v_sql3,'  from (select col1 from ' ,v_table_name_stg , ' offset ',v_chunk*(i-1), ' limit ',v_chunk,') sub ');


     v_sql := concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins);
     -- raise notice 'select statement , %',v_sql_ins;
          -- v_sql := null;
     -- EXECUTE concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins, 'offset ',v_chunk*(i-1), ' limit ',v_chunk );
     --v_sql := concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins );


     -- raise notice 'insert statement , %',v_sql;


    raise NOTICE 'CHUNK START %',v_chunk*(i-1);
   raise NOTICE 'CHUNK END %',v_chunk;


     EXECUTE v_sql;


  EXCEPTION
       WHEN OTHERS THEN
       -- v_sql_ins := concat_ws('',' SELECT ',v_sql1, '  from (select col1 from ' ,v_table_name_stg , ' )sub ');
         -- raise notice 'Chunk number for cursor , %',i;


    raise NOTICE 'Cursor - CHUNK START %',v_chunk*(i-1);
   raise NOTICE 'Cursor -  CHUNK END %',v_chunk;
         v_sql_ins := concat_ws('',' SELECT ',v_sql3, '  from (select col1 from ' ,v_table_name_stg , ' )sub ');


         v_final_sql := REPLACE (v_sql_ins, ''''::text, ''''''::text);
        -- raise notice 'v_final_sql %',v_final_sql;
         v_sql :=concat_ws('','do $a$ declare  r refcursor;v_sql text; i numeric;v_conname text;  v_typ  ',pi_ext_table,'[]; v_rec  ','record',';
           begin






           open r for execute ''select col1 from ',v_table_name_stg ,'  offset ',v_chunk*(i-1), ' limit ',v_chunk,''';
           loop
           begin
           fetch r into v_rec;
           EXIT WHEN NOT FOUND;




           v_sql := concat_ws('''',''insert into  ',pi_ext_table,' SELECT ',REPLACE (v_sql3, ''''::text, ''''''::text) , '  from ( select '''''',v_rec.col1,'''''' as col1) v'');
            execute v_sql;


           exception
            when others then
          v_sql := ''INSERT INTO  ERROR_TABLE VALUES (concat_ws('''''''',''''Error Name: '''',$$''||SQLERRM||''$$,''''Error State: '''',''''''||SQLSTATE||'''''',''''record : '''',$$''||v_rec.col1||''$$),'''''||pi_filename||''''',now())'';


               execute v_sql;
             continue;
           end ;
           end loop;
           close r;
           exception
           when others then
         raise;
           end ; $a$');
      -- raise notice ' inside excp v_sql %',v_sql;
          execute v_sql;
      --  raise notice 'v_sql %',v_sql;
       END;
  END LOOP;
     ELSE


     SELECT distinct DELIMETER,FILE_NAME,DIRECTORY ,concat_ws('',' ',table_name_stg),
       case  header_exist when 'YES' then 'CSV HEADER' else 'CSV' end as header_exist
       INTO STRICT v_delim,v_file_name,v_directory,v_table_name_stg,v_header
     FROM  meta_EXTERNAL_TABLE
     WHERE table_name = pi_ext_table                  ;
     v_sql := concat_ws('','SELECT aws_s3.table_import_FROM_s3(''',
       v_table_name_stg, ''','''', ''DELIMITER AS ''''#'''' ',v_header,' '',','
      aws_commons.create_s3_uri
       ( ''',v_directory, ''',''',
       v_file_name, ''',',
        '''',v_region,''')
      )');
         EXECUTE  v_sql;


     FOR rec in cr1
     LOOP


      IF rec.start_pos IS NULL AND rec.END_pos IS NULL AND rec.no_position = 'recnum'
      THEN
        v_rec_val := 1;
      ELSE


       case
         WHEN upper(rec.data_type) = 'NUMERIC'
         THEN v_sql1 := concat_ws('',' case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                 coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1)))::NUMERIC,0)::',rec.data_type,' END as ',rec.col_list,',') ;
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask = 'YYYYMMDD'
         THEN v_sql1 := concat_ws('','case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))),''99990101''),''YYYYMMDD'')::',rec.data_type,' END as ',rec.col_list,',');
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask = 'YYYYMMDDHH24MISS'
         THEN v_sql1 := concat_ws('','case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))),''9999010100240000''),''YYYYMMDDHH24MISS'')::',rec.data_type,' END as ',rec.col_list,',');
          ELSE
        v_sql1 := concat_ws('',' case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                  coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))),'''')::',rec.data_type,' END as ',rec.col_list,',') ;
       END case;


      END IF;
      v_col_list := concat_ws('',v_col_list ,v_sql1);
     END LOOP;




           SELECT trim(trailing ' ' FROM v_col_list) INTO v_col_list;
           SELECT trim(trailing ',' FROM v_col_list) INTO v_col_list;


           v_sql_col   :=  concat_ws('',trim(trailing ',' FROM v_col_list) , ' FROM  ',v_table_name_stg,' WHERE col1 IS NOT NULL AND length(col1)>0 ');




           v_sql_dynamic := v_sql_col;


           EXECUTE  concat_ws('','SELECT COUNT(*) FROM ',v_table_name_stg) INTO v_cnt;




         IF v_rec_val = 1 THEN
             v_sql_ins := concat_ws('',' select row_number() over(order by ctid) as line_number ,' ,v_sql_dynamic) ;


         ELSE
               v_sql_ins := concat_ws('',' SELECT' ,v_sql_dynamic) ;
           END IF;


     BEGIN
       EXECUTE concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins);
           EXCEPTION
              WHEN OTHERS THEN
          IF v_rec_val = 1 THEN
                  v_final_sql := ' select row_number() over(order by ctid) as line_number ,col1 from ';
                ELSE
                 v_final_sql := ' SELECT col1 from';
               END IF;
       v_sql :=concat_ws('','do $a$ declare  r refcursor;v_rec_val numeric := ',coalesce(v_rec_val,0),';line_number numeric; col1 text; v_typ  ',pi_ext_table,'[]; v_rec  ',pi_ext_table,';
             begin
             open r for execute ''',v_final_sql, ' ',v_table_name_stg,' WHERE col1 IS NOT NULL AND length(col1)>0 '' ;
             loop
             begin
             if   v_rec_val = 1 then
             fetch r into line_number,col1;
             else
             fetch r into col1;
             end if;


             EXIT WHEN NOT FOUND;
              if v_rec_val = 1 then
              select line_number,',trim(trailing ',' FROM v_col_list) ,' into v_rec;
              else
                select ',trim(trailing ',' FROM v_col_list) ,' into v_rec;
              end if;


             insert into  ',pi_ext_table,' select v_rec.*;
              exception
              when others then
               INSERT INTO  ERROR_TABLE VALUES (concat_ws('''',''Error Name: '',SQLERRM,''Error State: '',SQLSTATE,''record : '',v_rec),''',pi_filename,''',now());
               continue;
              end ;
               end loop;
             close r;
              exception
              when others then
              raise;
              end ; $a$');
         execute v_sql;


     END;


         END IF;


   EXECUTE concat_ws('','SELECT COUNT(*) FROM  ' ,pi_ext_table)   INTO proc_rec_COUNT;


   EXECUTE concat_ws('','SELECT COUNT(*) FROM  error_table WHERE file_name =''',pi_filename,''' and processed_time::date = clock_timestamp()::date')  INTO error_rec_COUNT;


   EXECUTE concat_ws('','SELECT COUNT(*) FROM ',v_table_name_stg)   INTO tot_rec_COUNT;


   INSERT INTO  log_table values(pi_filename,now(),tot_rec_COUNT,proc_rec_COUNT, error_rec_COUNT);


   raise notice 'v_directory, %',v_directory;


   raise notice 'pi_filename, %',pi_filename;


   raise notice 'v_region, %',v_region;


  perform aws_s3.query_export_to_s3('SELECT replace(trim(substring(error_details,position(''('' in error_details)+1),'')''),'','','';''),file_name,processed_time FROM  error_table WHERE file_name = '''||pi_filename||'''',
   aws_commons.create_s3_uri(v_directory, pi_filename||'.bad', v_region),
   options :='FORmat csv, header, delimiter $$,$$'
   );


raise notice 'v_directory, %',v_directory;


   raise notice 'pi_filename, %',pi_filename;


   raise notice 'v_region, %',v_region;


  perform aws_s3.query_export_to_s3('SELECT * FROM  log_table WHERE file_name = '''||pi_filename||'''',
   aws_commons.create_s3_uri(v_directory, pi_filename||'.log', v_region),
   options :='FORmat csv, header, delimiter $$,$$'
   );




   END IF;
 j := j+1;
 END LOOP;


       RETURN 'OK';
EXCEPTION
    WHEN  OTHERS THEN
  raise notice 'error %',sqlerrm;
   ERCODE=SQLSTATE;
   IF ERCODE = 'NTFIP' THEN
     v_sqlerrm := concat_Ws('',sqlerrm,'No data for the filename');
   ELSIF ERCODE = 'S3IMP' THEN
    v_sqlerrm := concat_Ws('',sqlerrm,'Error While exporting the file from S3');
   ELSE
      v_sqlerrm := sqlerrm;
   END IF;


 select distinct directory into v_directory from  meta_EXTERNAL_TABLE;




 raise notice 'exc v_directory, %',v_directory;


   raise notice 'exc pi_filename, %',pi_filename;


   raise notice 'exc v_region, %',v_region;


  perform aws_s3.query_export_to_s3('SELECT * FROM  error_table WHERE file_name = '''||pi_filename||'''',
   aws_commons.create_s3_uri(v_directory, pi_filename||'.bad', v_region),
   options :='FORmat csv, header, delimiter $$,$$'
   );
    RETURN null;
END;
$function$
```

# Migración de índices basados en funciones de Oracle a PostgreSQL
<a name="migrate-function-based-indexes-from-oracle-to-postgresql"></a>

*Veeranjaneyulu Grandhi y Navakanth Talluri, Amazon Web Services*

## Resumen
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-summary"></a>

Los índices son una forma común de mejorar el rendimiento de las bases de datos. Un índice permite al servidor de bases de datos encontrar y recuperar filas específicas mucho más rápido de lo que lo haría sin un índice. Sin embargo, los índices también añaden una sobrecarga al sistema de bases de datos en su conjunto, por lo que deben utilizarse con sensatez. Los índices basados en funciones, que se basan en una función o expresión, pueden incluir varias columnas y expresiones matemáticas. Un índice basado en funciones mejora el rendimiento de las consultas que utilizan la expresión de índice. 

De forma nativa, PostgreSQL no admite la creación de índices basados en funciones mediante funciones cuya volatilidad se define como estable. Sin embargo, puede crear funciones similares con volatilidad `IMMUTABLE` y utilizarlas en la creación de índices.

Una función `IMMUTABLE` no puede modificar la base de datos y se garantiza que devolverá los mismos resultados con los mismos argumentos para siempre. Esta categoría permite al optimizador evaluar previamente la función cuando una consulta la llama con argumentos constantes. 

Este patrón ayuda a migrar los índices basados en funciones de Oracle cuando se utilizan con funciones como `to_char`, `to_date` y `to_number` al equivalente de PostgreSQL.

## Requisitos previos y limitaciones
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-prereqs"></a>

**Requisitos previos **
+ Una cuenta de Amazon Web Services (AWS) activa
+ Una instancia de base de datos de Oracle de origen con el servicio de escucha configurado y en ejecución
+ Familiaridad con bases de datos PostgreSQL

**Limitaciones**
+ El límite de tamaño de la base de datos es de 64 TB
+ Las funciones utilizadas en la creación de índices deben ser INMUTABLES.

**Versiones de producto**
+ Todas las ediciones de bases de datos de Oracle para las versiones 11g (versiones 11.2.0.3.v1 y posteriores) y hasta 12.2, y 18c
+ Versiones 9.6 y posteriores de PostgreSQL

## Arquitectura
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos Oracle local o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) o una instancia de base de datos Amazon RDS for Oracle

**Pila de tecnología de destino**
+ Cualquier motor de PostgreSQL

## Tools (Herramientas)
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-tools"></a>
+ **pgAdmin 4** es una herramienta de administración de código abierto para Postgres. La herramienta pgAdmin 4 proporciona una interfaz gráfica para crear, mantener y utilizar objetos de base de datos.
+ **Oracle SQL Developer** es un entorno de desarrollo integrado (IDE) para desarrollar y gestionar bases de datos de Oracle tanto en implementaciones tradicionales como en la nube.

## Epics
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-epics"></a>

### Cree un índice basado en funciones mediante una función predeterminada
<a name="create-a-function-based-index-using-a-default-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un índice basado en funciones en una columna mediante la función to\$1char. | Utilice el siguiente código para crear el índice basado en funciones.<pre>postgres=# create table funcindex( col1 timestamp without time zone);<br />CREATE TABLE<br />postgres=# insert into funcindex values (now());<br />INSERT 0 1<br />postgres=# select * from funcindex;<br />            col1<br />----------------------------<br /> 2022-08-09 16:00:57.77414<br />(1 rows)<br /> <br />postgres=# create index funcindex_idx on funcindex(to_char(col1,'DD-MM-YYYY HH24:MI:SS'));<br />ERROR:  functions in index expression must be marked IMMUTABLE</pre> PostgreSQL no permite crear un índice basado en funciones sin la cláusula `IMMUTABLE`. | Administrador de base de datos, desarrollador de aplicaciones | 
| Compruebe la volatilidad de la función. | Para comprobar la volatilidad de la función, utilice el código de la sección *Información adicional*.   | Administrador de base de datos | 

### Crear índices basados en funciones utilizando una función envolvente
<a name="create-function-based-indexes-using-a-wrapper-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una función de encapsulación. | Para crear una función de encapsulación, utilice el código de la *sección de información adicional*. | Desarrollador de PostgreSQL | 
| Cree un índice mediante la función de encapsulación. | Utilice el código de la sección *Información adicional* para crear una función definida por el usuario con la palabra clave `IMMUTABLE` en el mismo esquema que la aplicación y consúltela en el script de creación de índices.Si se crea una función definida por el usuario en un esquema común (del ejemplo anterior), actualice `search_path` tal como se muestra.<pre>ALTER ROLE <ROLENAME> set search_path=$user, COMMON;</pre> | Administrador de base de datos, desarrollador de PostgreSQL | 

### Validar creación del índice
<a name="validate-index-creation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la creación del índice. | Valide que es necesario crear el índice en función de los patrones de acceso a las consultas. | Administrador de base de datos | 
| Valide que se pueda utilizar el índice. | Para comprobar si el optimizador de PostgreSQL recoge el índice basado en funciones, ejecute una instrucción SQL mediante explain o explain analyze. Utilice el código de la sección *Información adicional*. Si es posible, recopile también las estadísticas de la tabla.Si observa el plan de explicación, el optimizador de PostgreSQL ha elegido un índice basado en funciones debido a la condición de predicado. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-resources"></a>
+ [Índices basados en funciones](https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_indexes.htm#ADFNS00505) (documentación de Oracle)
+ [Índices de expresiones](https://www.postgresql.org/docs/9.4/indexes-expressional.html) (documentación de PostgreSQL)
+ [Volatilidad de PostgreSQL](https://www.postgresql.org/docs/current/xfunc-volatility.html) (documentación de PostgreSQL)
+ [PostgreSQL search\$1path](https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATH) (documentación de PostgreSQL)
+ [Manual de migración de Oracle Database 19c a Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/dms/latest/oracle-to-aurora-postgresql-migration-playbook/chap-oracle-aurora-pg.html) 

## Información adicional
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-additional"></a>

**Crear una función de encapsulación**

```
CREATE OR REPLACE FUNCTION myschema.to_char(var1 timestamp without time zone, var2 varchar) RETURNS varchar AS $BODY$ select to_char(var1, 'YYYYMMDD'); $BODY$ LANGUAGE sql IMMUTABLE;
```

**Crear un índice mediante la función de encapsulación**

```
postgres=# create function common.to_char(var1 timestamp without time zone, var2 varchar) RETURNS varchar AS $BODY$ select to_char(var1, 'YYYYMMDD'); $BODY$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION
postgres=# create index funcindex_idx on funcindex(common.to_char(col1,'DD-MM-YYYY HH24:MI:SS'));
CREATE INDEX
```

**Comprobar la volatilidad de la función**

```
SELECT DISTINCT p.proname as "Name",p.provolatile as "volatility" FROM pg_catalog.pg_proc p
 LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
 LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
 WHERE n.nspname OPERATOR(pg_catalog.~) '^(pg_catalog)$' COLLATE pg_catalog.default AND p.proname='to_char'GROUP BY p.proname,p.provolatile
ORDER BY 1;
```

**Validar que se pueda utilizar el índice**

```
explain analyze <SQL>
 
 
postgres=# explain select col1 from funcindex where common.to_char(col1,'DD-MM-YYYY HH24:MI:SS') = '09-08-2022 16:00:57';
                                                       QUERY PLAN
------------------------------------------------------------------------------------------------------------------------
 Index Scan using funcindex_idx on funcindex  (cost=0.42..8.44 rows=1 width=8)
   Index Cond: ((common.to_char(col1, 'DD-MM-YYYY HH24:MI:SS'::character varying))::text = '09-08-2022 16:00:57'::text)
(2 rows)
```

# Migración de las funciones nativas de Oracle a PostgreSQL mediante extensiones
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions"></a>

*Pinesh Singal, Amazon Web Services*

## Resumen
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-summary"></a>

Este patrón de migración proporciona step-by-step orientación para migrar una base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle a una base de datos de Amazon RDS for PostgreSQL o Amazon Aurora PostgreSQL Edition compatible con PostgreSQL mediante la modificación y las extensiones del código integrado nativo de PostgreSQL (). `aws_oracle_ext` `orafce` `psql` Esto ahorrará tiempo de procesamiento.

El patrón describe una estrategia de migración manual fuera de línea sin tiempo de inactividad para una base de datos de origen de Oracle de varios terabytes con un elevado número de transacciones.

El proceso de migración utiliza la herramienta de conversión de esquemas de AWS (AWS SCT) con las extensiones `aws_oracle_ext` y `orafce` para convertir un esquema de base de datos de Amazon RDS para Oracle en un esquema de base de datos compatible con Amazon RDS para PostgreSQL o Aurora PostgreSQL. Luego, el código se cambia manualmente al código integrado de `psql` nativo compatible con PostgreSQL. Esto se debe a que las llamadas a la extensión afectan al procesamiento del código en el servidor de bases de datos PostgreSQL y no todo el código de la extensión es totalmente compatible o compatible con el código PostgreSQL.

Este patrón se centra principalmente en la migración manual de códigos SQL mediante AWS SCT y las extensiones `aws_oracle_ext` y. `orafce` Las extensiones que ya se utilizan se convierten en elementos integrados (`psql`) nativos de PostgreSQL. A continuación, se eliminan todas las referencias a las extensiones y se convierten los códigos en consecuencia.

## Requisitos previos y limitaciones
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa 
+ Sistema operativo (Windows o Mac) o EC2 instancia de Amazon (en funcionamiento) 
+ Orafce

**Limitaciones**

No todas las funciones de Oracle que utilizan extensiones `aws_oracle_ext` o `orafce` se pueden convertir en funciones nativas de PostgreSQL. Es posible que necesite una revisión manual para poder compilarlo con las bibliotecas de PostgreSQL.

Un inconveniente del uso de extensiones SCT de AWS es su lento rendimiento a la hora de ejecutar y obtener los resultados. Su costo se puede entender a partir del simple [plan EXPLAIN de PostgreSQL](https://www.postgresql.org/docs/current/sql-explain.html) (plan de ejecución de una declaración) sobre la migración de la función `SYSDATE` de Oracle a la función `NOW()` de PostgreSQL entre los tres códigos (`aws_oracle_ext`, `orafce` y `psql` predeterminados), como se explica en la sección *Performance comparison check* del documento adjunto.

**Versiones de producto**
+ **Origen:** base de datos 10.2 y versiones posteriores de Amazon RDS para Oracle (para 10.x), 11g (11.2.0.3.v1 y versiones posteriores) y hasta 12.2, 18c y 19c (y versiones posteriores) para Enterprise Edition, Standard Edition, Standard Edition 1 y Standard Edition 2
+ **Destino**: base de datos compatible con Amazon RDS para PostgreSQL o Aurora PostgreSQL 9.4 y versiones posteriores (para 9.x), 10.x, 11.x, 12.x, 13.x y 14.x (y versiones posteriores)
+ **AWS SCT**: última versión (este patrón se probó con 1.0.632)
+ **Oracle**: última versión (este patrón se probó con la versión 3.9.0)

## Arquitectura
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-architecture"></a>

**Pila de tecnología de origen**
+ Instancia de base de datos de Amazon RDS para Oracle con versión 12.1.0.2.v18

**Pila de tecnología de destino**
+ Una instancia de base de datos compatible con Amazon RDS para PostgreSQL o Aurora PostgreSQL con la versión 11.5

**Arquitectura de migración de bases de datos**

El siguiente diagrama representa la arquitectura de migración de bases de datos entre las bases de datos de Oracle de origen y PostgreSQL de destino. La arquitectura incluye la nube de AWS, una nube privada virtual (VPC), zonas de disponibilidad, una subred privada, una base de datos Amazon RDS para Oracle, AWS SCT, una base de datos Amazon RDS para PostgreSQL o Aurora compatible con PostgreSQL, extensiones para Oracle (`aws_oracle_ext` y `orafce`) y archivos de lenguaje de consulta estructurado (SQL).

![\[El proceso se explica en la siguiente lista.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/158847bb-27ef-4915-a9ca-7d87073792c1/images/234b824a-bfe5-4ef0-9fa7-8401370b92a5.png)


1. Inicie la instancia de base de datos de Amazon RDS para Oracle (base de datos de origen).

1. Utilice AWS SCT con los `aws_oracle_ext` paquetes de `orafce` extensión para convertir el código fuente de Oracle a PostresQL.

1. La conversión produce archivos.sql migrados compatibles con PostgreSQL.

1. Convierta manualmente los códigos de extensión de Oracle no convertidos en códigos PostgreSQL (`psql`).

1. La conversión manual produce archivos.sql convertidos compatibles con PostgreSQL.

1. Ejecute estos archivos.sql en su instancia de base de datos de Amazon RDS para PostgreSQL (base de datos de destino).

## Tools (Herramientas)
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-tools"></a>

**Herramientas**

*Servicios de AWS*
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html): la herramienta de conversión de esquemas de AWS (AWS SCT) convierte el esquema de base de datos existente de un motor de base de datos a otro. Puede convertir un esquema de procesamiento de transacciones en línea (OLTP) relacional o un esquema de almacenamiento de datos. Su esquema convertido es adecuado para una instancia de base de datos de Amazon RDS para MySQL, un clúster de base de datos de Amazon Aurora, una instancia de base de datos de Amazon RDS para PostgreSQL o un clúster de Amazon Redshift. El esquema convertido también se puede usar con una base de datos en una EC2 instancia de Amazon o se puede almacenar como datos en un bucket de Amazon S3.

  AWS SCT proporciona una interfaz de usuario basada en proyectos para convertir automáticamente el esquema de la base de datos de origen a un formato compatible con su instancia de Amazon RDS de destino. 

  Puede usar AWS SCT para realizar la migración desde una base de datos de origen de Oracle a cualquiera de los destinos enumerados anteriormente. Con AWS SCT, puede exportar las definiciones de los objetos de la base de datos de origen, como el esquema, las vistas, los procedimientos almacenados y las funciones. 

  Puede utilizar AWS SCT para convertir datos de Oracle a Amazon RDS para PostgreSQL o Amazon Aurora PostgreSQL-Compatible Edition. 

  Este patrón utiliza AWS SCT para convertir y migrar el código de Oracle a PostgreSQL mediante las extensiones `aws_oracle_ext` y `orafce` migrar manualmente los códigos `psql` de extensión a código integrado nativo o predeterminado.
+ El paquete de extensión de [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html) es un módulo complementario que simula funciones presentes en la base de datos de origen que son necesarias a la hora de convertir objetos a la base de datos de destino. Antes de poder instalar el paquete de extensión AWS SCT, debe convertir el esquema de su base de datos.

  Cuando convierte su base de datos o esquema de almacén de datos, AWS SCT agrega un esquema adicional a su base de datos de destino. Este esquema implementa las funciones del sistema SQL de la base de datos de origen que son necesarias al escribir su esquema convertido en la base de datos de destino. El esquema adicional se denomina esquema del paquete de extensión.

  El esquema del paquete de extensión para bases de datos OLTP se nombra según la base de datos de origen. Para las bases de datos de Oracle, el esquema del paquete de extensiones es `AWS_ORACLE_EXT`.

*Otras herramientas*
+ [Oracle](https://github.com/orafce/orafce): Orafce es un módulo que implementa funciones, tipos de datos y paquetes compatibles con Oracle. Es una herramienta de código abierto con una licencia de Berkeley Source Distribution (BSD) para que cualquiera pueda usarla. El módulo `orafce` es útil para migrar de Oracle a PostgreSQL porque tiene muchas funciones de Oracle implementadas en PostgreSQL.

 

**Código**

Para obtener una lista de todos los códigos más utilizados y migrados de Oracle a PostgreSQL para evitar el uso del código de extensión SCT de AWS, consulte el documento adjunto.

## Epics
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-epics"></a>

### Configuración de la base de datos de origen de Amazon RDS para Oracle
<a name="configure-the-amazon-rds-for-oracle-source-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la instancia de base de datos de Oracle. | Cree una instancia de base de datos compatible con Amazon RDS para Oracle o Aurora PostgreSQL desde la consola de Amazon RDS. | AWS general, administrador de bases de datos | 
| Configuración de los grupos de seguridad. | Configure grupos de seguridad entrantes y salientes. | AWS general | 
| Cree la base de datos. | Crear la base de datos de Oracle con los usuarios y esquemas necesarios. | AWS general, administrador de bases de datos | 
| Cree los objetos. | Crear objetos e introducir datos en el esquema. | Administrador de base de datos | 

### Configuración de la base de datos de destino de Amazon RDS para PostgreSQL
<a name="configure-the-amazon-rds-for-postgresql-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la instancia de base de datos PostgreSQL. | Cree una instancia de base de datos de Amazon RDS para PostgreSQL o de Amazon Aurora mediante la consola de Amazon RDS. | AWS general, administrador de bases de datos | 
| Configuración de los grupos de seguridad. | Configure grupos de seguridad entrantes y salientes. | AWS general | 
| Cree la base de datos. | Cree la base de datos PostgreSQL con los usuarios y esquemas necesarios. | AWS general, administrador de bases de datos | 
| Valide las extensiones. | Asegúrese de que `aws_oracle_ext` y `orafce` están instalados y configurados correctamente en la base de datos PostgreSQL. | Administrador de base de datos | 
| Compruebe que la base de datos PostgreSQL esté disponible. | Asegúrese de que la base de datos PostgreSQL esté activa y en funcionamiento. | Administrador de base de datos | 

### Migración del esquema de Oracle a PostgreSQL con AWS SCT y las extensiones
<a name="migrate-the-oracle-schema-into-postgresql-using-aws-sct-and-the-extensions"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale AWS SCT. | Instale la versión más reciente de AWS SCT. | Administrador de base de datos | 
| Configure AWS SCT. | Configure AWS SCT con los controladores de conectividad de bases de datos Java (JDBC) para Oracle (`ojdbc8.jar`) y PostgreSQL (`postgresql-42.2.5.jar`). | Administrador de base de datos | 
| Habilite el paquete o la plantilla de extensiones SCT de AWS. | En AWS SCT **Configuración de proyecto**, habilite la implementación de funciones integradas con las extensiones `aws_oracle_ext` y `orafce` para el esquema de base de datos de Oracle. | Administrador de base de datos | 
| Convierta el esquema.  | En AWS SCT, seleccione **Convertir esquema** para convertir el esquema de Oracle a PostgreSQL y generar los archivos.sql. | Administrador de base de datos | 

### Convierta el código de extensión SCT de AWS en código psql
<a name="convert-aws-sct-extension-code-to-psql-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Convertir el código manualmente. | Convierta manualmente cada línea de código compatible con la extensión en código integrado predeterminado `psql`, como se detalla en el documento adjunto. Por ejemplo, cambie `AWS_ORACLE_EXT.SYSDATE()` a `ORACLE.SYSDATE()` o `NOW()`. | Administrador de base de datos | 
| Valida el código | (Opcional) Valide cada línea de código ejecutándola temporalmente en la base de datos PostgreSQL. | Administrador de base de datos | 
| Cree objetos en la base de datos PostgreSQL. | Para crear objetos en la base de datos de PostgreSQL, ejecute los archivos.sql generados por AWS SCT y modificados en los dos pasos anteriores. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-resources"></a>
+ Base de datos
  + [Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)
  + [PostgreSQL en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)
  + [Uso de Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)
  + [Plan EXPLAIN de PostgreSQL](https://www.postgresql.org/docs/current/sql-explain.html)
+ AWS SCT
  + [Descripción general de la herramienta de conversión de esquemas de AWS](https://aws.amazon.com/dms/schema-conversion-tool/)
  + [Guía del usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
  + [Uso de la interfaz de usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
  + [Utilizar la base de datos de Oracle como origen para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)
+ Extensiones para AWS SCT
  + [Uso del paquete de extensión de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html)
  + [Funcionalidad de Oracle (en)](https://postgres.cz/wiki/Oracle_functionality_(en))
  + [PGXN oracle](https://pgxn.org/dist/orafce/)
  + [GitHub orafce](https://github.com/orafce/orafce)

## Información adicional
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-additional"></a>

Para obtener más información, siga los comandos detallados, con sintaxis y ejemplos, para convertir el código manualmente en el documento adjunto.

## Conexiones
<a name="attachments-158847bb-27ef-4915-a9ca-7d87073792c1"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/158847bb-27ef-4915-a9ca-7d87073792c1/attachments/attachment.zip)

# Migre una base de datos Db2 de Amazon EC2 a Aurora compatible con MySQL mediante AWS DMS
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms"></a>

*Pinesh Singal, Amazon Web Services*

## Resumen
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-summary"></a>

Tras migrar la [base de datos de IBM Db2 for LUW](https://www.ibm.com/docs/en/db2/11.5?topic=federation) a Amazon [Elastic Compute Cloud EC2 (Amazon)](https://docs.aws.amazon.com/ec2/), considere la posibilidad de rediseñar la base de datos pasando a una base de datos nativa de la nube de Amazon Web Services (AWS). Este patrón cubre la migración de una base de datos IBM [Db2](https://www.ibm.com/docs/en/db2/11.5) for LUW que se ejecuta en una EC2 instancia de [Amazon](https://docs.aws.amazon.com/ec2/) a una base de datos [Amazon Aurora MySQL Edition compatible con AWS](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html).  

El patrón describe una estrategia de migración en línea con un tiempo de inactividad mínimo para una base de datos fuente de Db2 de varios terabytes con un número elevado de transacciones. 

Este patrón utiliza la [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) para convertir el esquema de la base de datos de Db2 en un esquema de Aurora compatible con MySQL. A continuación, el patrón utiliza [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) para migrar datos desde la base de datos Db2 a la base de datos de Aurora compatible con MySQL. Se requerirán conversiones manuales para el código que AWS SCT no convierta.

## Requisitos previos y limitaciones
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa con una nube privada virtual (VPC)
+ AWS SCT
+ AWS DMS

**Versiones de producto**
+ Versión más reciente de AWS SCT
+ Db2 para Linux, versión 11.1.4.4 y posteriores

## Arquitectura
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ DB2/Linux x86-64 bits montado en una instancia EC2  

**Pila de tecnología de destino**
+ Una instancia de base de datos de la edición de Amazon Aurora compatible con MySQL

**Arquitectura de origen y destino**

El siguiente diagrama muestra la arquitectura de migración de datos entre las bases de datos compatibles con MySQL de Aurora de origen y de destino. La arquitectura de la nube de AWS incluye una nube privada virtual (VPC), una zona de disponibilidad, una subred pública para la instancia de Db2 y la instancia de replicación de AWS DMS, y una subred privada para la base de datos Aurora compatible con MySQL.

![\[Arquitectura de migración de datos entre Db2 de origen y las bases de datos compatibles con MySQL de Aurora de destino.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5abfccc4-148c-4794-8d80-e3c122679125/images/f30664f8-2d6a-4448-8d5c-cff3988a52c7.png)


## Tools (Herramientas)
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-tools"></a>

**Servicios de AWS**
+ [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) es un motor de base de datos relacional completamente administrado diseñado para la nube y compatible con MySQL y PostgreSQL.
+ [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/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ La [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, lo que incluye las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino. AWS SCT admite como origen las versiones 9.1, 9.5, 9.7, 10.1, 10.1, 10.5, 11.1 y 11.5 de IBM Db2 para LUW.

## Prácticas recomendadas
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-best-practices"></a>

Para prácticas recomendadas, consulte [Prácticas recomendadas para AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html).

## Epics
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-epics"></a>

### Configurar la base de datos IBM Db2 de origen
<a name="configure-the-source-ibm-db2-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la base de datos IBM Db2 en Amazon EC2. | Puede crear una base de datos IBM Db2 en una EC2 instancia mediante una Amazon Machine Image (AMI) de AWS Marketplace o instalando el software Db2 en una EC2 instancia.Para lanzar una EC2 instancia, seleccione una AMI para IBM Db2 (por ejemplo, [IBM Db2 v11.5.7 RHEL 7.9](https://aws.amazon.com/marketplace/pp/prodview-aclrjj4hq2ols?sr=0-1&ref_=beagle&applicationId=AWS-EC2-Console)), que es similar a una base de datos local. | Administrador de base de datos, AWS general | 
| Configuración de grupos de seguridad. | Configure las reglas de entrada del grupo de seguridad de VPC para SSH (Secure Shell) y TCP con los puertos 22 y 50000, respectivamente. | AWS general | 
| Crear la instancia de base de datos. | Cree una instancia (usuario) y una base de datos (esquema) nuevas, o utilice la instancia y la base de datos `db2inst1` de muestra predeterminadas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | Administrador de base de datos | 
| Confirme que la instancia de la base de datos Db2 está disponible. | Para confirmar que la instancia de la base de datos de Db2 está activa y en ejecución, utilice el comando `Db2pd -`. | Administrador de base de datos | 

### Configurar la base de datos de destino de Aurora compatible con MySQL
<a name="configure-the-target-aurora-mysql-compatible-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la base de datos de Aurora compatible con MySQL. | Crear una base de datos de Amazon Aurora con compatibilidad con MySQL desde el servicio de AWS RDS[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | Administrador de base de datos, AWS general | 
| Configuración de grupos de seguridad. | Configure las reglas de entrada del grupo de seguridad de la VPC para las conexiones SSH y TCP. | AWS general | 
| Confirme que la base de datos de Aurora esté disponible. | Para asegurarse de que la base de datos de Aurora compatible con MySQL esté en funcionamiento, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | Administrador de base de datos | 

### Configuración y ejecución de AWS SCT
<a name="configure-and-run-aws-sct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale AWS SCT. | Descargue e instale la versión más reciente de [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html) (la versión actual más reciente es 1.0.628). | AWS general | 
| Configure AWS SCT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS general | 
| Cree un proyecto de AWS SCT. | Cree un proyecto y un informe de AWS SCT que utilice Db2 para LUW como motor de base de datos de origen y Aurora compatible con MySQL para el motor de base de datos de destino.Para identificar los privilegios necesarios para conectarse a una base de datos de Db2 para LUW, consulte [Uso de Db2 LUW como fuente de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html). | AWS general | 
| Valide los objetos. | Seleccione **Cargar esquema**, validar los objetos. Actualice cualquier objeto incorrecto en la base de datos de destino:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | Administrador de base de datos, AWS general | 

### Configurar y ejecutar AWS SCT
<a name="configure-and-run-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación. | Inicie sesión en la consola de administración de AWS, navegue hasta el servicio AWS DMS y cree una instancia de replicación con una configuración válida para el grupo de seguridad de VPC que configuró para las bases de datos de origen y destino. | AWS general | 
| Cree puntos de conexión. | Cree el punto de conexión de origen para la base de datos Db2 y cree el punto de conexión de destino para la base de datos Aurora compatible con MySQL:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS general | 
| Cree tareas de migración. | Cree una o varias tareas de migración para completar la carga y validar los CDC o los datos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS general | 
| Planifique el ciclo de producción. | Confirme el tiempo de inactividad con las partes interesadas, como los propietarios de las aplicaciones, para ejecutar AWS DMS en los sistemas de producción. | Líder de migración | 
| Ejecute las tareas de migración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS general | 
| Valide los datos. | Revise los resultados y los datos de las tareas de migración en las bases de datos Db2 de origen y MySQL de destino:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | Administrador de base de datos | 
| Detenga las tareas de migración. | Una vez que la validación de datos se haya completado correctamente, detenga las tareas de migración de la validación. | AWS general | 

## Resolución de problemas
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Las conexiones de prueba de origen y destino de AWS SCT no funcionan. | Configure las versiones del controlador JDBC y las reglas de entrada del grupo de seguridad de VPC para que acepten el tráfico entrante. | 
| Se produce un error en la ejecución de la prueba del punto de conexión de origen de Db2. | Configure la configuración `CurrentLSN=<scan>;` de conexión adicional. | 
| La AWSDMS tarea no se puede conectar a la fuente de Db2 y aparece el siguiente error.`database is recoverable if either or both of the database configuration parameters LOGARCHMETH1 and LOGARCHMETH2 are set to ON` | Para evitar el error, ejecute los siguientes comandos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | 

## Recursos relacionados
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-resources"></a>

**Amazon EC2**
+ [Amazon EC2](https://aws.amazon.com/ec2/)
+ [Guías EC2 de usuario de Amazon](https://docs.aws.amazon.com/ec2/)

**Bases de datos**
+ [Base de datos IBM Db2](https://www.ibm.com/products/db2-database)
+ [Amazon Aurora](https://aws.amazon.com/rds/aurora/)
+ [Uso de Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html)

**AWS SCT**
+ [Conversión de esquemas AWS DMS](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [Guía del usuario de la herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Uso de la interfaz de usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
+ [Uso de IBM Db2 LUW como origen para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)

**AWS DMS**
+ [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/)
+ [Guía del usuario de AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Orígenes para la migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)
+ [Destinos para la migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html)
+ [AWS Database Migration Service (AWS DMS) y la herramienta de conversión de esquemas de AWS ahora admiten IBM Db2 LUW como fuente](https://aws.amazon.com/blogs/database/aws-database-migration-service-and-aws-schema-conversion-tool-now-support-ibm-db2-as-a-source/) (entrada del blog)
+ [Migración de aplicaciones que ejecutan bases de datos relacionales a AWS](https://d1.awsstatic.com/whitepapers/Migration/migrating-applications-to-aws.pdf)

# Migre una base de datos de Microsoft SQL Server de Amazon EC2 a Amazon DocumentDB mediante AWS DMS
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms"></a>

*Umamaheswara Nooka, Amazon Web Services*

## Resumen
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-summary"></a>

Este patrón describe cómo usar AWS Database Migration Service (AWS DMS) para migrar una base de datos de Microsoft SQL Server alojada en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) a una base de datos de Amazon DocumentDB (compatible con MongoDB).

La tarea de replicación de AWS DMS lee la estructura de tablas de la base de datos de SQL Server, crea la colección correspondiente en Amazon DocumentDB y lleva a cabo una migración de carga completa.

También se puede usar este patrón para migrar una instancia de base de datos de SQL Server en las instalaciones o Amazon Relational Database Service (Amazon RDS) para SQL Server a Amazon DocumentDB. Para obtener más información, consulte la guía [Migrating Microsoft SQL Server databases to the AWS Cloud](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/welcome.html) (Migrar bases de datos de Microsoft SQL Server a la nube de AWS) en el sitio web de Recomendaciones de AWS.

## Requisitos previos y limitaciones
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una base de datos de SQL Server existente en una instancia. EC2 
+ Función de base de datos fija (**db\$1owner**) asignada a AWS DMS en la base de datos de SQL Server. Para obtener más información, consulte [Database-level roles](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15) (Roles en el nivel de base de datos) de la documentación de SQL Server. 
+ Familiaridad con el uso de los programas de utilidades `mongodump`, `mongorestore`,`mongoexport` y `mongoimport` para [mover datos dentro y fuera de un clúster de Amazon DocumentDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html).
+ [Microsoft SQL Server Management Studio](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15), instalado y configurado.

**Limitaciones**
+ El límite de tamaño del clúster en Amazon DocumentDB es de 64 TB. Para obtener más información, consulte [Cluster limits](https://docs.aws.amazon.com/documentdb/latest/developerguide/limits.html#limits-cluster) (Límites de los clústeres) en la documentación de Amazon DocumentDB. 
+ AWS DMS no permite combinar varias tablas de origen en una sola colección de Amazon DocumentDB.
+ Si AWS DMS procesa los cambios de una tabla de origen sin una clave principal, omitirá las columnas de objetos grandes (LOB) de la tabla de origen.

## Arquitectura
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Amazon EC2

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

**Arquitectura de destino**

![\[Nube de AWS architecture showing VPC with private DB subnet and components for SQL Server and DocumentDB.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f186220b-5a94-48b2-840d-f04aedf51651/images/00962b85-8b71-49df-b84a-3adcbc9ad3a3.png)


## Tools (Herramientas)
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-tools"></a>
+ [WS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html): AWS Database Migration Service (AWS DMS) ayuda a migrar los datos de forma rápida y segura.
+ [Amazon DocumentDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html): Amazon DocumentDB (con compatibilidad con MongoDB) es un servicio de bases de datos rápido, fiable y totalmente gestionado.
+ [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html): Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad informática escalable en la nube de AWS.
+ [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15): SQL Server es un sistema de administración de bases de datos relacionales.
+ [SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms?view=sql-server-ver15): SSMS es una herramienta para administrar SQL Server, que incluye el acceso, la configuración y la administración de los componentes de SQL Server.

## Epics
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-epics"></a>

### Crear y configurar una VPC
<a name="create-and-configure-a-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una VPC. | Inicie sesión en la consola de administración de AWS y abra la consola de Amazon VPC. Cree una nube privada virtual (VPC) con un rango de bloques IPv4 CIDR. | Administrador de sistemas | 
| Cree redes y grupos de seguridad. ACLs | En la consola de Amazon VPC, cree grupos de seguridad y listas de control de acceso a la red (red ACLs) para su VPC, según sus necesidades. También puede utilizar la configuración predeterminada para estas configuraciones. Para obtener más información sobre esta y otras historias, consulte la sección “Recursos relacionados”. | Administrador de sistemas | 

### Crear y configurar el clúster de Amazon DocumentDB
<a name="create-and-configure-the-amazon-documentdb-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Cree un clúster de Amazon DocumentDB. | Abra la consola de Amazon DocumentDB y elija “Clústeres”. Elija “Crear” y cree un clúster de Amazon DocumentDB con una instancia. Importante: Asegúrese de configurar este clúster con los grupos de seguridad de su VPC. | Administrador de sistemas  | 
|  Instale el intérprete de comandos de mongo. | El intérprete de comandos de mongo es un programa de utilidad de línea de comandos que se utiliza para conectarse al clúster de Amazon DocumentDB y consultarlo. Para instalarla, ejecute el comando «/etc/yum.repos.d/mongodb-org-3.6.repo» para crear el archivo de repositorio. Ejecute el comando «sudo yum install -y mongodb-org-shell" para instalar el shell mongo. Para cifrar los datos en tránsito, descargue la clave pública de Amazon DocumentDB y, a continuación, conéctese a su instancia de Amazon DocumentDB. Para obtener más información sobre estos pasos, consulte la sección “Recursos relacionados”. | Administrador de sistemas  | 
| Cree una base de datos en el clúster de Amazon DocumentDB.  | Ejecute el comando «use» con el nombre de la base de datos para crear una base de datos en el clúster de Amazon DocumentDB. | Administrador de sistemas  | 

### Cree y configure una instancia de replicación de AWS DMS
<a name="create-and-configure-the-aws-dms-replication-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación de AWS DMS. | Abra la consola de AWS DMS y elija “Crear una instancia de replicación”. Especifique un nombre y una descripción para la tarea de replicación. Seleccione la clase de instancia, la versión del motor, el almacenamiento, la VPC y las zonas de disponibilidad múltiples (Multi-AZ) y póngalas a disposición del público. Elija la pestaña “Avanzado” para establecer la configuración de red y de cifrado. Especifique la configuración de mantenimiento y, a continuación, elija “Crear una instancia de replicación”. | Administrador de sistemas  | 
| Configure la base de datos de SQL Server.  | Inicie sesión en Microsoft SQL Server y agregue una regla de entrada para la comunicación entre el punto de conexión de origen y la instancia de replicación de AWS DMS. Utilice la dirección IP privada de la instancia de replicación como origen. Importante: La instancia de replicación y el punto de conexión de destino deben estar en la misma VPC. Utilice una fuente alternativa en el grupo de seguridad si VPCs son diferentes para las instancias de origen y de replicación. | Administrador de sistemas  | 

### Cree y pruebe los puntos de conexión de origen y destino en AWS DMS
<a name="create-and-test-the-source-and-target-endpoints-in-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree puntos de conexión de base de datos de origen y destino. | Abra la consola de AWS DMS y elija “Conectar puntos de conexión de la base de datos de origen y de destino”. Especifique la información de conexión para las bases de datos de origen y destino. Si es necesario, elija la pestaña “Avanzado” para establecer los valores de “Atributos de conexión adicionales”. Descargue y utilice el grupo de certificados de la configuración del punto de conexión. | Administrador de sistemas  | 
| Pruebe la conexión del punto de conexión.  | Elija “Ejecutar prueba” para probar la conexión. Para solucionar cualquier mensaje de error, compruebe la configuración del grupo de seguridad y las conexiones a la instancia de replicación de AWS DMS desde las instancias de base de datos de origen y destino. | Administrador de sistemas  | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la tarea de migración de AWS DMS.  | En la consola de AWS DMS, elija “Tareas” y “Crear una tarea”. Especifique las opciones de la tarea, incluidos los nombres de los puntos de conexión de origen y destino y los nombres de las instancias de replicación. En “Tipo de migración”, elija “Migrar los datos existentes” y “Replicar solo los cambios en los datos”. Elija “Iniciar tarea”. | Administrador de sistemas  | 
| Ejecute la tarea de migración de AWS DMS. | En “Configuración de la tarea”, especifique los ajustes del modo de preparación de tablas, como “No hacer nada”, “Borrar tablas en el destino”, “Truncar” e “Incluir las columnas LOB en la replicación”. Establezca un tamaño de LOB máximo que AWS DMS acepte y elija “Habilitar registro”. Deje “Configuración avanzada” en sus valores predeterminados y elija “Crear una tarea”. | Administrador de sistemas  | 
| Supervise la migración. | En la consola de AWS DMS, elija “Tareas” y, a continuación, su tarea de migración. Elija “Supervisión de tareas” para supervisar su tarea. La tarea se detiene cuando la migración de carga completa finaliza y se aplican los cambios guardados en la memoria caché. | Administrador de sistemas  | 

### Probar y verificar la aplicación
<a name="test-and-verify-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Conéctese al clúster de Amazon DocumentDB mediante el intérprete de comandos de mongo. | Abra la consola de Amazon DocumentDB y seleccione su clúster en “Clústeres”. En la pestaña “Conectividad y seguridad”, elija “Conectar a este clúster con el shell mongo”. | Administrador de sistemas  | 
| Verifique los resultados de la migración. | Ejecute el comando “use” con el nombre de su base de datos y, a continuación, ejecute el comando “show collections”. Ejecute el comando “db. .count ();” con el nombre de su base de datos. Si los resultados coinciden con la base de datos de origen, la migración se ha realizado correctamente. | Administrador de sistemas  | 

## Recursos relacionados
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-resources"></a>

**Create and configure a VPC ** (Crear y configurar una VPC)
+ [Create a security group for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups) (Crear un grupo de seguridad para la VPC)
+ [Create a network ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) (Crear una ACL de red)

** **

**Create and configure the Amazon DocumentDB cluster** (Crear y configurar el clúster de Amazon DocumentDB)
+ [Create an Amazon DocumentDB cluster](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-cluster) (Crear un clúster de Amazon DocumentDB)
+ [Install the mongo shell for Amazon DocumentDB ](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-mongoshell) (Instalar el intérprete de comandos de mongo para Amazon DocumentDB)
+ [Connect to your Amazon DocumentDB cluster](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-connectcluster) (Conectarse al clúster de Amazon DocumentDB)

** **

**Create and configure the AWS DMS replication instance ** (Crear y configurar una instancia de replicación de AWS DMS)
+ [Use public and private replication instances](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.PublicPrivate) (Usar instancias de replicación pública y privada)

** **

**Create and test the source and target endpoints in AWS DMS ** (Crear y probar los puntos de conexión de origen y destino en AWS DMS)
+ [Use Amazon DocumentDB as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/target.docdb.html) (Utilizar Amazon DocumentDB como destino para AWS DMS)
+ [Use a SQL Server database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html) (Utilizar una base de datos de SQL Server como origen para AWS DMS)
+ [Use AWS DMS endpoints](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html) (Utilizar puntos de conexión de AWS DMS)

** **

**Migración de datos**
+ [Migrate to Amazon DocumentDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/docdb-migration.html) (Migrar a Amazon DocumentDB)

** **

**Otros recursos**
+ [Limitations on using SQL Server as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html#CHAP_Source.SQLServer.Limitations) (Restricciones en el uso de SQL Server como origen para AWS DMS) 
+ [How to use Amazon DocumentDB to build and manage applications at scale](https://aws.amazon.com/blogs/database/how-to-use-amazon-documentdb-with-mongodb-compatibility-to-build-and-manage-applications-at-scale/) (Cómo utilizar Amazon DocumentDB para crear y gestionar aplicaciones a gran escala)

# Migre una base de datos ThoughtSpot Falcon local a Amazon Redshift
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift"></a>

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

## Resumen
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-summary"></a>

El almacenamiento de datos en las instalaciones requiere una cantidad considerable de tiempo y recursos de administración, especialmente en el caso de conjuntos de datos de gran tamaño. El costo financiero de compilar, mantener y hacer crecer estos almacenes también es muy alto. Para ayudar a administrar los costos, mantener baja la complejidad de extracción, transformación y carga (ETL) y ofrecer rendimiento a medida que sus datos crecen, debe elegir constantemente qué datos cargar y qué datos archivar.

Al migrar sus [bases de datos ThoughtSpot Falcon](https://docs.thoughtspot.com/software/latest/data-caching) locales a la nube de Amazon Web Services (AWS), puede acceder a lagos de datos y almacenes de datos basados en la nube que aumentan la agilidad, la seguridad y la confiabilidad de las aplicaciones de su empresa, además de reducir los costos generales de infraestructura. Amazon Redshift ayuda a reducir considerablemente los costos y los gastos operativos de un almacenamiento de datos. También puede usar Amazon Redshift Spectrum para analizar grandes cantidades de datos en su formato nativo sin necesidad de cargar los datos.

Este patrón describe los pasos y el proceso para migrar una base de datos ThoughtSpot Falcon de un centro de datos local a una base de datos de Amazon Redshift en la nube de AWS.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos ThoughtSpot Falcon alojada en un centro de datos local

**Versiones de producto**
+ ThoughtSpot versión 7.0.1 

## Arquitectura
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-architecture"></a>

![\[Migración de una base de datos ThoughtSpot Falcon desde un centro de datos local a Amazon Redshift.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/b0ca29f4-b269-4b57-b386-738693a6b334/images/2b483990-1f30-439c-ba13-dc0cb0650360.png)


 

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

1. Los datos se alojan en una base de datos relacional en las instalaciones.

1. La herramienta de conversión de esquemas de AWS (AWS SCT) convierte el lenguaje de definición de datos (DDL) que es compatible con Amazon Redshift.

1. Una vez creadas las tablas, puede migrar los datos mediante AWS Database Migration Service (AWS DMS).

1. Los datos se cargan en Amazon Redshift.

1. Los datos se almacenan en Amazon Simple Storage Service (Amazon S3) si utiliza Redshift Spectrum o si ya aloja los datos en Amazon S3.

## Tools (Herramientas)
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html): AWS Data Migration Service (AWS DMS) le ayuda a migrar bases de datos a AWS de forma rápida y segura.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html): Amazon RedShift es un servicio de almacenamiento de datos de escala de petabyte rápido, totalmente administrado, que hace que sea simple y rentable analizar de manera eficiente todos sus datos utilizando sus herramientas de inteligencia empresariales existentes.
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html): la herramienta de conversión de esquemas de AWS (AWS SCT) convierte el esquema de base de datos existente de un motor de base de datos a otro.

## Epics
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique la configuración de Amazon Redshift adecuada. | Identifique la configuración de clúster de Amazon Redshift adecuada en función de sus requisitos y volumen de datos. Para obtener más información, consulte [Clústeres de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Investigue Amazon Redshift para evaluar si cumple con sus requisitos. | Utilice [Amazon Redshift FAQs](https://aws.amazon.com/redshift/faqs/) para comprender y evaluar si Amazon Redshift cumple sus requisitos. | Administrador de base de datos | 

### Preparación del clúster de Amazon Redshift de destino
<a name="prepare-the-target-amazon-redshift-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un clúster de Amazon Redshift. | Inicie sesión en la consola de administración de AWS, abra la consola de Amazon Redshift y, a continuación, cree un clúster de Amazon Redshift en una nube privada virtual (VPC). Para obtener más información, consulte [Creación de un clúster en una VPC](https://docs.aws.amazon.com/redshift/latest/mgmt/getting-started-cluster-in-vpc.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Lleve a cabo una PoC para el diseño de su base de datos de Amazon Redshift. | Siga las prácticas recomendadas de Amazon Redshift realizando una prueba de concepto (PoC) para el diseño de su base de datos. Para obtener más información, consulte [Realización de una prueba de concepto para Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/proof-of-concept-playbook.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Cree usuarios de bases de datos. | Cree los usuarios en la base de datos de Amazon Redshift y asigne los roles adecuados para acceder al esquema y a las tablas.  Para obtener más información, consulte [Conceder privilegios de acceso a un usuario o grupo de usuarios](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Aplique los parámetros de configuración a la base de datos de destino. | Aplique los parámetros de configuración a la base de datos de Amazon Redshift según sus requisitos. Para obtener más información sobre cómo habilitar los parámetros de base de datos, sesión y servidor, consulte la [Referencia de configuración](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_ConfigurationRef.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 

### Crear objetos en el clúster de Amazon Redshift
<a name="create-objects-in-the-amazon-redshift-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree tablas manualmente con DDL en Amazon Redshift. | (Opcional) Si utiliza AWS SCT, las tablas se crean automáticamente. Sin embargo, si se producen errores al replicar DDLs, tendrá que crear las tablas manualmente | Administrador de base de datos | 
| Crear tablas externas para Redshift Spectrum. | Cree una tabla externa con un esquema externo para Amazon Redshift Spectrum. Para crear tablas externas, debe ser el propietario del esquema externo o un [superusuario de base de datos](https://docs.aws.amazon.com/redshift/latest/dg/r_superusers.html). Para obtener más información, consulte [Creación de tablas externas para Amazon Redshift Spectrum](https://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-tables.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 

### Migración de datos utilizando AWS DMS
<a name="migrate-data-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice AWS DMS para migrar los datos. | Tras crear el DDL de las tablas en la base de datos de Amazon Redshift, migre sus datos a Amazon Redshift mediante AWS DMS.Para obtener instrucciones y pasos detallados, consulte [Uso de una base de datos de Amazon Redshift como destino de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html) en la documentación de AWS DMS. | Administrador de base de datos | 
| Uso del comando COPY para cargar datos. | Utilice el comando `COPY` de Amazon Redshift para cargar los datos desde Amazon S3 a Amazon Redshift.Para obtener más información, consulte [Uso del comando COPIAR para cargar desde Amazon S3](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-tables-from-s3.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 

### Validar el clúster de Amazon Redshift
<a name="validate-the-amazon-redshift-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide los registros de origen y destino.  | Valide el recuento de tablas de los registros de origen y destino que se cargaron desde el sistema de origen. | Administrador de base de datos | 
| Implemente las prácticas recomendadas de Amazon Redshift para el ajuste del rendimiento. | Implemente las prácticas recomendadas de Amazon Redshift para el diseño de tablas y bases de datos. Para obtener más información, consulte la siguiente entrada del blog: [Las 10 técnicas principales de ajuste del rendimiento de Amazon Redshift](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-techniques-for-amazon-redshift/). | Administrador de base de datos | 
| Optimizar el rendimiento de la consulta. | Amazon RedShift utiliza consultas basadas en SQL para interactuar con datos y objetos en el sistema. El Data Manipulation Language (DML, Lenguaje de manipulación de datos) es el subconjunto de SQL que el usuario utiliza para ver, añadir, cambiar y eliminar datos. DDL es el subconjunto de SQL que el usuario utiliza para añadir, cambiar y eliminar objetos de la base de datos como tablas y vistas.Para obtener más información, consulte [Ajuste del rendimiento de las consultas](https://docs.aws.amazon.com/redshift/latest/dg/c-optimizing-query-performance.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Implemente WLM.  | Puede utilizar workload management (WLM) para definir varias colas de consultas y dirigir las consultas a las colas adecuadas en tiempo de ejecución.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. | Administrador de base de datos | 
| Trabajar con escalado de concurrencia. | Al usar la característica de escalado de concurrencia, puede admitir usuarios concurrentes prácticamente ilimitados y consultas concurrentes, con un rendimiento de consulta consistentemente rápido.Para obtener más información, consulte [Uso del escalado de simultaneidad](https://docs.aws.amazon.com/redshift/latest/dg/concurrency-scaling.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Use las prácticas recomendadas de Amazon RedShift para el diseño de tablas. | Cuando planifica su base de datos, ciertas decisiones importantes de diseño de tabla pueden influir considerablemente en el rendimiento general de la consulta.Para obtener más información sobre seleccionar la opción de diseño de tablas más adecuada, consulte [Prácticas recomendadas de Amazon Redshift para el diseño de tablas](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Crear vistas materializadas en Amazon Redshift. | Una vista materializada contiene un conjunto de resultados computados previamente, basados en una consulta de SQL sobre una o más tablas base. Puede emitir instrucciones `SELECT` para consultar una vista materializada, de la misma manera que puede consultar otras tablas o vistas en la base de datos.Para obtener más información, consulte [Creación de vistas materializadas en Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-overview.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Defina las uniones entre las tablas. | Para buscar en más de una tabla al mismo tiempo ThoughtSpot, debe definir las uniones entre las tablas especificando columnas que contengan datos coincidentes en dos tablas. Estas columnas representan la `primary key` y `foreign key` de la unión.Puede definirlos mediante el `ALTER TABLE` comando de Amazon Redshift o. ThoughtSpot Para obtener más información, consulte [ALTER TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_TABLE.html) en la documentación de Amazon RedShift. | Administrador de base de datos | 

### Configurar la ThoughtSpot conexión a Amazon Redshift
<a name="set-up-thoughtspot-connection-to-amazon-redshift"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Añada una conexión de Amazon Redshift. | Añada una conexión Amazon Redshift a su base de datos Falcon local. ThoughtSpot Para obtener más información, consulte [Añadir una conexión Amazon Redshift](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-add-connection.html) en la ThoughtSpot documentación. | Administrador de base de datos | 
| Edite la conexión de Amazon Redshift. | Puede editar la conexión de Amazon Redshift para añadir tablas y columnas.Para obtener más información, consulte [Edición de una conexión de Amazon Redshift](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-edit-connection.html) en la ThoughtSpot documentación. | Administrador de base de datos | 
| Reasigne la conexión de Amazon Redshift. | Modifique los parámetros de conexión editando el archivo .yaml de asignación de origen que se creó al añadir la conexión de Amazon Redshift. Por ejemplo, puede reasignar la tabla o columna existente a una tabla o columna diferente en una conexión de base de datos existente. ThoughtSpot recomienda comprobar las dependencias antes y después de volver a mapear una tabla o columna de una conexión para asegurarse de que se muestran según sea necesario.Para obtener más información, consulte [Remapear una conexión de Amazon Redshift](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-remap-connection.html) en ThoughtSpot la documentación. | Administrador de base de datos | 
| Elimine una tabla de la conexión de Amazon Redshift.  | (Opcional) Si intenta eliminar una tabla de una conexión de Amazon Redshift, ThoughtSpot comprueba las dependencias y muestra una lista de objetos dependientes. Puede elegir los objetos de la lista para eliminarlos o eliminar la dependencia. A continuación puede eliminar la tabla.Para obtener más información, consulte [Eliminar una tabla de una conexión de Amazon Redshift](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-delete-table.html) en la ThoughtSpot documentación. | Administrador de base de datos | 
|  Elimine una tabla con objetos dependientes de una conexión de Amazon Redshift. | (Opcional) Si intenta eliminar una tabla con objetos dependientes, la operación se bloquea. Se muestra una ventana `Cannot delete` con una lista de enlaces a objetos dependientes. Cuando se eliminen todas las dependencias, podrá eliminar la tablaPara obtener más información, consulte [Eliminar una tabla con objetos dependientes de una conexión de Amazon Redshift](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-delete-table-dependencies.html) en la ThoughtSpot documentación. | Administrador de base de datos | 
| Elimine una conexión de Amazon Redshift. | (Opcional) Como una conexión se puede utilizar en varios orígenes de datos o visualizaciones, debe eliminar todas las fuentes y tareas que utilizan esa conexión antes de poder eliminar la conexión de Amazon Redshift.Para obtener más información, consulte [Eliminar una conexión de Amazon Redshift](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-delete-connection.html) en la ThoughtSpot documentación. | Administrador de base de datos | 
|  Compruebe la referencia de conexión de Amazon Redshift. | Asegúrese de proporcionar la información requerida para su conexión a Amazon Redshift utilizando la [referencia de conexión](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-connection-reference.html) de la documentación. ThoughtSpot  | Administrador de base de datos | 

## Información adicional
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-additional"></a>
+ [Análisis basados en IA a cualquier escala con Amazon ThoughtSpot Redshift](https://aws.amazon.com/blogs/apn/ai-driven-analytics-at-any-scale-with-thoughtspot-and-amazon-redshift/)
+ [Precios de Amazon Redshift](https://aws.amazon.com/redshift/pricing/)
+ [Introducción a AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_GettingStarted.html) 
+ [Introducción a Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [Uso de agentes de extracción de datos](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/agents.html)
+ [Chick-fil-A mejora la velocidad de obtención de información con ThoughtSpot AWS](https://www.thoughtspot.com/sites/default/files/pdf/ThoughtSpot-Chick-fil-A-AWS-Case-Study.pdf) 

# Migre de Oracle Database a Amazon RDS for PostgreSQL mediante Oracle GoldenGate
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate"></a>

*Dhairya Jindani, Sindhusha Paturu y Rajeshkumar Sabankar, Amazon Web Services*

## Resumen
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-summary"></a>

Este patrón muestra cómo migrar una base de datos Oracle a Amazon Relational Database Service (Amazon RDS) para PostgreSQL mediante Oracle Cloud Infrastructure (OCI). GoldenGate

Con Oracle GoldenGate, puede replicar datos entre la base de datos de origen y una o más bases de datos de destino con un tiempo de inactividad mínimo.

**nota**  
La base de datos Oracle de origen puede estar en las instalaciones o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Puede utilizar un procedimiento similar cuando utilice herramientas de replicación en las instalaciones.

## Requisitos previos y limitaciones
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una licencia de Oracle GoldenGate 
+ Controlador de Java Database Connectivity (JDBC) para conectarse a la base de datos PostgreSQL
+ Esquema y tablas creados con la [herramienta de conversión de esquemas de AWS (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/) en la base de datos Amazon RDS para PostgreSQL de destino

**Limitaciones**
+ Oracle solo GoldenGate puede replicar los datos de las tablas existentes (carga inicial) y los cambios en curso (captura de datos de cambios)

**Versiones de producto**
+ Oracle Database 10g Enterprise Edition o versiones más recientes 
+ Oracle GoldenGate 12.2.0.1.1 para Oracle o versiones más recientes
+ Oracle GoldenGate 12.2.0.1.1 para PostgreSQL o versiones más recientes

## Arquitectura
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-architecture"></a>

El siguiente diagrama muestra un ejemplo de flujo de trabajo para migrar una base de datos de Oracle a Amazon RDS for PostgreSQL mediante Oracle: GoldenGate

![\[Flujo de trabajo de migración de una base de datos de Oracle en las instalaciones a Amazon RDS para PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/384f0eaf-8582-474a-a7f4-ec1048a4feb3/images/de541887-0d5f-4a9a-b136-ce2599355cb8.png)


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

1. El [proceso de GoldenGate extracción](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GUID-6419F3A9-71EC-4D14-9C41-3BAA1E3CA19C) de Oracle se ejecuta en la base de datos de origen para extraer los datos.

1. El [proceso de Oracle GoldenGate Replicat](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GUID-5EF0326C-9058-4C40-8925-98A223388C95) entrega los datos extraídos a la base de datos Amazon RDS for PostgreSQL de destino.

## Tools (Herramientas)
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-tools"></a>
+ [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 monitorear sus soluciones de procesamiento de datos y de replicación de datos en streaming en Oracle Cloud Infrastructure.
+ [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de PostgreSQL en la nube de AWS.

## Epics
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-epics"></a>

### Descargue e instale Oracle GoldenGate
<a name="download-and-install-oracle-goldengate"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue Oracle GoldenGate. | Descargue las siguientes versiones de Oracle GoldenGate:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.html)Para descargar el software, consulte [ GoldenGate Descargas de Oracle en el sitio web de Oracle](https://www.oracle.com/middleware/technologies/goldengate-downloads.html). | Administrador de base de datos | 
| Instale Oracle GoldenGate for Oracle en el servidor de Oracle Database de origen. | Para obtener instrucciones, consulte la [ GoldenGate documentación de Oracle](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm). | Administrador de base de datos | 
| Instale la base de datos Oracle GoldenGate for PostgreSQL en la instancia de Amazon. EC2  | Para obtener instrucciones, consulte la documentación de [Oracle GoldenGate ](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm). | Administrador de base de datos | 

### Configure Oracle GoldenGate en las bases de datos de origen y destino
<a name="configure-oracle-goldengate-on-the-source-and-target-databases"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Oracle GoldenGate for Oracle Database en la base de datos de origen. | Para obtener instrucciones, consulte la [ GoldenGate documentación de Oracle](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm).Asegúrese de configurar lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.html) | Administrador de base de datos | 
| Configure Oracle GoldenGate para PostgreSQL en la base de datos de destino. | Para obtener instrucciones, consulte la [Parte VI Uso de Oracle GoldenGate para PostgreSQL](https://docs.oracle.com/en/middleware/goldengate/core/19.1/gghdb/using-oracle-goldengate-postgresql.html) en el sitio web de Oracle.Asegúrese de configurar lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.html) | Administrador de base de datos | 

### Configuración de la captura de datos
<a name="configure-the-data-capture"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el proceso de extracción en la base de datos de origen. | En la base de datos de Oracle de origen, cree un archivo de extracción para extraer los datos.Para obtener instrucciones, consulte [ADD EXTRACT](https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/ggsci_commands006.htm#GWURF122) en la documentación de Oracle.El archivo de extracción incluye la creación del archivo de parámetros de extracción y el directorio de archivos de seguimiento. | Administrador de base de datos | 
| Configure una bomba de datos para transferir el archivo de seguimiento de la base de datos de origen a la de destino. | Cree un archivo de parámetros EXTRACT y un directorio de archivos de seguimiento siguiendo las instrucciones que aparecen en [PARFILE](https://docs.oracle.com/database/121/SUTIL/GUID-7A045C82-5993-44EB-AFAD-B7D39C34BCCD.htm#SUTIL859) en *Utilidades de bases de datos*, en el sitio web de Oracle.Para obtener más información, consulte [¿Qué es una ruta?](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GUID-88674F53-1E07-4C00-9868-598F82D7113C) en *Fusion Middleware Understanding Oracle GoldenGate* en el sitio web de Oracle. | Administrador de base de datos | 
| Configure la replicación en la EC2 instancia de Amazon. | Cree un archivo de parámetros de replicación y un directorio de archivos de seguimiento.Para obtener más información sobre la creación de archivos de parámetros de replicación, consulte la sección [3.5 Validación de un archivo de parámetros](https://docs.oracle.com/en/middleware/goldengate/core/21.3/admin/using-oracle-goldengate-parameter-files.html#GUID-1E32A9AD-25DB-4243-93CD-E643E7116215) en la documentación de la base de datos de Oracle.Para obtener más información, consulte [Creación de un registro de seguimiento](https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/creating-trail.html) en la documentación de CloudTrail.Asegúrese de agregar una entrada en la tabla de puntos de control en el archivo GLOBALS del destino.Para obtener más información, consulte [¿Qué es un replicante?](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GGCON-GUID-5EF0326C-9058-4C40-8925-98A223388C95) en *Fusion Middleware Understanding Oracle GoldenGate* en el sitio web de Oracle. | Administrador de base de datos | 

### Configure la replicación de datos
<a name="configure-the-data-replication"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| En la base de datos de origen, cree un archivo de parámetros para extraer los datos de la carga inicial. | Siga las instrucciones de la sección [Creación de un archivo de parámetros en GGSCI](https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/using-oracle-goldengate-parameter-files.html#GUID-5C49C522-8B28-4E4B-908D-66A33717CE6C) en la documentación de Oracle Cloud.Asegúrese de que el administrador se ejecute en el destino. | Administrador de base de datos | 
| En la base de datos de destino, cree un archivo de parámetros para replicar los datos de la carga inicial. | Siga las instrucciones de la sección [Creación de un archivo de parámetros en GGSCI](https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/using-oracle-goldengate-parameter-files.html#GUID-5C49C522-8B28-4E4B-908D-66A33717CE6C) en la documentación de Oracle Cloud.Asegúrese de agregar e iniciar el proceso de replicación. | Administrador de base de datos | 

### Cambie a la base de datos de Amazon RDS para PostgreSQL
<a name="cut-over-to-the-amazon-rds-for-postgresql-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detenga el proceso de replicación y asegúrese de que las bases de datos de origen y destino estén sincronizadas. | Compare los recuentos de filas entre las bases de datos de origen y destino para asegurarse de que la replicación de los datos se realizó correctamente. | Administrador de base de datos | 
| Compatibilidad con el lenguaje de definición de datos (DDL) de configuración. | Ejecute el script DDL para crear activadores, secuencias, sinónimos y claves referenciales en PostgreSQL.Puede usar cualquier aplicación cliente de SQL estándar para conectarse al clúster de base de datos. Por ejemplo, puede usar [pgAdmin](https://www.pgadmin.org/) para conectarse a su instancia de base de datos. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-resources"></a>
+ [Amazon RDS para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) en la *Guía del usuario de Amazon RDS*
+ [ EC2 Documentación de Amazon](https://docs.aws.amazon.com/ec2/)
+ [Métodos de procesamiento y bases de datos GoldenGate compatibles con Oracle](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD112) (documentación de Oracle)

# Migración de una tabla particionada de Oracle a PostgreSQL mediante AWS DMS
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms"></a>

*Saurav Mishra y Eduardo Valentim, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-summary"></a>

Este patrón describe cómo acelerar la carga de una tabla particionada de Oracle a PostgreSQL mediante AWS Database Migration Service (AWS DMS), que no admite el particionamiento nativo. La base de datos PostgreSQL de destino se puede instalar en Amazon Elastic Compute Cloud ( EC2Amazon) o puede ser una instancia de base de datos Edition compatible con PostgreSQL o Amazon Aurora PostgreSQL compatible con PostgreSQL. 

La carga de una tabla particionada incluye los pasos siguientes:

1. Cree una tabla principal similar a la tabla de particiones de Oracle, pero no incluya ninguna partición.

1. Cree tablas secundarias que hereden de la tabla principal que se creó en el paso 1.

1. Cree una función de procedimiento y un disparador para gestionar las inserciones en la tabla principal.

Sin embargo, dado que el disparador se activa para cada inserción, la carga inicial con AWS DMS puede ser muy lenta.

Para acelerar las cargas iniciales de Oracle a PostgreSQL 9.0, este patrón crea una tarea de AWS DMS independiente para cada partición y carga las tablas secundarias correspondientes. A continuación, se crea un disparador durante la transición. 

La versión 10 de PostgreSQL admite particiones nativas. Sin embargo, en algunos casos puede decidir utilizar la partición heredada. Para obtener más información, consulte la sección [Additional information](#migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-additional) (Información adicional).

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de Oracle de origen con una tabla particionada
+ Una base de datos PostgreSQL en AWS

**Versiones de producto**
+ PostgreSQL 9.0

## Arquitectura
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Una tabla particionada en Oracle

**Pila de tecnología de destino**
+ Una tabla particionada en PostgreSQL (en EC2 Amazon, Amazon RDS for PostgreSQL o Aurora PostgreSQL)

**Arquitectura de destino**

![\[Tabla de datos particionada de Oracle que se transfiere a la tarea de AWS DMS para cada partición y, a continuación, a PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7fa2898e-3308-436a-aec8-ab6f680d7bac/images/1b9742ea-a13d-434c-83a7-56686cf76ea0.png)


## Tools (Herramientas)
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-tools"></a>
+ [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.

## Epics
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-epics"></a>

### Configure AWS DMS
<a name="set-up-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree las tablas en PostgreSQL. | Cree las tablas principales y secundarias correspondientes en PostgreSQL con las condiciones de comprobación necesarias para las particiones. | Administrador de base de datos | 
| Cree la tarea AWS DMS para cada partición. | Incluya el estado del filtro de la partición en la tarea de AWS DMS. Asigne las particiones a las tablas secundarias de PostgreSQL correspondientes. | Administrador de base de datos | 
| Ejecute las tareas de AWS DMS con captura de datos de cambio y carga completa (CDC). | Además, compruebe que el parámetro `StopTaskCachedChangesApplied` está establecido en `true` y que el parámetro `StopTaskCachedChangesNotApplied` está establecido en `false`. | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detiene la tarea de replicación. | Antes de detener las tareas, confirme que el origen y el destino están sincronizados. | Administrador de base de datos | 
| Cree un disparador en la tabla principal. | Como la tabla principal recibirá todos los comandos de inserción y actualización, cree un activador que dirija estos comandos a las tablas secundarias respectivas en función de la condición de partición. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-resources"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Particionamiento de tablas (documentación de PostgreSQL)](https://www.postgresql.org/docs/10/ddl-partitioning.html)

## Información adicional
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-additional"></a>

Aunque la versión 10 de PostgreSQL admite la partición nativa, puede decidir usar la partición heredada para los siguientes casos de uso:
+ La partición impone una regla según la cual todas las particiones deben tener el mismo conjunto de columnas que la principal, pero la herencia de tablas permite que las particiones secundarias tengan columnas adicionales.
+ La herencia de tablas admite herencias múltiples.
+ La partición declarativa solo admite la partición de listas y rangos. Con la herencia de tablas, puede dividir los datos como desee. Sin embargo, si la exclusión de la restricción no puede reducir las particiones de forma eficaz, el rendimiento de las consultas se verá afectado.
+ Algunas operaciones necesitan un bloqueo más fuerte cuando se usa la partición declarativa que cuando se usa la herencia de tablas. Por ejemplo, añadir o quitar una partición de una tabla particionada requiere un bloqueo `ACCESS EXCLUSIVE` en la tabla principal, mientras que un bloqueo `SHARE UPDATE EXCLUSIVE` es suficiente para una herencia normal.

Si utiliza particiones de trabajo independientes, también puede volver a cargar las particiones si hay algún problema de validación de AWS DMS. Para mejorar el rendimiento y el control de la replicación, ejecute las tareas en instancias de replicación independientes.

# Migración de de Amazon RDS para Oracle a Amazon RDS para MySQL
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql"></a>

*Jitender Kumar, Srini Ramaswamy y Neha Sharma, Amazon Web Services*

## Resumen
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-summary"></a>

Este patrón proporciona una guía para migrar una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle a una base de datos de Amazon RDS para MySQL en la nube de Amazon Web Services (AWS). Este patrón utiliza AWS Database Migration Service (AWS DMS) y la Herramienta de conversión de esquemas de AWS (AWS SCT). 

El patrón proporciona las prácticas recomendadas para gestionar la migración de los procedimientos almacenados. También trata y cambia el código para admitir la capa de aplicación. 

## Requisitos previos y limitaciones
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una base de datos de origen de Amazon RDS para Oracle.
+ Una base de datos de destino de Amazon RDS para MySQL. Las bases de datos de origen y de destino deben estar en la misma nube privada virtual (VPC). Si utilizas varios VPCs o debes tener los permisos de acceso necesarios.
+ Grupos de seguridad que permiten la conectividad entre las bases de datos de origen y destino, AWS SCT, el servidor de la aplicación y AWS DMS.
+ Una cuenta de usuario con los privilegios necesarios para ejecutar AWS SCT en la base de datos de origen.
+ Registro suplementario activado para ejecutar AWS DMS en la base de datos de origen.

**Limitaciones**
+ El límite de tamaño de la base de datos de Amazon RDS de origen y destino es de 64 TB. Para obtener información sobre el tamaño de Amazon RDS, consulte la [documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html).
+ Oracle distingue mayúsculas de minúsculas para los objetos de base de datos, pero MySQL no. AWS SCT puede gestionar este problema al crear un objeto. Sin embargo, es necesario llevar a cabo algunos trabajos manuales para no distinguir entre mayúsculas y minúsculas.
+ Esta migración no utiliza extensiones de MySQL para habilitar las funciones nativas de Oracle. AWS SCT gestiona la mayor parte de la conversión, pero es necesario trabajar un poco para cambiar el código manualmente.
+ Se requieren cambios en el controlador de Java Database Connectivity (JDBC) en la aplicación.

**Versiones de producto**
+ Amazon RDS para Oracle 12.2.0.1 y versiones posteriores. Para ver las versiones de RDS para Oracle compatibles actualmente, consulte la [documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Concepts.database-versions.html).
+ Amazon RDS para MySQL 8.0.15 y versiones posteriores Para ver las versiones de RDS para MySQL compatibles actualmente, consulte la [documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Concepts.VersionMgmt.html).
+ AWS DMS, versión 3.3.0 y posteriores. Consulte la documentación de AWS para obtener más información sobre los [puntos de conexión de origen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) y [de destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) compatibles con AWS DMS.
+ AWS SCT, versión 1.0.628 y posteriores.  Consulte [AWS SCT source and target endpoint support matrix](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) en la documentación de AWS.

## Arquitectura
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-architecture"></a>

**Pila de tecnología de origen**
+ Amazon RDS para Oracle. Para obtener más información, consulte [Using an Oracle database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html). 

**Pila de tecnología de destino**
+ Amazon RDS para MySQL. Para obtener más información, consulte [Using a MySQL-Compatible database as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html).

**Arquitectura de migración**

En el siguiente diagrama, AWS SCT copia y convierte los objetos de esquema de la base de datos de origen de Amazon RDS para Oracle y envía los objetos a la base de datos de destino de Amazon RDS para MySQL. AWS DMS replica los datos de la base de datos de origen y los envía a la instancia de Amazon RDS para MySQL.

![\[AWS SCT, AWS DMS y Amazon RDS se implementaron en una subred privada.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e1efa7c2-47c1-4677-80bc-6b19250fc0d6/images/b54a8442-9ab9-4074-b8f6-a08f87fa2f52.jpeg)


## Tools (Herramientas)
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-tools"></a>
+ [AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) lo ayuda a migrar almacenes de datos a la nube de AWS o entre combinaciones de configuraciones en la nube y en las instalaciones.
+ [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. Este patrón utiliza [Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) and [Amazon RDS para MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html).
+ La [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, lo que incluye las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino.

## Epics
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
|  Identifique los requisitos de hardware de la instancia del servidor de destino. |  | DBA, SysAdmin | 
| Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento). |  | DBA, SysAdmin | 
| Elija el tipo de instancia apropiado (capacidad, características de almacenamiento y características de red). |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red de las bases de datos de origen y destino. |  | DBA, SysAdmin  | 
| Elija una estrategia de migración de aplicaciones. | Considere si desea un tiempo de inactividad total o parcial para las actividades en transición. | DBA, propietario de la SysAdmin aplicación | 

### Configurar la infraestructura
<a name="configure-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Creación de una VPC y de subredes. |  | SysAdmin | 
| Cree grupos de seguridad y listas de control de acceso a la red (ACLs). |  | SysAdmin | 
| Configure e inicie la instancia de Amazon RDS para Oracle. |  | DBA, SysAdmin | 
| Configure e inicie la instancia de Amazon RDS para MySQL.  |  | DBA, SysAdmin | 
| Prepare un caso de prueba para la validación de la conversión de código. | Esto ayudará a realizar pruebas unitarias para el código convertido. | Administrador de base de datos, desarrollador | 
| Configure la instancia de AWS DMS. |  |  | 
| Configure los puntos de conexión de origen y destino en AWS DMS. |  |  | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Generar el script de la base de datos de destino mediante AWS SCT. | Compruebe la precisión del código convertido por AWS SCT. Será necesario realizar algunos trabajos manuales. | Administrador de base de datos, desarrollador | 
| En AWS SCT, elija la configuración “Sin distinción entre mayúsculas y minúsculas”. | En AWS SCT, elija Configuración del proyecto, Distinción entre mayúsculas y minúsculas del destino, Sin distinción entre mayúsculas y minúsculas. | Administrador de base de datos, desarrollador | 
| En AWS SCT, opte por no utilizar la función nativa de Oracle. | En la configuración del proyecto, compruebe las funciones TO\$1 \$1DATECHAR/TO\$1NUMBER/TO. | Administrador de base de datos, desarrollador | 
| Realice cambios en el código “sql%notfound”. | Puede que tenga que convertir el código manualmente. |  | 
| Realice consultas sobre tablas y objetos en procedimientos almacenados (utilice consultas en minúsculas). |  | Administrador de base de datos, desarrollador | 
| Cree el script principal después de realizar todos los cambios y, a continuación, impleméntelo en la base de datos de destino. |  | Administrador de base de datos, desarrollador | 
| Realice pruebas unitarias de procedimientos almacenados y llamadas a aplicaciones utilizando datos de muestra.  |  |  | 
| Limpie los datos que se crearon durante las pruebas unitarias. |  | Administrador de base de datos, desarrollador | 
| Elimine las restricciones de clave externa en la base de datos de destino. | Este paso es obligatorio para cargar los datos iniciales. Si no desea eliminar las restricciones de clave externa, debe crear una tarea de migración para los datos específicos de las tablas principal y secundaria. | Administrador de base de datos, desarrollador | 
| Coloque las claves principales y las claves únicas en la base de datos de destino. | Este paso da como resultado un mejor rendimiento para la carga inicial. | Administrador de base de datos, desarrollador | 
| Habilitar el registro suplementario en la base de datos de origen.  |  | Administrador de base de datos | 
| Cree una tarea de migración para la carga inicial en AWS DMS y ejecútela. | Seleccione la opción de migrar datos existentes. | Administrador de base de datos | 
| Añada las claves principales y las claves externas a la base de datos de destino. | Las restricciones deben añadirse después de la carga inicial. | Administrador de base de datos, desarrollador | 
| Cree una tarea de migración para la replicación continua. | La replicación continua mantiene la base de datos de destino sincronizada con la base de datos de origen. | Administrador de base de datos | 

### Migración de aplicaciones
<a name="migrate-applications"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Sustituya las funciones nativas de Oracle por funciones nativas de MySQL. |  | Propietario de la aplicación | 
| Asegúrese de que solo se usen nombres en minúscula para los objetos de base de datos en las consultas SQL. |  | DBA, SysAdmin propietario de la aplicación | 

### Realizar la transición a la base de datos de destino
<a name="cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Apague el servidor de la aplicación. |  | Propietario de la aplicación | 
| Valide que las bases de datos de origen y destino estén sincronizadas. |  | Administrador de base de datos, propietario de la aplicación | 
| Detenga la instancia de base de datos de Amazon RDS para Oracle. |  | Administrador de base de datos | 
| Detenga la tarea de migración. | Se detendrá automáticamente después de completar el paso anterior. | Administrador de base de datos | 
| Cambie la conexión JDBC de Oracle a MySQL. |  | Administrador de base de datos, propietario de la aplicación | 
| Inicie la aplicación. |  | DBA, propietario de la SysAdmin aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revise y valide los documentos del proyecto. |  | DBA, SysAdmin | 
| Recopile métricas sobre el tiempo de migración, el porcentaje de tareas manuales en comparación con las tareas automatizadas, el ahorro de costos, etc. |  | DBA, SysAdmin | 
| Detenga y elimine las instancias de AWS DMS. |  | Administrador de base de datos | 
| Elimine los puntos de conexión de la base de datos de origen y de destino. |  | Administrador de base de datos | 
| Elimine las tareas de migración. |  | Administrador de base de datos | 
| Realice una instantánea de la instancia de base de datos de Amazon RDS para Oracle. |  | Administrador de base de datos | 
| Elimine la instancia de base de datos de Amazon RDS para Oracle. |  | Administrador de base de datos | 
| Cierre y elimine cualquier otro recurso temporal de AWS que haya utilizado. |  | DBA, SysAdmin | 
| Cierre el proyecto y envíe sus comentarios. |  | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-resources"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)

# Migre de IBM Db2 en Amazon EC2 a Aurora compatible con PostgreSQL mediante AWS DMS y AWS SCT
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct"></a>

*Sirsendu Halder y Abhimanyu Chhabra, Amazon Web Services*

## Resumen
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-summary"></a>

Este patrón proporciona orientación para migrar una base de datos IBM Db2 en una instancia de Amazon Elastic Compute Cloud EC2 (Amazon) a una instancia de base de datos Edition compatible con Amazon Aurora PostgreSQL. Este patrón utiliza AWS Database Migration Service (AWS DMS) y Herramienta de conversión de esquemas de AWS (AWS SCT) para la migración de datos y la conversión de esquemas.

El patrón describe una estrategia de migración en línea con poco o ningún tiempo de inactividad para una base de datos IBM Db2 de varios terabytes que tiene un número elevado de transacciones. Le recomendamos que convierta las columnas de claves principales (PKs) y claves externas (FKs) con el tipo de datos `NUMERIC` a PostgreSQL `INT` o `BIGINT` en PostgreSQL para obtener un mejor rendimiento. 

## Requisitos previos y limitaciones
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa 
+ Una base de datos IBM Db2 de origen en una instancia EC2 

**Versiones de producto**
+ DB2/LINUXX8664 versión 11.1.4.4 y versiones posteriores

## Arquitectura
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**** **
+ Una base de datos Db2 en una instancia EC2  

**Pila de tecnología de destino**
+ Una instancia de base de datos compatible con Aurora PostgreSQ versión 10.18 o instancia de base de datos posterior

**Arquitectura de migración de base de datos**** **

![\[Uso de AWS DMS para migrar de IMB Db2 en Amazon a una versión compatible con EC2 Aurora PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5e737fab-3e04-4887-9fb0-d1c88503b57d/images/789fabcc-8052-40d5-a746-986d799576e9.png)


## Tools (Herramientas)
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) ayuda a migrar los bases de datos a la nube de AWS o entre combinaciones de configuraciones en las instalaciones y en la nube. La base de datos de origen permanece totalmente operativa durante la migración, minimizando así el tiempo de inactividad de las aplicaciones que dependen de ella. Puede utilizar AWS DMS puede migrar sus datos desde y hasta las bases de datos comerciales y de código abierto más usadas. AWS DMS admite migraciones heterogéneas entre diferentes plataformas de bases de datos, como IBM Db2 a una versión 10.18 o posterior compatible con Aurora PostgreSQL. Para obtener más información, consulte [Fuentes de migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) y [Objetivos de migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html) en la documentación de AWS DMS.
+ [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) ademite las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte de los objetos de código de base de datos, incluidas las vistas, los procedimientos almacenados y las funciones, a un formato que sea compatible con la base de datos de destino. Los objetos que no se conviertan automáticamente se marcan claramente para que puedan convertirse manualmente con el objetivo de completar la migración. AWS SCT también puede analizar el código fuente de su aplicación en busca de instrucciones de SQL incrustadas y convertirlas. 

## Epics
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una instancia de base de datos compatible con Aurora PostgreSQL. | Para crear una instancia de base de datos, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html). Para engine type (Tipo de motor), elija **Amazon Aurora**. En edition (edición), seleccione **Edición compatible con Amazon Aurora PostgreSQL**.La instancia de base de datos de la versión 10.18 o posterior compatible con Aurora PostgreSQL debe estar en la misma nube privada virtual (VPC) que la base de datos de origen de IBM Db2. | Amazon RDS | 

### Convertir su esquema de base de dato
<a name="convert-your-database-schema"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar y verificar AWS SCT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | Administrador de AWS, administrador de base de datos, ingeniero de migraciones | 
| Inicie AWS SCT y cree un proyecto. | Para iniciar la herramienta AWS SCT y crear un nuevo proyecto para ejecutar un informe de evaluación de la migración de bases de datos, siga las instrucciones de la [documentación de AWS SCT.](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Launching) | Ingeniero de migraciones | 
| Añada servidores de bases de datos y cree una regla de asignación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | Ingeniero de migraciones | 
| Crear un informe de evaluación de la migración de la base de datos.  | Cree el informe de evaluación de la migración de la base de datos siguiendo los pasos de la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport). | Ingeniero de migraciones | 
| Consultar del informe de evaluación. | Utilice la pestaña **Resumen** del informe de evaluación de la migración de la base de datos para ver el informe y analizar los datos. Este análisis le ayudará a determinar la complejidad de la migración. Para obtener más información, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.View.html). | Ingeniero de migraciones | 
| Convierta el esquema. | Para convertir su esquemas de base de datos de origen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html)Para obtener más información, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Converting). | Ingeniero de migraciones | 
| Aplicar el esquema de base de datos convertido a su instancia de base de datos de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html)Para obtener más información, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.ApplyingConversion). | Ingeniero de migraciones | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar grupos de parámetros de base de datos y una VPC.  | Configure grupos de parámetors de base de datos y una VPC, y configure las reglas y parámetros de entrada necesarios para la migración. Para obtener instrucciones, consulte la [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Prerequisites.html).Para el grupo de seguridad de VPC, seleccione la EC2 instancia para Db2 y la instancia de base de datos compatible con Aurora PostgreSQL. Esta instancia de replicación debe estar en la misma región que las instancias de base de datos de origen y de destino. | Ingeniero de migraciones | 
| Prepare las instancias de base de datos de origen y destino. | Prepare las instancias de base de datos de origen y destino para la migración. En un entorno de producción, la base de datos de origen ya existirá.Para la base de datos de origen, el nombre del servidor debe ser el sistema de nombres de dominio (DNS) público de la instancia en la EC2 que se ejecuta Db2. Para el nombre de usuario, puede usar `db2inst1` seguido del puerto, que será 5000 para IBM Db2.  | Ingeniero de migraciones | 
| Crea un EC2 cliente y puntos de conexión de Amazon. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | Ingeniero de migraciones | 
| Cree una instancia de replicación. | Cree una instancia de replicación mediante la consola de AWS DMS y especifique los puntos de conexión de origen y destino. La instancia de replicación realiza la migración de datos entre los puntos de conexión. Para obtener más información, consulte [la documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html).  | Ingeniero de migraciones | 
| Crear una tarea de AWS DMS para migrar los datos. | Cree una tarea para cargar las tablas de IBM Db2 de origen en la instancia de base de datos PostgreSQL de destino siguiendo los pasos de la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Tasks).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | Ingeniero de migraciones | 

## Recursos relacionados
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-resources"></a>

**Referencias**
+ [Documentación de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
+ [Documentación del contenedor de datos externos (FDW) de PostgreSQL](https://www.postgresql.org/docs/10/postgres-fdw.html) 
+ [Documentación IMPORT FOREIGN SCHEMA de PostgreSQL](https://www.postgresql.org/docs/10/sql-importforeignschema.html) 
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/index.html)  
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 

**Tutoriales y videos**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/) (guía)
+ [Introducción a Amazon EC2 : Elastic Cloud Server & Hosting con AWS](https://www.youtube.com/watch?v=TsRBftzZsQo) (vídeo)

# Migre de Oracle 8i o 9i a Amazon RDS para PostgreSQL mediante AWS DMS SharePlex
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms"></a>

*Kumar Babu P G, Amazon Web Services*

## Resumen
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-summary"></a>

Este patrón describe cómo migrar una base de datos de Oracle 8i o 9i en las instalaciones a una base de datos de Amazon Relational Database Service (Amazon RDS) para PostgreSQL o Amazon Aurora PostgreSQL. AWS Database Migration Service (AWS DMS) no admite Oracle 8i o 9i como fuente, por lo que Quest SharePlex replica los datos de una base de datos 8i o 9i local en una base de datos Oracle intermedia (Oracle 10g u 11g), que es compatible con AWS DMS.

Desde la instancia intermedia de Oracle, el esquema y los datos se migran a la base de datos PostgreSQL en AWS mediante la herramienta de conversión de esquemas de AWS (AWS SCT) y AWS DMS. Este método ayuda a lograr una transmisión continua de datos desde la base de datos de Oracle de origen a la instancia de base de datos PostgreSQL de destino con un retraso de replicación mínimo. En esta implementación, el tiempo de inactividad se limita al tiempo que se tarda en crear o validar todas las claves, activadores y secuencias externas en la base de datos PostgreSQL de destino.

La migración utiliza una instancia de Amazon Elastic Compute Cloud (Amazon EC2) con Oracle 10g u 11g instalado para alojar los cambios de la base de datos Oracle de origen. AWS DMS utiliza esta instancia intermedia de Oracle como fuente para transmitir los datos a Amazon RDS para PostgreSQL o Aurora PostgreSQL. La replicación de datos se puede pausar y reanudar desde la base de datos de Oracle en las instalaciones a la instancia intermedia de Oracle. También se puede pausar y reanudar desde la instancia intermedia de Oracle hasta la base de datos PostgreSQL de destino para que pueda validar los datos mediante la validación de datos de AWS DMS o una herramienta de validación de datos personalizada.

## Requisitos previos y limitaciones
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de Oracle 8i o 9i de origen en un centro de datos en las instalaciones 
+ AWS Direct Connect, configurado entre el centro de datos en las instalaciones y AWS 
+ Controladores de conectividad de bases de datos Java (JDBC) para conectores SCT de AWS instalados en una máquina local o en la instancia en la EC2 que está instalado AWS SCT
+ [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Uso de una base de datos de PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)
+ Familiaridad con la replicación de datos de Quest SharePlex 

 

**Limitaciones**
+ El límite de tamaño de la base de datos es de 64 TB
+ La base de datos de Oracle en las instalaciones debe ser Enterprise Edition

 

**Versiones de producto**
+ Oracle 8i o 9i para la base de datos de origen
+ Oracle 10g o 11g para la base de datos intermedia 
+ PostgreSQL 9.6 o posterior

## Arquitectura
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Oracle 8i o 9i 
+ Quest SharePlex 

 

**Pila de tecnología de destino**
+ Amazon RDS para PostgreSQL o Amazon Aurora PostgreSQL. 

** **

**Arquitectura de origen y destino**

![\[Architecture diagram showing migration from on-premises Oracle database to AWS cloud using various services.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/b6c30668-fc2e-4293-a59a-e01fd151f4bb/images/25082670-0bf3-4b20-8c80-99c6633b046f.png)


## Tools (Herramientas)
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-tools"></a>
+ **AWS DMS** – [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) ayuda a migrar los datos de forma rápida y segura a AWS. La base de datos de origen permanece totalmente operativa durante la migración, minimizando así el tiempo de inactividad de las aplicaciones que dependen de ella. AWS DMS puede migrar sus datos desde y hasta las bases de datos comerciales y de código abierto más usadas. 
+ **AWS SCT** – [La herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, incluidas las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino. Los objetos que no se conviertan automáticamente se marcan claramente para que puedan convertirse manualmente con el objetivo de completar la migración. AWS SCT también puede analizar el código fuente de su aplicación en busca de instrucciones de SQL incrustadas y convertirlas como parte de un proyecto de conversión de esquemas de bases de datos. Durante este proceso, AWS SCT optimiza el código nativo en la nube al convertir las funciones heredadas de Oracle y SQL Server en sus equivalentes de AWS, para ayudarlo a modernizar sus aplicaciones mientras migra sus bases de datos. Una vez finalizada la conversión del esquema, AWS SCT puede ayudar a migrar datos de una variedad de almacenamiento de datos a Amazon Redshift mediante el uso de agentes de migración de datos integrados.
+ **Quest SharePlex**: [Quest SharePlex](https://www.quest.com/register/120420/?gclid=Cj0KCQiA6IHwBRCJARIsALNjViVSt9fHqAsf9XbWkoCwKKyQqollR_5kSxNhBagh9s3spQT4IQCaVy0aAmCnEALw_wcB) es una herramienta de replicación de Oracle-to-Oracle datos para mover datos con un tiempo de inactividad mínimo y sin pérdida de datos.

## Epics
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-epics"></a>

### Cree la EC2 instancia e instale Oracle
<a name="create-the-ec2-instance-and-install-oracle"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configura la red para Amazon EC2. | Creación de la nube privada virtual (VPC), subredes, puerta de enlace de Internet, tablas de enrutamiento y grupos de seguridad. | AWS SysAdmin | 
| Crea la nueva EC2 instancia. | Selecciona Amazon Machine Image (AMI) para la EC2 instancia. Elija el tamaño de la instancia y configura los detalles de la instancia: la cantidad de instancias (1), la VPC y la subred del paso anterior, la asignación automática de la IP pública y otras opciones. Agregue almacenamiento, configure grupos de seguridad y lance la instancia. Cuando se le pida, cree y guarde un par de claves para el siguiente paso. | AWS SysAdmin | 
| Instale Oracle en la EC2 instancia. | Adquiera las licencias y los binarios de Oracle necesarios e instale Oracle 10g u 11g en la instancia. EC2  | Administrador de base de datos | 

### Configure SharePlex en una EC2 instancia y configure la replicación de datos
<a name="set-up-shareplex-on-an-ec2-instance-and-configure-data-replication"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar SharePlex. | Cree una EC2 instancia de Amazon e instale los SharePlex binarios compatibles con Oracle 8i o 9i. | AWS SysAdmin, administrador de bases de datos | 
| Configure la replicación de datos. | Siga las prácticas SharePlex recomendadas para configurar la replicación de datos desde una base de datos Oracle 8i/9i local a una instancia Oracle 10g/11g. | Administrador de base de datos | 

### Convertir el esquema de base de datos de Oracle a PostgreSQL
<a name="convert-the-oracle-database-schema-to-postgresql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS SCT. | Cree un informe nuevo y, a continuación, conéctese a Oracle como origen y a PostgreSQL como destino. En la configuración del proyecto, abra la pestaña SQL Scripting y cambie el script SQL de destino a Varios archivos. | Administrador de base de datos | 
| Convertir el esquema de base de datos de Oracle. | En la pestaña Acción, elija Generar informe, Convertir esquema y, a continuación, Guardar como SQL. | Administrador de base de datos | 
| Modifique los scripts SQL generados por AWS SCT. |  | Administrador de base de datos | 

### Creación y configuración de la instancia de base de datos de Amazon RDS
<a name="create-and-configure-the-amazon-rds-db-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Creación de una instancia de base de datos de Amazon RDS | En la consola de Amazon RDS, cree una nueva instancia de base de datos PostgreSQL. | AWS SysAdmin, administrador de bases de datos | 
| Configure la instancia de base de datos. | Especifique la versión del motor de base de datos, la clase de instancia de base de datos, la implementación Multi-AZ, el tipo de almacenamiento y el almacenamiento asignado. Introduzca el identificador de la instancia de base de datos, un nombre de usuario maestro y una contraseña maestra. | AWS SysAdmin, administrador de bases de datos | 
| Configurar la red y la seguridad. | Especifique la VPC, el grupo de subredes, la accesibilidad pública, la preferencia de zona de disponibilidad y los grupos de seguridad. | AWS SysAdmin, administrador de bases de datos | 
| Configurar las opciones de la base de datos. | Especifique el nombre, el puerto, el grupo de parámetros, el cifrado y la clave maestra de la base de datos. | AWS SysAdmin, administrador de bases de datos | 
| Configure copias de seguridad. | Especifique el período de retención de la copia de seguridad, la ventana de copia de seguridad, la hora de inicio, la duración y si desea copiar las etiquetas a las instantáneas. | AWS SysAdmin, administrador de bases de datos | 
| Configure las opciones de monitoreo. | Habilite y desactive la monitorización mejorada de información sobre rendimiento. | AWS SysAdmin, administrador de bases de datos | 
| Configurar las opciones de mantenimiento. | Especifique la actualización automática de la versión secundaria, el período de mantenimiento y el día, la hora y la duración de inicio. | AWS SysAdmin, administrador de bases de datos | 
| Ejecute los scripts previos a la migración desde AWS SCT. | En la instancia de Amazon RDS, ejecute los siguientes scripts: reate\$1database.sql, create\$1sequence.sql, create\$1table.sql, create\$1view.sql y create\$1function.sql. | AWS SysAdmin, administrador de bases de datos | 

### Migración de datos mediante AWS DMS
<a name="migrate-data-by-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación en AWS DMS. | Complete los campos para el nombre, la clase de instancia, la VPC (igual que para la EC2 instancia), la zona de disponibilidad múltiple y la accesibilidad pública. En la sección de configuración avanzada, especifique el almacenamiento asignado, el grupo de subredes, la zona de disponibilidad, los grupos de seguridad de VPC y la clave raíz de AWS Key Management Service (AWS KMS). | AWS SysAdmin, administrador de bases de datos | 
| Cree el punto de conexión de origen de la base de datos. | Especifique el nombre, el tipo, el motor de origen (Oracle), el nombre del servidor (nombre DNS EC2 privado de Amazon), el puerto, el modo SSL, el nombre de usuario, la contraseña, el SID, la VPC (especifique la VPC que tiene la instancia de replicación) y la instancia de replicación. Para probar la conexión, seleccione Ejecutar prueba y, a continuación, cree el punto de conexión. También puede configurar los siguientes ajustes avanzados: maxFileSize y numberDataType Scale. | AWS SysAdmin, administrador de bases de datos | 
| Cree una tarea de replicación de AWS DMS. | Especifique el nombre de la tarea, la instancia de replicación, los puntos de conexión de origen y destino y la instancia de replicación. Para tipo de migración, seleccione la opción «Migrate existing data and replication ongoing changes» (Migración de los datos existentes y réplica de los cambios en curso). Desactive la casilla de verificación «Start task on create» (Iniciar la tarea al crearla). | AWS SysAdmin, administrador de bases de datos | 
| Configure la configuración de la tarea de replicación de AWS DMS. | Para el modo de preparación de la tabla de destino, elija «Do nothing» (No hacer nada). Detenga la tarea cuando se complete la carga completa para crear las claves principales. Especifique el modo LOB limitado o completo y habilite las tablas de control. Si lo desea, puede configurar la configuración CommitRate avanzada. | Administrador de base de datos | 
| Configure las asignaciones de tablas. | En la sección Mapeos de tablas, cree una regla de Inclusión para todas las tablas de todos los esquemas incluidos en la migración y, a continuación, cree una regla de Exclusión. Agregue tres reglas de transformación para convertir los nombres del esquema, la tabla y las columnas a minúsculas y añada cualquier otra regla necesaria para esta migración específica. | Administrador de base de datos | 
| Iniciar la tarea. | Iniciar la tarea de replicación. Asegúrese de que la carga completa está ejecutando. Ejecute ALTER SYSTEM SWITCH LOGFILE en la base de datos principal de Oracle para iniciar la tarea. | Administrador de base de datos | 
| Ejecute los scripts de la migración intermedia desde AWS SCT. | En Amazon RDS para PostgreSQL, ejecute los siguientes scripts: create\$1index.sql y create\$1constraint.sql. | Administrador de base de datos | 
| Reinicie la tarea para continuar con la captura de datos de cambio (CDC). | Ejecute VACUUM en la instancia de base de datos Amazon RDS para PostgreSQL y reinicie la tarea de AWS DMS para aplicar los cambios de CDC en caché. | Administrador de base de datos | 

### Realizar la transición a la base de datos de PostgreSQL
<a name="cut-over-to-the-postgresql-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Consulte los registros y las tablas de metadatos de AWS DMS. | Valide cualquier error y corríjalo si es necesario. | Administrador de base de datos | 
| Detenga todas las dependencias de Oracle. | Cierre los oyentes de la base de datos de Oracle y ejecute ALTER SYSTEM SWITCH LOGFILE. Detenga la tarea de AWS DMS cuando no muestre actividad. | Administrador de base de datos | 
| Ejecute los scripts posteriores a la migración desde AWS SCT. | En Amazon RDS para PostgreSQL, ejecute los siguientes scripts: create\$1foreign\$1key\$1constraint.sql y create\$1triggers.sql. | Administrador de base de datos | 
| Complete los pasos adicionales de Amazon RDS para PostgreSQL. | Aumente las secuencias para que coincidan con las de Oracle si es necesario, ejecute VACUUM y ANALYZE y tome una instantánea para comprobar la conformidad. | Administrador de base de datos | 
| Abra las conexiones hacia Amazon RDS para PostgreSQL. | Elimine los grupos de seguridad de AWS DMS de Amazon RDS para PostgreSQL, añada grupos de seguridad de producción y dirija sus aplicaciones a la nueva base de datos. | Administrador de base de datos | 
| Limpie los recursos de AWS DMS. | Elimine los puntos finales, las tareas de replicación, las instancias de replicación y la EC2 instancia. | SysAdmin, DBA | 

## Recursos relacionados
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-resources"></a>
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Precio de Amazon RDS para PostgreSQL](https://aws.amazon.com/rds/postgresql/pricing/)
+ [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Uso de una base de datos de PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) 
+ [Documentación de Quest SharePlex ](https://support.quest.com/shareplex/9.0.2/technical-documents)

# Migración de Oracle 8i o 9i a Amazon RDS para PostgreSQL mediante la vista materializada y AWS DMS
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms"></a>

*Kumar Babu P G y Pragnesh Patel, Amazon Web Services*

## Resumen
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-summary"></a>

Este patrón describe cómo migrar una base de datos de Oracle 8i o 9i en las instalaciones a una base de datos de Amazon Relational Database Service (Amazon RDS) para PostgreSQL o para una edición compatible de Amazon Aurora PostgreSQL. 

AWS Database Migration Service (AWS DMS) no admite Oracle 8i o 9i como fuente, por lo que este patrón utiliza una instancia de base de datos de Oracle intermedia que es compatible con AWS DMS, como Oracle 10g u 11g. También utiliza la característica de vistas materializadas para migrar los datos de la instancia 8i/9i de origen de Oracle a la instancia intermedia 10g/11g de Oracle.

La Herramienta de conversión de esquemas de AWS (AWS SCT) convierte el esquema de la base de datos y AWS DMS migra los datos a la base de datos PostgreSQL de destino. 

Este patrón ayuda a los usuarios que desean migrar desde bases de datos de Oracle heredadas con un tiempo de inactividad mínimo. En esta implementación, el tiempo de inactividad se limita al tiempo que se tarda en crear o validar todas las claves externas, activadores y secuencias en la base de datos de destino. 

El patrón utiliza instancias de Amazon Elastic Compute Cloud (Amazon EC2) con una base de datos Oracle 10g/11g instalada para ayudar a AWS DMS a transmitir los datos. Puede pausar temporalmente la replicación del streaming desde la base de datos de Oracle en las instalaciones a una instancia de Oracle para activar AWS DMS y ponerse al día con la validación de datos o para utilizar otra herramienta de validación de datos. La instancia de base de datos PostgreSQL y la base de datos intermedia de Oracle tendrán los mismos datos cuando AWS DMS haya terminado de migrar los cambios actuales.

## Requisitos previos y limitaciones
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de Oracle 8i o 9i de origen en un centro de datos en las instalaciones 
+ AWS Direct Connect, configurado entre el centro de datos en las instalaciones y AWS
+ Controladores de conectividad de bases de datos Java (JDBC) para conectores SCT de AWS instalados en una máquina local o en la instancia en la EC2 que está instalado AWS SCT
+ [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Uso de una base de datos de PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

**Limitaciones**
+ El límite de tamaño de la base de datos es de 64 TB

**Versiones de producto**
+ Oracle 8i o 9i para la base de datos de origen
+ Oracle 10g o 11g para la base de datos intermedia
+ PostgreSQL 10.17 o posterior

## Arquitectura
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Oracle 8i o 9i 

**Pila de tecnología de destino**
+ Amazon RDS para PostgreSQL o Aurora PostgreSQL compatibles

**Arquitectura de destino**

![\[Arquitectura para migrar de una base de datos de Oracle heredada a Amazon RDS o Aurora\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8add9b21-1b62-46a2-bb8e-0350f36a924a/images/f34f9b0f-f1da-4c27-a385-71b12d16c375.png)


## Tools (Herramientas)
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) ayuda a migrar las bases de datos de forma rápida y segura. La base de datos de origen permanece totalmente operativa durante la migración, minimizando así el tiempo de inactividad de las aplicaciones que dependen de ella. AWS DMS puede migrar sus datos desde y hasta las bases de datos comerciales y de código abierto más usadas. 
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) ayuda a convertir automáticamente el esquema de la base de datos de origen y la mayor parte de los objetos de código de la base de datos, incluidas las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino. Los objetos que no se conviertan automáticamente se marcan claramente para que puedan convertirse manualmente con el objetivo de completar la migración. AWS SCT también puede analizar el código fuente de su aplicación en busca de instrucciones de SQL incrustadas y convertirlas como parte de un proyecto de conversión de esquemas de bases de datos. Durante este proceso, AWS SCT optimiza el código nativo en la nube al convertir las funciones heredadas de Oracle y SQL Server en sus equivalentes de AWS, para ayudarlo a modernizar sus aplicaciones mientras migra sus bases de datos. Una vez finalizada la conversión del esquema, AWS SCT puede ayudar a migrar datos de una variedad de almacenamiento de datos a Amazon Redshift mediante el uso de agentes de migración de datos integrados.  

## Prácticas recomendadas
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-best-practices"></a>

Para conocer las prácticas recomendadas para actualizar las vistas materializadas, consulte la siguiente documentación de Oracle:
+ [Actualización de vistas materializadas](https://docs.oracle.com/database/121/DWHSG/refresh.htm#DWHSG-GUID-64068234-BDB0-4C12-AE70-75571046A586)
+ [Actualización rápida para vistas materializadas](https://docs.oracle.com/database/121/DWHSG/refresh.htm#DWHSG8361)

## Epics
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-epics"></a>

### Instale Oracle en una EC2 instancia y cree vistas materializadas
<a name="install-oracle-on-an-ec2-instance-and-create-materialized-views"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la red para la EC2 instancia. | Creación de la nube privada virtual (VPC), subredes, puerta de enlace de Internet, tablas de enrutamiento y grupos de seguridad. | AWS SysAdmin | 
| Crea la EC2 instancia. | Selecciona Amazon Machine Image (AMI) para la EC2 instancia. Elija el tamaño de la instancia y configura los detalles de la instancia: la cantidad de instancias (1), la VPC y la subred del paso anterior, la asignación automática de la IP pública y otras opciones. Agregue almacenamiento, configure grupos de seguridad y lance la instancia. Cuando se le pida, cree y guarde un par de claves para el siguiente paso. | AWS SysAdmin | 
| Instale Oracle en la EC2 instancia. | Adquiera las licencias y los binarios de Oracle necesarios e instale Oracle 10g u 11g en la instancia. EC2  | Administrador de base de datos | 
| Configure las redes de Oracle. | Modifique o añada entradas en `listener.ora` para conectarse a la base de datos de Oracle 8i/9i de origen en las instalaciones y, a continuación, cree los enlaces de la base de datos. | Administrador de base de datos | 
| Cree vistas materializadas. | Identifique los objetos de la base de datos que desee replicar en la base de datos de Oracle 8i/9i de origen y, a continuación, cree vistas materializadas de todos los objetos mediante el enlace a la base de datos. | Administrador de base de datos | 
| Implemente scripts para actualizar las vistas materializadas a los intervalos necesarios. | Desarrolle e implemente scripts para actualizar las vistas materializadas a los intervalos requeridos en la instancia Amazon EC2 Oracle 10g/11g. Utilice la opción de actualización incremental para refrescar las vistas materializadas. | Administrador de base de datos | 

### Convertir el esquema de base de datos de Oracle a PostgreSQL
<a name="convert-the-oracle-database-schema-to-postgresql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS SCT. | Cree un informe nuevo y, a continuación, conéctese a Oracle como origen y a PostgreSQL como destino. En la Configuración del proyecto, vaya a la pestaña **SQL Scripting**. Cambie el Script SQL de destino a **Varios archivos**. (AWS SCT no es compatible con las bases de datos de Oracle 8i/9i, por lo que debe restaurar el volcado exclusivo del esquema en la instancia intermedia de Oracle 10g/11g y usarlo como fuente para AWS SCT). | Administrador de base de datos | 
| Convertir el esquema de base de datos de Oracle. | En la pestaña **Action** (Acción), elija **Generate Report** (Generar informe), **Convert Schema** (Convertir esquema) y, a continuación, **Save as SQL** (Guardar como SQL). | Administrador de base de datos | 
| Modifique los scripts SQL. | Realice las modificaciones en función de las prácticas recomendadas. Por ejemplo, cambie a los tipos de datos adecuados y desarrolle equivalentes de PostgreSQL para funciones específicas de Oracle. | Administrador de base de datos, DevDBA | 

### Creación y configuración de la instancia de base de datos de Amazon RDS para alojar la base de datos convertida
<a name="create-and-configure-the-amazon-rds-db-instance-to-host-the-converted-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Creación de una instancia de base de datos de Amazon RDS | En la consola de Amazon RDS, cree una nueva instancia de base de datos PostgreSQL. | AWS SysAdmin, DBA | 
| Configure la instancia de base de datos. | Especifique la versión del motor de base de datos, la clase de instancia de base de datos, la implementación Multi-AZ, el tipo de almacenamiento y el almacenamiento asignado. Introduzca el identificador de la instancia de base de datos, un nombre de usuario maestro y una contraseña maestra. | AWS SysAdmin, DBA | 
| Configurar la red y la seguridad. | Especifique la VPC, el grupo de subredes, la accesibilidad pública, la preferencia de zona de disponibilidad y los grupos de seguridad. | DBA, SysAdmin | 
| Configurar las opciones de la base de datos. | Especifique el nombre, el puerto, el grupo de parámetros, el cifrado y la clave maestra de la base de datos. | ADMINISTRADOR DE BASES DE DATOS, AWS SysAdmin | 
| Configure copias de seguridad. | Especifique el período de retención de la copia de seguridad, la ventana de copia de seguridad, la hora de inicio, la duración y si desea copiar las etiquetas a las instantáneas. | AWS SysAdmin, DBA | 
| Configure las opciones de monitoreo. | Habilite y desactive la monitorización mejorada de información sobre rendimiento. | AWS SysAdmin, DBA | 
| Configurar las opciones de mantenimiento. | Especifique la actualización automática de la versión secundaria, el período de mantenimiento y el día, la hora y la duración de inicio. | AWS SysAdmin, DBA | 
| Ejecute los scripts previos a la migración desde AWS SCT. | En la instancia de Amazon RDS para PostgreSQL de destino, cree el esquema de base de datos mediante los scripts SQL de AWS SCT con otras modificaciones. Estas pueden incluir la ejecución de varios scripts e incluir la creación de usuarios, la creación de bases de datos, la creación de esquemas, tablas, vistas, funciones y otros objetos de código. | AWS SysAdmin, DBA | 

### Migración de datos mediante AWS DMS
<a name="migrate-data-by-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación en AWS DMS. | Complete los campos para el nombre, la clase de instancia, la VPC (igual que para la EC2 instancia), la zona de disponibilidad múltiple y la accesibilidad pública. En la configuración avanzada, especifique el almacenamiento asignado, el grupo de subredes, la zona de disponibilidad, los grupos de seguridad de VPC y la clave de AWS Key Management Service (AWS KMS). | AWS SysAdmin, DBA | 
| Cree el punto de conexión de origen de la base de datos. | Especifique el nombre, el tipo, el motor de origen (Oracle), el nombre del servidor (el nombre DNS privado de la EC2 instancia), el puerto, el modo SSL, el nombre de usuario, la contraseña, el SID, la VPC (especifique la VPC que tiene la instancia de replicación) y la instancia de replicación. Para probar la conexión, seleccione **Ejecutar prueba** y, a continuación, cree el punto de conexión. **También puede configurar los siguientes ajustes avanzados: **maxFileSize**y numberDataType Scale.** | AWS SysAdmin, DBA | 
| Conecte AWS DMS a Amazon RDS para PostgreSQL. | Cree un grupo de seguridad de migración para las conexiones entre sí VPCs, si su base de datos PostgreSQL está en otra VPC. | AWS SysAdmin, DBA | 
| Cree puntos de conexión de base de datos de destino. | Especifique el nombre del punto de conexión, el tipo, el motor de origen (PostgreSQL), el nombre del servidor (punto de conexión de Amazon RDS), el puerto, el modo SSL, el nombre de usuario, la contraseña, el nombre de la base de datos, la VPC (especifique la VPC que tiene la instancia de replicación) y la instancia de replicación. Para probar la conexión, seleccione **Ejecutar prueba** y, a continuación, cree el punto de conexión. También puede configurar los siguientes ajustes avanzados: **maxFileSize**y **numberDataTypeScale**. | AWS SysAdmin, DBA | 
| Cree una tarea de replicación de AWS DMS. | Especifique el nombre de la tarea, la instancia de replicación, los puntos de conexión de origen y destino y la instancia de replicación. Para tipo de migración, seleccione la opción **Migrate existing data and replication ongoing changes** (Migración de los datos existentes y réplica de los cambios en curso). Desactive la casilla **Start task on create** (Iniciar la tarea al crearla). | AWS SysAdmin, DBA | 
| Configure la configuración de la tarea de replicación de AWS DMS. | Para el modo de preparación de la tabla de destino, elija **No hacer nada**. Detenga la tarea cuando se complete la carga completa para crear las claves principales. Especifique el modo LOB limitado o completo y habilite las tablas de control. Si lo desea, puede configurar la configuración **CommitRate**avanzada. | Administrador de base de datos | 
| Configure las asignaciones de tablas. | En la sección **Table mappings** (Mapeos de tabla), cree una regla de inclusión para todas las tablas de todos los esquemas incluidos en la migración y, a continuación, cree una regla de exclusión. Agregue tres reglas de transformación para convertir los nombres del esquema, la tabla y las columnas a minúsculas y añada cualquier otra regla necesaria para esta migración específica. | Administrador de base de datos | 
| Iniciar la tarea. | Iniciar la tarea de replicación. Asegúrese de que la carga completa está ejecutando. Ejecute `ALTER SYSTEM SWITCH LOGFILE` en la base de datos principal de Oracle para iniciar la tarea. | Administrador de base de datos | 
| Ejecute los scripts de la migración intermedia desde AWS SCT. | En Amazon RDS para PostgreSQL, ejecute los siguientes scripts: `create_index.sql` y `create_constraint.sql` (si el esquema completo no se creó inicialmente). | Administrador de base de datos | 
| Reanude la tarea para continuar con la captura de datos de cambio (CDC). | Ejecute `VACUUM` en la instancia de base de datos Amazon RDS para PostgreSQL y reinicie la tarea de AWS DMS para aplicar los cambios de CDC en caché. | Administrador de base de datos | 

### Realizar la transición a la base de datos de PostgreSQL
<a name="cut-over-to-the-postgresql-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Consulte los registros y las tablas de validación de AWS DMS. | Compruebe y corrija cualquier error de replicación o validación. | Administrador de base de datos | 
| Deje de utilizar la base de datos de Oracle en las instalaciones y sus dependencias. | Detenga todas las dependencias de Oracle, cierre los oyentes de la base de datos de Oracle y ejecute `ALTER SYSTEM SWITCH LOGFILE`. Detenga la tarea de AWS DMS cuando no muestre actividad. | Administrador de base de datos | 
| Ejecute los scripts posteriores a la migración desde AWS SCT. | En Amazon RDS para PostgreSQL, ejecute estos scripts: `create_foreign_key_constraint.sql and create_triggers.sql`. Asegúrese de que las secuencias estén actualizadas. | Administrador de base de datos | 
| Complete los pasos adicionales de Amazon RDS para PostgreSQL. | Aumente las secuencias para que coincidan con las de Oracle si es necesario, ejecute `VACUUM` y ANALYZE y `ANALYZE`, y tome una instantánea para comprobar la conformidad. | Administrador de base de datos | 
| Abra las conexiones hacia Amazon RDS para PostgreSQL. | Elimine los grupos de seguridad de AWS DMS de Amazon RDS para PostgreSQL, añada grupos de seguridad de producción y dirija sus aplicaciones a la nueva base de datos. | Administrador de base de datos | 
| Limpie los objetos de AWS DMS. | Elimine los puntos finales, las tareas de replicación, las instancias de replicación y la EC2 instancia. | SysAdmin, DBA | 

## Recursos relacionados
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-resources"></a>
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Precio de Amazon RDS para PostgreSQL](https://aws.amazon.com/rds/postgresql/pricing/)
+ [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Uso de una base de datos de PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

# Migración de Oracle en Amazon EC2 a Amazon RDS para MySQL con AWS DMS y AWS SCT
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct"></a>

*Anil Kunapareddy, Amazon Web Services*

*Harshad Gohil, ninguno*

## Resumen
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-summary"></a>

La administración de bases de datos de Oracle en instancias de Amazon Elastic Compute Cloud (Amazon EC2) requiere recursos y puede resultar costosa. Mover estas bases de datos a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para MySQL le facilitará el trabajo al optimizar el presupuesto global de TI. Amazon RDS para MySQL también ofrece funciones como Multi-AZ, escalabilidad y copias de seguridad automáticas. 

Este patrón le guía a través de la migración de una base de datos de Oracle de origen en Amazon EC2 a una instancia de base de datos Amazon RDS para MySQL de destino. Utiliza AWS Database Migration Service (AWS DMS) para migrar los datos y la Herramienta de conversión de esquemas de AWS (AWS SCT) para convertir el esquema y los objetos de la base de datos de origen a un formato compatible con Amazon RDS para MySQL. 

## Requisitos previos y limitaciones
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos fuente con servicios de instancia y escucha en ejecución, en modo ARCHIVELOG
+ Una base de datos Amazon RDS para MySQL de destino, con suficiente almacenamiento para la migración de datos

**Limitaciones**
+ AWS DMS no crea un esquema en la base de datos de destino; debe hacerlo usted. El nombre de esquema ya tiene que existir para el destino. Las tablas del esquema de origen se importan al usuario o esquema que AWS DMS utiliza para conectarse a la instancia de destino. Debe crear varias tareas de replicación si tiene que migrar varios esquemas. 

**Versiones de producto**
+ Todas las ediciones de las bases de datos de Oracle para las versiones 10.2 y posteriores, 11g y versiones posteriores a la 12.2 y 18c. Para ver la lista actualizada de versiones compatibles, consulte [Uso de una base de datos de Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) y [Uso de una base de datos compatible con MySQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html). Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características. Para obtener información sobre las versiones de bases de datos de Oracle compatibles con AWS SCT, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html).
+ AWS DMS es compatible con las versiones 5.5, 5.6 y 5.7 de MySQL. 

## Arquitectura
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos de Oracle en una instancia EC2  

**Pila de tecnología de destino**
+ Instancia de base de datos de Amazon RDS para MySQL

**Arquitectura de migración de datos**

![\[Uso de AWS DMS para migrar de Oracle en Amazon EC2 a Amazon RDS para MySQL\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8a8e346e-7944-4999-bc11-208efead3792/images/c00f908c-f348-41dd-a31c-3931b990777a.png)


**Arquitectura de origen y destino**

![\[Uso de AWS DMS y AWS SCT para migrar de Oracle en Amazon EC2 a Amazon RDS para MySQL\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8a8e346e-7944-4999-bc11-208efead3792/images/e7ba7ac0-3094-4142-b355-fb192e242432.png)


## Tools (Herramientas)
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-tools"></a>
+ **AWS DMS**: [AWS Database Migration Service](https://docs.aws.amazon.com/dms/) (AWS DMS) es un servicio web que puede utilizar para migrar datos de una base de datos en las instalaciones, de una instancia de base de datos de Amazon RDS o de una base de datos de una instancia EC2 a una base de datos de un servicio de AWS, como Amazon RDS para MySQL o una instancia EC2. Puede también migrar desde una base de datos de un servicio de AWS a otra base de datos local. Puede migrar datos entre motores de bases de datos heterogéneos u homogéneos.
+ **AWS SCT**: [la herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) hace más predecible las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, incluidas las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino. Tras convertir el esquema de la base de datos y los objetos de código mediante AWS SCT, puede utilizar AWS DMS para migrar los datos de la base de datos de origen a la base de datos de destino para completar sus proyectos de migración.

## Epics
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique las versiones y motores de la base de datos de origen y destino. |  | Administrador de base de datos/desarrollador | 
| Identifique la instancia de replicación de DMS. |  | Administrador de base de datos/desarrollador | 
| Identifique los requisitos de almacenamiento, como el tipo y la capacidad de almacenamiento. |  | Administrador de base de datos/desarrollador | 
| Identifique los requisitos de la red, como la latencia y el ancho de banda. |  |  Administrador de base de datos/desarrollador | 
| Identifique los requisitos de hardware para las instancias del servidor de origen y destino (según la lista de compatibilidad de Oracle y los requisitos de capacidad). |  | Administrador de base de datos/desarrollador | 
| Identifique requisitos de seguridad para acceder a la red de las bases de datos de origen y destino. |  | Administrador de base de datos/desarrollador | 
| Instale los controladores AWS SCT y Oracle. |  | Administrador de base de datos/desarrollador | 
| Determine una estrategia de copia de seguridad. |  | Administrador de base de datos/desarrollador | 
| Determine los requisitos de disponibilidad. |  | Administrador de base de datos/desarrollador | 
| Identifique la estrategia de migración y cambio de aplicaciones. |  | Administrador de base de datos/desarrollador | 
| Seleccione el tipo de instancia de base de datos adecuado en función de la capacidad, el almacenamiento y las características de la red. |  | Administrador de base de datos/desarrollador | 

### Configure el entorno
<a name="configure-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). El origen, el destino y la instancia de replicación deben estar en la misma VPC. También es bueno tenerlos en la misma zona de disponibilidad. |  | Desarrollador | 
| Cree los grupos de seguridad necesarios para el acceso a la base de datos. |  |  Desarrollador | 
| Genere y configure un par de claves. |  | Desarrollador | 
| Configure las subredes, las zonas de disponibilidad y los bloques CIDR. |  | Desarrollador | 

### Configure la fuente: base de datos de Oracle en una instancia EC2
<a name="configure-the-source-oracle-database-on-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale Oracle Database en Amazon EC2 con los usuarios y roles necesarios. |  | Administrador de base de datos | 
|  Realice los tres pasos de la siguiente columna para acceder a Oracle desde fuera de la instancia EC2. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.html) | Administrador de base de datos | 
| Cuando se reinicia Amazon EC2, el DNS público cambia. Asegúrese de actualizar el DNS público de Amazon EC2 en “tnsnames” y “listener” o utilice una dirección IP elástica. |  | Administrador de base de datos/desarrollador | 
| Configure el grupo de seguridad de la instancia de EC2 para que la instancia de replicación y los clientes necesarios puedan acceder a la base de datos de origen. |  | Administrador de base de datos/desarrollador | 

### Configure el destino: Amazon RDS para MySQL
<a name="configure-the-target-amazon-rds-for-mysql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure e inicie la instancia de base de datos de Amazon RDS para MySQL. |  | Desarrollador | 
| Cree el espacio de tablas necesario en la instancia de base de datos de Amazon RDS para MySQL. |  | Administrador de base de datos | 
| Configure el grupo de seguridad para que la instancia de replicación y los clientes necesarios puedan acceder a la base de datos de destino. |  | Desarrollador | 

### Configure AWS SCT y cree un esquema en la base de datos de destino
<a name="configure-aws-sct-and-create-a-schema-in-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale los controladores AWS SCT y Oracle. |  | Desarrollador | 
| Introduzca los parámetros adecuados y conéctese a la fuente y al destino. |  | Desarrollador | 
| Genere un informe de conversión de esquemas. |  | Desarrollador | 
| Corrija el código y el esquema según sea necesario, especialmente los espacios de tabla y las comillas, y ejecútelos en la base de datos de destino. |  |  Desarrollador | 
| Valide el esquema en el origen y en el destino antes de migrar los datos. |  | Desarrollador | 

### Migración de datos utilizando AWS DMS
<a name="migrate-data-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Para carga completa y la captura de datos de cambios (CDC) o simplemente para CDC, debe configurar un atributo de conexión adicional. |  | Desarrollador | 
| Al usuario especificado en las definiciones de la base de datos de Oracle de origen de AWS DMS se le deben conceder todos los privilegios necesarios. Para obtener una lista completa, consulte https://docs.aws.amazon.com/dms/ latest/userguide/CHAP \$1Source.Oracle.html \$1CHAP\$1Source .Oracle.Self-Managed. |  | Administrador de base de datos/desarrollador | 
| Habilitar el registro suplementario en la base de datos de origen. |  | Administrador de base de datos/desarrollador | 
| Para la captura completa de datos y cambios (CDC) o simplemente CDC, habilite el modo ARCHIVELOG en la base de datos de origen. |  | Administrador de base de datos | 
| Cree puntos de conexión de origen y destino y pruebe las conexiones. |  | Desarrollador | 
| Cuando los puntos de conexión estén conectados correctamente, cree una tarea de replicación. |  | Desarrollador | 
| Seleccione solo CDC (o) carga completa más CDC en la tarea para capturar los cambios para la replicación continua únicamente (o) carga completa más los cambios en curso, respectivamente. |  | Desarrollador | 
| Ejecute la tarea de replicación y supervise CloudWatch los registros de Amazon. |  |  Desarrollador | 
| Valide los datos en las bases de datos de origen y destino. |  | Desarrollador | 

### Migración de su aplicación y cómo realizar la transición
<a name="migrate-your-application-and-cut-over"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Siga los pasos de su estrategia de migración de aplicaciones. |  | Administrador de base de datos, desarrollador, propietario de la aplicación | 
| Siga los pasos de su estrategia de transición o cambio de aplicaciones. |  | Administrador de base de datos, desarrollador, propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide el esquema y los datos en las bases de datos de origen y de destino. |  | Administrador de base de datos/desarrollador | 
| Recopile métricas en función del tiempo de migración, el porcentaje de trabajo manual en comparación con el trabajo con herramientas, el ahorro de costos, etc. |  |  DBA/Developer/AppOwner | 
| Revise los documentos y artefactos del proyecto. |  | DBA/Developer/AppOwner | 
| Cerrar los recursos temporales de AWS. |  | Administrador de base de datos/desarrollador | 
| Cerrar el proyecto y enviar comentarios. |  | DBA/Developer/AppOwner | 

## Recursos relacionados
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-resources"></a>
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 
+ [Sitio web de AWS DMS](https://aws.amazon.com/dms/)
+ [Publicaciones del blog de AWS DMS](https://aws.amazon.com/blogs/database/tag/dms/) 
+ [Strategies for Migrating Oracle Database to AWS](https://d1.awsstatic.com/whitepapers/strategies-for-migrating-oracle-database-to-aws.pdf) 
+ [Amazon RDS para Oracle FAQs](https://aws.amazon.com/rds/oracle/faqs/) 
+ [Preguntas frecuentes sobre Oracle](https://aws.amazon.com/oracle/faq/) 
+ [Amazon EC2](https://aws.amazon.com/ec2/) 
+ [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/)
+ [Concesión de licencias de software de Oracle en el entorno de computación en la nube](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)

# Migre una base de datos Oracle de Amazon EC2 a Amazon RDS para MariaDB con AWS DMS y AWS SCT
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct"></a>

*Veeranjaneyulu Grandhi y Vinod Kumar, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-summary"></a>

Este patrón le guía por los pasos para migrar una base de datos Oracle en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) a una instancia de base de datos Amazon Relational Database Service (Amazon RDS) para MariaDB. Este patrón utiliza AWS Data Migration Service (AWS DMS) y Herramienta de conversión de esquemas de AWS (AWS SCT) para la conversión de esquemas. 

La administración de bases de datos Oracle en EC2 instancias requiere más recursos y es más costosa que usar una base de datos en Amazon RDS. Amazon RDS facilita la configuración, el funcionamiento y el escalado de una base de datos relacional en la nube. Amazon RDS proporciona una capacidad rentable y redimensionable a la vez que automatiza las tareas de administración que tanto tiempo consumen, como el aprovisionamiento de hardware, la configuración de la base de datos, la aplicación de parches y las copias de seguridad.

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una base de datos de Oracle de origen con servicios de instancia y escucha en funcionamiento. Esta base de datos debe estar en modo ARCHIVELOG.
+ Estar familiarizado con [Usar una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ Familiaridad con el [uso de Oracle como origen para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html).

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB 

**Versiones de producto**
+ Todas las ediciones de las bases de datos de Oracle para las versiones 10.2 y posteriores, 11g y versiones posteriores a la 12.2 y 18c. Para ver la lista actualizada de versiones compatibles, consulte [Uso de una base de datos de Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) y la [tabla de versiones de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) en la documentación de AWS.
+ Amazon RDS es compatible con las versiones 10.3, 10.4, 10.5 y 10.6 de MariaDB Server Community Server. Para ver la lista más reciente de las versiones admitidas, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html).

## Arquitectura
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos Oracle en una instancia EC2 

**Pila de tecnología de destino**
+ Amazon RDS para MariaDB

**Arquitectura de migración de datos**

![\[Uso de AWS DMS para la migración.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0b4269c6-8ea3-4672-ad14-1ffac1dc14f3/images/ed191145-e5c2-4d61-8827-31f081450c03.png)


**Arquitectura de destino**

![\[Uso de AWS SCT para la migración.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0b4269c6-8ea3-4672-ad14-1ffac1dc14f3/images/0171f548-37dd-4110-851c-7e74dfff3732.png)


## Tools (Herramientas)
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-tools"></a>
+ La [Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) hace que las migraciones de bases de datos heterogéneas sean predecibles al convertir automáticamente el esquema de la base de datos de origen y la mayoría de los objetos de código de la base de datos (incluidas las vistas, los procedimientos almacenados y las funciones) a un formato compatible con la base de datos de destino. Tras convertir el esquema de la base de datos y los objetos de código mediante AWS SCT, puede utilizar AWS DMS para migrar los datos de la base de datos de origen a la base de datos de destino para completar sus proyectos de migración. Para obtener más información, consulte [Uso de Oracle como fuente de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html) en la documentación de AWS SCT.
+ [AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) (AWS DMS) le ayuda a migrar bases de datos a AWS de forma rápida y segura. La base de datos de origen permanece totalmente operativa durante la migración, minimizando así el tiempo de inactividad de las aplicaciones que dependen de ella. AWS DMS puede migrar sus datos desde y hasta las bases de datos comerciales y de código abierto más usadas. AWS DMS admite migraciones homogéneas, como de Oracle a Oracle, así como migraciones heterogéneas entre diferentes plataformas de bases de datos, como de Oracle o Microsoft SQL Server a Amazon Aurora. Para obtener más información sobre la migración de bases de datos de Oracle, consulte [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) en la documentación de AWS DMS.

## Epics
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-epics"></a>

### Planificar la migración
<a name="plan-for-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique las versiones y los motores de bases de datos. | Identifique las versiones y motores de la base de datos de origen y destino. | Administrador de base de datos, desarrollador | 
| Identifique la instancia de replicación. | Identifique la instancia de replicación de AWS DMS. | Administrador de base de datos, desarrollador | 
| Identifique los requisitos de almacenamiento. | Identifique el tipo y la capacidad de almacenamiento. | Administrador de base de datos, desarrollador | 
| Identifique requisitos de red. | Identifique la latencia y el ancho de banda de la red. | Administrador de base de datos, desarrollador | 
| Identifique los requisitos de hardware. | Identifique los requisitos de hardware para las instancias del servidor de origen y destino (según la lista de compatibilidad de Oracle y los requisitos de capacidad). | Administrador de base de datos, desarrollador | 
| Identifique los requisitos de seguridad. | Identifique los requisitos de seguridad de acceso a la red de las bases de datos de origen y destino. | Administrador de base de datos, desarrollador | 
| Instalar controladores. | Instale los controladores AWS SCT y Oracle más recientes. | Administrador de base de datos, desarrollador | 
| Determine una estrategia de copia de seguridad. |  | Administrador de base de datos, desarrollador | 
| Determine los requisitos de disponibilidad. |  | Administrador de base de datos, desarrollador | 
| Elija una migration/switchover estrategia de aplicación. |  | Administrador de base de datos, desarrollador | 
| Seleccione el tipo de instancia. | Seleccione el tipo de instancia adecuado en función de la capacidad, el almacenamiento y las características de la red. | Administrador de base de datos, desarrollador | 

### Configure el entorno
<a name="configure-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC).  | Las instancias de origen, destino y replicación deben estar en la misma VPC y en la misma zona de disponibilidad (recomendado). | Desarrollador | 
| Cree grupos de seguridad. | Cree los grupos de seguridad necesarios para el acceso a la base de datos. | Desarrollador | 
| Genere un par de claves. | Genere y configure un par de claves. | Desarrollador | 
| Configure otros recursos. | Configure las subredes, las zonas de disponibilidad y los bloques CIDR. | Desarrollador | 

### Configurar el origen
<a name="configure-the-source"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lanza la EC2 instancia. | Para obtener instrucciones, consulta la [ EC2 documentación de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html). | Desarrollador | 
| Instalar la base de datos de Oracle. | Instale la base de datos Oracle en la EC2 instancia, con los usuarios y roles necesarios. | Administrador de base de datos | 
| Siga los pasos de la descripción de la tarea para acceder a Oracle desde fuera de la EC2 instancia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct.html) | Administrador de base de datos | 
| Actualiza el DNS EC2 público de Amazon. | Una vez reiniciada la EC2 instancia, el DNS público cambia. Asegúrese de actualizar el DNS EC2 público de Amazon en `tnsnames` y`listener`, o utilice una dirección IP elástica. | Administrador de base de datos, desarrollador | 
| Configure el grupo de seguridad de la EC2 instancia. | Configure el grupo de seguridad de EC2 instancias para que la instancia de replicación y los clientes necesarios puedan acceder a la base de datos de origen. | Administrador de base de datos, desarrollador | 

### Configurar el entorno de destino de Amazon RDS para MariaDB
<a name="configure-the-target-amazon-rds-for-mariadb-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie la instancia de base de datos de RDS. | Configure e inicie la instancia de la base de datos de Amazon RDS para MariaDB. | Desarrollador | 
| Cree espacios de trabajo. | Cree los espacios de tabla necesarios en la base de datos MariaDB de Amazon RDS MariaDB. | Administrador de base de datos | 
| Configurar un grupo de seguridad. | Configure un grupo de seguridad para que la instancia de replicación y los clientes necesarios puedan acceder a la base de datos de destino. | Desarrollador | 

### Configurar AWS SCT
<a name="configure-aws-sct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar controladores. | Instale los controladores AWS SCT y Oracle más recientes. | Desarrollador | 
| Connect (Conectar). | Introduzca los parámetros adecuados y, a continuación, conéctese al origen y al destino. | Desarrollador | 
| Genere un informe de conversión de esquemas. | Genere un informe de conversión del esquemas de AWS SCT. | Desarrollador | 
| Corrija el código y el esquema según sea necesario. | Realice las correcciones necesarias en el código y el esquema (especialmente los espacios de tabla y las comillas). | Administrador de base de datos, desarrollador | 
| Valide el esquema. | Valide el esquema en el origen en comparación con el de destino antes de cargar los datos. | Desarrollador | 

### Migración de datos utilizando AWS DMS
<a name="migrate-data-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Defina un atributo de conexión. | Para cargar completamente y capturar datos de cambios (CDC) o simplemente para CDC, debe configurar un atributo de conexión adicional. Para obtener más información, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html). | Desarrollador | 
| Habilitar el registro suplementario. | Habilitar el registro suplementario en la base de datos de origen. | Administrador de base de datos, desarrollador | 
| Habilite el modo de registro de archivos. | Para los CDC de carga completa (o solo para los CDC), habilite el modo de registro de archivos en la base de datos de origen. | Administrador de base de datos | 
| Cree y pruebe puntos de conexión. | Cree puntos de conexión de origen y destino y pruebe las conexiones. Para obtener más información, consulte la [documentación de Amazon DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html). | Desarrollador | 
| Cree una tarea de replicación. | Cuando los puntos de conexión estén conectados correctamente, cree una tarea de replicación. Para obtener más información, consulte la [documentación de Amazon DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html). | Desarrollador | 
| Elija el tipo de replicación. | Elija **Solo CDC** o **Carga completa más CDC** en la tarea para capturar los cambios solo para la replicación continua, o para carga completa y cambios continuos, respectivamente. | Desarrollador | 
| Inicie y monitoree la tarea. | Inicie la tarea de replicación y supervise CloudWatch los registros de Amazon. Para obtener más información, consulte la [documentación de Amazon DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html). | Desarrollador | 
| Valide los datos. | Valide los datos en las bases de datos de origen y destino. | Desarrollador | 

### Migración de aplicaciones y cómo realizar la transición a la base de datos de destino
<a name="migrate-applications-and-cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Siga la estrategia de migración de aplicaciones elegida. |  | Administrador de base de datos, propietario de la aplicación, desarrollador | 
| Siga la cutover/switchover estrategia de aplicación elegida. |  | Administrador de base de datos, propietario de la aplicación, desarrollador | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide el esquema y los datos. | Asegúrese de que el esquema y los datos se validen correctamente en el origen en comparación con el destino antes de cerrar el proyecto. | Administrador de base de datos, desarrollador | 
| Recopile métricas. | Recopile métricas para tiempo de migración, porcentaje de tareas manuales en comparación con las tareas de herramientas, ahorro de costos y otros criterios similares. | Administrador de base de datos, propietario de la aplicación, desarrollador | 
| Revise la documentación. | Revise los documentos y artefactos del proyecto. | Administrador de base de datos, propietario de la aplicación, desarrollador | 
| Cierre los recursos. | Cerrar los recursos temporales de AWS. | Administrador de base de datos, desarrollador | 
| Cierre el proyecto. | Cierre el proyecto de migración y envíe sus comentarios. | Administrador de base de datos, propietario de la aplicación, desarrollador | 

## Recursos relacionados
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-resources"></a>
+ [Información general sobre MariaDB de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html)
+ [Detalles del producto de Amazon RDS para MariaDB](https://aws.amazon.com/rds/mariadb/features)
+ [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Estrategias para migrar bases de datos de Oracle a AWS](https://docs.aws.amazon.com/whitepapers/latest/strategies-migrating-oracle-db-to-aws/strategies-migrating-oracle-db-to-aws.html)
+ [Concesión de licencias de software de Oracle en el entorno de computación en la nube](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)
+ [Amazon RDS para Oracle FAQs](https://aws.amazon.com/rds/oracle/faqs/)
+ [Información general sobre AWS DMS](https://aws.amazon.com/dms/)
+ [Publicaciones del blog de AWS DMS](https://aws.amazon.com/blogs/database/tag/dms/)
+ [ EC2 Descripción general de Amazon](https://aws.amazon.com/ec2/)
+ [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)

# Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para MySQL con AWS DMS y AWS SCT
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct"></a>

*Sergey Dmitriev y Naresh Damera, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-summary"></a>

Este patrón le guía a través de la migración de una base de datos de Oracle en las instalaciones a una Amazon Relational Database Service (Amazon RDS) para una instancia de base de datos de MySQL. Utiliza AWS Database Migration Service (AWS DMS) para migrar los datos y la Herramienta de conversión de esquemas de AWS (AWS SCT) para convertir el esquema y los objetos de la base de datos de origen a un formato compatible con Amazon RDS para MySQL. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen de Oracle en un centro de datos en las instalaciones 

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB

**Versiones de producto**
+ Todas las ediciones de bases de datos de Oracle para las versiones 11g (versiones 11.2.0.3.v1 y posteriores) y hasta la 12.2, y 18c. Para ver la lista actualizada de versiones compatibles, consulte [Uso de una base de datos de Oracle como origen para AWS DMS.](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características. Para obtener información sobre las versiones de bases de datos de Oracle compatibles con AWS SCT, consulte la [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html). 
+ AWS DMS es actualmente compatible con las versiones 5.5, 5.6 y 5.7 de MySQL. Para ver la lista actualizada de versiones compatibles, consulte [Uso de una base de datos compatible con MySQL como destino para las versiones de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) en la documentación de AWS. 

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Oracle en las instalaciones

**Pila de tecnología de destino**
+ Instancia de base de datos de Amazon RDS para MySQL

**Arquitectura de migración de datos**

![\[Nube de AWS architecture showing data migration from on-premises to RDS via VPC, Internet Gateway, and AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0385e5ad-a1ca-4c29-945b-592321d95f9d/images/c872e033-b13a-4436-b503-0632b5d437ae.png)


 

## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-tools"></a>
+ **AWS DMS**: [AWS Database Migration Services](https://docs.aws.amazon.com/dms/latest/userguide/) (AWS DMS) facilita la migración de bases de datos relacionales, almacenamiento de datos, bases de datos NoSQL y otros tipos de almacenes de datos. Puede utilizar AWS DMS para migrar datos a la nube de AWS, entre instancias en las instalaciones (a través de una configuración de nube de AWS) o entre combinaciones de configuraciones en las instalaciones y en la nube.
+ **AWS SCT**: [la Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) se utiliza para convertir su esquema de base de datos existente de un motor de base de datos a otro. El código personalizado que convierte la herramienta incluye vistas, procedimientos almacenados y funciones. Cualquier código que la herramienta no pueda convertir automáticamente está claramente marcado para que pueda convertirlo usted mismo.

## Epics
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la versión y el motor de la base de datos de origen y de destino. |  | Administrador de base de datos | 
|  Identifique los requisitos de hardware de la instancia del servidor de destino. |  | DBA, SysAdmin | 
| Identifique los requisitos de almacenamiento (el tipo y la capacidad de almacenamiento). |  | DBA, SysAdmin | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino. |  | DBA, SysAdmin  | 
| Identificar la estrategia de migración de aplicaciones. |  | DBA, propietario de la SysAdmin aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC) y subredes. |  | SysAdmin | 
| Cree los grupos de seguridad y las listas de control de acceso a la red (ACLs). |  | SysAdmin | 
| Configure e inicie una instancia de base de datos de Amazon RDS. |  | DBA, SysAdmin | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre el esquema de la base de datos mediante AWS SCT. |  | Administrador de base de datos | 
| Migre los datos mediante AWS DMS. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilizar AWS SCT para analizar y convertir el código SQL dentro del código de la aplicación. | Para obtener más información, consulte https://docs.aws.amazon.com/SchemaConversionTool/ latest/userguide/CHAP \$1Converting.app.html. | Propietario de la aplicación | 
| Seguir la estrategia de migración de aplicaciones. |  |  SysAdminDBA, propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. |  | DBA, propietario de la SysAdmin aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | DBA, SysAdmin | 
| Revise y valide los documentos del proyecto. |  | DBA, SysAdmin | 
| Recopile métricas sobre el tiempo de migración, el porcentaje de migraciones manuales en comparación con las realizadas con herramientas, el ahorro de costos, etc. |  | DBA, SysAdmin | 
| Cerrar el proyecto y enviar comentarios. |  |  | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-related-resources"></a>

**Referencias**
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)

**Tutoriales y videos**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [AWS DMS (video)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 
+ [Amazon RDS (video)](https://www.youtube.com/watch?v=igRfulrrYCo) 

# Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para PostgreSQL mediante Oracle Bystander y AWS DMS
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms"></a>

*Cady Motyka, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-summary"></a>

Este patrón describe cómo puede migrar una base de datos de Oracle en las instalaciones a cualquiera de los siguientes servicios de bases de datos de AWS compatibles con PostgreSQL con un tiempo de inactividad mínimo:
+ Amazon Relational Database Service (Amazon RDS) para PostgreSQL
+ Edición de Amazon Aurora compatible con PostgreSQL

La solución utiliza AWS Database Migration Service (AWS DMS) para migrar los datos, la Herramienta de conversión de esquemas de AWS (AWS SCT) para convertir el esquema de la base de datos y una base de datos de Oracle Bystander para ayudar a gestionar la migración. En esta implementación, el tiempo de inactividad se limita al tiempo necesario para crear o validar todas las claves externas de la base de datos. 

La solución también utiliza instancias de Amazon Elastic Compute Cloud (Amazon EC2) con una base de datos de observadores de Oracle para ayudar a controlar el flujo de datos a través de AWS DMS. Puede pausar temporalmente la replicación en streaming desde la base de datos de Oracle en las instalaciones a Oracle Bystander para activar AWS DMS y ponerse al día con la validación de datos o para utilizar otra herramienta de validación de datos. La instancia de base de datos de Amazon RDS para PostgreSQL o la instancia de base de datos compatible con Aurora PostgreSQL y la base de datos de bystander tendrán los mismos datos cuando AWS DMS termine de migrar los cambios actuales. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen de Oracle en un centro de datos en las instalaciones con Active Data Guard configurado en modo de espera
+ AWS Direct Connect, configurado entre el centro de datos en las instalaciones y AWS Secrets Manager para almacenar los secretos de la base de datos
+ Controladores de conectividad de bases de datos Java (JDBC) para conectores SCT de AWS, instalados en una máquina local o en la instancia en la EC2 que está instalado AWS SCT
+ Estar familiarizado con el [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ Estar familiarizado con el [ uso de una base de datos de PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB

**Versiones de producto**
+ AWS DMS es compatible con todas las ediciones de bases de datos de Oracle para las versiones 10.2 y posteriores (para versiones 10.x), 11g y hasta 12.2, 18c y 19c. Para ver la lista actualizada de versiones compatibles, consulte [Uso de una base de datos de Oracle como origen para AWS DMS.](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características. Para obtener información sobre las versiones de bases de datos de Oracle compatibles con AWS SCT, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html). 
+ AWS DMS es compatible con PostgreSQL versión 9.4 y posterior (para las versiones 9.x), 10.x, 11.x, 12.x y 13.x Para obtener más información, consulte [Uso de una base de datos PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) en la documentación de AWS.

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos de Oracle en las instalaciones
+ EC2 Instancia que aloja a un espectador de la base de datos de Oracle

**Pila de tecnología de destino**
+ Instancia de Amazon RDS para PostgreSQL o Aurora PostgreSQL, PostgreSQL 9.3 y versiones posteriores

**Arquitectura de destino**

El siguiente diagrama muestra un ejemplo de flujo de trabajo para migrar una base de datos de Oracle a una base de datos de AWS compatible con PostgreSQL mediante AWS DMS y un bystander de Oracle:

![\[Migración de una base de datos de Oracle en las instalaciones a PostgreSQL en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6f5d5500-8b09-4bd1-8ef9-e670d58d07f8/images/1de98abd-c143-481a-b55f-e8d00eb96a38.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-tools"></a>
+ [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.
+ La [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, lo que incluye las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino.
+ [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.

## Epics
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-epics"></a>

### Convertir el esquema de base de datos de Oracle a PostgreSQL
<a name="convert-the-oracle-database-schema-to-postgresql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS SCT. | Cree un informe nuevo y conéctese a Oracle como origen y a PostgreSQL como destino. En la **Configuración del proyecto**, vaya a la pestaña **SQL Scripting**. Cambie el **Script SQL de destino** a **Varios archivos**. Estos archivos se utilizarán más adelante y se denominarán de la siguiente manera:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | Administrador de base de datos | 
| Convertir el esquema de base de datos de Oracle. | En la pestaña **Acción**, elija **Generar informe**. A continuación, elija **Convertir esquema** y seleccione **Guardar como SQL**. | Administrador de base de datos | 
| Modifique los scripts. | Por ejemplo, es posible que desee modificar el script si un número del esquema de origen se ha convertido a formato numérico en PostgreSQL, pero prefiera utilizar **BIGINT** en su lugar para obtener un mejor rendimiento. | Administrador de base de datos | 

### Creación y configuración de la instancia de base de datos de Amazon RDS
<a name="create-and-configure-the-amazon-rds-db-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Creación de una instancia de base de datos de Amazon RDS | En la región de AWS correcta, cree una nueva instancia de base de datos de PostgreSQL. Para obtener más información, consulte [Creación de una instancia de base de datos PostgreSQL y conexión a una base de datos en una instancia de base de datos PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.PostgreSQL.html) en la documentación de Amazon RDS. | AWS SysAdmin, administrador de bases de datos | 
| Configure las especificaciones de la instancia de base de datos. | Especifique la versión del motor de base de datos, la clase de instancia de base de datos, la implementación Multi-AZ, el tipo de almacenamiento y el almacenamiento asignado. Introduzca el identificador de la instancia de base de datos, un nombre de usuario principal y una contraseña principal. | AWS SysAdmin, administrador de bases de datos | 
| Configurar la red y la seguridad. | Especifique la nube privada virtual (VPC), el grupo de subredes, la accesibilidad pública, la preferencia de zona de disponibilidad y los grupos de seguridad. | DBA, SysAdmin | 
| Configurar las opciones de la base de datos. | Especifique el nombre, el puerto, el grupo de parámetros, el cifrado y la clave KMS. | AWS SysAdmin, administrador de bases de datos | 
| Configure copias de seguridad. | Especifique el período de retención de la copia de seguridad, la ventana de copia de seguridad, la hora de inicio, la duración y si desea copiar las etiquetas a las instantáneas. | AWS SysAdmin, administrador de bases de datos | 
| Configure las opciones de monitoreo. | Active o desactive los conocimientos mejorados de supervisión y rendimiento. | AWS SysAdmin, administrador de bases de datos | 
| Configurar las opciones de mantenimiento. | Especifique la actualización automática de versiones secundarias, el período de mantenimiento y el día, la hora y la duración de inicio. | AWS SysAdmin, administrador de bases de datos | 
| Ejecute los scripts previos a la migración desde AWS SCT. | En la instancia de Amazon RDS, ejecute los siguientes scripts generados por AWS SCT:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | AWS SysAdmin, administrador de bases de datos | 

### Configurar el Oracle bystander en Amazon EC2
<a name="configure-the-oracle-bystander-in-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configura la red para Amazon EC2. | Creación de la nueva VPC, subredes, puerta de enlace de Internet, tablas de enrutamiento y grupos de seguridad. | AWS SysAdmin | 
| Crea la EC2 instancia. | En la región de AWS correspondiente, cree una nueva EC2 instancia. Seleccione la imagen de máquina de Amazon (AMI), elija el tamaño de la instancia y configure los detalles de la instancia: la cantidad de instancias (1), la VPC y la subred del paso anterior, la asignación automática de la IP pública y otras opciones. Agregue almacenamiento, configure grupos de seguridad y lance. Cuando se le pida, cree y guarde un par de claves para el siguiente paso. | AWS SysAdmin | 
| Conecte la base de datos de origen de Oracle a la EC2 instancia. | Copie la dirección IP IPv4 pública y el DNS en un archivo de texto y conéctese mediante SSH de la siguiente manera: **ssh -i «your\$1file.pem» ec2-user@<your-IP** - -DNS>. address-or-public | AWS SysAdmin | 
| Configura el anfitrión inicial para un transeúnte en Amazon. EC2 | Configure las claves SSH, el perfil bash, ORATAB y los enlaces simbólicos. Cree directorios Oracle. | AWS SysAdmin, administrador de Linux | 
| Configurar la copia de la base de datos para un espectador en Amazon EC2 | Utilice RMAN para crear una copia de la base de datos, habilitar el registro adicional y crear el archivo de control en espera. Una vez completada la copia, coloque la base de datos en modo de recuperación. | AWS SysAdmin, administrador de bases de datos | 
| Configurar Oracle Data Guard. | Modifique el archivo **listener.ora** e inicie el oyente. Configure un nuevo destino de archivo. Coloque al espectador en modo de recuperación, sustituya los archivos temporales para evitar futuros daños, instale un crontab si es necesario para evitar que el directorio de archivos se quede sin espacio y edite el **manage-trclog-files-oraclearchivo.cfg** para el archivo de origen y el modo de espera. | AWS SysAdmin, administrador de bases de datos | 
| Prepare la base de datos de Oracle para sincronizar los envíos. | Añada los archivos de registro en espera y cambie el modo de recuperación. Cambie el envío de registros a **SYNC AFFIRM** tanto en la fuente principal como en la fuente en espera. Active los registros principales, confirme mediante el registro de alertas de Amazon EC2 Bystander que está utilizando los archivos de registro en espera y confirme que la retransmisión está fluyendo en SYNC. | AWS SysAdmin, administrador de bases de datos | 

### Migre datos con AWS DMS
<a name="migrate-data-with-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación en AWS DMS. | Complete los campos para el nombre, la clase de instancia, la VPC (igual que la EC2 instancia de Amazon), la zona de disponibilidad múltiple y la accesibilidad pública. En **Avanzado**, especifique el almacenamiento asignado, el grupo de subredes, la zona de disponibilidad, los grupos de seguridad de VPC y la clave de AWS Key Management Service (AWS KMS). | AWS SysAdmin, administrador de bases de datos | 
| Cree el punto de conexión de origen de la base de datos. | Especifique el nombre, el tipo, el motor de origen (Oracle), el nombre del servidor (nombre DNS EC2 privado de Amazon), el puerto, el modo SSL, el nombre de usuario, la contraseña, el SID, la VPC (especifique la VPC que tiene la instancia de replicación) y la instancia de replicación. Para probar la conexión, seleccione **Ejecutar prueba** y, a continuación, cree el punto de conexión. **También puede configurar los siguientes ajustes avanzados: **maxFileSize**y numberDataType Scale.** | AWS SysAdmin, administrador de bases de datos | 
| Conecte AWS DMS a Amazon RDS para PostgreSQL. | Cree un grupo de seguridad de migración para todas VPCs las conexiones. | AWS SysAdmin, administrador de bases de datos | 
| Cree puntos de conexión de base de datos de destino. | Especifique el nombre del punto de conexión, el tipo, el motor de origen (PostgreSQL), el nombre del servidor (punto de conexión de Amazon RDS), el puerto, el modo SSL, el nombre de usuario, la contraseña, el nombre de la base de datos, la VPC (especifique la VPC que tiene la instancia de replicación) y la instancia de replicación. Para probar la conexión, seleccione **Ejecutar prueba** y, a continuación, cree el punto de conexión. También puede configurar los siguientes ajustes avanzados: **maxFileSize **y **numberDataTypeScale**. | AWS SysAdmin, administrador de bases de datos | 
| Cree una tarea de replicación de AWS DMS. | Especifique el nombre de la tarea, la instancia de replicación, los puntos de conexión de origen y destino y la instancia de replicación. Para tipo de migración, seleccione la opción **Migrate existing data and replication ongoing changes** (Migración de los datos existentes y réplica de los cambios en curso). Desactive la casilla de verificación **Iniciar la tarea al crearla**. | AWS SysAdmin, administrador de bases de datos | 
| Configure la configuración de la tarea de replicación de AWS DMS. | Para el modo de preparación de la tabla de destino, elija **No hacer nada**. Detenga la tarea cuando se complete la carga completa (para crear las claves principales). Especifique el modo LOB limitado o completo y habilite las tablas de control. Si lo desea, puede configurar la configuración **CommitRate**avanzada. | Administrador de base de datos | 
| Configure el mapeo de tablas. | En la sección **Table mappings** (Mapeo de tablas), cree una regla de **Inclusión** para todas las tablas de todos los esquemas incluidos en la migración y, a continuación, cree una regla de **Exclusión**. Agregue tres reglas de transformación para convertir los nombres del esquema, la tabla y las columnas a minúsculas y añada cualquier otra regla necesaria para esta migración específica. | Administrador de base de datos | 
| Iniciar la tarea. | Iniciar la tarea de replicación. Asegúrese de que la carga completa está ejecutando. Ejecute **ALTER SYSTEM SWITCH LOGFILE** en la base de datos principal de Oracle para iniciar la tarea. | Administrador de base de datos | 
| Ejecute los scripts de la migración intermedia desde AWS SCT. | En Amazon RDS para PostgreSQL, ejecute los siguientes scripts generados por AWS SCT: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | Administrador de base de datos | 
| Reinicie la tarea para continuar con la captura de datos de cambio (CDC). | Ejecute **VACUUM** en la instancia de base de datos Amazon RDS para PostgreSQL y reinicie la tarea de AWS DMS para aplicar los cambios de CDC en caché. | Administrador de base de datos | 

### Realizar la transición a la base de datos de PostgreSQL
<a name="cut-over-to-the-postgresql-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revise los registros y las tablas de validación de AWS DMS para ver si hay algún error. | Compruebe y corrija cualquier error de replicación o validación. | Administrador de base de datos | 
| Detenga todas las dependencias de Oracle. | Detenga todas las dependencias de Oracle, cierre los oyentes de la base de datos de Oracle y ejecute **ALTER SYSTEM SWITCH LOGFILE**. Detenga la tarea de AWS DMS cuando no muestre actividad. | Administrador de base de datos | 
| Ejecute los scripts posteriores a la migración desde AWS SCT. | En Amazon RDS para PostgreSQL, ejecute los siguientes scripts generados por AWS SCT:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | Administrador de base de datos | 
| Complete los pasos adicionales de Amazon RDS para PostgreSQL. | Aumente las secuencias para que coincidan con las de Oracle si es necesario, ejecute **VACUUM** y **ANALYZE** y tome una instantánea para comprobar la conformidad. | Administrador de base de datos | 
| Abra las conexiones hacia Amazon RDS para PostgreSQL. | Elimine los grupos de seguridad de AWS DMS de Amazon RDS para PostgreSQL, añada grupos de seguridad de producción y dirija sus aplicaciones a la nueva base de datos. | Administrador de base de datos | 
| Limpie los objetos de AWS DMS. | Elimine los puntos finales, las tareas de replicación, las instancias de replicación y la EC2 instancia. | SysAdmin, DBA | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-resources"></a>
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Precio de Amazon RDS para PostgreSQL](https://aws.amazon.com/rds/postgresql/pricing/) 

# Migración de una base de datos de Oracle a Amazon Redshift con AWS DMS y AWS SCT
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct"></a>

*Piyush Goyal y Brian Motzer, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-summary"></a>

Este patrón proporciona orientación para migrar las bases de datos de Oracle a un data warehouse en la nube de Amazon Redshift en la nube de Amazon Web Services (AWS) mediante AWS Database Migration Service (AWS DMS) y la Herramienta de conversión de esquemas de AWS (AWS SCT). El patrón cubre las bases de datos Oracle de origen que están en las instalaciones o instaladas en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). También incluye Amazon Relational Database Service (Amazon RDS) para bases de datos de Oracle.

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-prereqs"></a>

**Requisitos previos **
+ Una base de datos de Oracle que se ejecuta en un centro de datos en las instalaciones o en la nube de AWS
+ Una cuenta de AWS activa
+ Estar familiarizado con el [uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ Familiaridad con el [uso de una base de datos Amazon Redshift como objetivo para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html)
+ Conocimiento de Amazon RDS, Amazon Redshift, las tecnologías de bases de datos aplicables y SQL
+ Controladores de conectividad de bases de datos Java (JDBC) para conectores de AWS SCT, donde está instalado AWS SCT

**Versiones de producto**
+ Para las bases de datos de Oracle autogestionadas, AWS DMS admite todas las ediciones de bases de datos de Oracle para las versiones 10.2 y posteriores (para las versiones 10.*x*), 11g y hasta 12.2, 18c y 19c. En el caso de las bases de datos de Amazon RDS para Oracle que administra AWS, AWS DMS admite todas las ediciones de bases de datos de Oracle para las versiones 11g (versiones 11.2.0.4 y posteriores) y hasta 12.2, 18c y 19c. Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características.

## Arquitectura
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**

Uno de los siguientes:
+ Una base de datos de Oracle en las instalaciones
+ Una base de datos de Oracle en una EC2 instancia
+ Una instancia de base de datos de Amazon RDS para Oracle

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

**Arquitectura de destino**

*De una base de datos de Oracle que se ejecuta en la nube de AWS a Amazon Redshift:*

![\[Migración de una base de datos de Oracle en la nube de AWS a un almacén de datos de Amazon Redshift.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/22807be0-c7e0-49c6-8923-7d23bf83a50d/images/7140e819-81d6-45c4-805b-8e10828076a7.png)


*Desde una base de datos de Oracle que se ejecuta en un centro de datos interno hasta Amazon Redshift:*

![\[Migración de una base de datos de Oracle en las instalaciones a un almacén de datos de Amazon Redshift.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/22807be0-c7e0-49c6-8923-7d23bf83a50d/images/d6654b48-0e1b-4b01-a261-5a640be01fd7.png)


## Tools (Herramientas)
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html): AWS Database Migration Service (AWS DMS) le ayuda a migrar bases de datos a AWS de forma rápida y segura. La base de datos de origen permanece totalmente operativa durante la migración, minimizando así el tiempo de inactividad de las aplicaciones que dependen de ella. AWS DMS puede migrar sus datos desde y hasta las bases de datos comerciales y de código abierto más usadas. 
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html): la herramienta de conversión de esquemas de AWS (AWS SCT) puede utilizarse para convertir su esquema de base de datos existente de un motor de base de datos a otro. Es compatible con varios motores de bases de datos, incluidos Oracle, SQL Server y PostgresSQL, como orígenes.

## Epics
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos. | Valide las versiones de las bases de datos de origen y destino y asegúrese de que son compatibles con AWS DMS. Para información sobre las versiones de bases de datos de Oracle compatibles, consulte [Uso de una base de datos de Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html). Para obtener información acerca del uso de Amazon Redshift como destino, consulte [Uso de una base de datos de Amazon Redshift como destino de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html). | Administrador de base de datos | 
| Crear una VPC y un grupo de seguridad. | En su cuenta de AWS, cree una nube privada virtual (VPC), si no existe. Cree un grupo de seguridad para el tráfico saliente para las bases de datos de origen y destino. Para más información, consulte la [documentación de Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html). | Administrador de sistemas | 
| Instale AWS SCT. | Descargue e instale la versión más reciente de AWS SCT y sus controladores correspondientes. Para más información, consulte [Instalación, verificación y actualización de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html). | Administrador de base de datos | 
| Cree un usuario para la tarea de AWS DMS. | Cree un usuario de AWS DMS en la base de datos de origen y concédale privilegios de LECTURA. AWS SCT y AWS DMS utilizarán este usuario. | Administrador de base de datos | 
| Pruebe la conectividad de la base de datos. | Probar la conectividad con la instancia de base de datos de Oracle. | Administrador de base de datos | 
| Cree un proyecto nuevo en AWS SCT. | Abra la herramienta AWS SCT y cree un proyecto nuevo. | Administrador de base de datos | 
| Analice el esquema de Oracle que se va a migrar. | Utilice AWS SCT para analizar el esquema que se va a migrar y generar un informe de evaluación de la migración de la base de datos. Para obtener más información, consulte [Creación de un informe de evaluación de la migración de bases de datos](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.Create.html) en la documentación de AWS SCT. | Administrador de base de datos | 
| Revise el informe de evaluación. | Revise el informe para comprobar la viabilidad de la migración. Es posible que algunos objetos de base de datos requieran una conversión manual. Para más información sobre el informe, consulte [Ver el informe de evaluación](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.View.html) en la documentación de AWS SCT. | Administrador de base de datos | 

### Prepare la base de datos de destino
<a name="prepare-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un clúster de Amazon Redshift. | Cree un clúster de Amazon Redshift en la VPC que creó anteriormente. Para obtener más información, consulte [Clústeres de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 
| Cree usuarios de bases de datos. | Extraiga la lista de usuarios, roles y concesiones de la base de datos de origen de Oracle. Cree usuarios en la base de datos Amazon Redshift de destino y aplique las funciones del paso anterior. | Administrador de base de datos | 
| Evaluar los parámetros de la base de datos. | Revise las opciones, los parámetros, los archivos de red y los enlaces a las bases de datos de la base de datos de origen de Oracle y evalúe su aplicabilidad al destino.             | Administrador de base de datos | 
| Aplique cualquier configuración pertinente a la base de datos de destino.  | Para obtener más información acerca de este paso, consulte [Referencia de configuración](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_ConfigurationRef.html) en la documentación de Amazon Redshift. | Administrador de base de datos | 

### Crear usuarios en la base de datos de destino
<a name="create-objects-in-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un usuario de AWS DMS en la base de datos de destino. | Cree un usuario de AWS DMS en la base de datos de destino y concédale privilegios de lectura y escritura. Valide la conectividad desde AWS SCT. | Administrador de base de datos | 
| Convierta el esquema, revise el informe SQL y guarde los errores o advertencias. | Para obtener más información, consulte [Convertir esquemas de bases de datos mediante AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html) en la documentación de AWS SCT. | Administrador de base de datos | 
| Aplique los cambios de esquema a la base de datos de destino o guárdelos como un archivo .sql. | Para obtener instrucciones, consulte [Guardar y aplicar el esquema convertido en AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.DW.html#CHAP_Converting.DW.SaveAndApply) en la documentación de AWS SCT. | Administrador de base de datos | 
| Valide los objetos de la base de datos de destino. | Valide los objetos que se crearon en el paso anterior en la base de datos de destino. Reescriba o rediseñe los objetos que no se hayan convertido correctamente. | Administrador de base de datos | 
| Deshabilite las claves y los desencadenadores externos. | Deshabilite cualquier clave y desencadenador externo. Esto puede provocar problemas de carga de datos durante el proceso de carga completa cuando se ejecuta AWS DMS. | Administrador de base de datos | 

### Migración de datos utilizando AWS DMS
<a name="migrate-data-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación de AWS DMS. | Inicie sesión en la Consola de administración de AWS y abra la consola de AWS DMS. En el panel de navegación, seleccione **Instancias de replicación** y **Crear instancia de replicación**. Para obtener instrucciones detalladas, consulte el [paso 1](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.ReplicationInstance) de la *Introducción a AWS DMS* en la documentación de AWS DMS. | Administrador de base de datos | 
| Cree puntos de conexión de origen y destino. | Cree puntos de conexión de origen y destino, pruebe la conexión desde la instancia de replicación a los puntos de conexión de origen y destino. Para obtener instrucciones detalladas, consulte el [paso 2](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Endpoints) de la *Introducción a AWS DMS* en la documentación de AWS DMS. | Administrador de base de datos | 
| Cree una tarea de replicación. | Cree una tarea de replicación y seleccione el método de migración adecuado. Para obtener instrucciones detalladas, consulte el [paso 3](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Tasks) de la *Introducción a AWS DMS* en la documentación de AWS DMS. | Administrador de base de datos | 
| Iniciar la tarea de replicación. | Inicie la tarea de replicación y supervise los registros para detectar cualquier error. | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-your-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree servidores de aplicaciones. | Cree los nuevos servidores de aplicaciones en AWS. | Propietario de la aplicación | 
| Migre el código de la aplicación. | Migre el código de la aplicación a los nuevos servidores. | Propietario de la aplicación | 
| Configure los servidores de aplicaciones. | Configure el servidor de aplicaciones para los controladores y la base de datos de destino. | Propietario de la aplicación | 
| Optimice el código de la aplicación. | Optimice el código de la aplicación para la base de datos de destino. | Propietario de la aplicación | 

### Realizar la transición a la base de datos de destino
<a name="cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide a los usuarios. | En la base de datos de Amazon Redshift de destino, valide a los usuarios y asígneles funciones y privilegios. | Administrador de base de datos | 
| Valide que la aplicación esté bloqueada. | Asegúrese de que la aplicación esté bloqueada para evitar más cambios. | Propietario de la aplicación | 
| Valide los datos. | Valide los datos de la base de datos Amazon Redshift de destino. | Administrador de base de datos | 
| Habilite las claves y los desencadenadores externos. | Habilite las claves y los desencadenadores externos en la base de datos de Amazon Redshift de destino. | Administrador de base de datos | 
| Conéctese a la nueva base de datos. | Configure la aplicación para conectarse a la nueva base de datos de Amazon Redshift. | Propietario de la aplicación | 
| Realice las comprobaciones finales. | Realice una comprobación final y exhaustiva del sistema antes de la puesta en marcha. | Administrador de base de datos, propietario de la aplicación | 
| Realice la puesta en marcha. | Póngalo en marcha con la base de datos de Amazon Redshift de destino. | Administrador de base de datos | 

### Cerrar el proyecto de migración
<a name="close-the-migration-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. | Cierre los recursos temporales de AWS, como la instancia de replicación de AWS DMS y la EC2 instancia utilizada para AWS SCT.  | Administrador de base de datos, administrador de sistemas | 
| Revise los documentos.  | Revise y valide los documentos del proyecto de migración.     | Administrador de base de datos, administrador de sistemas | 
| Recopile métricas. | Recopile información sobre el proyecto de migración, como el tiempo de migración, el porcentaje de tareas manuales en comparación con las tareas automatizadas y el ahorro total de costos.  | Administrador de base de datos, administrador de sistemas | 
| Cerrar el proyecto. | Cerrar el proyecto y enviar comentarios. | Administrador de base de datos, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-resources"></a>

**Referencias**
+ [Guía del usuario de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Guía del usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 
+ [Guía de introducción a Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)

**Tutoriales y videos**
+ [Conozca en profundidad AWS SCT y AWS DMS](https://www.youtube.com/watch?v=kJs9U4ys5FE) (presentación de AWS re:Invent 2019)
+ [Introducción a AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/getting-started/)

# Migración de una base de datos de Oracle a Aurora PostgreSQL con AWS DMS y AWS SCT
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct"></a>

*Senthil Ramasamy, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-summary"></a>

Este patrón describe cómo migrar una base de datos de Oracle a una edición compatible con PostgreSQL de Amazon Aurora mediante AWS Data Migration Service (AWS DMS) y la la Herramienta de conversión de esquemas de AWS (AWS SCT). 

El patrón abarca las bases de datos Oracle de origen que se encuentran en las instalaciones, las bases de datos Oracle que están instaladas en instancias de Amazon Elastic Compute Cloud (Amazon EC2) y Amazon Relational Database Service (Amazon RDS) para las bases de datos de Oracle. El patrón convierte estas bases de datos en compatibles con Aurora PostgreSQL.

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una base de datos de Oracle en un centro de datos en las instalaciones o en la nube de AWS.
+ Los clientes de SQL se instalan en una máquina local o en una EC2 instancia.
+ Controladores de conectividad de bases de datos Java (JDBC) para conectores SCT de AWS, instalados en una máquina local o en una instancia en la EC2 que esté instalado AWS SCT. 

**Limitaciones**
+ Límite de tamaño de la base de datos: 128 TB 
+ Si la base de datos de origen es compatible con una aplicación comercial off-the-shelf (COTS) o es específica de un proveedor, es posible que no pueda convertirla a otro motor de base de datos. Antes de usar este patrón, confirme que la aplicación es compatible con Aurora PostgreSQL.  

**Versiones de producto**
+ Para las bases de datos de Oracle autogestionadas, AWS DMS admite todas las ediciones de bases de datos de Oracle para las versiones 10.2 y posteriores (para las versiones 10.x), 11g y hasta 12.2, 18c y 19c. Para ver la lista más reciente de las versiones de las bases de datos de Oracle compatibles (tanto autogestionadas como de Amazon RDS para Oracle), consulte [Uso de una base de datos de Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) y [Uso de una base de datos PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html). 
+ Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características. Para obtener información sobre las versiones de bases de datos de Oracle compatibles con AWS SCT, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html). 
+ Aurora es compatible con las versiones de PostgreSQL incluidas en las [versiones de Amazon Aurora PostgreSQL y versiones del motor](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html).

## Arquitectura
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**

Uno de los siguientes:
+ Una base de datos de Oracle en las instalaciones
+ Una base de datos Oracle en una instancia EC2  
+ Una instancia de base de datos de Amazon RDS para Oracle

**Pila de tecnología de destino**
+ Aurora compatible con PostgreSQL 

**Arquitectura de destino**

![\[Arquitectura de destino para migrar bases de datos de Oracle a Aurora compatibles con PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/68beb634-926e-4908-97b1-edcd23e06a2b.png)


**Arquitectura de migración de datos**
+ Desde una base de datos de Oracle en ejecución en la nube de AWS   
![\[Arquitectura de migración de datos para una base de datos de Oracle en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/7fc32019-3db1-485b-93e5-6d5539be048c.png)

   
+ Desde una base de datos de Oracle en ejecución en un centro de datos en las instalaciones  
![\[Arquitectura de migración de datos para una base de datos de Oracle en un centro de datos en las instalaciones.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/c70d8774-aef7-4414-9766-ce8f25757c4b.png)

## Tools (Herramientas)
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-tools"></a>
+ [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.
+ [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino.

## Epics
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare la base de datos de origen. | Para preparar la base de datos de origen, consulte [Uso de Oracle Database como un origen para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html) en la documentación de AWS SCT. | Administrador de base de datos | 
| Cree una EC2 instancia para AWS SCT. | Cree y configure una EC2 instancia para AWS SCT, si es necesario. | Administrador de base de datos | 
| Descargue AWS SCT. | Descargue la versión más reciente de AWS SCT y los controladores asociados. Para obtener más información, consulte [Instalación, verificación y actualización de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html) en la documentación de AWS SCT. | Administrador de base de datos | 
| Añada usuarios y permisos. | Agregue y valide los usuarios y permisos necesarios en la base de datos de origen. | Administrador de base de datos | 
| Cree un proyecto de AWS SCT. | Cree un proyecto de AWS SCT para la carga de trabajo y conéctese a la base de datos de origen. Para obtener instrucciones, consulte [Creación de un proyecto de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Project) y [Cómo añadir servidores de bases de datos](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AddServers) en la documentación de AWS SCT. | Administrador de base de datos | 
| Evalúe la viabilidad. | Genere un informe de evaluación que resuma las medidas a tomar en el caso de los esquemas que no se pueden convertir automáticamente y proporcione estimaciones de los esfuerzos de conversión manual. Para obtener más información, consulte [Creación y revisión del informe de evaluación de la migración de bases de datos](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport) en la documentación de AWS SCT. | Administrador de base de datos | 

### Prepare la base de datos de destino
<a name="prepare-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una instancia de base de datos de Amazon RDS de destino. | Cree una instancia de base de datos de Amazon RDS de destino con Amazon Aurora como motor de base de datos. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html) en la documentación de Amazon RDS. | Administrador de base de datos | 
| Extraiga usuarios, roles y permisos. | Extraiga la lista de usuarios, roles y permisos de la base de datos de origen. | Administrador de base de datos | 
| Asigne usuarios. | Asigne los usuarios existentes de la base de datos a los nuevos usuarios de la base de datos. | Propietario de la aplicación | 
| Cree usuarios. | Cree usuarios en la base de datos de destino. | Administrador de base de datos, propietario de la aplicación | 
| Aplique roles. | Aplique los roles del paso anterior a la base de datos de destino. | Administrador de base de datos | 
| Compruebe las opciones, los parámetros, los archivos de red y los enlaces a las bases de datos. | Revise la base de datos de origen para ver las opciones, los parámetros, los archivos de red y los enlaces a la base de datos y, a continuación, evalúe su aplicabilidad a la base de datos de destino. | Administrador de base de datos | 
| Aplique la configuración. | Aplique cualquier configuración relevante a la base de datos de destino. | Administrador de base de datos | 

### Transferir objetos
<a name="transfer-objects"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la conectividad de AWS SCT. | Configure la conectividad de AWS SCT con la base de datos de destino. | Administrador de base de datos | 
| Convierta el esquema con AWS SCT. | AWS SCT convierte automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino. El código que la herramienta no puede convertir automáticamente está marcado de forma clara para que pueda convertirlo manualmente. | Administrador de base de datos | 
| Revise el informe. | Revise el informe SQL generado y guarde los errores y advertencias. | Administrador de base de datos | 
| Aplique cambios de esquema automatizados. | Aplique los cambios de esquema automatizados a la base de datos de destino o guárdelos como un archivo .sql. | Administrador de base de datos | 
| Valide objetos. | Valide que AWS SCT haya creado los objetos en el destino.  | Administrador de base de datos | 
| Gestione los elementos que no se hayan convertido. | Reescriba, rechace o rediseñe manualmente cualquier elemento que no se haya podido convertir automáticamente. | Administrador de base de datos, propietario de la aplicación | 
| Aplique permisos de usuario y rol. | Aplique los permisos de usuario y rol generados, y revise las excepciones. | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Determine el método. | Determine el método para migrar los datos. | Administrador de base de datos | 
| Cree una instancia de replicación. | Cree una instancia de replicación desde la consola de AWS DMS. Para obtener más información, consulte [Cómo trabajar con una instancia de replicación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html) en la documentación de AWS DMS. | Administrador de base de datos | 
| Cree los puntos de conexión de origen y de destino. | Para crear puntos de conexión, siga las instrucciones de [Creación de puntos de conexión de origen y destino en la documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html). | Administrador de base de datos | 
| Cree una tarea de replicación. | Para crear una tarea, consulte [Trabajar con tareas de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html) en la documentación de AWS DMS. | Administrador de base de datos | 
| Inicie la tarea de replicación y supervise los registros. | Para obtener más información sobre este paso, consulte [Monitorización de las tareas de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html) en la documentación de AWS DMS. | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice y convierta los elementos SQL en el código de la aplicación. | Use AWS SCT para analizar y convertir los elementos de SQL en el código de la aplicación. Al convertir su esquema de base de datos de un motor a otro, también deberá actualizar el código SQL de las aplicaciones para interactuar con el nuevo motor de base de datos en lugar del antiguo. Puede ver, analizar, editar y guardar el código SQL convertido. | Propietario de la aplicación | 
| Cree servidores de aplicaciones. | Cree los nuevos servidores de aplicaciones en AWS. | Propietario de la aplicación | 
| Migre el código de la aplicación. | Migre el código de la aplicación a los nuevos servidores. | Propietario de la aplicación | 
| Configure los servidores de aplicaciones. | Configure los servidores de aplicaciones para los controladores y la base de datos de destino. | Propietario de la aplicación | 
| Corrija el código. | Corrija cualquier código específico del motor de base de datos de origen de su aplicación. | Propietario de la aplicación | 
| Optimice el código. | Optimice el código de su aplicación para el motor de base de datos de destino. | Propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realizar la transición a la base de datos de destino. | Realice la transición a la nueva base de datos. | Administrador de base de datos | 
| Bloquee la aplicación. | Bloquee la aplicación frente a cualquier cambio. | Propietario de la aplicación | 
| Valide los cambios. | Valide que todos los cambios se hayan propagado a la base de datos de destino. | Administrador de base de datos | 
| Redirigir a la base de datos de destino. | Apunte los nuevos servidores de la aplicación hacia la base de datos de destino. | Propietario de la aplicación | 
| Compruebe todo. | Realice una verificación final y exhaustiva del sistema. | Propietario de la aplicación | 
| Realice la puesta en marcha | Complete las tareas finales de la transición. | Propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. | Cierre los recursos temporales de AWS, como la instancia de replicación de AWS DMS y la EC2 instancia utilizada para AWS SCT. | Administrador de base de datos, propietario de la aplicación | 
| Actualice los comentarios. | Actualice los comentarios sobre el proceso de AWS DMS para los equipos internos. | Administrador de base de datos, propietario de la aplicación | 
| Revise el proceso y las plantillas. | Revise el proceso de AWS DMS y mejore la plantilla si es necesario. | Administrador de base de datos, propietario de la aplicación | 
| Valide los documentos. | Revise y valide los documentos del proyecto. | Administrador de base de datos, propietario de la aplicación | 
| Recopile métricas. | Recopile métricas para evaluar el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado, el ahorro de costos, etc. | Administrador de base de datos, propietario de la aplicación | 
| Cierre el proyecto. | Cierre el proyecto de migración y envíe comentarios a las partes interesadas. | Administrador de base de datos, propietario de la aplicación | 

## Recursos relacionados
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-resources"></a>

**Referencias**
+ [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [Utilizar una base de datos PostgreSQL como objetivo para el servicio de migración de bases de datos de AWS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)
+ [Manual de migración de Oracle Database 11g/12c a Amazon Aurora con compatibilidad con PostgreSQL (9.6.x)](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf) 
+ [Manual de migración de la base de datos de Oracle 19c a Amazon Aurora con compatibilidad con PostgreSQL (12.4)](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook-12.4.pdf)
+ [Migración de una base de datos de Amazon RDS para Oracle a una edición compatible con Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/dms/latest/sbs/chap-oracle-postgresql.html)
+ [AWS Data Migration Service](https://aws.amazon.com/dms/)
+ [Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 
+ [Migración de Oracle a Amazon Aurora](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)

**Tutoriales y videos**
+ [Tutoriales sobre la migración de bases de datos Step-by-Step](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [AWS Data Migration Service](https://www.youtube.com/watch?v=zb4GcjEdl8U) (video)
+ [Migración de una base de datos de Oracle a PostgreSQL](https://www.youtube.com/watch?v=ibtNkChGFkw) (video)

## Información adicional
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-additional"></a>

.

# Migración de datos de una base de datos de Oracle en las instalaciones a Aurora PostgreSQL
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql"></a>

*Michelle Deng y Shunan Xiang, Amazon Web Services*

## Resumen
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-summary"></a>

Este patrón proporciona orientación para la migración de datos de una base de datos de Oracle en las instalaciones a una edición de Amazon Aurora compatible con PostgreSQL. Se basa en una estrategia de migración de datos en línea con un tiempo de inactividad mínimo para bases de datos de Oracle de varios terabytes que contienen tablas grandes con un alto nivel de actividad de lenguaje de manipulación de datos (DML). Emplea una base de datos en espera de Oracle Active Data Guard como fuente para reducir la migración de datos de la base de datos principal. La replicación de la base de datos principal de Oracle a la base de datos en espera se puede suspender durante la carga completa para evitar errores ORA-01555. 

Las columnas de la tabla en claves principales (PKs) o claves externas (FKs), con el tipo de datos NUMBER, se utilizan normalmente para almacenar números enteros en Oracle. Le recomendamos que los convierta a INT o BIGINT en PostgreSQL para obtener un mejor rendimiento. Puede usar la Herramienta de conversión de esquemas de AWS (AWS SCT) para cambiar la asignación de tipos de datos por defecto en las columnas PK y FK. (Para obtener más información, consulte la entrada del AWS blog [Convertir el tipo de datos NUMBER de Oracle a PostgreSQL](https://aws.amazon.com/blogs/database/convert-the-number-data-type-from-oracle-to-postgresql-part-2/)). La migración de datos de este patrón usa AWS Database Migration Service (AWS DMS) tanto para la captura de datos a carga completa como para la captura de datos de cambios (CDC).

También puede usar este patrón para migrar una base de datos Oracle local a Amazon Relational Database Service (Amazon RDS) para PostgreSQL, o una base de datos Oracle alojada en Amazon Elastic Compute Cloud (Amazon) a EC2 Amazon RDS para PostgreSQL o compatible con Aurora PostgreSQL.

## Requisitos previos y limitaciones
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen de Oracle en un centro de datos en las instalaciones con Active Data Guard configurado en modo de espera 
+ AWS Direct Connect, configurado entre el centro de datos en las instalaciones y la nube de AWS
+ Estar familiarizado con el [uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ Estar familiarizado con el [ uso de una base de datos de PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

**Limitaciones**
+ Los clústeres de bases de datos de Amazon Aurora se pueden crear con hasta 128 TiB de almacenamiento. Las instancias de bases de datos de Amazon RDS para PostgreSQL se pueden crear con hasta 64 TiB de almacenamiento. Para obtener la información de almacenamiento más reciente, consulte [Almacenamiento y fiabilidad de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html) y [Almacenamiento de instancias de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) en la documentación de AWS.

**Versiones de producto**
+ AWS DMS es compatible con todas las ediciones de bases de datos de Oracle para las versiones 10.2 y posteriores (para versiones 10.x), 11g y hasta 12.2, 18c y 19c. Para ver la lista actualizada de versiones compatibles, consulte [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) en la documentación de AWS. 

## Arquitectura
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-architecture"></a>

**Pila de tecnología de origen**
+ Bases de datos de Oracle en las instalaciones con Oracle Active Data Guard standby configurado 

**Pila de tecnología de destino**
+ Aurora compatible con PostgreSQL 

**Arquitectura de migración de datos**

![\[Migración de una base de datos de Oracle a Aurora compatible con PostgreSQL\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/49f9b03e-6d33-4ac0-94ad-d3e6d02e6d63/images/0038a36b-fb7d-4f2d-8376-8d38290b0736.png)


## Tools (Herramientas)
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-tools"></a>
+ **AWS DMS**: [AWS Database Migration Service](https://docs.aws.amazon.com/dms/index.html) (AWS DMS) admite varias bases de datos de origen y destino. Consulte [Uso de una base de datos de Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html), en la documentación de AWS DMS, para obtener una lista de las versiones y ediciones de bases de datos de origen y destino de Oracle compatibles. Si AWS DMS no admite la base de datos de origen, debe seleccionar otro método para migrar los datos en la fase 6 (en la sección *Epics*). **Nota importante:** dado que se trata de una migración heterogénea, primero debe comprobar si la base de datos admite una aplicación comercial off-the-shelf (COTS). Si la aplicación es COTS, consulte al proveedor para confirmar que es compatible con Aurora PostgreSQL antes de continuar. Para obtener más información, consulte los [tutoriales de Step-by-Step migración a AWS DMS en la documentación](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) de AWS.
+ **AWS SCT**: la [Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.htm) (AWS SCT) facilita las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino. El código personalizado que convierte la herramienta incluye vistas, procedimientos almacenados y funciones. Cualquier código que la herramienta no pueda convertir automáticamente está claramente marcado para que pueda convertirlo usted mismo. 

## Epics
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
| Instale AWS SCT y los controladores. |  | Administrador de base de datos | 
| Agregue y valide la base de datos de origen de concesiones y usuarios de requisitos previos de AWS SCT. |  | Administrador de base de datos | 
| Cree un proyecto de AWS SCT para la carga de trabajo y conéctese a la base de datos de origen. |  | Administrador de base de datos | 
| Genere un informe de evaluación y evalúe la viabilidad. |  | Administrador de base de datos, propietario de la aplicación | 

### Prepare la base de datos de destino
<a name="prepare-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una base de datos de destino de Aurora compatible con PostgreSQL. |  | Administrador de base de datos | 
| Extraiga la lista de concesiones, usuarios y roles de la base de datos de origen. |  | Administrador de base de datos | 
| Asigne los usuarios existentes de la base de datos a los nuevos usuarios de la base de datos. |  | Propietario de la aplicación | 
| Cree usuarios en la base de datos de destino. |  | Administrador de base de datos | 
| Aplique los roles del paso anterior a la base de datos de Aurora compatible con PostgreSQL de destino. |  | Administrador de base de datos | 
| Revise las opciones, los parámetros, los archivos de red y los enlaces de la base de datos de origen, y evalúe su aplicabilidad a la base de datos de destino. |  | Administrador de base de datos, propietario de la aplicación | 
| Aplique cualquier configuración relevante a la base de datos de destino. |  | Administrador de base de datos | 

### Prepare para la conversión del código de objetos de la base de datos
<a name="prepare-for-database-object-code-conversion"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la conectividad de AWS SCT con la base de datos de destino. |  | Administrador de base de datos | 
| Convierta el esquema en AWS SCT y guarde el código convertido como archivo .sql. |  | Administrador de base de datos, propietario de la aplicación | 
| Convierta manualmente cualquier objeto de base de datos que no se haya podido convertir automáticamente. |  | Administrador de base de datos, propietario de la aplicación | 
| Optimice la conversión del código de la base de datos. |  | Administrador de base de datos, propietario de la aplicación | 
| Divida el archivo .sql en varios archivos .sql según el tipo de objeto. |  | Administrador de base de datos, propietario de la aplicación | 
| Valide los scripts SQL en la base de datos de destino. |  | Administrador de base de datos, propietario de la aplicación | 

### Prepárese para la migración de datos
<a name="prepare-for-data-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación de AWS DMS. |  | Administrador de base de datos | 
| Cree los puntos de conexión de origen y de destino.  | Si el tipo de datos de PKs and FKs se convierte de NUMBER en Oracle a BIGINT en PostgreSQL, considere la posibilidad de especificar el atributo `numberDataTypeScale=-2` de conexión al crear el punto final de origen. | Administrador de base de datos | 

### Migración de datos: carga completa
<a name="migrate-data-ndash-full-load"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el esquema y las tablas en la base de datos de destino. |  | Administrador de base de datos | 
|  Cree tareas de carga completa de AWS DMS agrupando tablas o dividiendo una tabla grande en función de su tamaño. |  | Administrador de base de datos | 
| Detenga las aplicaciones en las bases de datos de Oracle de origen durante un breve período. |  | Propietario de la aplicación | 
| Compruebe que la base de datos en espera de Oracle esté sincronizada con la base de datos principal y detenga la replicación de la base de datos principal a la base de datos en espera. |  | Administrador de base de datos, propietario de la aplicación | 
| Inicie las aplicaciones en la base de datos de Oracle de origen. |  | Propietario de la aplicación | 
| Inicie las tareas de carga completa de AWS DMS en paralelo desde la base de datos en espera de Oracle hasta la base de datos de Aurora compatible con PostgreSQL. |  | Administrador de base de datos | 
| Cree PKs índices secundarios una vez completada la carga completa. |  | Administrador de base de datos | 
| Valide los datos. |  | Administrador de base de datos | 

### Migración de datos: CDC
<a name="migrate-data-ndash-cdc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree tareas de replicación continua de AWS DMS especificando la hora de inicio de CDC o el número de cambio de sistema (SCN) personalizados cuando el modo de espera de Oracle se sincronizó con la base de datos principal y antes de que se reiniciaran las aplicaciones en la tarea anterior. |  | Administrador de base de datos | 
| Inicie las tareas de AWS DMS en paralelo para replicar los cambios en curso de la base de datos en espera Oracle a la base de datos Aurora compatible con PostgreSQL. |  | Administrador de base de datos | 
| Restablezca la replicación de la base de datos principal de Oracle a la base de datos en espera. |  | Administrador de base de datos | 
| Supervise los registros y detenga las aplicaciones en la base de datos de Oracle cuando la base de datos de destino de Aurora compatible con PostgreSQL esté casi sincronizada con la base de datos de Oracle de origen. |  | Administrador de base de datos, propietario de la aplicación | 
| Detenga las tareas de AWS DMS cuando el destino esté completamente sincronizado con la base de datos de Oracle de origen. |  | Administrador de base de datos | 
| Cree FKs y valide los datos en la base de datos de destino. |  | Administrador de base de datos | 
| Cree funciones, vistas, desencadenantes, secuencias y otros tipos de objetos en la base de datos de destino. |  | Administrador de base de datos | 
| Aplique las concesiones de funciones en la base de datos de destino. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Use AWS SCT para analizar y convertir las instrucciones SQL del código de la aplicación. |  | Propietario de la aplicación | 
| Cree nuevos servidores de aplicaciones en AWS. |  | Propietario de la aplicación | 
| Migre el código de la aplicación a los nuevos servidores. |  | Propietario de la aplicación | 
| Configure el servidor de aplicaciones para los controladores y la base de datos de destino. |  | Propietario de la aplicación | 
| Corrija cualquier código específico del motor de base de datos de origen de la aplicación. |  | Propietario de la aplicación | 
| Optimice el código de la aplicación para la base de datos de destino. |  | Propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Apunte el nuevo servidor de la aplicación hacia la base de datos de destino. |  | Administrador de base de datos, propietario de la aplicación | 
| Realice comprobaciones de estado. |  | Administrador de base de datos, propietario de la aplicación | 
| Realice la puesta en marcha. |  | Administrador de base de datos, propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | Administrador de base de datos, administrador de sistemas | 
| Revise y valide los documentos del proyecto. |  | Administrador de base de datos, propietario de la aplicación | 
| Recopile métricas sobre el tiempo necesario para migrar, el porcentaje de uso manual en comparación con el uso de herramientas, el ahorro de costos y datos similares. |  | Administrador de base de datos, propietario de la aplicación | 
| Cerrar el proyecto y enviar comentarios. |  | Administrador de base de datos, propietario de la aplicación | 

## Recursos relacionados
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-resources"></a>

**Referencias**
+ [Base de datos de Oracle a Aurora compatible con PostgreSQL: manual de procedimientos para la migración](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf) 
+ [Migración de una base de datos de Amazon RDS para Oracle a Amazon Aurora MySQL](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.html)
+ [Sitio web de AWS DMS](https://aws.amazon.com/dms/)
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Sitio web de AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Migración de Oracle a Amazon Aurora](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)

**Tutoriales**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/) 
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [ Step-by-StepTutoriales de AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/sbs/dms-sbs-welcome.html)

# Migración de SAP ASE a Amazon RDS para SQL Server utilizando AWS DMS
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms"></a>

*Amit Kumar, Amazon Web Services*

## Resumen
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-summary"></a>

Este patrón proporciona orientación para migrar una base de datos de SAP Adaptive Server Enterprise (ASE) a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) que ejecute Microsoft SQL Server. La base de datos de origen puede estar ubicada en un centro de datos local o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). El patrón utiliza AWS Database Migration Service (AWS DMS) para migrar datos y (de forma opcional) herramientas de ingeniería de software asistida por computadora (CASE) para convertir el esquema de base de datos. 

## Requisitos previos y limitaciones
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos SAP ASE en un centro de datos local o en una instancia EC2 
+ Una base de datos de Amazon RDS para SQL Server de destino que esté en funcionamiento

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB

**Versiones de producto**
+ Solo para SAP ASE, versión 15.7 o 16.x. Para obtener la información más reciente, consulte [Uso de una base de datos de SAP como origen para AWS DMS.](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)
+ Para las bases de datos de destino de Amazon RDS, AWS DMS admite [las versiones de Microsoft SQL Server en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport) para las ediciones Enterprise, Standard, Web y Express. Para obtener la información más reciente sobre las versiones compatibles, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html). Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características.  

## Arquitectura
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos SAP ASE que se encuentra en las instalaciones o en una EC2 instancia de Amazon

**Pila de tecnología de destino**
+ Instancia de base de datos de Amazon RDS para SQL Server

**Arquitectura de origen y destino**

*Desde una base de datos SAP ASE en Amazon EC2 hasta una instancia de base de datos de Amazon RDS for SQL Server:*

![\[De la arquitectura de destino de SAP ASE en Amazon EC2 a Amazon RDS para SQL Server\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5ca697a2-9ca3-4231-b457-c1dc59ada5f1/images/957bdcf0-ab58-4b6d-a71a-d0ecbc31822c.png)


*De una base de datos SAP ASE en las instalaciones a una instancia de base de datos de Amazon RDS para SQL Server:*

![\[Arquitectura de destino para aplicaciones en las instalaciones de SAP ASE a Amazon RDS para SQL Server\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5ca697a2-9ca3-4231-b457-c1dc59ada5f1/images/65aab2f5-0e63-4c34-97e2-cd4ac23751a4.png)


## Tools (Herramientas)
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-tools"></a>
+ [AWS Database Migration Service](https://docs.aws.amazon.com/dms/) (AWS DMS) es un servicio web que puede utilizar para migrar datos de una base de datos local, de una instancia de base de datos de Amazon RDS o de una base de datos de una EC2 instancia a una base de datos de un servicio de AWS, como Amazon RDS for SQL Server, o una instancia. EC2 Puede también migrar desde una base de datos de un servicio de AWS a otra base de datos local. Puede migrar datos entre motores de bases de datos heterogéneos u homogéneos.
+ [Para las conversiones de esquemas, si lo desea, puede utilizar [Erwin](https://erwin.com/products/erwin-data-modeler/) Data Modeler o SAP. PowerDesigner](https://www.sap.com/products/technology-platform/powerdesigner-data-modeling-tools.html)

## Epics
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
| Identifique los requisitos de almacenamiento (el tipo y la capacidad de almacenamiento). |  | DBA, SysAdmin | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino. |  | DBA, SysAdmin | 
| Identificar la estrategia de migración de aplicaciones. |  | DBA, propietario de la SysAdmin aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC) y subredes. |  | SysAdmin | 
| Cree grupos de seguridad y listas de control de acceso a la red (ACLs). |  | SysAdmin | 
| Configure e inicie una instancia de base de datos de Amazon RDS. |  | SysAdmin | 

### Migración de datos: opción 1
<a name="migrate-data---option-1"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre el esquema de la base de datos manualmente o utilice una herramienta CASE como Erwin Data Modeler o SAP. PowerDesigner |  | Administrador de base de datos | 

### Migración de datos: opción 2
<a name="migrate-data---option-2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre datos utilizando AWS DMS. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. |  | DBA, SysAdmin propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. |  | DBA, propietario de la SysAdmin aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | DBA, SysAdmin | 
| Revise y valide los documentos del proyecto. |  | DBA, propietario de la SysAdmin aplicación | 
| Recopile métricas como el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado y el ahorro de costos. |  | DBA, propietario de la SysAdmin aplicación | 
| Cerrar el proyecto y enviar comentarios. |  | DBA, propietario de la SysAdmin aplicación | 

## Recursos relacionados
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-resources"></a>

**Referencias**
+ [Sitio web de AWS DMS](https://aws.amazon.com/dms/)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)
+ [Uso de una base de datos SAP ASE como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)
+ [Limitaciones de RDS Custom for SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html)

**Tutoriales y videos**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [AWS DMS (video)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 
+ [Amazon RDS (video)](https://www.youtube.com/watch?v=igRfulrrYCo) 

# Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon Redshift mediante AWS DMS
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms"></a>

*Marcelo Fernandes, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-summary"></a>

Este patrón proporciona orientación para migrar una base de datos de Microsoft SQL Server en las instalaciones a Amazon Redshift mediante AWS Data Migration Service (AWS DMS). 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen de Microsoft SQL Server en un centro de datos en las instalaciones
+ Requisitos previos cumplidos para usar una base de datos de Amazon Redshift como destino para AWS DMS, tal y como se describe en la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html#CHAP_Target.Redshift.Prerequisites)

**Versiones de producto**
+ Ediciones SQL Server 2005-2019, Enterprise, Standard, Workgroup, Developer y Web. Para ver la lista actualizada de versiones compatibles, consulte [Usar una base de datos de Microsoft SQL Server como origen de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html) en la documentación de AWS. 

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Microsoft SQL Server en las instalaciones 

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

**Arquitectura de migración de datos**

 

![\[Arquitectura para migrar una base de datos de SQL Server en las instalaciones a Amazon Redshift mediante AWS DMS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/65b2be1b-740e-4d4d-99a8-f77c4ea6553d/images/3a094bf2-be31-4d83-8dd2-9dc078321055.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) es un servicio de migración de datos que admite varios tipos de bases de datos de origen y destino. Para obtener información sobre las versiones y ediciones de bases de datos de Microsoft SQL Server que se admiten para su uso con AWS DMS, consulte [Uso de una base de datos de Microsoft SQL Server como fuente de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html) en la documentación de AWS DMS. Si AWS DMS no es compatible con su base de datos de origen, debe seleccionar un método alternativo para la migración de datos.

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la versión y el motor de la base de datos de origen y de destino. |  | Administrador de base de datos | 
| Identifique los requisitos de hardware de la instancia del servidor de destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de almacenamiento (el tipo y la capacidad de almacenamiento). |  | Administrador de base de datos, administrador de sistemas | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar la estrategia de migración de aplicaciones. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). | Para obtener más información, consulte [Trabajar con una instancia de base de datos en una VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) en la documentación de AWS. | Administrador de sistemas | 
| Cree grupos de seguridad. |  | Administrador de sistemas | 
| Configure e inicie un clúster de Amazon Redshift. | Para obtener más información, consulte [Crear un clúster de muestra de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-launch-sample-cluster.html) en la documentación de Amazon Redshift. | Administrador de base de datos, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los datos de la base de datos de Microsoft SQL Server mediante AWS DMS. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre los recursos temporales. |  | Administrador de base de datos, administrador de sistemas | 
| Revise y valide los documentos del proyecto. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopile métricas como el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado y el ahorro de costos. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cerrar el proyecto y enviar comentarios. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-resources"></a>

**Referencias**
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/index.html)
+ [Documentación de Amazon Redshift](https://docs.aws.amazon.com/redshift/)
+ [Precios de Amazon Redshift](https://aws.amazon.com/redshift/pricing/)

**Tutoriales y videos**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [Uso de una base de datos de Amazon Redshift como objetivo de AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html)
+ [AWS DMS (video)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 

# Migración de una base de datos en las instalaciones de Microsoft SQL Server a Amazon Redshift mediante agentes de extracción de datos de AWS SCT
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents"></a>

*Neha Thakur, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-summary"></a>

Este patrón describe los pasos para migrar una base de datos de origen de Microsoft SQL Server en las instalaciones a una base de datos de destino de Amazon Redshift mediante los agentes de extracción de datos de la herramienta de conversión de esquemas de AWS (AWS SCT). Un agente es un programa externo que se integra con AWS SCT, pero que lleva a cabo la transformación de datos en otro lugar e interactúa con otros servicios de AWS en su nombre.   

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-prereqs"></a>

**Requisitos previos **
+ Una base de datos de origen de Microsoft SQL Server utilizada para la carga de trabajo del almacenamiento de datos en un centro de datos en las instalaciones
+ Una cuenta de AWS activa

**Versiones de producto**
+ Microsoft SQL Server versión 2008 o posterior. Consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) para ver una lista de las versiones compatibles más reciente.. 

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-architecture"></a>

**Pila de tecnología** de **origen**
+ Una base de datos de Microsoft SQL Server en las instalaciones

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

**Arquitectura de migración de datos**

![\[Migración de una base de datos de SQL Server a Amazon Redshift mediante agentes de extracción de datos de AWS SCT.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6975f67a-0705-47b4-a1b8-90aaa2597a04/images/dbff958b-7601-442e-9e23-4d07edd0ccfd.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-tools"></a>
+ [La Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) gestiona las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino. Cuando las bases de datos de origen y destino son muy diferentes, puede utilizar un agente SCT de AWS para realizar una transformación de datos adicional. Para obtener más información, consulte [Migrar datos de un almacén de datos en las instalaciones a Amazon Redshift](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/agents.dw.html) en la documentación de AWS.

## Prácticas recomendadas
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-best-practices"></a>
+ [Prácticas recomendadas para AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_BestPractices.html)
+ [Prácticas recomendadas para Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/best-practices.html)

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
| Identifique los requisitos de hardware de la instancia del servidor de destino. |  | DBA, SysAdmin | 
| Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento). |  | DBA, SysAdmin | 
| Elija el tipo de instancia apropiado (capacidad, características de almacenamiento y características de red). |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red de las bases de datos de origen y destino. |  | DBA, SysAdmin | 
| Elija una estrategia de migración de aplicaciones. |  | DBA, propietario de la SysAdmin aplicación | 

### Configurar la infraestructura
<a name="configure-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC) y subredes. |  | SysAdmin | 
| Cree grupos de seguridad. |  | SysAdmin | 
| Configure e inicie el clúster de Amazon Redshift. |  | SysAdmin | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los datos con los agentes de extracción de datos de AWS SCT. |  | Administrador de base de datos | 

### Migración de aplicaciones
<a name="migrate-applications"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Siga la estrategia de migración de aplicaciones elegida. |  | DBA, propietario de la SysAdmin aplicación | 

### Realizar la transición a la base de datos de destino
<a name="cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie las aplicaciones cliente a la nueva infraestructura. |  | DBA, propietario de la SysAdmin aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | DBA, SysAdmin | 
| Revise y valide los documentos del proyecto. |  | DBA, propietario de la SysAdmin aplicación | 
| Recopile métricas como el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado y el ahorro de costos. |  | DBA, propietario de la SysAdmin aplicación | 
| Cierre el proyecto y envíe sus comentarios. |  | DBA, propietario de la SysAdmin aplicación | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-resources"></a>

**Referencias**
+ [Guía del usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Uso de agentes de extracción de datos](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/agents.html)
+ [Precios de Amazon Redshift](https://aws.amazon.com/redshift/pricing/)

**Tutoriales y videos**
+ [Introducción a la Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_GettingStarted.html)
+ [Introducción a Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)

# Migración de aplicaciones heredadas de Oracle Pro\$1C a ECPG
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg"></a>

*Sai Parthasaradhi y Mahesh Balumuri, Amazon Web Services*

## Resumen
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-summary"></a>

La mayoría de las aplicaciones antiguas que tienen código SQL integrado utilizan el precompilador Pro\$1C de Oracle para acceder a la base de datos. Al migrar estas bases de datos de Oracle a Amazon Relational Database Service (Amazon RDS) para PostgreSQL o a una edición compatible con Amazon Aurora PostgreSQL, debe convertir el código de la aplicación a un formato que sea compatible con el precompilador de PostgreSQL, que se denomina ECPG. Este patrón describe cómo convertir el código de Oracle Pro\$1C a su equivalente en PostgreSQL ECPG. 

Para obtener más información sobre Pro\$1C, consulte la [documentación de Oracle](https://docs.oracle.com/cd/E11882_01/appdev.112/e10825/pc_01int.htm#i2415). Para obtener una breve introducción al ECPG, consulte la sección [Información adicional](#migrate-legacy-applications-from-oracle-pro-c-to-ecpg-additional).

## Requisitos previos y limitaciones
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos compatible con Amazon RDS para PostgreSQL o Aurora PostgreSQL
+ Una base de datos de Oracle que se ejecuta en las instalaciones

## Tools (Herramientas)
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-tools"></a>
+ Los paquetes de PostgreSQL que se enumeran en la siguiente sección.
+ [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.

## Epics
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-epics"></a>

### Configurar el entorno de compilación en CentOS o RHEL
<a name="set-the-build-environment-on-centos-or-rhel"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale los paquetes de PostgreSQL. | Instale los paquetes PostgreSQL necesarios utilizando los siguientes comandos.<pre>yum update -y<br />yum install -y yum-utils<br />rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm<br />dnf -qy module disable postgresql</pre> | Desarrollador de aplicaciones, DevOps ingeniero | 
| Instale los archivos de encabezado y las bibliotecas. | Instale el paquete `postgresql12-devel`, que contiene bibliotecas y archivos de encabezado, mediante los siguientes comandos. Instale el paquete tanto en el entorno de desarrollo como en el de tiempo de ejecución para evitar errores en el entorno de ejecución.<pre>dnf -y install postgresql12-devel<br />yum install ncompress zip ghostscript jq unzip wget git -y</pre>Solo para el entorno de desarrollo, ejecute también los siguientes comandos.<pre>yum install zlib-devel make -y<br />ln -s /usr/pgsql-12/bin/ecpg /usr/bin/</pre> | Desarrollador de aplicaciones, DevOps ingeniero | 
| Configure la variable de ruta del entorno. | Establezca la ruta del entorno para las bibliotecas cliente de PostgreSQL.<pre>export PATH=$PATH:/usr/pgsql-12/bin</pre> | Desarrollador de aplicaciones, DevOps ingeniero | 
| Instale software adicional según sea necesario. | Si es necesario, instale **PGLoader** como reemplazo de **SQL\$1Loader** en Oracle.<pre>wget -O /etc/yum.repos.d/pgloader-ccl.repo https://dl.packager.io/srv/opf/pgloader-ccl/master/installer/el/7.repo<br />yum install pgloader-ccl -y<br />ln -s /opt/pgloader-ccl/bin/pgloader /usr/bin/</pre>Si llama a alguna aplicación Java desde un módulo Pro\$1C, instale Java.<pre>yum install java -y</pre>Instale **ant** para compilar el código Java.<pre>yum install ant -y</pre> | Desarrollador de aplicaciones, DevOps ingeniero | 
| Instale la AWS CLI. | Instale la CLI de AWS para ejecutar comandos que interactúen con servicios de AWS de como AWS Secrets Manager y Amazon Simple Storage Service (Amazon S3) desde sus aplicaciones.<pre>cd /tmp/<br />curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />./aws/install -i /usr/local/aws-cli -b /usr/local/bin --update</pre> | Desarrollador de aplicaciones, DevOps ingeniero | 
| Identifique los programas que se convertirán. | Identifique las aplicaciones que desea convertir de Pro\$1C a ECPG. | Desarrollador de aplicaciones, propietario de la aplicación | 

### Convertir el código Pro\$1C a ECPG
<a name="convert-pro-c-code-to-ecpg"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los encabezados no deseados. | Elimine los encabezados `include ` que no sean necesarios en PostgreSQL, como `oci.h`, `oratypes` y `sqlda`. | Propietario de la aplicación, desarrollador de la aplicación | 
| Actualice las declaraciones de variables. | Agregue instrucciones `EXEC SQL` para todas las declaraciones de variables que se utilizan como variables de host.Elimine de la aplicación las declaraciones `EXEC SQL VAR` como las siguientes.<pre>EXEC SQL VAR query IS STRING(2048);</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Actualice la funcionalidad ROWNUM. | La función `ROWNUM` no está disponible en PostgreSQL. Sustituya esto con la función de ventana `ROW_NUMBER` en las consultas SQL.Código Pro\$1C:<pre>SELECT SUBSTR(RTRIM(FILE_NAME,'.txt'),12) INTO :gcpclFileseq  <br />FROM   (SELECT FILE_NAME <br />FROM  DEMO_FILES_TABLE <br />WHERE FILE_NAME    LIKE '%POC%' <br />ORDER BY FILE_NAME DESC) FL2 <br />WHERE ROWNUM <=1 ORDER BY ROWNUM;</pre>Código ECPG:<pre>SELECT SUBSTR(RTRIM(FILE_NAME,'.txt'),12) INTO :gcpclFileseq  <br />FROM   (SELECT FILE_NAME , ROW_NUMBER() OVER (ORDER BY FILE_NAME DESC) AS ROWNUM<br />FROM  demo_schema.DEMO_FILES_TABLE <br />WHERE FILE_NAME    LIKE '%POC%'<br />ORDER BY FILE_NAME DESC) FL2 <br />WHERE ROWNUM <=1 ORDER BY ROWNUM; </pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Actualice los parámetros de la función para usar variables de alias. | En PostgreSQL, los parámetros de las funciones no se pueden usar como variables de host. Sobrescríbalos mediante una variable de alias.Código Pro\$1C:<pre>int processData(int referenceId){<br />  EXEC SQL char col_val[100];<br />  EXEC SQL select column_name INTO :col_val from table_name where col=:referenceId;<br />}</pre>Código ECPG:<pre>int processData(int referenceIdParam){<br />  EXEC SQL int referenceId = referenceIdParam;<br />  EXEC SQL char col_val[100];<br />  EXEC SQL select column_name INTO :col_val from table_name where col=:referenceId;<br />}</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Actualice los tipos de estructura. | Defina los tipos de `struct` en los boques `EXEC SQL BEGIN` y `END` con `typedef` si las variables de tipo `struct` se utilizan como variables de host. Si los tipos de `struct` están definidos en los archivos de encabezado (`.h`), incluya los archivos con instrucciones `EXEC SQL` include.Código Pro\$1C:Archivo de encabezado (`demo.h`)<pre>struct s_partition_ranges<br />{<br /> char   sc_table_group[31];<br /> char   sc_table_name[31];<br /> char   sc_range_value[10];<br />}; <br />struct s_partition_ranges_ind<br />{<br />  short    ss_table_group;<br />  short    ss_table_name;<br />  short    ss_range_value;<br />}; </pre>Código ECPG:Archivo de encabezado (`demo.h`)<pre>EXEC SQL BEGIN DECLARE SECTION;<br />typedef struct <br />{<br />  char   sc_table_group[31];<br />  char   sc_table_name[31];<br />  char   sc_range_value[10];<br />} s_partition_ranges; <br />typedef struct <br />{<br />  short    ss_table_group;<br />  short    ss_table_name;<br />  short    ss_range_value;<br />} s_partition_ranges_ind; <br />EXEC SQL END DECLARE SECTION;</pre>Archivo Pro\$1C (`demo.pc`)<pre>#include "demo.h"<br />struct s_partition_ranges gc_partition_data[MAX_PART_TABLE] ;<br />struct s_partition_ranges_ind gc_partition_data_ind[MAX_PART_TABLE] ;</pre>Archivo ECPG (`demo.pc`)<pre>exec sql include "demo.h"<br />EXEC SQL BEGIN DECLARE SECTION;<br />s_partition_ranges gc_partition_data[MAX_PART_TABLE] ;<br />s_partition_ranges_ind gc_partition_data_ind[MAX_PART_TABLE] ;<br />EXEC SQL END DECLARE SECTION;</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Modifique la lógica para extraerla de los cursores. | Para obtener varias filas de los cursores mediante variables de matriz, cambie el código que se va a utilizar `FETCH FORWARD`.Código Pro\$1C:<pre>EXEC SQL char  aPoeFiles[MAX_FILES][FILENAME_LENGTH];<br />EXEC SQL FETCH filename_cursor into :aPoeFiles;</pre>Código ECPG:<pre>EXEC SQL char  aPoeFiles[MAX_FILES][FILENAME_LENGTH];<br />EXEC SQL int fetchSize = MAX_FILES;<br />EXEC SQL FETCH FORWARD :fetchSize filename_cursor into :aPoeFiles;</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Modifique las llamadas a paquetes que no tienen valores de retorno. | Las funciones de los paquetes de Oracle que no tienen valores de retorno se deben llamar con una variable indicadora. Si la aplicación incluye varias funciones que tienen el mismo nombre o si las funciones de tipo desconocido generan errores de tiempo de ejecución, clasifique los valores en los tipos de datos.Código Pro\$1C:<pre>void ProcessData (char *data , int id)<br />{        <br />        EXEC SQL EXECUTE<br />               BEGIN<br />                  pkg_demo.process_data (:data, :id);                                                                                    <br />               END;<br />       END-EXEC;<br />}</pre>Código ECPG:<pre>void ProcessData (char *dataParam, int idParam )<br />{<br />        EXEC SQL char *data = dataParam;<br />        EXEC SQL int id = idParam;<br />        EXEC SQL short rowInd;<br />        EXEC SQL short rowInd = 0;<br />        EXEC SQL SELECT pkg_demo.process_data (<br />                       inp_data => :data::text,<br />                       inp_id => :id<br />               ) INTO :rowInd;<br />}</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Reescriba las variables SQL\$1CURSOR. | Reescriba la variable `SQL_CURSOR` y su implementación.Código Pro\$1C:<pre>/* SQL Cursor */<br />SQL_CURSOR      demo_cursor;<br />EXEC SQL ALLOCATE :demo_cursor;<br />EXEC SQL EXECUTE<br />  BEGIN<br />      pkg_demo.get_cursor(     <br />        demo_cur=>:demo_cursor<br />      );<br />  END;<br />END-EXEC;</pre>Código ECPG:<pre>EXEC SQL DECLARE demo_cursor CURSOR FOR SELECT<br />         * from<br />    pkg_demo.open_filename_rc(<br />            demo_cur=>refcursor<br />          ) ;<br />EXEC SQL char open_filename_rcInd[100]; <br /># As the below function returns cursor_name as <br /># return we need to use char[] type as indicator. <br />EXEC SQL SELECT pkg_demo.get_cursor (<br />        demo_cur=>'demo_cursor'<br />    ) INTO :open_filename_rcInd;</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Aplique patrones de migración comunes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-legacy-applications-from-oracle-pro-c-to-ecpg.html) | Desarrollador de aplicaciones, propietario de la aplicación | 
| Habilite la depuración, si fuera necesario.  | Para ejecutar el programa ECPG en modo de depuración, añada el siguiente comando dentro del bloque de funciones principal.<pre>ECPGdebug(1, stderr); </pre> | Desarrollador de aplicaciones, propietario de la aplicación | 

### Compilar programas ECPG
<a name="compile-ecpg-programs"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un archivo ejecutable para ECPG. | Si tiene un archivo fuente de SQL C incrustado denominado `prog1.pgc`, puede crear un programa ejecutable mediante el siguiente Script.<pre>ecpg prog1.pgc<br />cc -I/usr/local/pgsql/include -c prog1.c<br />cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 
| Cree un archivo de creación para su compilación. | Cree un archivo make para compilar el programa ECPG, tal como se muestra en el siguiente archivo de ejemplo.<pre>CFLAGS ::= $(CFLAGS) -I/usr/pgsql-12/include -g -Wall<br />LDFLAGS ::= $(LDFLAGS) -L/usr/pgsql-12/lib -Wl,-rpath,/usr/pgsql-12/lib<br />LDLIBS ::= $(LDLIBS) -lecpg<br />PROGRAMS = test <br />.PHONY: all clean<br />%.c: %.pgc<br />      ecpg $<<br />all: $(PROGRAMS)<br />clean:<br />    rm -f $(PROGRAMS) $(PROGRAMS:%=%.c) $(PROGRAMS:%=%.o)</pre> | Desarrollador de aplicaciones, propietario de la aplicación | 

### Pruebe la aplicación
<a name="test-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe el código. | Pruebe el código de la aplicación que se convertirá para asegurarse de que funciona correctamente. | Desarrollador de aplicaciones, propietario de la aplicación, ingeniero de pruebas | 

## Recursos relacionados
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-resources"></a>
+ [ECPG: SQL integrado en C](https://www.postgresql.org/docs/current/static/ecpg.html) (documentación de PostgreSQL)
+ [Gestión de errores](https://www.postgresql.org/docs/12/ecpg-errors.html) (documentación de PostgreSQL)
+ [Por qué utilizar el precompilador Pro\$1C/C\$1\$1 de Oracle](https://docs.oracle.com/cd/E11882_01/appdev.112/e10825/pc_01int.htm#i2415) (documentación de Oracle)

## Información adicional
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-additional"></a>

PostgreSQL tiene un precompilador SQL integrado, ECPG, que es equivalente al precompilador Pro\$1C de Oracle. El ECPG convierte los programas en C que tienen instrucciones SQL incorporadas en código C estándar sustituyendo las llamadas SQL por llamadas a funciones especiales. Luego, los archivos de salida se pueden procesar con cualquier cadena de herramientas del compilador de C.

**Archivos de entrada y salida**

ECPG convierte cada archivo de entrada que especifique en la línea de comandos en el archivo de salida C correspondiente. Si el nombre de un archivo de entrada no tiene una extensión de archivo, se asume la extensión .pgc. La extensión del archivo se sustituye por `.c` para construir el nombre del archivo de salida. Sin embargo, puede anular el nombre del archivo de salida predeterminado utilizando la opción `-o`.

Si utiliza un guión (`-`) como nombre del archivo de entrada, ECPG lee el programa desde la entrada estándar y escribe en la salida estándar, a menos que lo anule mediante la opción `-o`.

**Archivos de encabezado**

Cuando el compilador de PostgreSQL compila los archivos de código C preprocesados, busca los archivos de cabecera ECPG en el directorio de PostgreSQL `include`. Por lo tanto, puede que tenga que usar la opción `-I` para dirigir el compilador al directorio correcto (por ejemplo, `-I/usr/local/pgsql/include`).

**Bibliotecas**

Los programas que utilizan código C con SQL incorporado tienen que estar enlazados a la biblioteca `libecpg`. Por ejemplo, puede utilizar las opciones ` -L/usr/local/pgsql/lib -lecpg` del enlazador.

Las aplicaciones ECPG convertidas llaman a las funciones de la `libpq` biblioteca a través de la biblioteca SQL integrada (`ecpglib`) y se comunican con el servidor PostgreSQL mediante el protocolo estándar. frontend/backend 

# Migración de columnas generadas de forma virtual de Oracle a PostgreSQL
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql"></a>

*Veeranjaneyulu Grandhi, Rajesh Madiwale y Ramesh Pathuri, Amazon Web Services*

## Resumen
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-summary"></a>

En la versión 11 y anteriores, PostgreSQL no proporciona una característica que sea directamente equivalente a una columna virtual de Oracle. Gestionar las columnas generadas de forma virtual al migrar de Oracle Database a la versión 11 o anterior de PostgreSQL resulta difícil por dos motivos: 
+ Las columnas virtuales no están visibles durante la migración.
+ PostgreSQL no admite la expresión `generate` antes de la versión 12.

Sin embargo, existen soluciones alternativas para emular una funcionalidad similar. Cuando utilice AWS Database Migration Service (AWS DMS) para migrar datos desde Oracle Database a la versión 11 y anteriores de PostgreSQL, puede utilizar las funciones de activación para rellenar los valores de las columnas generadas de forma virtual. Este patrón proporciona ejemplos de código PostgreSQL y Oracle Database que puede utilizar para este fin. En AWS, puede utilizar Amazon Relational Database Service (Amazon RDS) para PostgreSQL o la Edición compatible con PostgreSQL de Amazon Aurora para la base de datos de PostgreSQL.

A partir de la versión 12 de PostgreSQL, se admiten las columnas generadas. Las columnas generadas pueden calcularse sobre la marcha a partir de otros valores de columna o calcularse y almacenarse. [Las columnas generadas por PostgreSQL](https://www.postgresql.org/docs/12/ddl-generated-columns.html) son similares a las columnas virtuales de Oracle.

## Requisitos previos y limitaciones
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Base de datos de origen de Oracle 
+ Bases de datos PostgreSQL de destino (en Amazon RDS para PostgreSQL o Aurora compatible con PostgreSQL)
+ Experiencia en codificación [PL/pgSQL](https://www.postgresql.org/docs/current/plpgsql.html)

**Limitaciones**
+ Solo se aplica a las versiones de PostgreSQL anteriores a la versión 12. 
+ Se aplica a la versión 11g o posterior de Oracle Database.
+ Las columnas virtuales no se admiten en las herramientas de migración de datos.
+ Solo se aplica a las columnas definidas en la misma tabla.
+ Si una columna generada de forma virtual hace referencia a una función determinista definida por el usuario, no se puede utilizar como columna clave de partición.
+ El resultado de la expresión debe ser un valor escalar. No puede devolver un tipo de datos proporcionado por Oracle, un tipo definido por el usuario, `LOB` o `LONG RAW`.
+ Los índices que se definen en columnas virtuales equivalen a los índices basados en funciones en PostgreSQL.
+ Se deben recopilar las estadísticas de las tablas.

## Tools (Herramientas)
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-tools"></a>
+ [pgAdmin 4](https://www.pgadmin.org/) es una herramienta de gestión de código abierto para PostgreSQL. Esta herramienta proporciona una interfaz gráfica que simplifica la creación, el mantenimiento y el uso de los objetos de la base de datos.
+ [Oracle SQL Developer](https://www.oracle.com/database/sqldeveloper/) es un entorno de desarrollo integrado y gratuito para trabajar con SQL en bases de datos de Oracle, tanto en implementaciones tradicionales como en la nube. 

## Epics
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-epics"></a>

### Cree tablas de bases de datos de origen y destino
<a name="create-source-and-target-database-tables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una tabla de base de datos de Oracle de origen. | En Oracle Database, cree una tabla con columnas generadas de forma virtual mediante la siguiente declaración.<pre>CREATE TABLE test.generated_column<br />( CODE NUMBER,<br />STATUS VARCHAR2(12) DEFAULT 'PreOpen',<br />FLAG CHAR(1) GENERATED ALWAYS AS (CASE UPPER(STATUS) WHEN 'OPEN' THEN 'N' ELSE 'Y' END) VIRTUAL VISIBLE<br />);</pre>En esta tabla de origen, los datos de la columna `STATUS` se migran a través de AWS DMS a la base de datos de destino. Sin embargo, la columna `FLAG` se rellena mediante la funcionalidad `generate by`, por lo que AWS DMS no podrá verla durante la migración. Para implementar la funcionalidad de `generated by`, debe utilizar activadores y funciones de la base de datos de destino para rellenar los valores de la columna `FLAG`, como se muestra en la siguiente epopeya. | Administrador de base de datos, desarrollador de aplicaciones | 
| Cree una tabla PostgreSQL de destino en AWS. | Cree una tabla de PostgreSQL en AWS con la siguiente instrucción.<pre>CREATE TABLE test.generated_column<br />(<br />    code integer not null,<br />    status character varying(12) not null ,<br />    flag character(1)<br />);</pre>En esta tabla, la columna `status` es una columna estándar. La columna `flag` será una columna generada en función de los datos de la columna `status`. | Administrador de base de datos, desarrollador de aplicaciones | 

### Cree una función de activación para gestionar la columna virtual en PostgreSQL
<a name="create-a-trigger-function-to-handle-the-virtual-column-in-postgresql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un activador de PostgreSQL. | En PostgreSQL, cree un activador.<pre>CREATE TRIGGER tgr_gen_column<br />AFTER INSERT OR UPDATE OF status ON test.generated_column<br />FOR EACH ROW <br />EXECUTE FUNCTION test.tgf_gen_column();</pre> | Administrador de base de datos, desarrollador de aplicaciones | 
| Cree una función de activación de PostgreSQL. | En PostgreSQL, cree una función para el activador. Esta función rellena una columna virtual que la aplicación o AWS DMS insertan o actualizan y valida los datos.<pre>CREATE OR REPLACE FUNCTION test.tgf_gen_column() RETURNS trigger AS $VIRTUAL_COL$<br />BEGIN<br />IF (TG_OP = 'INSERT') THEN<br />IF (NEW.flag IS NOT NULL) THEN<br />RAISE EXCEPTION 'ERROR: cannot insert into column "flag"' USING DETAIL = 'Column "flag" is a generated column.';<br />END IF;<br />END IF;<br />IF (TG_OP = 'UPDATE') THEN<br />IF (NEW.flag::VARCHAR != OLD.flag::varchar) THEN<br />RAISE EXCEPTION 'ERROR: cannot update column "flag"' USING DETAIL = 'Column "flag" is a generated column.';<br />END IF;<br />END IF;<br />IF TG_OP IN ('INSERT','UPDATE') THEN<br />IF (old.flag is NULL) OR (coalesce(old.status,'') != coalesce(new.status,'')) THEN<br />UPDATE test.generated_column<br />SET flag = (CASE UPPER(status) WHEN 'OPEN' THEN 'N' ELSE 'Y' END)<br />WHERE code = new.code;<br />END IF;<br />END IF;<br />RETURN NEW;<br />END<br />$VIRTUAL_COL$ LANGUAGE plpgsql;</pre> | Administrador de base de datos, desarrollador de aplicaciones | 

### Pruebe la migración de datos mediante AWS DMS
<a name="test-data-migration-by-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación. | Para crear una instancia de replicación, siga las [instrucciones](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html) de la documentación de AWS DMS. La instancia de replicación debe estar en la misma nube privada virtual (VPC) que las bases de datos de origen y destino. | Administrador de base de datos, desarrollador de aplicaciones | 
| Cree puntos de conexión de origen y destino. | Para crear los puntos de conexión, siga las [instrucciones de la documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html). | Administrador de base de datos, desarrollador de aplicaciones | 
| Probar los puntos de conexión. | Puede probar las conexiones de conexión especificando la VPC y la instancia de replicación y seleccionando **Ejecutar prueba**. | Administrador de base de datos, desarrollador de aplicaciones | 
| Cree e inicie una tarea de carga completa. | Para obtener instrucciones, consulte [Creación de una tarea](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html) y [Configuración de tareas de carga completa](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.html) en la documentación de AWS DMS. | Administrador de base de datos, desarrollador de aplicaciones | 
| Valide los datos de la columna virtual. | Compare los datos de la columna virtual en las bases de datos de origen y destino. Puede validar los datos manualmente o escribir un script para este paso. | Administrador de base de datos, desarrollador de aplicaciones | 

## Recursos relacionados
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-resources"></a>
+ [Introducción a AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) (documentación de AWS DMS)
+ [Uso de una base de datos de Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) (documentación de AWS DMS)
+ [Uso de una base de datos PostgreSQL como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) (documentación de AWS DMS)
+ [Columnas generadas en PostgreSQL](https://www.postgresql.org/docs/12/ddl-generated-columns.html) (documentación de PostgreSQL)
+ [Funciones de activación](https://www.postgresql.org/docs/12/plpgsql-trigger.html) (documentación de PostgreSQL)
+ [Columnas virtuales](https://docs.oracle.com/database/121/SQLRF/statements_7002.htm#SQLRF01402) en Oracle Database (documentación de Oracle)

# Configure la funcionalidad UTL\$1FILE de Oracle en Aurora compatible con PostgreSQL
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible"></a>

*Rakesh Raghav y Anuradha Chintha, Amazon Web Services*

## Resumen
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-summary"></a>

Como parte de su migración de Oracle a una edición compatible con PostgreSQL de Amazon Aurora en la nube de Amazon Web Services (AWS), es posible que se enfrente a varios desafíos. Por ejemplo, migrar el código que se basa en la utilidad de Oracle `UTL_FILE` siempre es un desafío. En Oracle PL/SQL, el paquete `UTL_FILE` se utiliza para operaciones de archivos, como lectura y escritura, junto con el sistema operativo subyacente. La utilidad `UTL_FILE` funciona tanto para los sistemas de servidor como para los de máquinas cliente. 

Amazon Aurora PostgreSQL es una oferta de bases de datos administradas. Por este motivo, no es posible acceder a los archivos del servidor de la base de datos. Este patrón le guía a través de la integración de Amazon Simple Storage Service (Amazon S3) y Amazon Aurora PostgreSQL para lograr un subconjunto de funciones de `UTL_FILE`. Con esta integración, podemos crear y consumir archivos sin utilizar herramientas o servicios de extracción, transformación y carga (ETL) de terceros.

Si lo desea, puede configurar la CloudWatch supervisión de Amazon y las notificaciones de Amazon SNS.

Recomendamos probar exhaustivamente esta solución antes de implementarla en un entorno de producción.

## Requisitos previos y limitaciones
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Experiencia en AWS Database Migration Service (AWS DMS)
+ Experiencia en codificación PL/pgSQL 
+ Clúster de Amazon Aurora compatible con PostgreSQL
+ Un bucket de S3

**Limitaciones**

Este patrón no proporciona la funcionalidad necesaria para reemplazar la utilidad de Oracle `UTL_FILE`. Sin embargo, los pasos y el código de muestra se pueden mejorar aún más para lograr sus objetivos de modernización de la base de datos.

**Versiones de producto**
+ Edición 11.9 de Amazon Aurora compatible con PostgreSQL

## Arquitectura
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-architecture"></a>

**Pila de tecnología de destino**
+ Amazon Aurora compatible con PostgreSQL
+ Amazon CloudWatch
+ Amazon Simple Notification Service (Amazon SNS)
+ Amazon S3

**Arquitectura de destino**

En el siguiente diagrama se muestra una representación de alto nivel de la solución.

![\[Los archivos de datos se cargan en un bucket de S3, se procesan con la extensión aws_s3 y se envían a la instancia de Aurora.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/3aeecd46-1f87-41f9-a9cd-f8181f92e83f/images/4a6c5f5c-58fb-4355-b243-d09a15c1cec6.png)


1. Los archivos se cargan de la aplicación en el bucket de S3.

1. La extensión `aws_s3` accede a los datos mediante PL/pgSQL y los carga en una aplicación compatible con Aurora PostgreSQL.

## Tools (Herramientas)
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-tools"></a>
+ [Compatible con Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html): Amazon Aurora PostgreSQL Edition es un motor de bases de datos relacionales, completamente administrado, compatible con PostgreSQL y conforme a ACID. Combina la velocidad y la fiabilidad de las bases de datos comerciales de gama alta con la rentabilidad de las bases de datos de código abierto.
+ [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 unificada para administrar los servicios de AWS. Con una única herramienta para descargar y configurar, puede controlar varios servicios de AWS desde la línea de comando y automatizarlos mediante scripts.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html): Amazon CloudWatch supervisa los recursos y el uso de Amazon S3.
+ [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. En este patrón, Amazon S3 proporciona una capa de almacenamiento para recibir y almacenar archivos para su consumo y transmisión hacia y desde el clúster compatible con Aurora PostgreSQL.
+ [aws\$1s3](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#aws_s3.table_import_from_s3): la extensión `aws_s3` integra Amazon S3 y Aurora compatible con PostgreSQL.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): Amazon Simple Notification Service (Amazon SNS) coordina y administra la entrega o el envío de mensajes entre publicadores y clientes. En este patrón, Amazon SNS se usa para enviar notificaciones.
+ [pgAdmin](https://www.pgadmin.org/docs/): pgAdmin es una herramienta de administración de código abierto para Postgres. pgAdmin 4 proporciona una interfaz gráfica para crear, mantener y utilizar objetos de bases de datos.

**Código**

Para lograr la funcionalidad requerida, el patrón crea varias funciones con nombres similares a `UTL_FILE`. La sección de *información adicional* contiene el código base de estas funciones.

En el código, sustituya `testaurorabucket` por el nombre del bucket de S3 de prueba. Sustituya `us-east-1` por la región de AWS de donde está ubicado su bucket de S3 de prueba.

## Epics
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-epics"></a>

### Integre Amazon S3 y Aurora PostgreSQL
<a name="integrate-amazon-s3-and-aurora-postgresql-compatible"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar políticas de IAM. | Cree una política de AWS Identity and Access Management (políticas de IAM) que conceda acceso a un bucket de S3 y sus objetos. Para ver el código, consulte la sección de *información adicional*. | Administrador de AWS, Administrador de base de datos | 
| Añada funciones de acceso de Amazon S3 a Aurora PostgreSQL. | Cree dos roles de IAM: un rol para el acceso de lectura y otro para el acceso de escritura a Amazon S3. Adjunte los dos roles al clúster compatible con Aurora PostgreSQL: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.html)Para obtener más información, consulte la documentación compatible con Aurora PostgreSQL sobre la [importación](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PostgreSQL.S3Import.html) y la [exportación de datos a Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html). | Administrador de AWS, Administrador de base de datos | 

### Configurar las extensiones en Aurora PostgreSQL
<a name="set-up-the-extensions-in-aurora-postgresql-compatible"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la extensión aws\$1commons. | La extensión `aws_commons` es una dependencia de la extensión `aws_s3`. | Administrador de base de datos, desarrollador | 
| Cree la extensión aws\$1s3. | La extensión `aws_s3` interactúa con Amazon S3. | Administrador de base de datos, desarrollador | 

### Valide la integración compatible con Amazon S3 y Aurora PostgreSQL
<a name="validate-amazon-s3-and-aurora-postgresql-compatible-integration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prueba de importación de archivos de Amazon S3 en Aurora PostgreSQL. | Para probar la importación de archivos a un entorno compatible con Aurora PostgreSQL, cree un archivo CSV de muestra y cárguelo en el bucket de S3. Cree una definición de tabla basada en el archivo CSV y cargue el archivo en la tabla mediante la función `aws_s3.table_import_from_s3`. | Administrador de base de datos, desarrollador | 
| Pruebe a exportar archivos de Aurora PostgreSQL a Amazon S3. | Para probar la exportación de archivos compatibles con Aurora PostgreSQL, cree una tabla de prueba, llénela con datos y, a continuación, exporte los datos mediante la función `aws_s3.query_export_to_s3`. | Administrador de base de datos, desarrollador | 

### Para imitar la utilidad UTL\$1FILE, cree funciones envolventes
<a name="to-mimic-the-utl_file-utility-create-wrapper-functions"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el esquema utl\$1file\$1utility. | El esquema mantiene unidas las funciones envolventes. Ejecute el siguiente comando para crear el esquema.<pre>CREATE SCHEMA utl_file_utility;</pre> | Administrador de base de datos, desarrollador | 
| Cree el tipo file\$1type. | Para crear el tipo `file_type`, utilice el siguiente código.<pre>CREATE TYPE utl_file_utility.file_type AS (<br />    p_path character varying(30),<br />    p_file_name character varying<br />);<br /><br /><br /></pre> | Administrador de base de datos/desarrollador | 
| Cree la función init. | La función `init` inicializa una variable común como `bucket` o `region`. Para ver el código, consulte la sección de *información adicional*. | Administrador de base de datos/desarrollador | 
| Cree las funciones. | Cree las funciones envolventes `fopen`, `put_line`, y `fclose`. Para ver el código, consulte la sección de *información adicional*. | Administrador de base de datos, desarrollador | 

### Pruebe las funciones de la capa
<a name="test-the-wrapper-functions"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe las funciones del contenedor en modo escritura. | Para probar las funciones del contenedor en modo de escritura, utilice el código que se proporciona en la sección *Información adicional*. | Administrador de base de datos, desarrollador | 
| Pruebe las funciones del contenedor en el modo de adición. | Para probar las funciones del contenedor en el modo de adición, utilice el código proporcionado en la sección *Información adicional*. | Administrador de base de datos, desarrollador | 

## Recursos relacionados
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-resources"></a>
+ [Integración de Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PostgreSQL.S3Import.html)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [Aurora](https://aws.amazon.com/rds/aurora/?nc2=h_ql_prod_db_aa&aurora-whats-new.sort-by=item.additionalFields.postDateTime&aurora-whats-new.sort-order=desc)
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)
+ [Amazon SNS](https://aws.amazon.com/sns/?nc2=h_ql_prod_ap_sns&whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc)

## Información adicional
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-additional"></a>

**Configurar políticas de IAM**

Cree las políticas siguientes.


| 
| 
| Nombre de la política | JSON | 
| --- |--- |
| S3 IntRead | <pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3integrationtest",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:GetObject",<br />                "s3:ListBucket"<br />            ],<br />            "Resource": [<br />         "arn:aws:s3:::testaurorabucket/*",<br />         "arn:aws:s3:::testaurorabucket"<br />            ]<br />        }<br />    ]<br />}</pre> | 
| S3 IntWrite | <pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3integrationtest",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",                <br />                "s3:ListBucket"<br />            ],<br />            "Resource": [                "arn:aws:s3:::testaurorabucket/*",                "arn:aws:s3:::testaurorabucket"<br />            ]<br />        }<br />    ]<br />}</pre> | 

**Creación de la función init**

Para inicializar variables comunes, como `bucket` o `region`, cree la función `init` mediante el siguiente código.

```
CREATE OR REPLACE FUNCTION utl_file_utility.init(
    )
    RETURNS void
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
BEGIN
      perform set_config
      ( format( '%s.%s','UTL_FILE_UTILITY', 'region' )
      , 'us-east-1'::text
      , false );

      perform set_config
      ( format( '%s.%s','UTL_FILE_UTILITY', 's3bucket' )
      , 'testaurorabucket'::text
      , false );
END;
$BODY$;
```

**Cree las funciones envolventes**

Cree las funciones envolventes `fopen`, `put_line` y `fclose`.

*fopen*

```
CREATE OR REPLACE FUNCTION utl_file_utility.fopen(
    p_file_name character varying,
    p_path character varying,
    p_mode character DEFAULT 'W'::bpchar,
    OUT p_file_type utl_file_utility.file_type)
    RETURNS utl_file_utility.file_type
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
declare
    v_sql character varying;
    v_cnt_stat integer;
    v_cnt integer;
    v_tabname character varying;
    v_filewithpath character varying;
    v_region character varying;
    v_bucket character varying;

BEGIN
    /*initialize common variable */
    PERFORM utl_file_utility.init();
    v_region := current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 'region' ) );
    v_bucket :=  current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 's3bucket' ) );
    
    /* set tabname*/
    v_tabname := substring(p_file_name,1,case when strpos(p_file_name,'.') = 0 then length(p_file_name) else strpos(p_file_name,'.') - 1 end );
    v_filewithpath := case when NULLif(p_path,'') is null then p_file_name else concat_ws('/',p_path,p_file_name) end ;
    raise notice 'v_bucket %, v_filewithpath % , v_region %', v_bucket,v_filewithpath, v_region;
    
    /* APPEND MODE HANDLING; RETURN EXISTING FILE DETAILS IF PRESENT ELSE CREATE AN EMPTY FILE */
    IF p_mode = 'A' THEN
        v_sql := concat_ws('','create temp table if not exists ', v_tabname,' (col1 text)');
        execute v_sql;

        begin
        PERFORM aws_s3.table_import_from_s3 
            ( v_tabname, 
            '',  
            'DELIMITER AS ''#''', 
            aws_commons.create_s3_uri 
            (     v_bucket, 
                v_filewithpath ,
                v_region)
            );
        exception
            when others then
             raise notice 'File load issue ,%',sqlerrm;
             raise;
        end;
        execute concat_ws('','select count(*) from ',v_tabname) into v_cnt;

        IF v_cnt > 0 
        then
            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;
        else         
            PERFORM aws_s3.query_export_to_s3('select ''''', 
                            aws_commons.create_s3_uri(v_bucket, v_filewithpath, v_region)            
                              );

            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;        
        end if;
        v_sql := concat_ws('','drop table ', v_tabname);        
        execute v_sql;            
    ELSEIF p_mode = 'W' THEN
            PERFORM aws_s3.query_export_to_s3('select ''''', 
                            aws_commons.create_s3_uri(v_bucket, v_filewithpath, v_region)            
                              );
            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;
    END IF;    
    
EXCEPTION
        when others then
            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;
            raise notice 'fopenerror,%',sqlerrm;
            raise;
END;
$BODY$;
```

*put\$1line*

```
CREATE OR REPLACE FUNCTION utl_file_utility.put_line(
    p_file_name character varying,
    p_path character varying,
    p_line text,
    p_flag character DEFAULT 'W'::bpchar)
    RETURNS boolean
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
/**************************************************************************
* Write line, p_line in windows format to file, p_fp - with carriage return
* added before new line.
**************************************************************************/
declare
    v_sql varchar;
    v_ins_sql varchar;
    v_cnt INTEGER;
    v_filewithpath character varying;
    v_tabname  character varying;
    v_bucket character varying;
    v_region character varying;    

BEGIN
 PERFORM utl_file_utility.init();

/* check if temp table already exist */

 v_tabname := substring(p_file_name,1,case when strpos(p_file_name,'.') = 0 then length(p_file_name) else strpos(p_file_name,'.') - 1 end );

 v_sql := concat_ws('','select count(1) FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace where n.nspname like ''pg_temp_%''' 
                         ,' AND pg_catalog.pg_table_is_visible(c.oid) AND Upper(relname) = Upper( '''
                         ,  v_tabname ,''' ) ');
  
 execute v_sql into v_cnt;
  
  IF v_cnt = 0 THEN
         v_sql := concat_ws('','create temp table ',v_tabname,' (col text)');
        execute v_sql;
        /* CHECK IF APPEND MODE */
        IF upper(p_flag) = 'A' THEN
            PERFORM utl_file_utility.init();                        
            v_region := current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 'region' ) );
            v_bucket :=  current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 's3bucket' ) );
            
            /* set tabname*/            
            v_filewithpath := case when NULLif(p_path,'') is null then p_file_name else concat_ws('/',p_path,p_file_name) end ;            
            
            begin
               PERFORM aws_s3.table_import_from_s3 
                     ( v_tabname, 
                          '',  
                       'DELIMITER AS ''#''', 
                        aws_commons.create_s3_uri 
                           ( v_bucket, 
                               v_filewithpath, 
                               v_region    )
                    );
            exception
                when others then
                    raise notice  'Error Message : %',sqlerrm;
                    raise;
            end;    
        END IF;    
    END IF;
    /* INSERT INTO TEMP TABLE */              
    v_ins_sql := concat_ws('','insert into ',v_tabname,' values(''',p_line,''')');
    execute v_ins_sql;
    RETURN TRUE;
    exception
            when others then
                raise notice  'Error Message : %',sqlerrm;
                raise;
END;
$BODY$;
```

*fclose*

```
CREATE OR REPLACE FUNCTION utl_file_utility.fclose(
    p_file_name character varying,
    p_path character varying)
    RETURNS boolean
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
DECLARE
    v_filewithpath character varying;
    v_bucket character varying;
    v_region character varying;
    v_tabname character varying;
    v_sql character varying;
BEGIN
      PERFORM utl_file_utility.init();
  
    v_region := current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 'region' ) );
    v_bucket :=  current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 's3bucket' ) );

    v_tabname := substring(p_file_name,1,case when strpos(p_file_name,'.') = 0 then length(p_file_name) else strpos(p_file_name,'.') - 1 end );
    v_filewithpath := case when NULLif(p_path,'') is null then p_file_name else concat_ws('/',p_path,p_file_name) end ;

    raise notice 'v_bucket %, v_filewithpath % , v_region %', v_bucket,v_filewithpath, v_region ;
    
    /* exporting to s3 */
    perform aws_s3.query_export_to_s3
        (concat_ws('','select * from ',v_tabname,'  order by ctid asc'), 
            aws_commons.create_s3_uri(v_bucket, v_filewithpath, v_region)
        );
    v_sql := concat_ws('','drop table ', v_tabname);
    execute v_sql;    
    RETURN TRUE;
EXCEPTION 
       when others then
     raise notice 'error fclose %',sqlerrm;
     RAISE;
END;
$BODY$;
```

**Pruebe sus funciones de configuración y envoltura**

Utilice los siguientes bloques de código anónimos para comprobar su configuración.

*Pruebe el modo de escritura*

El siguiente código escribe un archivo llamado `s3inttest` en el bucket de S3.

```
do $$
declare
l_file_name varchar := 's3inttest' ;
l_path varchar := 'integration_test' ;
l_mode char(1) := 'W';
l_fs utl_file_utility.file_type ;
l_status boolean;

begin
select * from
utl_file_utility.fopen( l_file_name, l_path , l_mode ) into l_fs ;
raise notice 'fopen : l_fs : %', l_fs;

select * from
utl_file_utility.put_line( l_file_name, l_path ,'this is test file:in s3bucket: for test purpose', l_mode ) into l_status ;
raise notice 'put_line : l_status %', l_status;

select * from utl_file_utility.fclose( l_file_name , l_path ) into l_status ;
raise notice 'fclose : l_status %', l_status;

end;
$$
```

*Pruebe el modo de adición*

El siguiente código añade líneas al archivo `s3inttest` que se creó en la prueba anterior.

```
do $$
declare
l_file_name varchar := 's3inttest' ;
l_path varchar := 'integration_test' ;
l_mode char(1) := 'A';
l_fs utl_file_utility.file_type ;
l_status boolean;

begin
select * from
utl_file_utility.fopen( l_file_name, l_path , l_mode ) into l_fs ;
raise notice 'fopen : l_fs : %', l_fs;


select * from
utl_file_utility.put_line( l_file_name, l_path ,'this is test file:in s3bucket: for test purpose : append 1', l_mode ) into l_status ;
raise notice 'put_line : l_status %', l_status;

select * from
utl_file_utility.put_line( l_file_name, l_path ,'this is test file:in s3bucket : for test purpose : append 2', l_mode ) into l_status ;
raise notice 'put_line : l_status %', l_status;

select * from utl_file_utility.fclose( l_file_name , l_path ) into l_status ;
raise notice 'fclose : l_status %', l_status;

end;
$$
```

**Notificaciones de Amazon SNS**

Si lo desea, puede configurar la CloudWatch supervisión de Amazon y las notificaciones de Amazon SNS en el bucket de S3. Para obtener más información, consulte [Supervisión de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/monitoring-overview.html) y [Configuración de las notificaciones de Amazon SNS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html).

# Validar los objetos de la base de datos después de migrar de Oracle a Amazon Aurora PostgreSQL
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql"></a>

*Venkatramana Chintha y Eduardo Valentim, Amazon Web Services*

## Resumen
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-summary"></a>

Este patrón describe un step-by-step enfoque para validar objetos después de migrar una base de datos de Oracle a una edición compatible con PostgreSQL de Amazon Aurora.

Este patrón describe los escenarios de uso y los pasos para la validación de objetos de bases de datos; para obtener información más detallada, consulte [Validación de objetos de bases de datos después de la migración con AWS SCT y AWS DMS](https://aws.amazon.com/blogs/database/validating-database-objects-after-migration-using-aws-sct-and-aws-dms/) en el blog sobre bases de datos de [AWS](https://aws.amazon.com/blogs/).

## Requisitos previos y limitaciones
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una base de datos de Oracle local que se migró a una base de datos compatible con Aurora PostgreSQL. 
+ Credenciales de inicio de sesión a las que se ha aplicado la RDSData FullAccess política de [Amazon](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html), para la base de datos Aurora compatible con PostgreSQL. 
+ Este patrón utiliza el [editor de consultas para los clústeres de bases de datos Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html), que está disponible en la consola de Amazon Relational Database Service (Amazon RDS). Sin embargo, puede utilizar este patrón con cualquier otro editor de consultas. 

**Limitaciones**
+ Los objetos SYNONYM de Oracle no están disponibles en PostgreSQL, pero se pueden validar parcialmente mediante **vistas** o consultas SET search\$1path.
+ El editor de consultas de Amazon RDS solo está disponible en [determinadas regiones de AWS y para determinadas versiones de MySQL y PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html).

## Arquitectura
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-architecture"></a>

 

![\[Database migration workflow showing on-premises Oracle to AWSAurora PostgreSQL via client program and validation scripts.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7c028960-6dea-46ad-894d-e42cefd50c03/images/be5f8ae3-f5af-4c5e-9440-09ab410beaa1.png)


 

## Tools (Herramientas)
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-tools"></a>

**Herramientas**
+ [Edición compatible con Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html): Aurora PostgreSQL-Compatible es un motor de bases de datos relacionales, completamente administrado, compatible con PostgreSQL y conforme a ACID, que combina la velocidad y la fiabilidad de las bases de datos comerciales de tecnología avanzada con la sencillez y la rentabilidad de las bases de datos de código abierto.
+ [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html): Amazon Relational Database Service (Amazon RDS) facilita la configuración, el funcionamiento y el escalado de una base de datos relacional en la nube de AWS. Proporciona una capacidad rentable y de tamaño ajustable para una base de datos relacional estándar y se ocupa de las tareas de administración de bases de datos comunes.
+ [Editor de consultas para Aurora Severless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html): el editor de consultas le ayuda a ejecutar consultas SQL en la consola de Amazon RDS. Puede ejecutar cualquier declaración SQL válida en el clúster de base de datos de Aurora Serverless, incluidas las declaraciones de manipulación y definición de datos.

Para validar los objetos, utilice los scripts completos del archivo “Object validation scripts” de la sección “Adjuntos”. Utilice la siguiente tabla como referencia.


| 
| 
| Objeto de Oracle | Script a utilizar | 
| --- |--- |
| Paquetes | Consulta 1 | 
| Tablas | Consulta 3 | 
| Vistas | Consulta 5 | 
| Secuencias | Consulta 7 | 
| Desencadenadores |  Consulta 9 | 
| Claves principales | Consulta 11 | 
| Índices | Consulta 13 | 
| Restricciones de comprobación | Consulta 15 | 
| Claves externas  | Consulta 17  | 


| 
| 
| Objeto PostgreSQL | Script a utilizar | 
| --- |--- |
| Paquetes | Consulta 2 | 
| Tablas | Consulta 4 | 
| Vistas | Consulta 6 | 
| Secuencias | Consulta 8 | 
| Desencadenadores | Consulta 10 | 
| Claves principales | Consulta 12 | 
| Índices | Consulta 14 | 
| Restricciones de comprobación | Consulta 16 | 
| Claves externas | Consulta 18 | 

## Epics
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-epics"></a>

### Valide los objetos de la base de datos de Oracle de origen
<a name="validate-objects-in-the-source-oracle-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute la consulta de validación de “paquetes” en la base de datos de Oracle de origen.  | Descargue y abra el archivo “Object validation scripts” de la sección “Adjuntos”. Conéctese a la base de datos de Oracle de origen a través de su programa cliente. Ejecute el script de validaciones “Query 1” desde el archivo “Object validation scripts”. Importante: Introduzca su nombre de usuario de Oracle en lugar de “your\$1schema” en las consultas. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “tables”.  | Ejecute el script “Query 3” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “views”.  | Ejecute el script “Query 5” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la validación del recuento “sequences”.  | Ejecute el script “Query 7” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “triggers”.  | Ejecute el script “Query 9” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “primary keys”.  | Ejecute el script “Query 11” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “indexes”.  | Ejecute el script de validación “Query 13” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “check constraints”.  | Ejecute el script “Query 15” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “foreign keys”.  | Ejecute el script de validación “Query 17” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 

### Validar objetos en la base de datos compatible con Aurora PostgreSQL de destino
<a name="validate-objects-in-the-target-aurora-postgresql-compatible-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Conectar a la base de datos Aurora compatible con PostgreSQL de destino mediante el editor de consultas. | Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS. En la esquina superior derecha, elija la región de AWS en la que creó la base de datos Aurora PostgreSQL. En el panel de navegación, elija “Bases de datos” y elija la base de datos compatible con Aurora PostgreSQL de destino. En “Acciones”, elija “Consulta”. Importante: si no se ha conectado a la base de datos antes, se abre la página “Conectarse a la base de datos”. A continuación, debe introducir la información de la base de datos, como el nombre de usuario y la contraseña. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “packages” | Ejecute el script “Query 2” desde el archivo “Object validation scripts” de la sección “Adjuntos”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “tables”.  | Vuelva al editor de consultas de la base de datos compatible con Aurora PostgreSQL y ejecute el script “Query 4” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “views”.  | Vuelva al editor de consultas de la base de datos compatible con Aurora PostgreSQL y ejecute el script “Query 6” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la validación del recuento “sequences”.  | Vuelva al editor de consultas de la base de datos compatible con Aurora PostgreSQL y ejecute el script “Query 8” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “triggers”.  | Vuelva al editor de consultas de la base de datos compatible con Aurora PostgreSQL y ejecute el script “Query 10” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “primary keys”.  | Vuelva al editor de consultas de la base de datos compatible con Aurora PostgreSQL y ejecute el script “Query 12” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “indexes”.  | Vuelva al editor de consultas de la base de datos compatible con Aurora PostgreSQL y ejecute el script “Query 14” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “check constraints”.  | Ejecute el script “Query 16” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 
| Ejecute la consulta de validación “foreign keys”.  | Ejecute el script de validación “Query 18” desde el archivo “Object validation scripts”. Asegúrese de registrar los resultados de la consulta. | Desarrollador, administrador de base de datos | 

### Compare los registros de validación de las bases de datos de origen y destino
<a name="compare-source-and-target-database-validation-records"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compare y valide los resultados de ambas consultas.  | Compare los resultados de las consultas de las bases de datos compatibles con Oracle y Aurora PostgreSQL para validar todos los objetos. Si todos coinciden, significa que todos los objetos se han validado correctamente. | Desarrollador, administrador de base de datos | 

## Recursos relacionados
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-resources"></a>
+ [Validación de objetos de bases de datos después de una migración mediante AWS SCT y AWS DMS](https://aws.amazon.com/blogs/database/validating-database-objects-after-migration-using-aws-sct-and-aws-dms/)
+ [Características de Amazon Aurora: edición compatible con PostgreSQL](https://aws.amazon.com/rds/aurora/postgresql-features/)

## Conexiones
<a name="attachments-7c028960-6dea-46ad-894d-e42cefd50c03"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/7c028960-6dea-46ad-894d-e42cefd50c03/attachments/attachment.zip)

# Volver a alojar
<a name="migration-rehost-pattern-list"></a>

**Topics**
+ [Acelere el descubrimiento y la migración de las cargas de trabajo de Microsoft a AWS](accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.md)
+ [Cree un proceso de aprobación para las solicitudes de firewall durante una migración de realojamiento a AWS](create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws.md)
+ [Incorpore y migre instancias de EC2 Windows a una cuenta de AWS Managed Services](ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.md)
+ [Migrar una base de datos de Couchbase Server a Amazon EC2](migrate-couchbase-server-ec2.md)
+ [Migre Db2 for LUW a Amazon EC2 mediante el envío de registros para reducir el tiempo de interrupción](migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.md)
+ [Migración de Db2 para LUW a Amazon EC2 con recuperación de desastres de alta disponibilidad](migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.md)
+ [Migre aplicaciones alojadas en IIS a Amazon EC2 mediante appcmd.exe](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [Migre una base de datos local de Microsoft SQL Server a Amazon EC2 mediante Application Migration Service](migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.md)
+ [Migre una carga de trabajo de F5 BIG-IP a F5 BIG-IP VE en Nube de AWS](migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud.md)
+ [Migración de una aplicación web Go en las instalaciones a AWS Elastic Beanstalk mediante el método binario](migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.md)
+ [Migre un servidor SFTP local para utilizar AWS AWS Transfer for SFTP](migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp.md)
+ [Migre una máquina virtual local a Amazon EC2 mediante AWS Application Migration Service](migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.md)
+ [Migre pequeños conjuntos de datos del entorno local a Amazon S3 mediante AWS SFTP](migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp.md)
+ [Migre una base de datos Oracle local a Oracle on Amazon EC2](migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2.md)
+ [Migre una base de datos Oracle local a Amazon EC2 mediante Oracle Data Pump](migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.md)
+ [Migración de los sistemas BYOL de RHEL a instancias con licencia incluida de AWS mediante AWS MGN](migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.md)
+ [Migre una base de datos local de Microsoft SQL Server a Amazon EC2](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2.md)
+ [Vuelva a alojar las cargas de trabajo en las instalaciones en la nube de AWS: lista de verificación de migración](rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist.md)
+ [Configure una infraestructura Multi-AZ para una FCI Always On de SQL Server mediante Amazon FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Utilice las consultas de BMC Discovery para extraer datos de migración para planificar la migración](use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning.md)

# Acelere el descubrimiento y la migración de las cargas de trabajo de Microsoft a AWS
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws"></a>

*Ali Alzand, Amazon Web Services*

## Resumen
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-summary"></a>

Este patrón le muestra cómo usar el [ PowerShell módulo Migration Validator Toolkit](https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads) para detectar y migrar sus cargas de trabajo de Microsoft a AWS. El módulo funciona realizando múltiples comprobaciones y validaciones para tareas comunes asociadas a cualquier carga de trabajo de Microsoft. Por ejemplo, el módulo busca instancias que puedan tener varios discos conectados o instancias que usen muchas direcciones IP. Para obtener una lista completa de las comprobaciones que puede realizar el módulo, consulte la sección [Comprobaciones](https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads#checks) de la página del módulo. GitHub 

El PowerShell módulo Migration Validator Toolkit puede ayudar a su organización a reducir el tiempo y el esfuerzo necesarios para descubrir qué aplicaciones y servicios se ejecutan en sus cargas de trabajo de Microsoft. El módulo también puede servirle de ayuda para identificar las configuraciones de sus cargas de trabajo para que pueda averiguar si sus configuraciones son compatibles con AWS. El módulo también proporciona recomendaciones sobre los próximos pasos y las acciones de mitigación, de modo que puede evitar cualquier error de configuración antes, durante o después de la migración.

## Requisitos previos y limitaciones
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-prereqs"></a>

**Requisitos previos **
+ Cuenta de administrador local
+ PowerShell 4.0

**Limitaciones**
+ Solo funciona con instancias de Microsoft Windows Server 2012 R2 o versiones posteriores.

## Tools (Herramientas)
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-tools"></a>

**Herramientas**
+ PowerShell 4.0

**Repositorio de código**

[El PowerShell módulo Migration Validator Toolkit para este patrón está disponible en el GitHub migration-validator-toolkit-for repositorio -microsoft-workloads.](https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads)

## Epics
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-epics"></a>

### Ejecute el módulo Migration Validator Toolkit en un único destino PowerShell
<a name="run-the-migration-validator-toolkit-powershell-module-on-a-single-target"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue, extraiga, importe e invoque el módulo. | Elija uno de los siguientes métodos para descargar e implementar el módulo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)**Ejecute el PowerShell script**En PowerShell, ejecute el siguiente código de ejemplo:<pre>#MigrationValidatorToolkit<br />$uri = 'https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads/archive/refs/heads/main.zip'<br />$destination = (Get-Location).Path<br />if ((Test-Path -Path "$destination\MigrationValidatorToolkit.zip" -PathType Leaf) -or (Test-Path -Path "$destination\MigrationValidatorToolkit")) {<br />    write-host "File $destination\MigrationValidatorToolkit.zip or folder $destination\MigrationValidatorToolkit found, exiting"<br />}else {<br />    Write-host "Enable TLS 1.2 for this PowerShell session only."<br />    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12<br />    $webClient = New-Object System.Net.WebClient<br />    Write-host "Downloading MigrationValidatorToolkit.zip"<br />    $webClient.DownloadFile($uri, "$destination\MigrationValidatorToolkit.zip")<br />    Write-host "MigrationValidatorToolkit.zip download successfully"<br />    Add-Type -Assembly "system.io.compression.filesystem"<br />    [System.IO.Compression.ZipFile]::ExtractToDirectory("$destination\MigrationValidatorToolkit.zip","$destination\MigrationValidatorToolkit")<br />    Write-host "Extracting MigrationValidatorToolkit.zip complete successfully"<br />    Import-Module "$destination\MigrationValidatorToolkit\migration-validator-toolkit-for-microsoft-workloads-main\MigrationValidatorToolkit.psm1"; Invoke-MigrationValidatorToolkit<br />}</pre>El código descarga el módulo de un archivo.zip. A continuación, el código extrae, importa e invoca el módulo.**Descargue y extraiga el archivo .zip**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)**Clona el GitHub repositorio**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html) | Administrador de sistemas | 
| Invoque el módulo manualmente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)Formato [Format-Table](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-table?view=powershell-7.3):<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit</pre>Formato [Format-List](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-list?view=powershell-7.3):<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit -List</pre>GridViewFormato [de salida](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-gridview?view=powershell-7.3):<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit -GridView</pre>[ConvertTo-Formato CSV](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-csv?view=powershell-7.3):<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit -csv</pre> | Administrador de sistemas | 

### Ejecute el módulo Migration Validator Toolkit PowerShell en varios objetivos
<a name="run-the-migration-validator-toolkit-powershell-module-on-multiple-targets"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue el archivo.zip o clone el repositorio. GitHub  | Elija una de las siguientes opciones:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)<pre>git clone https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads.git</pre> | Administrador de sistemas | 
| Actualice la lista server.csv. | Si descargó el archivo .zip, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html) | Administrador de sistemas | 
| Invoque el módulo. | Puede utilizar cualquier equipo del dominio que utilice un usuario del dominio que tenga acceso de administrador a los equipos de destino.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-DomainComputers</pre>El archivo.csv de salida se guarda en `MigrationValidatorToolkit\Outputs\folder` con el nombre del prefijo `DomainComputers_MigrationAutomations_YYYY-MM-DDTHH-MM-SS`. | Administrador de sistemas | 

## Resolución de problemas
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| `MigrationValidatorToolkit` escribe información sobre las ejecuciones, comandos y errores en los archivos de registro del host en ejecución. | Puede ver los registros manualmente en la siguiente ubicación:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html) | 

## Recursos relacionados
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-resources"></a>
+ [Opciones, herramientas y prácticas recomendadas para migrar cargas de trabajo de Microsoft a AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-microsoft-workloads-aws/introduction.html) (Recomendaciones de AWS)
+ [Patrones de migración de Microsoft](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migration-migration-patterns-by-workload-microsoft-pattern-list.html) (Recomendaciones de AWS)
+ [Servicios gratuitos de migración a la nube en AWS](https://aws.amazon.com/free/migration/) (documentación de AWS)
+ [Acciones predefinidas posteriores al lanzamiento](https://docs.aws.amazon.com/mgn/latest/ug/predefined-post-launch-actions.html) (documentación de marketing de la aplicación)

## Información adicional
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-additional"></a>

**Preguntas frecuentes**

*¿Dónde puedo ejecutar el módulo Migration Validator Toolkit? PowerShell *

Puede ejecutar el módulo en Microsoft Windows Server 2012 R2 o posterior.

*¿Cuándo ejecuto este módulo?*

Le recomendamos que ejecute el módulo durante la [fase de evaluación](https://aws.amazon.com/cloud-migration/how-to-migrate/) del proceso de migración.

*¿El módulo modifica mis servidores actuales?*

No. Todas las acciones del módulo son de solo lectura.

*¿Cuánto tiempo se tarda en ejecutar el módulo?*

La ejecución del módulo suele tardar entre 1 y 5 minutos, pero depende de la asignación de recursos del servidor.

*¿Qué permisos necesita el módulo para ejecutarse?*

Debe ejecutar el módulo desde una cuenta de administrador local.

*¿Puedo ejecutar el módulo en servidores físicos?*

Sí, siempre que el sistema operativo sea Microsoft Windows Server 2012 R2 o posterior.

*¿Cómo puedo ejecutar el módulo a escala para varios servidores?*

Para ejecutar el módulo a escala en varios ordenadores unidos a un dominio, siga los pasos del * PowerShell módulo Ejecute el kit de herramientas de validación de migración* en varios destinos, que se incluye en esta guía. En el caso de ordenadores que no estén unidos a un dominio, utilice una invocación remota o ejecute el módulo de forma local siguiendo los pasos del módulo Ejecute el kit de *herramientas PowerShell de validación de migración en un solo destino, épica de esta* guía.

# Cree un proceso de aprobación para las solicitudes de firewall durante una migración de realojamiento a AWS
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws"></a>

*Srikanth Rangavajhala, Amazon Web Services*

## Resumen
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-summary"></a>

Si quieres usar [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)[Cloud Migration Factory activado AWS](https://aws.amazon.com/solutions/implementations/cloud-migration-factory-on-aws/) para migrar a un rehost Nube de AWS, uno de los requisitos previos es mantener abiertos los puertos TCP 443 y 1500. Por lo general, la apertura de estos puertos de firewall requiere la aprobación de tu equipo de seguridad de la información (InfoSec).

Este patrón describe el proceso para obtener la aprobación de una solicitud de firewall por parte de un InfoSec equipo durante una migración de rehost a. Nube de AWS Puedes utilizar este proceso para evitar que el InfoSec equipo rechace tu solicitud de firewall, lo que puede resultar caro y llevar mucho tiempo. El proceso de solicitud del firewall consta de dos pasos de revisión y aprobación entre los asesores de AWS migración y los líderes, quienes trabajan con su equipo InfoSec y el de aplicaciones para abrir los puertos del firewall.

Este patrón supone que está planificando una migración de rehospedaje con AWS consultores o especialistas en migración de su organización. Puede utilizar este patrón si su organización no cuenta con un proceso de aprobación de firewall o si no tiene un formulario de aprobación global para solicitar un firewall. Para obtener más información al respecto, consulte la sección *Limitaciones* de este patrón. Para obtener más información sobre los requisitos de red del Servicio de migración de aplicaciones, consulte los [Requisitos de red](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html) en la documentación del Servicio de migración de aplicaciones.

## Requisitos previos y limitaciones
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-prereqs"></a>

**Requisitos previos **
+ Una migración de realojamiento planificada con AWS consultores o especialistas en migración de su organización
+ La información de puerto e IP necesaria para migrar la pila
+ Diagramas de arquitectura de estados actuales y futuros
+ Información del firewall sobre la infraestructura local y de destino, los puertos y zone-to-zone el flujo de tráfico
+ Una lista de verificación para revisar las solicitudes de firewall (adjunta)
+ Un documento de solicitud de firewall, configurado de acuerdo con los requisitos de su organización
+ Una lista de contactos para los revisores y aprobadores de firewall, que incluya los siguientes roles:
  + **Presentador de la solicitud de firewall**: especialista en AWS migración o consultor. El remitente de la solicitud de firewall también puede ser un especialista en migración de su organización.
  + **Revisor de solicitudes de firewall**: por lo general, es el punto de contacto único (SPOC) desde el que se envía. AWS
  + **Aprobador de solicitudes de firewall**: miembro InfoSec del equipo.

**Limitaciones**
+ Este patrón describe un proceso genérico de aprobación de una solicitud de firewall. Los requisitos pueden variar de una organización a otra.
+ Asegúrese de realizar un seguimiento de los cambios en el documento de solicitud de firewall.

En la tabla siguiente se muestran los casos de uso de este patrón.


| 
| 
| ¿Cuenta su organización con un proceso de aprobación de firewalls existente? | ¿Cuenta su organización con un formulario de solicitud de firewall existente?  | Acción sugerida | 
| --- |--- |--- |
| Sí | Sí | Colabore con AWS consultores o sus especialistas en migración para implementar el proceso de su organización. | 
| No | Sí | Utilice el proceso de aprobación de firewall de este patrón. Recurra a un AWS consultor o a un especialista en migración de su organización para enviar el formulario de aprobación general de la solicitud de firewall. | 
| No | No | Utilice el proceso de aprobación de firewall de este patrón. Recurra a un AWS consultor o a un especialista en migración de su organización para enviar el formulario de aprobación general de la solicitud de firewall. | 

## Arquitectura
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-architecture"></a>

En el siguiente diagrama, se muestran los pasos del proceso de aprobación de solicitudes de firewall.

![\[Proceso para solicitar la aprobación del firewall por parte de un InfoSec equipo durante una migración de rehospedaje a la nube de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cf9b58ad-ab6f-43d3-92da-968529c8d042/images/c672f7ce-6e9f-4dbc-bf2c-4272a6c4432b.png)


## Tools (Herramientas)
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-tools"></a>

Puede utilizar herramientas de escaneo como [Palo Alto Networks](https://www.paloaltonetworks.com/) o [SolarWinds](https://www.solarwinds.com/)analizar y validar los firewalls y las direcciones IP.

## Epics
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-epics"></a>

### Analizar la solicitud de firewall
<a name="analyze-the-firewall-request"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice los puertos y las direcciones IP. | El remitente de la solicitud de firewall realiza un análisis inicial para comprender los puertos y las direcciones IP de firewall necesarios. Una vez hecho esto, solicitan que tu InfoSec equipo abra los puertos necesarios y mapee las direcciones IP. | Ingeniero de nube de AWS, especialista en migración | 

### Validar la solicitud de firewall
<a name="validate-the-firewall-request"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la información de firewall. | El Nube de AWS ingeniero programa una reunión con su InfoSec equipo. Durante esta reunión, el ingeniero examina y valida la información de la solicitud de firewall.Por lo general, el remitente de la solicitud de firewall es la misma persona que el solicitante de firewall. Esta fase de validación puede pasar a ser iterativa en función de los comentarios que dé el responsable de la aprobación si se observa o recomienda algo. | Ingeniero de nube de AWS, especialista en migración | 
| Actualice el documento de solicitud de firewall. | Una vez que el InfoSec equipo comparte sus comentarios, el documento de solicitud de firewall se edita, se guarda y se vuelve a cargar. Este documento se actualiza después de cada iteración.Se recomienda almacenar este documento en una carpeta de almacenamiento con control de versiones. Esto significa que se realiza un seguimiento de todos los cambios y se aplican correctamente. | Ingeniero de nube de AWS, especialista en migración | 

### Enviar la solicitud de firewall
<a name="submit-the-firewall-request"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Envíe la solicitud de firewall. | Una vez que el aprobador de la solicitud de firewall haya aprobado la solicitud de aprobación general del firewall, el Nube de AWS ingeniero envía la solicitud de firewall. La solicitud especifica los puertos que deben estar abiertos y las direcciones IP que se requieren para asignar y actualizar la Cuenta de AWS.Puede hacer sugerencias o enviar comentarios una vez enviada la solicitud de firewall. Le recomendamos que automatice este proceso de comentarios y envíe cualquier modificación mediante un mecanismo de flujo de trabajo definido.  | Ingeniero de nube de AWS, especialista en migración | 

## Conexiones
<a name="attachments-cf9b58ad-ab6f-43d3-92da-968529c8d042"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/cf9b58ad-ab6f-43d3-92da-968529c8d042/attachments/attachment.zip)

# Incorpore y migre instancias de EC2 Windows a una cuenta de AWS Managed Services
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account"></a>

*Anil Kunapareddy y Venkatramana Chintha, Amazon Web Services*

## Resumen
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-summary"></a>

Este patrón explica el step-by-step proceso de migración e ingestión de instancias de Windows de Amazon Elastic Compute Cloud EC2 (Amazon) en una cuenta de Amazon Web Services (AWS) Managed Services (AMS). AMS puede ayudar a administrar la instancia de manera más eficiente y segura. AMS proporciona flexibilidad operativa, mejora la seguridad y el cumplimiento, y ayuda a optimizar la capacidad y reducir los costos.

Este patrón comienza con una instancia de EC2 Windows que ha migrado a una subred provisional de su cuenta de AMS. Hay varios servicios y herramientas de migración disponibles para realizar esta tarea, como AWS Application Migration Service.

Para realizar un cambio en su entorno administrado por AMS, debe crear y enviar una solicitud de cambio (RFC) para una operación o acción concreta. Con una RFC de incorporación de carga de trabajo de AMS (WIGS), se incorpora la instancia en la cuenta de AMS y se crea una imagen de máquina de Amazon (AMI) personalizada. A continuación, debe crear la EC2 instancia gestionada por AMS enviando otro RFC para crear una pila. EC2 Para obtener más información, consulte [AMS Workload Ingest](https://docs.aws.amazon.com/managedservices/latest/appguide/ams-workload-ingest.html) (Incorporación de carga de trabajo de AMS) en la documentación de AMS.

## Requisitos previos y limitaciones
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa y administrada por AMS
+ Una zona de aterrizaje existente
+ Permisos para realizar cambios en la VPC administrada por AMS
+ Una instancia de Amazon EC2 Windows en una subred provisional de su cuenta AMS
+ Cumplimiento de los [requisitos previos generales](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-migrate-instance-prereqs.html) para la migración de cargas de trabajo mediante AMS WIGS
+ Cumplimiento de los [requisitos previos de Windows](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-migrate-prereqs-win.html) para la migración de cargas de trabajo mediante AMS WIGS

**Limitaciones**
+ Este patrón es para las EC2 instancias que utilizan Windows Server. Este patrón no se aplica a las instancias que ejecutan otros sistemas operativos, como Linux.

## Arquitectura
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-architecture"></a>

**Pila de tecnología de origen**

Instancia de Amazon EC2 Windows en una subred provisional de su cuenta AMS

**Pila de tecnología de destino**

Instancia de Amazon EC2 Windows gestionada por AWS Managed Services (AMS)

**Arquitectura de destino**

![\[Proceso para migrar e incorporar instancias de Amazon EC2 Windows a una cuenta de AWS Managed Services.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/393c21cb-b6c6-4446-b597-b62e29fdb7f8/images/0b2fa855-7460-49f8-9e7f-3485e6ce1745.png)


## Tools (Herramientas)
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html) proporciona capacidad informática escalable en la nube de AWS. Puede utilizar Amazon EC2 para lanzar tantos o tan pocos servidores virtuales como necesite, y puede ampliarlos de forma horizontal o horizontal.
+ [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 Managed Services (AMS)](https://docs.aws.amazon.com/managedservices/?id=docs_gateway) ayuda a operar de manera más eficiente y segura al proporcionar una administración continua de la infraestructura de AWS, que incluye supervisión, administración de incidentes, orientación de seguridad, soporte de parches y respaldo para las cargas de trabajo de AWS.

**Otros servicios**
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)es un programa de administración de automatización y configuración de Microsoft que se ejecuta en Windows, Linux y macOS.

## Epics
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-epics"></a>

### Configurar los ajustes de la instancia
<a name="configure-settings-on-the-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie la configuración del cliente DNS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 
| Cambie la configuración de Windows Update (actualizaciones de Windows). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 
| Habilitar un firewall. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 

### Preparación de la instancia para AMS WIGS
<a name="prepare-the-instance-for-ams-wigs"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpie y prepare la instancia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 
| Repare el archivo sppnp.dll. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 
| Ejecute el script de validación previa a WIG. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 
| Cree la AMI a prueba de fallos. | Una vez superada la validación previa a WIG, cree una AMI previa a la incorporación de la siguiente manera:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html)Para obtener más información, consulte [AMI \$1 Create](https://docs.aws.amazon.com/managedservices/latest/ctref/deployment-advanced-ami-create.html) (AMI \$1 Crear) en la documentación de AMS. | Ingeniero de migraciones | 

### Incorporar y validar la instancia
<a name="ingest-and-validate-the-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Envíe la RFC para crear la pila de incorporación de carga de trabajo. | Envíe una solicitud de cambio (RFC) para iniciar AMS WIGS. Para obtener instrucciones, consulte [Workload Ingest Stack: Creating](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-workload-ingest-col.html) (Pila de incorporación de carga de trabajo: creación) en la documentación de AMS. Esto inicia la ingesta de carga de trabajo e instala todo el software requerido por AMS, incluidas las herramientas de respaldo, el software de EC2 administración de Amazon y el software antivirus. | Ingeniero de migraciones | 
| Valide que la migración sea correcta. | Una vez completada la incorporación de carga de trabajo, podrá ver la instancia administrada por AMS y la AMI incorporada por AMS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 

### Lanzar la instancia en la cuenta AMS de destino
<a name="launch-the-instance-in-the-target-ams-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Envíe el RFC para crear una pila. EC2  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | Ingeniero de migraciones | 

## Recursos relacionados
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-resources"></a>

**Recomendaciones de AWS**
+ [Automatización de las actividades previas a la ingesta de cargas de trabajo para AWS Managed Services en Windows](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automate-pre-workload-ingestion-activities-for-aws-managed-services-on-windows.html)
+ [Automatically create an RFC in AMS using Python](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automatically-create-an-rfc-in-ams-using-python.html?did=pg_card&trk=pg_card) (Crear automáticamente una RFC en AMS mediante Python)

**Documentación de AMS**
+ [AMS Workload Ingest](https://docs.aws.amazon.com/managedservices/latest/appguide/ams-workload-ingest.html) (Incorporar carga de trabajo de AMS)
+ [How Migration Changes Your Resource](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-migrate-changes.html) (Cómo la migración cambia el recurso)
+ [Migrating Workloads: Standard Process](https://docs.aws.amazon.com/managedservices/latest/appguide/mp-migrate-stack-process.html) (Migración de cargas de trabajo: proceso estándar)

**Recursos de marketing**
+ [AWS Managed Services](https://aws.amazon.com/managed-services/)
+ [AWS Managed Services FAQs](https://aws.amazon.com/managed-services/faqs/)
+ [Recursos de AWS Managed Services](https://aws.amazon.com/managed-services/resources/)
+ [Características de AWS Managed Services](https://aws.amazon.com/managed-services/features/)

# Migrar una base de datos de Couchbase Server a Amazon EC2
<a name="migrate-couchbase-server-ec2"></a>

*Subhani Shaik, Amazon Web Services*

## Resumen
<a name="migrate-couchbase-server-ec2-summary"></a>

Este patrón describe cómo puede migrar Couchbase Server de un entorno local a Amazon Elastic Compute Cloud (Amazon EC2) en adelante. AWS

Couchbase Server es una base de datos NoSQL (documento JSON) distribuida que proporciona capacidades de base de datos relacional. La migración de una base de datos de Couchbase Server AWS puede proporcionar mayor escalabilidad, mejor rendimiento, rentabilidad, seguridad mejorada, administración simplificada y alcance global, lo que puede beneficiar a las aplicaciones que requieren un acceso a los datos de alta disponibilidad y baja latencia. También puede acceder a funciones avanzadas a través de servicios gestionados. AWS 

Couchbase Server on AWS ofrece las siguientes funciones clave: 
+ Arquitectura que prioriza la memoria
+ Alta disponibilidad, recuperación ante desastres y equilibrio de carga
+ Implementación multimaestro y multirregional para un rendimiento óptimo

Para obtener más información sobre los principales beneficios, consulte la sección [Información adicional](#migrate-couchbase-server-ec2-additional) y el sitio web de [Couchbase](https://www.couchbase.com/partners/amazon/).

## Requisitos previos y limitaciones
<a name="migrate-couchbase-server-ec2-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS con una nube privada virtual (VPC), dos zonas de disponibilidad, subredes privadas y un grupo de seguridad. Para obtener instrucciones, consulte [Create a VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) en la documentación de Amazon Virtual Private Cloud (Amazon VPC).
+ Conectividad activada entre el entorno de origen y de destino. Para obtener información sobre los puertos TCX que utiliza Couchbase Server, consulte la [documentación de Couchbase](https://docs.couchbase.com/server/current/install/install-ports.html).

## Arquitectura
<a name="migrate-couchbase-server-ec2-architecture"></a>

El siguiente diagrama muestra la arquitectura de alto nivel para migrar Couchbase Server a. AWS

![\[Arquitectura de migración para volver a alojar Couchbase Server en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4cedced2-3528-4f12-b19e-7d389e820cc1/images/ac22133a-895f-4999-b1e1-57f69e83a326.png)


Desde el clúster de Couchbase en las instalaciones, los datos se mueven a través de una puerta de enlace de cliente mediante [AWS Direct Connect](https://aws.amazon.com/directconnect/). Los datos pasan a través de un router y una Direct Connect ruta y llegan a la VPC a través de una puerta de enlace [AWS Virtual Private Network (Site-to-Site VPN).](https://aws.amazon.com/vpn/) La VPC contiene una EC2 instancia que ejecuta Couchbase Server. La AWS infraestructura también incluye [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) para el control de acceso, [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) para el cifrado de datos, [Amazon Elastic Block Store (Amazon EBS) para el almacenamiento en bloques y Amazon](https://aws.amazon.com/ebs/) [Simple Storage Service (Amazon S3) para el almacenamiento de datos.](https://aws.amazon.com/s3/)

## Tools (Herramientas)
<a name="migrate-couchbase-server-ec2-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.
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)conecta su red interna a una Direct Connect ubicación a través de un cable de fibra óptica Ethernet estándar. Con esta conexión, puede crear interfaces virtuales directamente con las públicas y, al Servicios de AWS mismo tiempo, omitir a los proveedores de servicios de Internet en su ruta de red.

## Prácticas recomendadas
<a name="migrate-couchbase-server-ec2-best-practices"></a>
+ [Installing and configuring Couchbase](https://docs.couchbase.com/server/current/install/install-intro.html) en diferentes plataformas operativas
+ [Mejores prácticas](https://docs.couchbase.com/server/current/cloud/couchbase-cloud-deployment.html#aws-best-practices) para implementar Couchbase Server en AWS
+ [Creating a Couchbase cluster](https://docs.couchbase.com/server/current/manage/manage-nodes/create-cluster.html)
+ [Performance best practices](https://docs.couchbase.com/dotnet-sdk/current/project-docs/performance.html) para aplicaciones de Couchbase
+ [Security best practices](https://docs.couchbase.com/server/current/learn/security/security-overview.html) para Couchbase Server
+ [Storage best practices](https://www.couchbase.com/forums/t/what-is-the-best-document-storage-strategy-in-couchbase/1573) para bases de datos de Couchbase Server

## Epics
<a name="migrate-couchbase-server-ec2-epics"></a>

### Implemente una EC2 instancia de Amazon para Couchbase Server
<a name="deploy-an-ec2-instance-for-couchbase-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Abre la EC2 consola de Amazon. | Inicia sesión en la [ EC2 consola de Amazon [Consola de administración de AWS](https://console.aws.amazon.com/)](https://console.aws.amazon.com/ec2/)y ábrela. | DevOps ingeniero, administrador de Couchbase | 
| Implemente una EC2 instancia de Amazon. | Lance una EC2 instancia que coincida con las configuraciones del servidor Couchbase local. Para obtener más información sobre cómo implementar una EC2 instancia, consulta [Lanzar una EC2 instancia de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html) en la EC2 documentación de Amazon. | DevOps ingeniero, administrador de Couchbase | 

### Instalar y configurar Couchbase Server en Amazon EC2
<a name="install-and-configure-couchbase-server-on-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale un clúster de Couchbase. | Revisa las [pautas de despliegue de Couchbase Server](https://docs.couchbase.com/server/current/install/install-production-deployment.html) antes de instalar Couchbase Server en Amazon. EC2Para instalar Couchbase Server, consulte la [documentación de Couchbase Server](https://docs.couchbase.com/server/current/install/install-intro.html). | Administrador de Couchbase | 
| Configure el clúster. | Para configurar el clúster, consulte [Cluster Configuration Options](https://docs.couchbase.com/cloud/clusters/databases.html#cluster-configuration-options) en la documentación de Couchbase. | Administrador de Couchbase | 

### Adición de un nuevo nodo y reequilibrio del clúster de Couchbase
<a name="add-a-new-node-and-rebalance-the-couchbase-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Agrega un nodo para la instancia. EC2  | Agrega la EC2 instancia recién implementada que tiene Couchbase instalado al clúster local existente. Para obtener instrucciones, consulte [Add a Node and Rebalance](https://docs.couchbase.com/server/current/manage/manage-nodes/add-node-and-rebalance.html) en la documentación de Couchbase Server. | Administrador de Couchbase | 
| Reequilibre el clúster. | El proceso de reequilibrio convierte al nodo recién agregado con la EC2 instancia en un miembro activo del clúster de Couchbase. Para obtener instrucciones, consulte [Add a Node and Rebalance](https://docs.couchbase.com/server/current/manage/manage-nodes/add-node-and-rebalance.html) en la documentación de Couchbase Server. | Administrador de Couchbase | 

### Reconfiguración de las conexiones
<a name="reconfigure-connections"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine los nodos en las instalaciones y reequilibre. | Ahora puede eliminar los nodos en las instalaciones del clúster. Después de eliminar los nodos, siga el proceso de reequilibrio para redistribuir los datos, los índices, el procesamiento de eventos y el procesamiento de consultas entre los nodos disponibles en el clúster. Para obtener instrucciones, consulte [Remove a Node and Rebalance](https://docs.couchbase.com/server/current/manage/manage-nodes/remove-node-and-rebalance.html) en la documentación de Couchbase Server. | Administrador de Couchbase | 
| Actualice los parámetros de conexión. | Actualiza los parámetros de conexión de tu aplicación para usar la nueva dirección EC2 IP de Amazon, de modo que tu aplicación pueda conectarse al nuevo nodo. | Desarrollador de aplicaciones de Couchbase | 

## Recursos relacionados
<a name="migrate-couchbase-server-ec2-resources"></a>
+ [Couchbase Server Services](https://docs.couchbase.com/server/current/learn/services-and-indexes/services/services.html)
+ [Implemente Couchbase Server mediante AWS Marketplace](https://docs.couchbase.com/server/current/cloud/couchbase-aws-marketplace.html)
+ [Connect to Couchbase Server](https://docs.couchbase.com/server/current/guides/connect.html)
+ [Administre depósitos](https://docs.couchbase.com/server/current/manage/manage-buckets/bucket-management-overview.html)
+ [Cross Data Center Replication (XDCR)](https://docs.couchbase.com/server/current/learn/clusters-and-availability/xdcr-overview.html)
+ [Acuerdo de licencia de Couchbase Inc.](https://www.couchbase.com/LA20190115/)

## Información adicional
<a name="migrate-couchbase-server-ec2-additional"></a>

**Ventajas principales**

La migración de su base de datos de Couchbase a ella AWS ofrece las siguientes ventajas:

**Escalabilidad**. Puede ampliar o reducir el tamaño de su clúster de Couchbase en función de la demanda sin tener que gestionar el hardware físico, de forma que pueda adaptarse fácilmente a las fluctuaciones de los volúmenes de datos y al uso de las aplicaciones. AWS proporciona:
+ Opciones de escalado horizontal y vertical
+ Capacidades de [implementación global](https://aws.amazon.com/about-aws/global-infrastructure/)
+ Equilibrio de carga entre Regiones de AWS
+ [Soluciones de escalado de bases de datos](https://aws.amazon.com/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizontally/)
+ Optimización de la [entrega de contenido](https://aws.amazon.com/solutions/content-delivery/)

**Optimización del rendimiento**. AWS proporciona una infraestructura de red de alto rendimiento y [tipos de instancias optimizados](https://aws.amazon.com/ec2/instance-types/) para garantizar un acceso rápido a los datos y una baja latencia para su base de datos de Couchbase.
+ Opciones de [computación de alto rendimiento (HPC)](https://aws.amazon.com/hpc/)
+ Entrega de contenido global a través de [Amazon CloudFront](https://aws.amazon.com/cloudfront/)
+ Múltiples [opciones de almacenamiento](https://aws.amazon.com/products/storage/)
+ [Servicios de bases de datos](https://aws.amazon.com/products/databases/) avanzados, como Amazon Relational Database Service (Amazon RDS) y Amazon DynamoDB
+ Conexiones de baja latencia con [Direct Connect](https://aws.amazon.com/directconnect/)

**Optimización de costos:** Seleccione el tipo de instancia y la configuración adecuados para equilibrar el rendimiento y el costo en función de su carga de trabajo. Pague solo por los recursos que utilice. Esto puede reducir potencialmente sus costos operativos al eliminar la necesidad de administrar el hardware local y aprovechar Nube de AWS las economías de escala.
+ Las [instancias reservadas](https://aws.amazon.com/ec2/pricing/reserved-instances/) pueden ayudarlo a planificar con antelación y reducir considerablemente sus costos cuando utiliza Couchbase en AWS.
+ El [escalado automático](https://aws.amazon.com/autoscaling/) evita el sobreaprovisionamiento y lo ayuda a optimizar el uso y la rentabilidad.

**Seguridad mejorada** Aproveche las sólidas funciones de seguridad incluidas AWS, como el cifrado de datos, los controles de acceso y los grupos de seguridad, para ayudar a proteger los datos confidenciales que almacena en Couchbase. Beneficios adicionales:
+ El [modelo de responsabilidad AWS compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) diferencia claramente entre la seguridad *de* la nube (AWS responsabilidad) y la seguridad *en* la nube (responsabilidad del cliente).
+ [AWS el cumplimiento](https://aws.amazon.com/compliance/) respalda los principales estándares de seguridad.
+ AWS proporciona opciones [de cifrado](https://docs.aws.amazon.com/prescriptive-guidance/latest/encryption-best-practices/welcome.html) avanzadas.
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) le ayuda a gestionar el acceso seguro a sus recursos.

**Administración simplificada**. AWS proporciona servicios gestionados para Couchbase, de forma que pueda centrarse en el desarrollo de aplicaciones en lugar de en gestionar la infraestructura subyacente.

**Alcance global**. Puede implementar su clúster de Couchbase en varios clústeres Regiones de AWS para lograr una baja latencia para los usuarios de todo el mundo. Puede implementar las bases de datos completamente en la nube o en un entorno híbrido. Puede proteger los datos con una seguridad empresarial integrada y una sincronización bidireccional rápida y eficiente de los datos desde la periferia hasta la nube. Al mismo tiempo, puede simplificar el desarrollo con un modelo de programación coherente para crear aplicaciones web y móviles.

**Continuidad empresarial**:
+ **Copia de seguridad y recuperación**. Si hubiera algún problema, puede utilizar [AWS Backup](https://aws.amazon.com/backup/) para garantizar la resiliencia de los datos y una fácil recuperación. Para obtener las opciones de recuperación ante desastres, consulte la [documentación del Marco de AWS Well-Architected](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html).
+ **Despliegue multirregional de Couchbase**: para implementar una base de datos de Couchbase en un AWS entorno multirregional, puede suscribirse al servidor de Couchbase en, usar [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)plantillas para crear clústeres de Couchbase independientes en cada región y [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-zy5g2wqmqdyzw), a continuación, configurar la replicación entre regiones para sincronizar los datos entre las regiones. Esta configuración garantiza una alta disponibilidad y redundancia geográfica en varias regiones. Para obtener más información, consulte [Deploy Couchbase Server Using AWS Marketplace](https://docs.couchbase.com/server/current/cloud/couchbase-aws-marketplace.html) en la documentación de Couchbase.

**Agilidad de la infraestructura**:
+ Rápido [aprovisionamiento y desaprovisionamiento de recursos](https://aws.amazon.com/products/management-and-governance/use-cases/provisioning-and-orchestration/)
+ Alcance de [infraestructura global](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)
+ [Escalado automático](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html) en función de la demanda
+ [Infraestructura como código (IaC)](https://aws.amazon.com/what-is/iac/) para implementaciones coherentes
+ Varios [tipos de instancias](https://aws.amazon.com/ec2/instance-types/) optimizados para diferentes cargas de trabajo

**Habilitación de la innovación**:
+ Acceso a la tecnología más reciente, como [IA y ML](https://aws.amazon.com/ai/generative-ai/), [IoT](https://aws.amazon.com/iot/) y [análisis](https://aws.amazon.com/big-data/datalakes-and-analytics/)
+ [Servicios administrados](https://aws.amazon.com/blogs/architecture/reduce-operational-load-using-aws-managed-services-for-your-data-solutions/), que reducen los gastos operativos
+ Prácticas de desarrollo de [aplicaciones modernas](https://aws.amazon.com/modern-apps/)
+ Opciones de computación [sin servidor](https://aws.amazon.com/serverless/)

**Excelencia operativa**:
+ [Supervisión y registro centralizados](https://docs.aws.amazon.com/prescriptive-guidance/latest/designing-control-tower-landing-zone/logging-monitoring.html)
+ [Administración automatizada de recursos](https://aws.amazon.com/systems-manager/)
+ Capacidades de [mantenimiento predictivo](https://aws.amazon.com/what-is/predictive-maintenance/)
+ [Visibilidad mejorada](https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-cloudwatch-provides-centralized-visibility-telemetry-configurations/) del uso de los recursos
+ [Procesos de implementación simplificados](https://aws.amazon.com/blogs/mt/streamline-change-processes-and-improve-governance-with-aws-well-architected/)

**Oportunidades de modernización**:
+ Arquitectura de [microservicios](https://aws.amazon.com/microservices/)
+ [DevOps](https://aws.amazon.com/devops/)implementación de prácticas
+ Desarrollo de aplicaciones [nativas en la nube](https://aws.amazon.com/what-is/cloud-native/)
+ [Modernización de aplicaciones heredadas](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-modernizing-applications/welcome.html)

**Ventajas competitivas**:
+ [Tiempo de comercialización más rápido](https://aws.amazon.com/blogs/smb/accelerate-time-to-market-and-business-growth-with-an-automated-software-as-a-service-platform/)
+ [Experiencia del cliente](https://aws.amazon.com/blogs/publicsector/improving-customer-experience-for-the-public-sector-using-aws-services/) mejorada
+ Toma de decisiones [basada en datos](https://aws.amazon.com/data/data-driven-decision-making/)
+ [Inteligencia empresarial](https://aws.amazon.com/what-is/business-intelligence/) mejorada

# Migre Db2 for LUW a Amazon EC2 mediante el envío de registros para reducir el tiempo de interrupción
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time"></a>

*Feng Cai, Ambarish Satarkar y Saurabh Sharma, Amazon Web Services*

## Resumen
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-summary"></a>

Cuando los clientes migran sus cargas de trabajo de IBM Db2 for LUW (Linux, UNIX y Windows) a Amazon Web Services (AWS), la forma más rápida es utilizar Amazon Elastic Compute Cloud (Amazon EC2) con el modelo Bring Your Own License (BYOL). Sin embargo, la migración de grandes cantidades de datos de Db2 en las instalaciones a AWS puede ser un desafío, especialmente cuando el periodo de interrupción es corto. Muchos clientes intentan establecer el periodo de interrupción en menos de 30 minutos, lo que deja poco tiempo para la propia base de datos.

Este patrón explica cómo realizar una migración a Db2 con un breve periodo de interrupción mediante el envío del registro de transacciones. Este enfoque se aplica a Db2 en una plataforma Linux little endian.

## Requisitos previos y limitaciones
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una instancia de Db2 que se ejecuta en una instancia que coincide con los diseños del EC2 sistema de archivos local
+ Un bucket de Amazon Simple Storage Service (Amazon S3) al que pueda acceder la instancia EC2 
+ Un rol y una política de AWS Identity and Access Management (IAM) para hacer llamadas programáticas a Amazon S3
+ Relojes del sistema y zona horaria sincronizados en Amazon EC2 y el servidor local
+ La red local conectada a AWS a través de [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) o [AWS Direct Connect](https://aws.amazon.com/directconnect/)

**Limitaciones**
+ La instancia local de Db2 y Amazon EC2 deben estar en la misma familia de [plataformas](https://www.ibm.com/docs/en/db2/11.1?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms).
+ Se debe registrar la carga de trabajo en las instalaciones de Db2. Establezca `blocknonlogged=yes` en la configuración de la base de datos para bloquear cualquier transacción no registrada.

**Versiones de producto**
+ Db2 para LUW, versión 11.5.9 y posteriores

## Arquitectura
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-architecture"></a>

**Pila de tecnología de origen**
+ Db2 en Linux** **x86\$164

**Pila de tecnología de destino**
+ Amazon EBS
+ Amazon EC2
+ AWS Identity y Access Management (IAM)
+ Amazon S3
+ AWS Site-to-Site VPN o Direct Connect

**Arquitectura de destino**

El siguiente diagrama muestra una instancia de Db2 que se ejecuta localmente con una conexión de red privada virtual (VPN) a Db2 en Amazon. EC2 Las líneas de puntos representan el túnel de VPN entre su centro de datos y la nube de AWS.

![\[Flujo de trabajo para llevar a cabo una migración a Db2 con un breve periodo de interrupción mediante el envío del registro de transacciones.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7dec6e4a-a92e-4204-9e42-f89d7dcafbfa/images/a7e1c1d6-2ec1-4271-952d-a58260ad7c81.png)


## Tools (Herramientas)
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-tools"></a>

**Servicios 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 Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) vincula su red interna con una ubicación de Direct Connect a través de un cable estándar Ethernet de fibra óptica. Con esta conexión, puede crear interfaces virtuales directamente en servicios públicos de AWS omitiendo a los proveedores de servicios de Internet en su ruta de acceso a la red.
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) proporciona volúmenes de almacenamiento a nivel de bloques para utilizarlos con instancias de Amazon Elastic Compute Cloud (Amazon). EC2
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [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.
+ [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.
+ La [ Site-to-SiteVPN de AWS](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) le ayuda a transferir el tráfico entre las instancias que lanza en AWS y su propia red remota.

**Otras herramientas**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) es el comando CLI interactivo de Db2.

## Prácticas recomendadas
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-best-practices"></a>
+ En la base de datos de destino, utilice los [puntos de conexión de puerta de enlace de Amazon S3 para](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) acceder a la imagen de copia de seguridad y a los archivos de registro de la base de datos en Amazon S3.
+ En la base de datos de origen, utilice [AWS PrivateLink para Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) para enviar la imagen de respaldo y los archivos de registro de la base de datos a Amazon S3.

## Epics
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-epics"></a>

### Configuración de las variables de entorno
<a name="set-environment-variables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure las variables de entorno. | Este patrón utiliza los siguientes nombres:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.html)Puede cambiarlos para adaptarlos a su entorno. | Administrador de base de datos | 

### Configure el servidor Db2 en las instalaciones
<a name="configure-the-on-premises-db2-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la CLI de AWS. | Utilice los siguientes comandos para descargar e instalar la versión más reciente de la AWS CLI:<pre>$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />sudo ./aws/install</pre> | Administrador de Linux | 
| Configure un destino en las instalaciones para los registros de archivos de Db2. | Para mantener la base de datos de destino de Amazon EC2 sincronizada con la base de datos de origen local, es necesario recuperar los registros de transacciones más recientes de la fuente.En esta configuración, `/db2logs` se establece como `LOGARCHMETH2` en la fuente como área de almacenamiento provisional. Los registros archivados en este directorio se sincronizarán con Amazon S3 y Db2 en Amazon podrá acceder a ellos. EC2 El patrón usa `LOGARCHMETH2` porque `LOGARCHMETH1` podría haberse configurado para usar una herramienta de un proveedor externo a la que el comando de la CLI de AWS no pudiera acceder. Para recuperar los registros, ejecute el siguiente comando: <pre>db2 connect to sample<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs</pre> | Administrador de base de datos | 
| Realice una copia de seguridad de la base de datos en línea. | Haga una copia de seguridad de la base de datos en línea y guárdela en el sistema de archivos de copia de seguridad local: <pre>db2 backup db sample online to /backup </pre> | Administrador de base de datos | 

### Configuración del bucket de S3 y de la política de IAM
<a name="set-up-the-s3-bucket-and-iam-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | Cree un bucket de S3 para que el servidor en las instalaciones envíe los archivos de registro y las imágenes Db2 de copia de seguridad a AWS. Amazon también accederá al depósito EC2:<pre>aws s3api create-bucket --bucket logshipmig-db2 --region us-east-1 </pre> | Administrador de sistemas de AWS | 
|  Cree una política de IAM. | El archivo `db2bucket.json` contiene la política de IAM para acceder al bucket de Amazon S3:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "kms:GenerateDataKey",<br />                "kms:Decrypt",<br />                "s3:PutObject",<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:ListBucket",<br />                "s3:DeleteObject",<br />                "s3:GetObjectVersion",<br />                "s3:ListMultipartUploadParts"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::logshipmig-db2/*",<br />                "arn:aws:s3:::logshipmig-db2"<br />            ]<br />        }<br />    ]<br />}</pre>Utilice el siguiente comando de la AWS CLI para crear la política:<pre>aws iam create-policy \<br />      --policy-name db2s3policy \<br />      --policy-document file://db2bucket.json </pre> El resultado de JSON muestra el nombre de recurso de Amazon (ARN) para la política, donde `aws_account_id` representa el ID de la cuenta:<pre>"Arn": "arn:aws:iam::aws_account_id:policy/db2s3policy"</pre> | Administrador AWS, administrador de sistemas AWS | 
| Adjunta la política de IAM a la función de IAM utilizada por la EC2 instancia. | En la mayoría de los entornos de AWS, una EC2 instancia en ejecución tiene un rol de IAM establecido por el administrador del sistema. Si la función de IAM no está configurada, cree la función y elija **Modificar la función de IAM en la EC2 consola para asociar la función** a la EC2 instancia que aloja la base de datos de Db2. Adjunte la política de IAM al rol de IAM con el ARN de la política:<pre>aws iam attach-role-policy \<br />    --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3policy"  \<br />    --role-name db2s3role  </pre>Una vez asociada la política, cualquier EC2 instancia asociada a la función de IAM puede acceder al bucket de S3. | Administrador AWS, administrador de sistemas AWS | 

### Envíe los archivos de registro y la imagen de copia de seguridad de la base de datos de origen a Amazon S3
<a name="send-the-source-database-backup-image-and-log-files-to-amazon-s3"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la AWS CLI en el servidor de Db2 en las instalaciones. | Configure la AWS CLI con el `Access Key ID` y la `Secret Access Key` que generó en el paso anterior:<pre>$ aws configure <br />AWS Access Key ID [None]: *************<br />AWS Secret Access Key [None]: ***************************<br />Default region name [None]: us-east-1<br />Default output format [None]: json</pre>  | Administrador AWS, administrador de sistemas AWS | 
| Envíe la imagen de copia de seguridad a Amazon S3. | Anteriormente, se guardó una copia de seguridad de la base de datos en línea en el directorio `/backup` en las instalaciones. Para enviar la imagen de copia de seguridad al bucket de S3, ejecute el siguiente comando:<pre>aws s3 sync /backup s3://logshipmig-db2/SAMPLE_backup</pre> | Administrador de AWS, ingeniero de migraciones | 
| Envíe los registros de archivo Db2 a Amazon S3. | Sincronice los registros del archivo Db2 local con el depósito de S3 al que puede acceder la instancia de Db2 de destino en Amazon: EC2<pre>aws s3 sync /db2logs s3://logshipmig-db2/SAMPLE_LOG</pre>Ejecute este comando periódicamente mediante cron u otras herramientas de programación. La frecuencia depende de la periodicidad con la que la base de datos de origen archiva los archivos de registro de transacciones.  | Administrador de AWS, ingeniero de migraciones | 

### Conecte Db2 de Amazon EC2 a Amazon S3 e inicie la sincronización de la base de datos
<a name="connect-db2-on-amazon-ec2-to-amazon-s3-and-start-the-database-sync"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un almacén de PKCS12 claves. | Db2 utiliza un almacén de claves de cifrado de estándares de criptografía de clave pública (PKCS) para mantener la seguridad de la clave de acceso de AWS. Cree un almacén de claves y configure la instancia de Db2 de origen para utilizarlo:<pre>gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash <br /> <br />db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"</pre> | Administrador de base de datos | 
| Cree el alias de acceso al almacenamiento de Db2. | Para crear el [alias de acceso al almacenamiento](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access), utilice la siguiente sintaxis de script:`db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> container '<bucket_name>'"`Por ejemplo, el script podría tener el siguiente aspecto: `db2 "catalog storage access alias DB2AWSS3 vendor S3 server s3.us-east-1.amazonaws.com container 'logshipmig-db2'" ` | Administrador de base de datos | 
| Establece el área de almacenamiento provisional. | De forma predeterminada, Db2 usa `DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH` como área de montaje para cargar y descargar archivos desde y hacia Amazon S3. La ruta predeterminada es `sqllib/tmp/RemoteStorage.xxxx`, en el directorio principal de la instancia, y `xxxx` hace referencia al número de partición de Db2. Tenga en cuenta que el área de montaje debe tener capacidad suficiente para almacenar las imágenes de copia de seguridad y los archivos de registro. Puede usar el registro para apuntar el área de montaje a un directorio diferente.También recomendamos usar `DB2_ENABLE_COS_SDK=ON`, `DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore` y el enlace a la biblioteca de `awssdk` para omitir el área de almacenamiento provisional de Amazon S3 a fin de hacer copias de seguridad de bases de datos y restaurarlas:<pre>#By root:<br />cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/<br /><br />#By db2 instance owner:<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2set DB2_ENABLE_COS_SDK=ON<br />Db2set DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore<br />db2stop<br />db2start</pre> | Administrador de base de datos | 
| Restaure la base de datos a partir de la imagen de copia de seguridad. | Restaure la base de datos de destino en Amazon EC2 a partir de la imagen de respaldo del bucket S3:<pre>db2 restore db sample from DB2REMOTE://DB2AWSS3/logshipmig-db2/SAMPLE_backup replace existing</pre> | Administrador de base de datos | 
| Restaure la base de datos. | Una vez completada la restauración, la base de datos de destino pasará al estado pendiente de recuperación. Configure `LOGARCHMETH1` y `LOGARCHMETH2` para que Db2 sepa dónde obtener los archivos de registro de transacciones:<pre>db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/'<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 OFF</pre>Inicie la recuperación de la base de datos:<pre>db2 ROLLFORWARD DATABASE sample to END OF LOGS</pre>Este comando procesa todos los archivos de registro que se han transferido al bucket de S3. Ejecútelo periódicamente en función de la frecuencia del comando `s3 sync` en los servidores Db2 locales. Por ejemplo, si `s3 sync` se ejecuta cada hora y se tarda 10 minutos en sincronizar todos los archivos de registro, configure el comando para que se ejecute 10 minutos después de cada hora.  | Administrador de base de datos | 

### Ponga Db2 en Amazon en EC2 línea durante el período de transición
<a name="bring-db2-on-amazon-ec2-online-during-the-cutover-window"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ponga en línea la base de datos de destino. | Durante el periodo de transición, 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/migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.html)Una vez sincronizado el último registro de transacciones con Amazon S3, ejecute el comando `ROLLFORWARD` por última vez:<pre>db2 rollforward DB sample to END OF LOGS<br />db2 rollforward DB sample complete<br /><br />                                 Rollforward Status<br />....<br /> Rollforward status                     = not pending<br />....<br />DB20000I  The ROLLFORWARD command completed successfully.<br /><br />db2 activate db sample<br />DB20000I  The ACTIVATE DATABASE command completed successfully.</pre>Coloque la base de datos de destino en línea y dirija las conexiones de la aplicación a Db2 en Amazon EC2. | Administrador de base de datos | 

## Resolución de problemas
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Si varias bases de datos tienen el mismo nombre de instancia y nombre de base de datos en diferentes hosts (DEV, QA, PROD), las copias de seguridad y los registros pueden ir al mismo subdirectorio. | Utilice distintos buckets de S3 para DEV, QA y PROD y agregue el nombre de host como prefijo del subdirectorio para evitar confusiones. | 
| Si hay múltiples imágenes de copia de seguridad en la misma ubicación, aparecerá el siguiente error al restaurar:`SQL2522N More than one backup file matches the time stamp value provided for the backed up database image.` | En el comando `restore`, agregue la marca de tiempo de la copia de seguridad:`db2 restore db sample from DB2REMOTE://DB2AWSS3/logshipmig-db2/SAMPLE_backup taken at 20230628164042 replace existing` | 

## Recursos relacionados
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-resources"></a>
+ [Operaciones de copia de seguridad y restauración de Db2 entre diferentes sistemas operativos y plataformas de hardware](https://www.ibm.com/docs/en/db2/11.5?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)
+ [Configure STORAGE ACCESS ALIAS y REMOTE de Db2 DB2](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access)
+ [Comando Db2 ROLLFORWARD](https://www.ibm.com/docs/en/db2/11.5?topic=commands-rollforward-database)
+ [Método de archivo de registro secundario de Db2](https://www.ibm.com/docs/en/db2/11.5?topic=parameters-logarchmeth2-secondary-log-archive-method)

# Migración de Db2 para LUW a Amazon EC2 con recuperación de desastres de alta disponibilidad
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery"></a>

*Feng Cai, Aruna Gangireddy y Venkatesan Govindan, Amazon Web Services*

## Resumen
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-summary"></a>

Cuando los clientes migran su carga de trabajo de IBM Db2 de LUW (Linux, UNIX y Windows) a Amazon Web Services (AWS), utilizar Amazon Elastic Compute Cloud (Amazon EC2) con el modelo Traiga su propia licencia (BYOL) es la forma más rápida de hacerlo. Sin embargo, la migración de grandes cantidades de datos de Db2 en las instalaciones a AWS puede ser un desafío, especialmente cuando el periodo de interrupción es corto. Muchos clientes intentan establecer el periodo de interrupción en menos de 30 minutos, lo que deja poco tiempo para la propia base de datos.

Este patrón explica cómo realizar una migración a Db2 con un breve período de interrupción mediante la recuperación de desastres de alta disponibilidad (HADR) de Db2. Este enfoque se aplica a las bases de datos Db2 que se encuentran en la plataforma Linux Little-Endian y no utilizan la característica de particionamiento de datos (DPF).

## Requisitos previos y limitaciones
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa
+ Una instancia de Db2 que se ejecute en una instancia de Amazon EC2 que coincida con los diseños del sistema de archivos en las instalaciones
+ Un bucket de Amazon Simple Storage Service (Amazon S3) accesible para la instancia EC2
+ Un rol y una política de AWS Identity and Access Management (IAM) para hacer llamadas programáticas a Amazon S3
+ Relojes del sistema y zona horaria sincronizados en Amazon EC2 y el servidor en las instalaciones
+ La red local conectada a AWS a través de [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) o [AWS Direct Connect](https://aws.amazon.com/directconnect/)
+ Comunicación entre el servidor en las instalaciones y Amazon EC2 en los puertos HADR

**Limitaciones **
+ La instancia en las instalaciones de Db2 y Amazon EC2 deben estar en la misma [familia de plataformas](https://www.ibm.com/docs/en/db2/11.1?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms).
+ El HADR no se admite en un entorno de base de datos particionado.
+ HADR no admite el uso de archivos sin procesar I/O (acceso directo al disco) para los archivos de registro de la base de datos.
+ HADR no admite registros infinitos.
+ `LOGINDEXBUILD` debe configurarse como `YES`, lo que aumentará el uso del registro para reconstruir el índice.
+ Se debe registrar la carga de trabajo en las instalaciones de Db2. Configure `blocknonlogged=yes` en la configuración de la base de datos para bloquear cualquier transacción no registrada.

**Versiones de producto**
+ Db2 para LUW, versión 11.5.9 y posteriores

## Arquitectura
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-architecture"></a>

**Pila de tecnología de origen**
+ Db2 en Linux** **x86\$164

**Pila de tecnología de destino**
+ Amazon EC2
+ AWS Identity y Access Management (IAM)
+ Amazon S3
+  Site-to-SiteVPN DE AWS

**Arquitectura de destino**

En el siguiente diagrama, Db2 en las instalaciones se ejecuta `db2-server1` como principal. Tiene dos objetivos HADR en espera. Hay un objetivo de reserva en las instalaciones y es opcional. El otro objetivo en espera, `db2-ec2`, está en Amazon EC2. Después de efectuar la transición de la base de datos a AWS, `db2-ec2` se convierte en la principal.

![\[Flujo de trabajo para migrar con un breve periodo de interrupción a Db2 en las instalaciones mediante el HADR de Db2.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2db43e4b-f0ea-4a92-96da-4cafb7d3368b/images/5295420e-3cd8-4127-9a18-ade971c36339.png)


1. Los registros se transmiten desde la base de datos en las instalaciones principal a la base de datos en las instalaciones en espera.

1. Con el HADR de Db2, los registros se transmiten desde la base de datos local principal a través de una Site-to-Site VPN a Db2 en Amazon EC2.

1. Los registros de copia de seguridad y archivo de Db2 se envían desde la base de datos en las instalaciones principal al bucket de S3 en AWS.

## Tools (Herramientas)
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-tools"></a>

**Servicios 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 Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) vincula su red interna con una ubicación de Direct Connect a través de un cable estándar Ethernet de fibra óptica. Con esta conexión, puede crear interfaces virtuales directamente en servicios públicos de AWS omitiendo a los proveedores de servicios de Internet en su ruta de acceso a la red.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad de computación escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [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.
+ [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.
+ La [ Site-to-SiteVPN de AWS](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) le ayuda a transferir el tráfico entre las instancias que lanza en AWS y su propia red remota.

**Otras herramientas**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) es el comando CLI interactivo de Db2.

## Prácticas recomendadas
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-best-practices"></a>
+ En la base de datos de destino, utilice los [puntos de conexión de puerta de enlace de Amazon S3 para](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) acceder a la imagen de copia de seguridad y a los archivos de registro de la base de datos en Amazon S3.
+ En la base de datos de origen, utilice [AWS PrivateLink para Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) para enviar la imagen de respaldo y los archivos de registro de la base de datos a Amazon S3.

## Epics
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-epics"></a>

### Configuración de las variables de entorno
<a name="set-environment-variables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure las variables de entorno. | Este patrón utiliza los siguientes nombres y puertos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.html)Puede cambiarlos para adaptarlos a su entorno. | Administrador de base de datos | 

### Configure el servidor Db2 en las instalaciones
<a name="configure-the-on-premises-db2-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS CLI. | Utilice los siguientes comandos para descargar e instalar la versión más reciente de la AWS CLI:<pre>$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />sudo ./aws/install</pre> | Administrador de Linux | 
| Configure un destino en las instalaciones para los registros de archivos de Db2. | Condiciones como los trabajos por lotes de actualización intensiva y la ralentización de la red pueden provocar un retraso en el servidor HADR en espera. Para ponerse al día, el servidor en espera necesita los registros de transacciones del servidor principal. La secuencia de lugares de los registros de solicitud es la siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.html)En esta configuración, `/db2logs` se establece como `LOGARCHMETH2` en la fuente como área de almacenamiento provisional. Los registros archivados en este directorio se sincronizarán con Amazon S3 y Db2 accederá a ellos desde Amazon EC2. El patrón utiliza `LOGARCHMETH2` porque `LOGARCHMETH1` podría haberse configurado para usar una herramienta de un proveedor externo a la que el comando de la AWS CLI no pudiera acceder:<pre>db2 connect to sample<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs</pre> | Administrador de base de datos | 
| Realice una copia de seguridad de la base de datos en línea. | Haga una copia de seguridad de la base de datos en línea y guárdela en el sistema de archivos de copia de seguridad local:<pre>db2 backup db sample online to /backup </pre> | Administrador de base de datos | 

### Configuración del bucket de S3 y de la política de IAM
<a name="set-up-the-s3-bucket-and-iam-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | Cree un bucket de S3 para que el servidor en las instalaciones envíe los archivos de registro y las imágenes Db2 de copia de seguridad a AWS. Amazon EC2 accederá al bucket:<pre>aws s3api create-bucket --bucket hadrmig-db2 --region us-east-1 </pre> | Administrador de AWS | 
| Cree una política de IAM. | El archivo `db2bucket.json` contiene la política de IAM para obtener acceso al bucket de S3:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "kms:GenerateDataKey",<br />                "kms:Decrypt",<br />                "s3:PutObject",<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:ListBucket",<br />                "s3:DeleteObject",<br />                "s3:GetObjectVersion",<br />                "s3:ListMultipartUploadParts"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::hadrmig-db2/*",<br />                "arn:aws:s3:::hadrmig-db2"<br />            ]<br />        }<br />    ]<br />}</pre>Utilice el siguiente comando de la AWS CLI para crear la política:<pre>aws iam create-policy \<br />      --policy-name db2s3hapolicy \<br />      --policy-document file://db2bucket.json </pre>El resultado de JSON muestra el nombre de recurso de Amazon (ARN) para la política, donde `aws_account_id` representa el ID de la cuenta:<pre>"Arn": "arn:aws:iam::aws_account_id:policy/db2s3hapolicy"</pre> | Administrador AWS, administrador de sistemas AWS | 
| Adjunte la política de IAM al rol de IAM. | Por lo general, la instancia de EC2 con Db2 en ejecución tendría un rol de IAM asignado por el administrador de sistemas. Si no se ha asignado ningún rol de IAM, puede elegir **Modificar rol de IAM** en la consola de Amazon EC2.Adjunte la política de IAM al rol de IAM asociado a la instancia de EC2. Después de adjuntar la política, la instancia de EC2 puede acceder al bucket de S3:<pre>aws iam attach-role-policy --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3hapolicy" --role-name db2s3harole   </pre> |  | 

### Envíe los archivos de registro y la imagen de copia de seguridad de la base de datos de origen a Amazon S3
<a name="send-the-source-database-backup-image-and-log-files-to-amazon-s3"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS CLI en el servidor Db2 en las instalaciones. | Configure la AWS CLI con el `Access Key ID` y la `Secret Access Key` que generó anteriormente:<pre>$ aws configure <br />AWS Access Key ID [None]: *************<br />AWS Secret Access Key [None]: ***************************<br />Default region name [None]: us-east-1<br />Default output format [None]: json</pre> | Administrador AWS, administrador de sistemas AWS | 
| Envíe la imagen de copia de seguridad a Amazon S3. | Anteriormente, se guardó una copia de seguridad de la base de datos en línea en el directorio `/backup` en las instalaciones. Para enviar la imagen de copia de seguridad al bucket de S3, ejecute el siguiente comando:<pre>aws s3 sync /backup s3://hadrmig-db2/SAMPLE_backup</pre> | Administrador AWS, administrador de sistemas AWS | 
| Envíe los registros de archivo Db2 a Amazon S3. | Sincronice los registros del archivo de Db2 en las instalaciones con el bucket de Amazon S3 al que puede acceder la instancia de Db2 de destino en Amazon EC2:<pre>aws s3 sync /db2logs s3://hadrmig-db2/SAMPLE_LOGS</pre>Ejecute este comando periódicamente mediante cron u otras herramientas de programación. La frecuencia depende de la periodicidad con la que la base de datos de origen archiva los archivos de registro de transacciones. |  | 

### Conecte Db2 de Amazon EC2 a Amazon S3 e inicie la sincronización inicial de la base de datos
<a name="connect-db2-on-amazon-ec2-to-amazon-s3-and-start-the-initial-database-sync"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un PKCS12 almacén de claves. | Db2 utiliza un almacén de claves de cifrado de estándares de criptografía de clave pública (PKCS) para mantener la seguridad de la clave de acceso de AWS. Cree un almacén de claves y configure la Db2 de origen para que lo use:<pre>gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash <br /> <br />db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"</pre> | Administrador de base de datos | 
| Cree el alias de acceso al almacenamiento de Db2. | Db2 usa un alias de acceso al almacenamiento para acceder a Amazon S3 directamente con los comandos `INGEST`, `LOAD`, `BACKUP DATABASE` o `RESTORE DATABASE`. Como ha asignado un rol de IAM a la instancia de EC2, `USER` y `PASSWORD` no son necesarios:`db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> container '<bucket_name>'"`Por ejemplo, el script podría tener el siguiente aspecto: `db2 "catalog storage access alias DB2AWSS3 vendor S3 server s3.us-east-1.amazonaws.com container 'hadrmig-db2'" ` | Administrador de base de datos | 
| Establece el área de almacenamiento provisional. | Recomendamos usar `DB2_ENABLE_COS_SDK=ON`, `DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore` y el enlace a la biblioteca de `awssdk` para omitir el área de almacenamiento provisional de Amazon S3 a fin de hacer copias de seguridad de bases de datos y restaurarlas:<pre>#By root:<br />cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/<br /><br />#By db2 instance owner:<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2set DB2_ENABLE_COS_SDK=ON<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2stop<br />db2start</pre> | Administrador de base de datos | 
| Restaure la base de datos a partir de la imagen de copia de seguridad. | Restaure la base de datos de destino en Amazon EC2 a partir de la imagen de copia de seguridad del bucket de S3:<pre>db2 create db sample on /data1<br />db2 restore db sample from DB2REMOTE://DB2AWSS3/hadrmig-db2/SAMPLE_backup replace existing</pre> | Administrador de base de datos | 

### Configurar HADR sin HADR en las instalaciones
<a name="set-up-hadr-with-no-hadr-on-premises"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el servidor Db2 en las instalaciones como el principal. | Actualice los ajustes de configuración de la base de datos para el HADR en `db2-server1` (la fuente en las instalaciones) como principal. Establezca `HADR_SYNCMODE` en el modo `SUPERASYNC`, que tiene el menor tiempo de respuesta a las transacciones:`db2 update db cfg for sample using HADR_LOCAL_HOST db2-server1 HADR_LOCAL_SVC 50010 HADR_REMOTE_HOST db2-ec2 HADR_REMOTE_SVC 50012 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully`Se esperan algunos retrasos en la red entre el centro de datos en las instalaciones y AWS. (Puede establecer un valor `HADR_SYNCMODE` diferente en función de la fiabilidad de la red. Para obtener más información, consulte la sección de [Recursos relacionados](#migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-resources). | Administrador de base de datos | 
| Cambie el destino del archivo de registro de la base de datos de destino. | Cambie el destino del archivo de registros de la base de datos de destino para que coincida con el entorno de Amazon EC2:<pre>db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/' LOGARCHMETH2 OFF<br />DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully</pre> | Administrador de base de datos | 
| Configure HADR para Db2 en el servidor Amazon EC2. | Actualice la configuración de la base de datos para el HADR en `db2-ec2` como modo de espera:`db2 update db cfg for sample using HADR_LOCAL_HOST db2-ec2 HADR_LOCAL_SVC 50012 HADR_REMOTE_HOST db2-server1 HADR_REMOTE_SVC 50010 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully` | Administrador de base de datos | 
| Verifique la configuración de HADR. | Compruebe los parámetros del HADR en los servidores Db2 de origen y destino.Ejecute el siguiente comando para verificar la configuración en `db2-server1`:<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = PRIMARY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server1<br /> HADR local service name                (HADR_LOCAL_SVC) = 50010<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-ec2<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50012<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = <br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre> Ejecute el siguiente comando para verificar la configuración en `db2-ec2`:<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-ec2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50012<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = <br /> HADR log write synchronization mode     (HADR_SYNCMODE) = SUPERASYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>Los parámetros `HADR_LOCAL_HOST`, `HADR_LOCAL_SVC`, `HADR_REMOTE_HOST` y `HADR_REMOTE_SVC` indican una configuración de HADR principal y otra de reserva. | Administrador de base de datos | 
| Inicie la instancia HADR de Db2. | Inicie primero la instancia de HADR de Db2 en el servidor en espera `db2-ec2`:<pre>db2 start hadr on db sample as standby<br />DB20000I  The START HADR ON DATABASE command completed successfully.</pre>Inicie el HADR de Db2 en el servidor principal (de origen) `db2-server1`:<pre>db2 start hadr on db sample as primary<br />DB20000I  The START HADR ON DATABASE command completed successfully.</pre>La conexión HADR entre Db2 en las instalaciones y Amazon EC2 ya se ha establecido correctamente. El servidor principal de Db2 `db2-server1` comienza a transmitir los registros de transacciones a `db2-ec2` en tiempo real. | Administrador de base de datos | 

### Configure HADR cuando HADR exista en las instalaciones
<a name="set-up-hadr-when-hadr-exists-on-premises"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Añada Db2 en Amazon EC2 como reserva auxiliar. | Si el HADR se ejecuta en la instancia de Db2 en las instalaciones, puede agregar Db2 en Amazon EC2 como auxiliar en espera con `HADR_TARGET_LIST` mediante la ejecución de los siguientes comandos en `db2-ec2`:`db2 update db cfg for sample using HADR_LOCAL_HOST db2-ec2 HADR_LOCAL_SVC 50012 HADR_REMOTE_HOST db2-server1 HADR_REMOTE_SVC 50010 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. db2 update db cfg for sample using HADR_TARGET_LIST "db2-server1:50010\|db2-server2:50011" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.` | Administrador de base de datos | 
| Agregue la información auxiliar en espera a los servidores en las instalaciones. | Actualice `HADR_TARGET_LIST` en los dos servidores en las instalaciones (principal y en espera).En `db2-server1`, ejecute el siguiente código:`db2 update db cfg for sample using HADR_TARGET_LIST "db2-server2:50011\|db2-ec2:50012" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. SQL1363W One or more of the parameters submitted for immediate modification were not changed dynamically. For these configuration parameters, the database must be shutdown and reactivated before the configuration parameter changes become effective.`En `db2-server2`, ejecute el siguiente código:`db2 update db cfg for sample using HADR_TARGET_LIST "db2-server1:50010\|db2-ec2:50012" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. SQL1363W One or more of the parameters submitted for immediate modification were not changed dynamically. For these configuration parameters, the database must be shutdown and reactivated before the configuration parameter changes become effective.` | Administrador de base de datos | 
| Verifique la configuración de HADR. | Compruebe los parámetros del HADR en los servidores Db2 de origen y destino.En `db2-server1`, ejecute el siguiente código:<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = PRIMARY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server1<br /> HADR local service name                (HADR_LOCAL_SVC) = 50010<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server2<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50011<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server2:50011|db2-ec2:50012<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>En `db2-server2`, ejecute el siguiente código:<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50011<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server1:50010|db2-ec2:50012<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>En `db2-ec2`, ejecute el siguiente código:<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-ec2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50012<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server1:50010|db2-server2:50011<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = SUPERASYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>Los parámetros `HADR_LOCAL_HOST`, `HADR_LOCAL_SVC`, `HADR_REMOTE_HOST`, `HADR_REMOTE_SVC` y `HADR_TARGET_LIST` indican una configuración de HADR principal y otra en espera. |  | 
| Detenga e inicie el Db2 HADR. | `HADR_TARGET_LIST` ya está configurado en los tres servidores. Cada servidor Db2 conoce los otros dos. Detenga y reinicie el HADR (interrupción breve) para aprovechar la nueva configuración.En `db2-server1`, ejecute los siguientes comandos:<pre>db2 stop hadr on db sample<br />db2 deactivate db sample<br />db2 activate db sample</pre>En `db2-server2`, ejecute los siguientes comandos:<pre>db2 deactivate db sample<br />db2 start hadr on db sample as standby<br />SQL1766W  The command completed successfully</pre>En `db2-ec2`, ejecute los siguientes comandos:<pre>db2 start hadr on db sample as standby<br />SQL1766W  The command completed successfully</pre>En `db2-server1`, ejecute los siguientes comandos:<pre>db2 start hadr on db sample as primary<br />SQL1766W  The command completed successfully</pre>La conexión HADR entre Db2 en las instalaciones y Amazon EC2 ya se ha establecido correctamente. El servidor principal de Db2 `db2-server1` comienza a transmitir los registros de transacciones a `db2-server2` y `db2-ec2` en tiempo real.  | Administrador de base de datos | 

### Haga que Db2 en Amazon EC2 sea principal durante la ventana de transición
<a name="make-db2-on-amazon-ec2-as-primary-during-the-cutover-window"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Asegúrese de que no haya ningún retraso HADR en el servidor en espera. | Compruebe el estado del HADR desde el servidor principal. `db2-server1` No se alarme cuando `HADR_STATE` esté en estado `REMOTE_CATCHUP`, lo cual es normal cuando `HADR_SYNCMODE` está configurado en `SUPERASYNC`. `PRIMARY_LOG_TIME` y `STANDBY_REPLAY_LOG_TIME` muestran que están sincronizados:<pre>db2pd -hadr -db sample<br />                            HADR_ROLE = PRIMARY<br />                          REPLAY_TYPE = PHYSICAL<br />                        HADR_SYNCMODE = SUPERASYNC<br />                           STANDBY_ID = 2<br />                        LOG_STREAM_ID = 0<br />                           HADR_STATE = REMOTE_CATCHUP<br />.....<br />                     PRIMARY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)<br />                     STANDBY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)<br />              STANDBY_REPLAY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)</pre> | Administrador de base de datos | 
| Ejecute la adquisición HADR. | Para completar la migración, especifique `db2-ec2` como la base de datos principal ejecutando el comando de adquisición de HADR. Utilice el comando `db2pd` para verificar el valor `HADR_ROLE`:<pre>db2 TAKEOVER HADR ON DATABASE sample<br />DB20000I  The TAKEOVER HADR ON DATABASE command completed successfully.<br /><br />db2pd -hadr -db sample<br />Database Member 0 -- Database SAMPLE -- Active -- Up 0 days 00:03:25 -- Date 2022-10-26-02.46.45.048988<br /><br />                            HADR_ROLE = PRIMARY<br />                          REPLAY_TYPE = PHYSICAL</pre>Para completar la migración a AWS, dirija las conexiones de la aplicación a Db2 en Amazon EC2. |  | 

## Resolución de problemas
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Si utiliza la NAT por motivos de seguridad y firewall, el host puede tener dos direcciones IP (una interna y otra externa), lo que puede provocar un error de comprobación de dirección IP del HADR. El comando `START HADR ON DATABASE` devolverá el siguiente mensaje:`HADR_LOCAL_HOST:HADR_LOCAL_SVC (-xx-xx-xx-xx.:50011 (xx.xx.xx.xx:50011)) on remote database is different from HADR_REMOTE_HOST:HADR_REMOTE_SVC (xx-xx-xx-xx.:50011 (x.x.x.x:50011)) on local database.` | Para [admitir el HADR en un entorno NAT,](https://www.ibm.com/docs/en/db2/11.5?topic=support-hadr-nat) puede configurar el `HADR_LOCAL_HOST` con la dirección interna y externa. Por ejemplo, si el servidor Db2 tiene el nombre interno `host1` y el nombre externo `host1E`, `HADR_LOCAL_HOST` puede ser. `HADR_LOCAL_HOST: "host1 \| host1E"` | 

## Recursos relacionados
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-resources"></a>
+ [Operaciones de copia de seguridad y restauración de Db2 entre diferentes sistemas operativos y plataformas de hardware](https://www.ibm.com/docs/en/db2/11.5?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)
+ [Configure Db2 STORAGE ACCESS ALIAS y REMOTE DB2](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access)
+ [Recuperación de desastres de alta disponibilidad de Db2](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)
+ [hadr\$1syncmode: modo de sincronización HADR para escrituras de registros en un parámetro de configuración de estado del mismo nivel](https://www.ibm.com/docs/en/db2/11.5?topic=dcp-hadr-syncmode-hadr-synchronization-mode-log-writes-in-peer-state)

# Migre aplicaciones alojadas en IIS a Amazon EC2 mediante appcmd.exe
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd"></a>

*Deepak Kumar, Amazon Web Services*

## Resumen
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-summary"></a>

Cuando migra aplicaciones alojadas en Internet Information Services (IIS) a instancias de Amazon Elastic Compute Cloud (Amazon EC2), debe abordar varios desafíos de autenticación. Estos desafíos incluyen volver a ingresar las credenciales de dominio para las identidades de los grupos de aplicaciones y, posiblemente, regenerar las claves de las máquinas para que el sitio web funcione correctamente. Puede utilizarlas AWS Directory Service para establecer relaciones de confianza con su Active Directory local o para crear un nuevo Active Directory administrado en. AWS Este patrón describe un enfoque de migración limpio que utiliza la funcionalidad de copia de seguridad y restauración de las EC2 instancias de IIS en Amazon. El enfoque utiliza appcmd.exe para desinstalar y volver a instalar IIS en las EC2 instancias de destino, lo que permite migrar correctamente los sitios web alojados en IIS, las identidades de los grupos de aplicaciones y las claves de las máquinas. 

## Requisitos previos y limitaciones
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS para el servidor de destino.
+ Un servidor de IIS de origen funcional con sitios web alojados en él.
+ Descripción de los principios de trabajo de IIS, como la administración y la configuración.
+ Acceso de administrador de sistemas tanto en el servidor de origen como en el de destino.
+ Se completó la migración del servidor IIS de origen al de destino Cuenta de AWS. Puede utilizar herramientas de migración AWS Application Migration Service, como un enfoque basado en instantáneas de Amazon Machine Image (AMI) u otras herramientas de migración.

**Limitaciones**
+ Algunas Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ IIS 8.5 o IIS 10.0

## Arquitectura
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-architecture"></a>

**Pila de tecnología de origen**
+ Windows Server con IIS 8.5 o IIS 10.0 instalado

**Pila de tecnología de destino**
+ Windows Server con IIS 8.5 o IIS 10.0 instalado
+ Application Migration Service

**Arquitectura de destino**

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

![\[Flujo de trabajo para migrar aplicaciones alojadas en IIS a Amazon. EC2\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2f9f7757-b2bc-4077-b51a-700de521424c/images/36aa9b7a-d0aa-4fa4-be47-9fee43b53c22.png)


La solución incluye los siguientes pasos:

1. [Instale](https://docs.aws.amazon.com/mgn/latest/ug/agent-installation.html) y configure el agente de AWS replicación en el servidor IIS de origen de su centro de datos corporativo. Este agente inicia el proceso de replicación y administra la transferencia de datos a AWS.

1. El agente de AWS replicación establece una [conexión segura con](https://docs.aws.amazon.com/mgn/latest/ug/Agent-Related-FAQ.html#How-Communication-Secured) el Servicio de migración de aplicaciones y comienza a replicar los datos del servidor de origen, incluidas las configuraciones de IIS, los sitios web y los archivos de aplicaciones.

1. El Servicio de migración de aplicaciones lanza EC2 instancias en la subred de aplicaciones con los datos replicados. La EC2 instancia de destino ejecuta IIS y contiene las aplicaciones migradas con sus volúmenes de Amazon Elastic Block Store (Amazon EBS) asociados. Tras la replicación inicial, Application Migration Service continúa sincronizando los cambios hasta que lo tenga [todo listo para la transición](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html#ready-for-cutover1) al nuevo entorno.

## Tools (Herramientas)
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-tools"></a>

**Servicios de AWS**
+ [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)le ayuda a realojar (*levantar y trasladar*) las aplicaciones a una ubicación Nube de AWS sin cambios y con un tiempo de inactividad mínimo.
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html)) proporciona volúmenes de almacenamiento a nivel de bloques para su uso con las instancias de Amazon. EC2 
+ [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.

**Otras herramientas**
+ [Internet Information Services (IIS)](https://www.iis.net/overview) para Windows Server es un servidor web con una arquitectura abierta y escalable que permite alojar cualquier elemento de la Web. IIS proporciona un conjunto de herramientas de administración, que incluyen herramientas de administración y línea de comandos (por ejemplo, appcmd.exe), código y scripts APIs administrados y PowerShell soporte para Windows.

## Epics
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-epics"></a>

### Copia de seguridad de IIS en el origen antes de la migración
<a name="back-up-iis-at-source-prior-to-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree copias de seguridad de los sitios web alojados en IIS, la clave de configuración y la clave de `WAS`. | Para crear copias de seguridad de sitios web alojados en IIS, la clave de configuración (`iisConfigurationKey`) y la clave `WAS` (`iisWasKey`), utilice appcmd.exe en el servidor de origen. Utilice los siguientes pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html)Para exportar la clave de configuración y la clave `WAS`, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | Administrador de IIS | 

### Desinstalación y reinstalación de IIS en el servidor de destino
<a name="uninstall-and-reinstall-iis-on-the-target-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Desinstale IIS en el servidor de destino. | Para desinstalar IIS en el servidor de destino, siga estos pasos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | Administrador de IIS | 
| Instale IIS en el servidor de destino. | Para instalar IIS en el servidor de destino, siga estos pasos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | Administrador de IIS | 

### Restauración de la configuración y los sitios web de IIS desde las copias de seguridad
<a name="restore-iis-websites-and-configuration-from-the-backups"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Restaure la configuración y los sitios web de IIS. | Para restaurar las copias de seguridad de IIS que creó desde el servidor de origen en el servidor de destino, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | Administrador de IIS | 

## Recursos relacionados
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-resources"></a>

**AWS documentación**
+ [Instalación del agente de AWS replicación](https://docs.aws.amazon.com/mgn/latest/ug/agent-installation.html) (AWS Application Migration Service documentación)

**AWS Guía prescriptiva**
+ [Migre una máquina virtual local a Amazon EC2 mediante AWS Application Migration Service](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)
+ [Uso de AMIs instantáneas de Amazon EBS para copias de seguridad](https://docs.aws.amazon.com/prescriptive-guidance/latest/backup-recovery/ec2-backup.html#amis-snapshots)

**Recursos de Microsoft**
+ [Application pool identities](https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/was-service-svchost-process-operation/understanding-identities#application-pool-identities)
+ [Documentación de IIS](https://learn.microsoft.com/en-us/iis/)
+ [Documentación de appcmd.exe de IIS 8](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj635852(v=ws.11))
+ [Documentación de appcmd.exe de IIS 10](https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/new-features-introduced-in-iis-10)
+ [Powerful Admin Tools](https://learn.microsoft.com/en-us/iis/overview/powerful-admin-tools)

# Migre una base de datos local de Microsoft SQL Server a Amazon EC2 mediante Application Migration Service
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn"></a>

*Senthil Ramasamy, Amazon Web Services*

## Resumen
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-summary"></a>

Este patrón describe los pasos para migrar una base de datos de Microsoft SQL Server de un centro de datos local a una instancia de Amazon Elastic Compute Cloud EC2 (Amazon). Utiliza el AWS Application Migration Service (AWS MGN) para realojar la base de datos mediante una migración automática. lift-and-shift AWS MGN realiza una replicación a nivel de bloque del servidor de la base de datos de origen.

## Requisitos previos y limitaciones
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-prereqs"></a>

**Requisitos previos**
+ Un activo Cuenta de AWS
+ Una base de datos de origen Microsoft SQL Server en un centro de datos en las instalaciones

**Limitaciones**
+ El ancho de banda de la red debe estar limitado entre el centro de datos en las instalaciones y AWS.
+ AWS MGN se limita a las bases de datos alojadas en servidores independientes con almacenamiento dedicado. No admite la migración de sistemas de bases de datos en clústeres ni sistemas de bases de datos en los que la velocidad de cambio supera el rendimiento de una red.
+ Algunas Servicios de AWS no están disponibles en todos. Regiones de AWS Para conocer la disponibilidad de las regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) y elija el enlace del servicio.

**Versiones de producto**
+ Todas las versiones de bases de datos de Microsoft SQL Server
+ Sistemas operativos Windows y Linux [compatibles con AWS MGN](https://docs.aws.amazon.com/mgn/latest/ug/Supported-Operating-Systems.html)

## Arquitectura
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-architecture"></a>

**Pila de tecnología de origen**

Base de datos de Microsoft SQL Server en las instalaciones

**Pila de tecnología de destino**

Una base de datos de Microsoft SQL Server en una EC2 instancia de Amazon

**Arquitectura de destino**

![\[Replique datos de un centro de datos corporativo en las instalaciones a AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/a459eaef-c256-4691-a7ec-2304f634228c/images/d8d6cee7-f42c-4686-bf92-6e6d39adfb17.png)


Esta arquitectura utiliza AWS MGN para replicar datos desde un centro de datos corporativo local a. AWS El diagrama muestra el proceso de replicación de datos, las comunicaciones de la API y las fases de prueba y transición.

1. Replicación de los datos:
   + AWS MGN replica los datos del centro de datos corporativo local AWS e inicia la replicación continua de los cambios.
   + Los servidores de replicación de la subred provisional reciben y procesan los datos.

1. Comunicación de la API:
   + Los servidores de replicación se conectan a los puntos finales de la API de AWS MGN EC2, Amazon y Amazon Simple Storage Service (Amazon S3) a través del puerto TCP 443.
   + AWS MGN gestiona la migración.
   + Amazon EC2 gestiona las operaciones de las instancias.

1. Prueba y transición:
   + Las instancias de prueba se lanzan en la subred operativa mediante datos replicados.
   + Tras realizar las pruebas AWS satisfactoriamente, MGN crea instancias transitorias para la migración final.

## Tools (Herramientas)
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-tools"></a>
+ [AWS Application Migration Service (AWS MGN)](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) le ayuda a realojar (*levantar y trasladar) las aplicaciones a una ubicación Nube de AWS sin cambios y* con un tiempo de inactividad mínimo.
+ [Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) vincula su red interna con una ubicación de Direct Connect a través de un cable estándar Ethernet de fibra óptica. Con esta conexión, puede crear interfaces virtuales directamente con los AWS servicios públicos y, al mismo tiempo, omitir a los proveedores de servicios de Internet en su ruta de red.
+ [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 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.

## Prácticas recomendadas
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-best-practices"></a>
+ Configure puntos de enlace regionales de API para AWS MGN EC2, Amazon y Amazon S3 en la nube privada virtual (VPC) para prohibir el acceso público desde Internet.
+ Configure los ajustes de lanzamiento de AWS MGN para lanzar los servidores de bases de datos de destino en una subred privada.
+ Permita solo los puertos necesarios en los grupos de seguridad de bases de datos.
+ Siga el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-epics"></a>

### Configuración de AWS MGN
<a name="set-up-aws-mgn"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure MGN AWS . | Busque el AWS Application Migration Service en e inicie Consola de administración de AWS el proceso de configuración. Esto creará una plantilla de replicación y lo redirigirá a la página **Servidores de origen** de la consola de MGN. Al configurar el servicio de MGN, elija un rol de servicio de la lista generada. | Administrador de base de datos, ingeniero de migraciones | 
| Agregue el servidor de origen. | Agregue los detalles del servidor de base de datos de origen en las instalaciones y, a continuación, agregue el servidor. | Administrador de base de datos, ingeniero de migraciones | 
| Instale el agente de AWS MGN en el servidor de origen. | Descargue el instalador del agente AWS MGN a su sistema local y transfiéralo al servidor de base de datos de origen. Para validar el hash del instalador, consulte [Validating the downloaded AWS Replication Agent installer for Windows 2012](https://docs.aws.amazon.com/mgn/latest/ug/windows-agent.html#installer-hash-table-2012). | Administrador de base de datos, ingeniero de migraciones | 

### Instalación del agente de AWS MGN en máquinas de origen
<a name="install-aws-mgn-agent-on-source-machines"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere las credenciales de IAM del cliente. | Antes de instalar el agente AWS MGN, genere AWS las credenciales creando un nuevo usuario de IAM con los permisos adecuados.Para obtener más información, consulte [Políticas administradas por AWS AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/security-iam-awsmanpol.html) y [Generación de las AWS credenciales requeridas](https://docs.aws.amazon.com/mgn/latest/ug/credentials.html). | Administrador de base de datos, ingeniero de migraciones | 
| Instale el agente en el servidor de origen. | Instale el agente en la máquina de origen que aloja la base de datos de Microsoft SQL Server. Para obtener más información, consulte [Instalación del agente de AWS replicación en servidores Windows](https://docs.aws.amazon.com/mgn/latest/ug/windows-agent.html).Proporcione las siguientes credenciales de AWS:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html)Sus AWS credenciales únicas permiten al agente de AWS MGN autenticarse y realizar tareas de migración. | Propietario de la aplicación, administrador de bases de datos, ingeniero de migración | 
| Elija los discos que se replicarán. | Tras introducir sus AWS credenciales, el instalador comprueba que el servidor cumple los requisitos mínimos para la instalación del agente (por ejemplo, si el servidor tiene suficiente espacio en disco para instalar el agente AWS MGN). El instalador muestra las etiquetas de volumen y los detalles de almacenamiento.Para replicar la base de datos mediante el servicio AWS MGN, seleccione los discos correspondientes en el servidor de origen. Ingrese la ruta de cada disco, separadas por comas. Si desea replicar todos los discos, deje la ruta en blanco. Tras confirmar los discos seleccionados, la instalación continúa. | Administrador de base de datos, ingeniero de migraciones | 
| Supervise el progreso de la sincronización. | AWS El agente de replicación inicia el proceso de sincronización tomando primero una instantánea de los discos seleccionados y, a continuación, replicando los datos.Puede supervisar el progreso de la sincronización desde la página del **servidor de origen** de la consola AWS MGN. Para obtener más información, consulte [Monitor the server in the migration lifecycle](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html). | Administrador de base de datos, ingeniero de migraciones | 

### Replicación con AWS MGN
<a name="replication-using-aws-mgn"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Administre el progreso de la replicación. | Tras iniciar la sincronización inicial, el servidor de origen aparece en la consola AWS MGN, donde puede gestionar y supervisar la migración. La consola muestra un tiempo estimado para completar la replicación, que se basa en el tamaño total de los discos seleccionados y ancho de banda de la red disponible. | Administrador de base de datos, ingeniero de migraciones | 
| Verifique la sincronización. | Una vez que los discos del servidor de origen estén completamente sincronizados, compruebe que todos los discos seleccionados aparezcan como completamente sincronizados y que no se haya registrado ningún error en la consola.A continuación, la consola AWS MGN cambiará automáticamente el estado del ciclo de vida de la migración a **Listo para las pruebas**, lo que indica que el entorno replicado AWS está preparado para las pruebas de rendimiento y funcionalidad. | Propietario de la aplicación, administrador de bases de datos, ingeniero de migración | 

### Prueba y transición
<a name="test-and-cut-over"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los ajustes de lanzamiento. | Elija el servidor de origen en la consola AWS MGN y actualice la configuración de inicio de la instancia de prueba de destino. En la página **Detalles del servidor** de origen, vaya a la pestaña **Configuración de lanzamiento** para configurar la instancia de prueba.Elija un tipo de instancia rentable y un tipo de volumen de Amazon Elastic Block Store (Amazon EBS) y, a continuación, configure los grupos de seguridad y los requisitos de red. Para obtener más información, consulte [Launch settings](https://docs.aws.amazon.com/mgn/latest/ug/launch-settings.html). | Administrador de base de datos, ingeniero de migraciones | 
| Lance la instancia de prueba de destino. | Diríjase a la consola AWS MGN de su máquina fuente sincronizada y lance una instancia de prueba de destino seleccionando Probar **y cortar y, a continuación, **lanzar** instancias de prueba**.Esto crea un trabajo de lanzamiento que implementa la instancia de prueba con los ajustes configurados. La instancia se lanza en el entorno del servidor de base de datos de origen Nube de AWS y lo replica. Supervise el progreso del lanzamiento desde la página **Historial de lanzamiento**, donde puede hacer un seguimiento de la creación de la instancia y solucionar cualquier problema. | Administrador de base de datos, ingeniero de migraciones | 
| Valide la instancia de prueba de destino. | Valide el servidor de EC2 bases de datos de Amazon:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html)Lleve a cabo pruebas de validación para garantizar que la base de datos funcione según lo esperado. | Administrador de base de datos, ingeniero de migraciones | 
| Cambie el nombre del servidor. | AWS La migración a MGN implica una copia a nivel de almacenamiento del servidor de origen local. Su EC2 instancia de SQL Server contiene solo los detalles del servidor de origen original en sus archivos binarios, por lo que debe actualizar la información binaria para que refleje el nombre del nuevo servidor.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html) | Administrador de base de datos, ingeniero de migraciones | 
| Lance la instancia de transición. | En la consola AWS MGN, en la página **Servidores de origen**, confirme que el estado del ciclo de vida de la migración del servidor sea **Listo para** la transición. Configure los ajustes de lanzamiento de la instancia de transición y asegúrese de que la configuración refleje el entorno en las instalaciones.Antes de iniciar la transición, cierre la base de datos en las instalaciones, lo que garantiza lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html)Inicie la instancia de transición en la consola MGN. AWS Cuando la instancia de transición esté operativa, inicie sesión en la instancia y lleve a cabo las siguientes pruebas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html) | Propietario de aplicaciones, administrador de base de datos, ingeniero de migraciones, líder de migración | 

## Resolución de problemas
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| La sincronización inicial falla en el paso de autenticación. | Se trata de un problema de conectividad de red. El servidor de replicación no se puede conectar a AWS MGN. | 

## Recursos relacionados
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-resources"></a>

**Documentación de AWS**
+ [Empezando con AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/getting-started.html)
+ [Migre una base de datos local de Microsoft SQL Server a Amazon EC2](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2.html)
+ [¿Qué es Microsoft SQL Server en Amazon EC2?](https://docs.aws.amazon.com/sql-server-ec2/latest/userguide/sql-server-on-ec2-overview.html)

**Videos**
+ [Performing a Lift and Shift Migration with AWS Application Migration Service](https://www.youtube.com/watch?v=tB0sAR3aCb4) (video)

# Migre una carga de trabajo de F5 BIG-IP a F5 BIG-IP VE en Nube de AWS
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud"></a>

*Deepak Kumar, Amazon Web Services*

## Resumen
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-summary"></a>

Las organizaciones buscan migrar a la Nube de AWS para aumentar su agilidad y resiliencia. Tras migrar sus soluciones de seguridad y gestión del tráfico [BIG-IP de F5](https://www.f5.com/products/big-ip-services) a la Nube de AWS, podrá centrarse en la agilidad y la adopción de modelos operativos de alto valor en toda la arquitectura empresarial.

Este patrón describe cómo migrar una carga de trabajo de F5 BIG-IP a una carga de trabajo de [F5 BIG-IP Virtual Edition (VE)](https://www.f5.com/products/big-ip-services/virtual-editions) en la Nube de AWS. La carga de trabajo se migrará volviendo a alojar el entorno existente e implementando aspectos de redefinición de la plataforma, como la detección de servicios y las integraciones de la API. Las [plantillas de AWS CloudFormation](https://github.com/F5Networks/f5-aws-cloudformation) aceleran la migración de la carga de trabajo a la Nube de AWS.

Este patrón está dirigido a los equipos de ingeniería técnica y arquitectura que están migrando las soluciones de seguridad y gestión del tráfico de F5, y se incluye en la guía Migración de F5 BIG-IP a [F5 BIG-IP VE, que se encuentra en el sitio web de](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-f5-big-ip/welcome.html) la Guía prescriptiva. Nube de AWS AWS 

## Requisitos previos y limitaciones
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-prereqs"></a>

**Requisitos previos **
+ Una carga de trabajo de F5 BIG-IP existente en las instalaciones.
+ Licencias de F5 existentes para las versiones de BIG-IP VE.
+ Un activo. Cuenta de AWS
+ Una nube privada virtual (VPC) existente configurada con una salida a través de una puerta de enlace NAT o una dirección IP elástica y configurada con acceso a los siguientes puntos de conexión: Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2) Compute Cloud (Amazon EC2), () y Amazon AWS Security Token Service .AWS STS CloudWatch También puede modificar el inicio rápido de [Arquitectura de VPC modular y escalable](https://aws.amazon.com/quickstart/architecture/vpc/) como base de sus implementaciones. 
+ Una o dos zonas de disponibilidad existentes, según sus necesidades. 
+ Tres subredes privadas existentes en cada zona de disponibilidad.
+ AWS CloudFormation plantillas, [disponibles en](https://github.com/F5Networks/f5-aws-cloudformation/blob/master/template-index.md) el repositorio de F5. GitHub  

Durante la migración, si lo necesita, puede que también deba usar:
+ Una [extensión de conmutación por error de F5 Cloud](https://clouddocs.f5.com/products/extensions/f5-cloud-failover/latest/) para gestionar el mapeo elástico de direcciones IP, el mapeo de IP secundaria y los cambios en la tabla de enrutamiento. 
+ Si cuenta con varias zonas de disponibilidad, necesitará usar las extensiones de conmutación por error de F5 Cloud para gestionar la asignación de IP elástica a los servidores virtuales.
+ Debería considerar la posibilidad de utilizar [F5 Application Services 3 (AS3)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/), [F5 Application Services Templates (FAST)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-templates/latest/) u otro modelo de infraestructura como código (IaC) para gestionar las configuraciones. La preparación de las configuraciones en un modelo IaC y el uso de repositorios de código le ayudarán en la migración y en las labores de gestión continuada.

**Experiencia**
+ Este patrón requiere estar familiarizado con la forma en que se VPCs pueden conectar uno o más a los centros de datos existentes. Para obtener más información al respecto, consulte las [opciones de conectividad de la Network-to-Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) en la documentación de Amazon VPC. 
+ También es necesaria cierta familiaridad con los productos y módulos de F5, como [Traffic Management Operating System (TMOS)](https://www.f5.com/services/resources/white-papers/tmos-redefining-the-solution), [Local Traffic Manager (LTM)](https://www.f5.com/products/big-ip-services/local-traffic-manager), [Global Traffic Manager (GTM)](https://techdocs.f5.com/kb/en-us/products/big-ip_gtm/manuals/product/gtm-concepts-11-5-0/1.html#unique_9842886), [Access Policy Manager (APM)](https://www.f5.com/products/security/access-policy-manager), [Application Security Manager (ASM)](https://www.f5.com/pdf/products/big-ip-application-security-manager-overview.pdf), [Advanced Firewall Manager (AFM)](https://www.f5.com/products/security/advanced-firewall-manager) y [BIG-IQ](https://www.f5.com/products/automation-and-orchestration/big-iq).

**Versiones de producto**
+ Le recomendamos que use F5 BIG-IP [versión 13.1](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-bigip-ve-13-1-0.html) o posterior, aunque el patrón es compatible con F5 BIG-IP [versión 12.1](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-bigip-12-1-4.html) o posterior.

## Arquitectura
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-architecture"></a>

**Pila de tecnología de origen**
+ Carga de trabajo de F5 BIG-IP

**Pila de tecnología de destino**
+ Amazon CloudFront
+ CloudWatch
+ Amazon EC2
+ Amazon S3
+ Amazon VPC
+ AWS Global Accelerator
+ AWS STS
+ AWS Transit Gateway
+ F5 BIG-IP VE

**Arquitectura de destino**

![\[Arquitectura para migrar una carga de trabajo de F5 BIG-IP a una carga de trabajo de F5 BIG-IP VE.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/586fe806-fac1-48d3-9eb1-45a6c86430dc/images/16d7fc09-1ffe-4721-b503-d971db84cbae.png)


## Tools (Herramientas)
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-tools"></a>
+ [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 país. Cuentas de AWS Regiones de AWS
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) acelera la distribución de tu contenido web al distribuirlo a través de una red mundial de centros de datos, lo que reduce la latencia y mejora el rendimiento.   
+ [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 Elastic Compute Cloud (Amazon EC2](https://docs.aws.amazon.com/ec2/)) proporciona una capacidad informática escalable en Nube de AWS el Puede lanzar tantos servidores virtuales como necesite y escalarlos rápidamente hacia arriba o hacia abajo.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [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 Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) le ayuda a solicitar credenciales temporales con privilegios limitados para los usuarios.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)es un centro central que conecta las nubes privadas virtuales (VPCs) y las redes locales.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa 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.

## Epics
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-epics"></a>

### Descubrimiento y evaluación
<a name="discovery-and-assessment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Evalúe el rendimiento de F5 BIG-IP. | Recopile y registre las métricas de rendimiento de las aplicaciones del servidor virtual, así como las métricas de los sistemas que se migrarán. Esto le ayudará a dimensionar correctamente la AWS infraestructura de destino para una mejor optimización de los costos. | Arquitecto de F5, ingeniero y arquitecto de redes, ingeniero | 
| Evalúe el sistema operativo y la configuración de F5 BIG-IP. | Evalúe qué objetos se migrarán y si es necesario mantener una estructura de red, por ejemplo VLANs. | Arquitecto de F5, ingeniero | 
| Evalúe las opciones de licencia de F5. | Evalúe qué licencia y modelo de consumo necesitará. Esta valoración debe basarse en su evaluación del sistema operativo y la configuración de F5 BIG-IP. | Arquitecto de F5, ingeniero | 
| Evalúe las aplicaciones públicas. | Determine qué aplicaciones requerirán direcciones IP públicas. Alinee dichas aplicaciones con las instancias y los clústeres necesarios para cumplir con sus necesidades de rendimiento y acuerdo de nivel de servicio (SLA). | Arquitecto de F5, arquitecto de la nube, arquitecto de redes, ingeniero, equipos de aplicación | 
| Evalúe las aplicaciones internas. | Evalúe qué aplicaciones necesitarán los usuarios internos. Asegúrese de saber dónde se encuentran esos usuarios internos en la organización y cómo se conectan esos entornos a la Nube de AWS. También debe garantizar que esas aplicaciones puedan usar el sistema de nombres de dominio (DNS) como parte del dominio predeterminado. | Arquitecto de F5, arquitecto de la nube, arquitecto de redes, ingeniero, equipos de aplicación | 
| Finalice la AMI. | No todas las versiones de F5 BIG-IP se crean como Amazon Machine Images (). AMIs Puede usar la herramienta generadora de imágenes de F5 BIG-IP si necesita versiones específicas de ingeniería de reparación rápida (QFE). Para obtener más información sobre esta herramienta, consulte la sección «Recursos relacionados». | Arquitecto de F5, arquitecto de la nube, ingeniero | 
| Finalice los tipos de instancia y la arquitectura. | Decida los tipos de instancias, la arquitectura de VPC y la arquitectura interconectada. | Arquitecto de F5, arquitecto de la nube, arquitecto de redes, ingeniero | 

### Complete las actividades de seguridad y cumplimiento
<a name="complete-security-and-compliance-related-activities"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Documente las políticas de seguridad de F5 existentes. | Recopile y documente las políticas de seguridad existentes de F5. Asegúrese de crear una copia de las mismas en un repositorio de código seguro. | Arquitecto de F5, ingeniero | 
| Cifre la AMI. | (Opcional) Es posible que su organización requiera el cifrado de los datos en reposo. Para obtener más información acerca de cómo crear una imagen personalizada de tipo traiga su propia licencia (BYOL), consulte la sección “Recursos relacionados”. | Arquitecto de F5, ingeniero y arquitecto de redes, ingeniero | 
| Refuerce los dispositivos. | Esto ayudará a protegerlos contra posibles vulnerabilidades. | Arquitecto de F5, ingeniero | 

### Configure su nuevo entorno AWS
<a name="configure-your-new-aws-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree cuentas periféricas y de seguridad. | Inicie sesión en Consola de administración de AWS y cree el Cuentas de AWS que proporcionará y operará los servicios perimetrales y de seguridad. Estas cuentas pueden ser diferentes de las cuentas que funcionan VPCs para aplicaciones y servicios compartidos. Este paso se puede completar como parte de una zona de aterrizaje. | Arquitecto de la nube, ingeniero | 
| Implemente la periferia y la seguridad VPCs. | Instale y configure lo VPCs necesario para ofrecer servicios perimetrales y de seguridad. | Arquitecto de la nube, ingeniero | 
| Conectar al centro de datos de origen. | Conéctese al centro de datos de origen que aloja su carga de trabajo de F5 BIG-IP. | Arquitecto de la nube, arquitecto de redes, ingeniero | 
| Implemente las conexiones de VPC. | Conecte el servicio perimetral y de seguridad VPCs a la aplicación VPCs. | Arquitecto de redes, ingeniero | 
| Implemente las instancias. | Implemente las instancias mediante las CloudFormation plantillas de la sección «Recursos relacionados». | Arquitecto de F5, ingeniero | 
| Pruebe y configure la conmutación por error de la instancia. | Asegúrese de que la plantilla AWS avanzada de alta disponibilidad para iApp o la extensión F5 Cloud Failover estén configuradas y funcionen correctamente. | Arquitecto de F5, ingeniero | 

### Configurar redes
<a name="configure-networking"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare la topología de la VPC. | Abra la consola de Amazon VPC y asegúrese de que su VPC cuenta con todas las subredes y protecciones necesarias para la implementación de F5 BIG-IP VE. | Arquitecto de redes, arquitecto de F5, arquitecto de la nube, ingeniero | 
| Prepare sus puntos de conexión de VPC. | Prepare los puntos de enlace de la VPC para Amazon EC2, Amazon S3 AWS STS y si una carga de trabajo de BIG-IP de F5 no tiene acceso a una puerta de enlace NAT o a una dirección IP elástica en una interfaz TMM. | Arquitecto de la nube, ingeniero | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre la configuración. | Migre la configuración de F5 BIG-IP a F5 BIG-IP VE en la Nube de AWS. | Arquitecto de F5, ingeniero | 
| Asocie el secundario. IPs | Las direcciones IP de los servidores virtuales tienen relación con las direcciones IP secundarias asignadas a las instancias. Asigne direcciones IP secundarias y asegúrese de seleccionar la opción “Permitir remapeo/reasignación”. | Arquitecto de F5, ingeniero | 

### Probar la configuración
<a name="test-configurations"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las configuraciones del servidor virtual. | Pruebe los servidores virtuales. | Arquitecto de F5, equipos de aplicación | 

### Finalice las operaciones
<a name="finalize-operations"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la estrategia de copia de seguridad. | Los sistemas deben estar apagados para crear una instantánea completa. Para obtener más información, consulte “Actualizar una máquina virtual F5 BIG-IP” en la sección “Recursos relacionados”. | Arquitecto de F5, arquitecto de la nube, ingeniero | 
| Cree el manual de procedimientos de conmutación por error del clúster. | Asegúrese de que el proceso del manual de procedimientos de conmutación por error esté completo. | Arquitecto de F5, ingeniero | 
| Configure y valide el registro. | Configure la transmisión por telemetría de F5 para enviar los registros a los destinos requeridos. | Arquitecto de F5, ingeniero | 

### Complete la transición
<a name="complete-the-cutover"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Transicione a la nueva implementación. |  | Arquitecto de F5, arquitecto de nube, arquitecto de redes, ingeniero, AppTeams | 

## Recursos relacionados
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-resources"></a>

**Guía de migración**
+ [Migración de F5 BIG-IP a F5 BIG-IP VE en Nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-f5-big-ip/welcome.html)

**Recursos de F5**
+ [CloudFormation plantillas en el GitHub repositorio de F5](https://github.com/F5Networks/f5-aws-cloudformation)
+ [F5 en AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=74d946f0-fa54-4d9f-99e8-ff3bd8eb2745)
+ [Descripción general de F5 BIG-IP VE](https://www.f5.com/products/big-ip-services/virtual-editions) 
+ [Ejemplo de inicio rápido: BIG-IP Virtual Edition con WAF (LTM \$1 ASM)](https://github.com/F5Networks/f5-aws-cloudformation-v2/tree/main/examples/quickstart)
+ [Información general sobre AWS los servicios de aplicaciones de F5 (vídeo)](https://www.youtube.com/watch?v=kutVjRHOAXo)
+ [Guía del usuario para la extensión Application Services 3 de F5](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/)
+ [Documentación de F5 Cloud](https://clouddocs.f5.com/training/community/public-cloud/html/intro.html)
+ [iControl REST de F5 wiki](https://clouddocs.f5.com/api/icontrol-rest/)
+ [Descripción general de los archivos de configuración individuales (11.x - 15.x) de F5](https://support.f5.com/csp/article/K13408)
+ [Documentos técnicos de F5](https://www.f5.com/services/resources/white-papers)
+ [Herramienta generadora de imágenes de F5 BIG-IP](https://clouddocs.f5.com/cloud/public/v1/ve-image-gen_index.html)
+ [Actualizar una máquina virtual F5 BIG-IP VE](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/bigip-ve-setup-vmware-esxi-11-5-0/3.html)
+ [Descripción general de la opción de «migración de plataforma» de UCS archive](https://support.f5.com/csp/article/K82540512)

# Migración de una aplicación web Go en las instalaciones a AWS Elastic Beanstalk mediante el método binario
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method"></a>

*Suhas Basavaraj y Shumaz Mukhtar Kazi, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-summary"></a>

En este patrón se describe cómo migrar una aplicación web Go en las instalaciones a AWS Elastic Beanstalk. Tras migrar la aplicación, Elastic Beanstalk crea el binario para el paquete de código fuente y lo despliega en una instancia de Amazon Elastic Compute Cloud (Amazon). EC2

Como estrategia de migración para volver a alojar, el enfoque de este patrón es rápido y no requiere cambios de código, lo que se traduce en menos tiempo de pruebas y migración. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una aplicación web Go en las instalaciones.
+ Un GitHub repositorio que contiene el código fuente de la aplicación Go. Si no lo usa GitHub, hay otras formas de [crear un paquete de código fuente de aplicación para Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/applications-sourcebundle.html).

**Versiones de producto**
+ La versión de Go más reciente compatible con Elastic Beanstalk. Para obtener más información, consulte la [documentación de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go).

## Arquitectura
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-architecture"></a>

**Pila de tecnología de origen**
+ Una aplicación web Go en las instalaciones 

**Pila de tecnología de destino**
+ AWS Elastic Beanstalk
+ Amazon CloudWatch

**Arquitectura de destino*** *

![\[Arquitectura para migrar una aplicación Go a Elastic Beanstalk\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cd8d660d-5621-4ea7-8f97-7a1e321c57d3/images/1df543d9-7073-43d8-abd3-f1f7e57278eb.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-tools"></a>
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.html) permite implementar y administrar aplicaciones rápidamente en la nube de AWS sin tener que los usuarios tengan que preocuparse por la infraestructura que las ejecuta. Elastic Beanstalk reduce la complejidad de la administración sin restringir la libertad de elección ni el control.
+ [GitHub](https://github.com/)es un sistema de control de versiones distribuido de código abierto.

## Epics
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-epics"></a>

### Crear el archivo .zip de la agrupación de código fuente de la aplicación web Go
<a name="create-the-go-web-application-source-bundle-zip-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la agrupación de código fuente de la aplicación web Go.  | Abre el GitHub repositorio que contiene el código fuente de tu aplicación Go y prepara el paquete fuente. La agrupación de código fuente contiene un archivo `application.go` de origen en el directorio raíz, que aloja el paquete principal de la aplicación Go. Si no lo utilizas GitHub, consulta la sección de *requisitos previos* que aparece anteriormente en este patrón para ver otras formas de crear el paquete fuente de la aplicación. | Administrador del sistema, desarrollador de aplicaciones | 
| Cree un archivo de configuración. | Cree una carpeta `.ebextensions` en la agrupación de código fuente y, a continuación, cree un archivo `options.config` dentro de esta carpeta. Para obtener más información, consulte la [documentación de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html). | Administrador del sistema, desarrollador de aplicaciones | 
|  Cree el archivo .zip de la agrupación de código fuente. | Ejecute el comando siguiente.<pre>git archive -o ../godemoapp.zip HEAD</pre>Esto crea el archivo .zip de la agrupación de código fuente. Descargue y guarde el archivo .zip como un archivo local. El archivo .zip no puede superar los 512 MB y no puede incluir una carpeta principal ni un directorio de nivel superior. | Administrador del sistema, desarrollador de aplicaciones | 

### Migración de la aplicación web Go a Elastic Beanstalk
<a name="migrate-the-go-web-application-to-elastic-beanstalk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione la aplicación de Elastic Beanstalk. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.html)Para obtener instrucciones sobre cómo crear una aplicación de Elastic Beanstalk, consulte la [documentación de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.CreateApp.html). | Administrador del sistema, desarrollador de aplicaciones | 
| Inicie el entorno del servidor web de Elastic Beanstalk.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.html) | Administrador del sistema, desarrollador de aplicaciones | 
| Cargue el archivo .zip de la agrupación de código fuente en Elastic Beanstalk. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.html) | Administrador del sistema, desarrollador de aplicaciones | 
| Pruebe la aplicación web Go implementada. | Se le redirigirá a la página de información general de la aplicación Elastic Beanstalk. En la parte superior de la descripción general, junto a **Environment ID**, seleccione la URL que termina en `elasticbeanstalk.com` para navegar hasta la aplicación. La aplicación debe usar este nombre en su archivo de configuración como variable de entorno y mostrarlo en la página web. | Administrador del sistema, desarrollador de aplicaciones | 

## Resolución de problemas
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| No se puede acceder a la aplicación a través de un equilibrador de carga de aplicación. | Compruebe el grupo de destino que contiene su aplicación de Elastic Beanstalk. Si no está en buen estado, inicie sesión en la instancia de Elastic Beanstalk y compruebe la configuración del archivo `nginx.conf` para asegurar que se dirija a la URL de estado correcta. Es posible que tenga que cambiar la URL de la comprobación de estado del grupo objetivo. | 

## Recursos relacionados
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-resources"></a>
+ [Go platform versions supported by Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go) (Versiones de la plataforma Go compatibles con Elastic Beanstalk)
+ [Using configuration files with Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html) (Usar archivos de configuración con Elastic Beanstalk)
+ [Creating an example application in Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.CreateApp.html) (Crear una aplicación de ejemplo en Elastic Beanstalk) 

# Migre un servidor SFTP local para utilizar AWS AWS Transfer for SFTP
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp"></a>

*Akash Kumar, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-summary"></a>

Este patrón describe cómo migrar una solución de transferencia de archivos local que utiliza el Protocolo de transferencia de archivos (SFTP) de Secure Shell (SSH) a través del Nube de AWS servicio. AWS Transfer for SFTP Por lo general, los usuarios se conectan a un servidor SFTP a través de su nombre de dominio o mediante una IP fija. Este patrón cubre ambos casos.

AWS Transfer for SFTP es miembro de. AWS Transfer Family Es un servicio de transferencia segura que puede utilizar para transferir archivos dentro y fuera de los servicios de AWS almacenamiento a través de SFTP. Puede usarlo AWS Transfer for SFTP con Amazon Simple Storage Service (Amazon S3) o Amazon Elastic File System (Amazon EFS). Este patrón utiliza Amazon S3 para el almacenamiento.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ Un nombre de dominio SFTP existente o una IP SFTP fija.

**Limitaciones**
+ El objeto más grande que se puede transferir en una solicitud es de 5 GiB actualmente. Para archivos de más de 100 MiB, considere la posibilidad de utilizar la [carga multiparte de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html).

## Arquitectura
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-architecture"></a>

**Pila de tecnología de origen**
+ Archivos planos en las instalaciones o archivos de volcado de bases de datos.

**Pila de tecnología de destino**
+ AWS Transfer for SFTP
+ Amazon S3
+ Amazon Virtual Private Cloud (Amazon VPC)
+ AWS Identity and Access Management Funciones y políticas (IAM)
+ Direcciones IP elásticas
+ Grupos de seguridad
+ Amazon CloudWatch Logs (opcional)

**Arquitectura de destino**

![\[Utilice AWS Transfer para SFTP para migrar un servidor SFTP en las instalaciones a la nube de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/ec0a905c-edef-48ba-9b5e-ea4a4040d320/images/f42aa711-bfe0-4ac6-9f66-5c18a1dd1c7a.png)


**Automatización y escala**

Para automatizar la arquitectura de destino de este patrón, utilice las CloudFormation plantillas adjuntas:
+ `amazon-vpc-subnets.yml` aprovisiona una nube privada virtual (VPC) con dos subredes públicas y dos privadas.
+ `amazon-sftp-server.yml` aprovisiona el servidor SFTP.
+ `amazon-sftp-customer.yml` añade usuarios.

## Tools (Herramientas)
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-tools"></a>

**Servicios de AWS**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) le ayuda a centralizar los registros de todos sus sistemas y aplicaciones Servicios de AWS para que pueda supervisarlos y archivarlos de forma segura.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [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. Este patrón utiliza Amazon S3 como sistema de almacenamiento para las transferencias de archivos.
+ [AWS Transfer for SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html)le ayuda a transferir archivos dentro y fuera de los servicios de AWS almacenamiento a través del protocolo SFTP.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa 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.

## Epics
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-epics"></a>

### Creación de una VPC
<a name="create-a-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una VPC con dos subredes. | Abra la [Consola de Amazon VPC](https://console.aws.amazon.com/vpc/). Cree una nube privada virtual (VPC) con dos subredes públicas. (La segunda subred proporciona alta disponibilidad).—o—Puede implementar la CloudFormation plantilla adjunta en la [CloudFormation consola](https://console.aws.amazon.com/cloudformation) para automatizar las tareas de esta epopeya. `amazon-vpc-subnets.yml` | Desarrollador, administrador de sistemas | 
| Añada una puerta de enlace de Internet. | Cree una puerta de enlace de Internet y vincúlela a la VPC. | Desarrollador, administrador de sistemas | 
| Migre una IP existente. | Adjunte una IP existente a la dirección IP elástica. Puede crear una dirección IP elástica a partir de su grupo de direcciones y utilizarla. | Desarrollador, administrador de sistemas | 

### Aprovisionar un servidor SFTP
<a name="provision-an-sftp-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un servidor SFTP. | Abra la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/). Siga las instrucciones de la AWS Transfer Family documentación sobre cómo [crear un terminal con conexión a Internet para su servidor](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#create-internet-facing-endpoint) a fin de crear un servidor SFTP con un punto final con conexión a Internet. En **Tipo de punto de enlace**, seleccione **Alojado en la VPC**. En **Acceso**, seleccione **Acceso a Internet**. En **VPC**, seleccione la VPC que acaba de crear en los pasos anteriores.—o—Puedes implementar la CloudFormation plantilla adjunta en la [CloudFormation consola](https://console.aws.amazon.com/cloudformation) para automatizar las tareas de esta epopeya. `amazon-sftp-server.yml` | Desarrollador, administrador de sistemas | 
| Migre el nombre del dominio. | Adjunte el nombre de dominio existente al nombre de host personalizado. Si utiliza un nombre de dominio nuevo, utilice el alias **DNS de Amazon Route 53**. Para un nombre de dominio existente, seleccione **Otros DNS**. Para obtener más información, consulte [Trabajar con nombres de host personalizados](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-dns.html) en la AWS Transfer Family documentación. | Desarrollador, administrador de sistemas | 
| Añada una función de CloudWatch registro. | (Opcional) Si quieres habilitar el CloudWatch registro, crea un `Transfer` rol con las operaciones de la API de CloudWatch registros `logs:CreateLogGroup``logs:CreateLogStream`,` logs:DescribeLogStreams`, y`logs:PutLogEvents`. Para obtener más información, consulte [Registrar la actividad CloudWatch](https://docs.aws.amazon.com/transfer/latest/userguide/monitoring.html#monitoring-enabling) en la AWS Transfer Family documentación. | Desarrollador, administrador de sistemas | 
| Guarde y envíe. | Seleccione **Save**. En **Acciones**, seleccione **Iniciar** y espere a que se cree el servidor SFTP con el estado **En línea**. | Desarrollador, administrador de sistemas | 

### Asignar direcciones IP elásticas al servidor SFTP
<a name="map-elastic-ip-addresses-to-the-sftp-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detenga el servidor para poder modificar la configuración. | En la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/), elija **Servidores** y, a continuación, seleccione el servidor SFTP que creó. En **Acciones**, seleccione **Detener**. Cuando el servidor esté desconectado, seleccione **Editar** para modificar su configuración. | Desarrollador, administrador de sistemas | 
| Seleccione zonas de disponibilidad y subredes. | En la sección **Zonas de disponibilidad**, seleccione las zonas de disponibilidad y subredes para su VPC. | Desarrollador, administrador de sistemas | 
| Agregue direcciones IP elásticas. | En el **IPv4 caso de las direcciones**, elija una dirección IP elástica para cada subred y, a continuación, seleccione **Guardar**. | Desarrollador, administrador de sistemas | 

### Adición de usuarios
<a name="add-users"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un rol de IAM para que los usuarios accedan al bucket de S3. | Cree un rol de IAM para `Transfer`** **y añada ` s3:ListBucket`, ` s3:GetBucketLocation` y `s3:PutObject` con el nombre del bucket de S3 como recurso. Para obtener más información, consulte [Crear una función y una política de IAM](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html) en la AWS Transfer Family documentación.—o—Puedes implementar la CloudFormation plantilla adjunta en la [CloudFormation consola](https://console.aws.amazon.com/cloudformation) para automatizar las tareas de esta epopeya. `amazon-sftp-customer.yml` | Desarrollador, administrador de sistemas | 
| Cree un bucket de S3. | Cree un bucket de S3 para la aplicación. | Desarrollador, administrador de sistemas | 
| Cree una carpeta opcional. | (Opcional) Si desea almacenar los archivos de los usuarios por separado, en carpetas específicas de Amazon S3, añada carpetas según corresponda. | Desarrollador, administrador de sistemas | 
| Cree una clave pública SSH. | Para crear un par de claves SSH, consulta [Generar claves SSH](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#sshkeygen) en la AWS Transfer Family documentación. | Desarrollador, administrador de sistemas | 
| Agregue usuarios. | En la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/), seleccione **Servidores**, seleccione el servidor SFTP que creó y, a continuación, **Agregar usuario**. En el **Directorio principal**, seleccione el bucket de S3 que creó. En **Clave pública SSH**, escriba el componente de clave pública del par de claves de SSH. Añada usuarios al servidor SFTP y, a continuación, seleccione **Añadir**. | Desarrollador, administrador de sistemas | 

### Probar el servidor SFTP
<a name="test-the-sftp-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice el grupo de seguridad. | En la sección **Grupos de seguridad** de su servidor SFTP, añada la IP de su máquina de prueba para obtener acceso a SFTP. | Desarrollador | 
| Utilice una utilidad de cliente SFTP para probar el servidor. | Pruebe las transferencias de archivos mediante cualquier utilidad de cliente SFTP. Para obtener una lista de clientes e instrucciones, consulte [Transferencia de archivos mediante un cliente](https://docs.aws.amazon.com/transfer/latest/userguide/transfer-file.html) en la AWS Transfer Family documentación. | Desarrollador | 

## Recursos relacionados
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-resources"></a>
+ [AWS Transfer Family Guía del usuario](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)
+ [Guía del usuario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ [Direcciones IP elásticas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) en la EC2 documentación de Amazon

## Conexiones
<a name="attachments-ec0a905c-edef-48ba-9b5e-ea4a4040d320"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/ec0a905c-edef-48ba-9b5e-ea4a4040d320/attachments/attachment.zip)

# Migre una máquina virtual local a Amazon EC2 mediante AWS Application Migration Service
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service"></a>

*Thanh Nguyen, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-summary"></a>

En lo que respecta a la migración de aplicaciones, las organizaciones pueden adoptar diferentes enfoques para volver a alojar (migrar mediante lift-and-shift) los servidores de las aplicaciones del entorno local a la nube de Amazon Web Services (AWS). Una forma consiste en aprovisionar nuevas instancias de Amazon Elastic Compute Cloud (Amazon EC2) y, a continuación, instalar y configurar la aplicación desde cero. Otro enfoque consiste en utilizar servicios de migración nativos de AWS o de terceros para migrar varios servidores al mismo tiempo.

Este patrón describe los pasos para migrar una máquina virtual (VM) compatible a una EC2 instancia de Amazon en la nube de AWS mediante AWS Application Migration Service. Puede utilizar el enfoque de este patrón para migrar una o varias máquinas virtuales de forma manual, una por una o automáticamente mediante la creación de los scripts de automatización adecuados en función de los pasos descritos. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa en una de las regiones de AWS que admiten el Servicio de migración de aplicaciones
+ Conectividad de red entre el servidor de origen y el EC2 servidor de destino a través de una red privada mediante AWS Direct Connect o una red privada virtual (VPN), o a través de Internet

**Limitaciones**
+ Para obtener la lista más reciente de regiones admitidas, consulte las [regiones de AWS admitidas](https://docs.aws.amazon.com/mgn/latest/ug/supported-regions.html).
+ Para obtener una lista de los sistemas operativos compatibles, consulta la sección [Sistemas operativos compatibles](https://docs.aws.amazon.com/mgn/latest/ug/Supported-Operating-Systems.html) y la sección *General* de [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/).

## Arquitectura
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-architecture"></a>

**Pila de tecnología de origen**
+ Un servidor físico, virtual o alojado en la nube que ejecute un sistema operativo compatible con Amazon EC2

**Pila de tecnología de destino**
+ Una EC2 instancia de Amazon que ejecute el mismo sistema operativo que la máquina virtual de origen
+ Amazon Elastic Block Store (Amazon EBS)

**Arquitectura de origen y destino**

El siguiente diagrama muestra la arquitectura de alto nivel y los componentes principales de la solución. En el centro de datos en las instalaciones, hay máquinas virtuales con discos locales. En AWS, hay un área de ensayo con servidores de replicación y un área de recursos migrados con EC2 instancias para realizar pruebas y transferencias. Ambas subredes contienen volúmenes de EBS.

![\[Componentes principales para migrar una máquina virtual compatible a una EC2 instancia de Amazon en la nube de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/58c8bafd-9a6d-42d4-a5ce-08c4b9a286a3/images/f8396fad-7ee9-4f75-800f-e819f509e151.png)


1. Inicie el Servicio de migración de aplicaciones de AWS.

1. Configure la configuración y los informes del servidor del área de ensayo, incluidos los recursos del área de ensayo.

1. Instale los agentes en los servidores de origen y utilice la replicación continua de datos a nivel de bloques (comprimidos y cifrados).

1. Automatice la orquestación y la conversión del sistema para acortar el período de transición.

**Arquitectura de redes**

El siguiente diagrama muestra la arquitectura de alto nivel y los componentes principales de la solución desde la perspectiva de las redes, incluidos los protocolos y puertos necesarios para la comunicación entre los componentes principales del centro de datos en las instalaciones y de AWS.

![\[Componentes de red, incluidos protocolos y puertos para la comunicación entre el centro de datos y AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/58c8bafd-9a6d-42d4-a5ce-08c4b9a286a3/images/2f594daa-ddba-4841-8785-6067e8d83c2f.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-tools"></a>
+ [El Servicio de migración de aplicaciones de AWS](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) le ayuda a volver a alojar (*migrar mediante lift-and-shift*) aplicaciones a la nube de AWS sin cambios y con un tiempo de inactividad mínimo.

## Prácticas recomendadas
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-best-practices"></a>
+ No desconecte el servidor de origen ni lo reinicie hasta que se complete la transición a la EC2 instancia de destino.
+ Ofrezca a los usuarios amplias oportunidades de realizar pruebas de aceptación del usuario (UAT) en el servidor de destino para identificar y resolver cualquier problema. Lo ideal es que estas pruebas comiencen al menos dos semanas antes de la transición.
+ Supervise con frecuencia el estado de replicación del servidor en la consola del Servicio de migración de aplicaciones para identificar los problemas desde el principio.
+ Utilice las credenciales de AWS Identity and Access Management (IAM) temporales para instalar el agente en lugar de las credenciales de usuario de IAM permanentes.

## Epics
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-epics"></a>

### Generar credenciales de AWS
<a name="generate-aws-credentials"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el rol de IAM de AWS Replication Agent. | Inicie sesión en la cuenta de AWS con permisos administrativos.Cree un rol de IAM en la [consola](https://console.aws.amazon.com/iam/) de AWS Identity and Access Management (IAM):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html) | Administrador de AWS, ingeniero de migraciones | 
| Genere credenciales de seguridad temporales. | En una máquina con la Interfaz de la línea de comandos de AWS (AWS CLI) instalada, inicie sesión con permisos de administrador. O bien (dentro de una región de AWS compatible), en la consola de administración de AWS, inicie sesión con permisos administrativos en la cuenta de AWS y abra AWS CloudShell.Genere credenciales temporales con el siguiente comando y sustitúyalas por `<account-id>` con el ID de la cuenta de AWS.`aws sts assume-role --role-arn arn:aws:iam::<account-id>:role/MGN_Agent_Installation_Role --role-session-name mgn_installation_session_role`En el resultado del comando, copie los valores de `AccessKeyId`, ** **`SecretAccessKey`, y ** **`SessionToken`.** **Guárdelos en un lugar seguro para usarlos más adelante.Estas credenciales temporales caducarán después de una hora. Si necesita las credenciales después de una hora, repita los pasos anteriores. | Administrador de AWS, ingeniero de migraciones | 

### Inicie el Servicio de migración de aplicaciones y cree la plantilla de configuración de replicación
<a name="initialize-application-migration-service-and-create-the-replication-settings-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el servicio. | Inicie sesión en la consola con permisos administrativos para la cuenta de AWS.Elija **Application Migration Service (Servicio de migración de aplicaciones)** y, a continuación, elija **Get started (Introducción)**. | Administrador de AWS, ingeniero de migraciones | 
| Cree y configure la plantilla de ajustes de replicación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)El Servicio de aplicación de migraciones creará automáticamente todos los roles de IAM necesarios para facilitar la replicación de datos y el lanzamiento de los servidores migrados. | Administrador de AWS, ingeniero de migraciones | 

### Instale los agentes de replicación de AWS en las máquinas de origen
<a name="install-aws-replication-agents-on-source-machines"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Tenga preparadas las credenciales de AWS necesarias. | Cuando ejecute el archivo de instalación en un servidor de origen, tendrá que introducir las credenciales temporales que generó anteriormente, incluidas `AccessKeyId`, `SecretAccessKey`, y `SessionToken`. | Ingeniero de migraciones; administrador de AWS | 
| Para los servidores de Linux, instale el agente. | Copie el comando del instalador, inicie sesión en los servidores de origen y ejecute el instalador. Para obtener instrucciones detalladas, consulte la [documentación de AWS](https://docs.aws.amazon.com/mgn/latest/ug/linux-agent.html). | Administrador de AWS, ingeniero de migraciones | 
| Para los servidores de Windows, instale el agente. | Descargue el archivo del instalador en cada servidor y, a continuación, ejecute el comando del instalador. Para obtener instrucciones detalladas, consulte la [documentación de AWS](https://docs.aws.amazon.com/mgn/latest/ug/windows-agent.html). | Administrador de AWS, ingeniero de migraciones | 
| Espere a que se complete la replicación inicial de los datos. | Cuando se haya instalado el agente, el servidor de origen aparecerá en la consola del Servidor de migración de aplciaciones, en la sección **Servidores de origen**. Espere a que el servidor realice la replicación inicial de los datos. | Administrador de AWS, ingeniero de migraciones | 

### Configure los ajustes de lanzamiento
<a name="configure-launch-settings"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Especifique los detalles del servidor. | En la consola del Servicio de migración de aplicaciones, elija la sección **Servidores de origen** y, a continuación, elija un nombre de servidor de la lista para acceder a los detalles del servidor. | Administrador de AWS, ingeniero de migraciones | 
| Configure los ajustes de lanzamiento.  | Seleccione la pestaña **ajustes de lanzamiento**. Puede configurar una variedad de ajustes, incluidos los ajustes generales de lanzamiento y los ajustes de la plantilla de EC2 lanzamiento. Para obtener instrucciones detalladas, consulte la [documentación de AWS](https://docs.aws.amazon.com/mgn/latest/ug/launch-settings.html). | Administrador de AWS, ingeniero de migraciones | 

### Realice una prueba
<a name="perform-a-test"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe los servidores de origen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)Se lanzarán los servidores. | Administrador de AWS, ingeniero de migraciones | 
| Compruebe que la prueba se haya completado correctamente. | Una vez que el servidor de prueba se haya iniciado por completo, el estado de las **alertas** de la página mostrará **Lanzado** para cada servidor. | Administrador de AWS, ingeniero de migraciones | 
| Pruebe el servidor. | Realice pruebas con el servidor de prueba para asegurarse de que funciona según lo esperado. | Administrador de AWS, ingeniero de migraciones | 

### Programe y realice una transición
<a name="schedule-and-perform-a-cutover"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Programe una transición temporal. | Programe un período de transición adecuado con los equipos pertinentes. | Administrador de AWS, ingeniero de migraciones | 
| Lleve a cabo la transición. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)El **ciclo de vida de la migración** del servidor de origen pasará a **transición en curso**. | Administrador de AWS, ingeniero de migraciones | 
| Compruebe que la transición se haya completado correctamente. | Una vez que los servidores de transición se hayan iniciado por completo, el estado de las **Alertas** en los **Servidores de origen** de la página mostrarán **Lanzado** para cada servidor. | Administrador de AWS, ingeniero de migraciones | 
| Pruebe el servidor. | Realice pruebas con el servidor de transición para asegurarse de que funciona según lo esperado. | Administrador de AWS, ingeniero de migraciones | 
| Finalice la transición. | Elija **Test and Cutover (Prueba y transición)** y, a continuación, seleccione **Finalize cutover (Finalizar la transición)** para finalizar el proceso de migración. | Administrador de AWS, ingeniero de migraciones | 

## Recursos relacionados
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-resources"></a>
+ [AWS Application Migration Service](https://aws.amazon.com/application-migration-service/)
+ [Guía de usuario del servicio de migración de aplicaciones de AWS](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)

# Migre pequeños conjuntos de datos del entorno local a Amazon S3 mediante AWS SFTP
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp"></a>

*Charles Gibson y Sergiy Shevchenko, Amazon Web Services*

## Resumen
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-summary"></a>

Este patrón describe cómo migrar pequeños conjuntos de datos (5 TB o menos) de centros de datos locales a Amazon Simple Storage Service (Amazon S3) mediante AWS Transfer for SFTP ().AWS SFTP Los datos pueden ser volcados de bases de datos o archivos planos.

## Requisitos previos y limitaciones
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Un AWS Direct Connect enlace establecido entre su centro de datos y AWS

**Limitaciones**
+ Los archivos de datos deben tener menos de 5 TB. Para archivos de más de 5 TB, puede realizar una carga multiparte a Amazon S3 o elegir otro método de transferencia de datos. 

## Arquitectura
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-architecture"></a>

**Pila de tecnología de origen**
+ Archivos planos en las instalaciones o volcados de bases de datos locales

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

**Arquitectura de origen y destino**

![\[Diagram showing data flow from on-premises servers to Nube de AWS services via Direct Connect and VPN.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/a9c016ff-3e68-4714-ac51-46cb4727397a/images/5c5bb9ea-d552-44e8-8d0d-df341f84f55d.png)


## Tools (Herramientas)
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-tools"></a>
+ [AWS SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)— Permite la transferencia de archivos directamente desde y hacia Amazon S3 mediante el Protocolo seguro de transferencia de archivos (SFTP).
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)— Establece una conexión de red dedicada desde sus centros de datos locales a. AWS
+ [Puntos de enlace de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html): le permiten conectar de forma privada una VPC a servicios de punto final de VPC compatibles y alimentados por Servicios de AWS ellos AWS PrivateLink sin una puerta de enlace de Internet, un dispositivo de traducción de direcciones de red (NAT), una conexión VPN o una conexión. Direct Connect Las instancias en una VPC no necesitan direcciones IP públicas para comunicarse con los recursos del servicio.

## Epics
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Documente los requisitos actuales de SFTP. |  | Propietario de la aplicación, SA | 
| Identifique los requisitos de autenticación. | Los requisitos pueden incluir la autenticación basada en claves, el nombre de usuario o la contraseña o el proveedor de identidades (IdP). | Propietario de la aplicación, SA | 
| Identifique los requisitos de integración de la aplicación. |  | Propietario de la aplicación | 
| Identifique a los usuarios que requieren el servicio. |  | Propietario de la aplicación | 
| Determine el nombre DNS del punto de conexión del servidor SFTP. |  | Red | 
| Determinar la estrategia de copia de seguridad. |  | SA, Administrador de base de datos (si se transfieren datos)  | 
| Identifique la estrategia de migración o transición de la aplicación. |  | Propietario de la aplicación, SA, Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una o más nubes privadas virtuales (VPCs) y subredes en su. Cuenta de AWS |  | Propietario de la aplicación, AMS | 
| Crear grupos de seguridad y listas de control de acceso a la red (ACL). |  | Seguridad, redes, AMS | 
| Cree el bucket de Amazon S3. |  | Propietario de la aplicación, AMS | 
| Cree el rol AWS Identity and Access Management (IAM). | Cree una política de IAM que incluya los permisos que le permitirán acceder AWS SFTP a su bucket de Amazon S3. Esta política de IAM determina el nivel de acceso que otorga a los usuarios de SFTP. Cree otra política de IAM con la que establecer una relación de confianza. AWS SFTP | Seguridad, AMS | 
| Asocia un dominio registrado (opcional). | Si tiene su propio dominio registrado, puede asociarlo al servidor SFTP. Puede enrutar el tráfico SFTP al punto de conexión de su servidor SFTP desde un dominio o desde un subdominio. | Redes, AMS | 
| Cree un servidor SFTP. | Especifique el tipo del proveedor de identidad que el servicio debe usar para autenticar a los usuarios. | Propietario de la aplicación, AMS | 
| Abrir un cliente SFTP. | Abra un cliente SFTP y configure la conexión para usar el host del punto final SFTP. AWS SFTP es compatible con cualquier cliente SFTP estándar. Los clientes SFTP más utilizados incluyen OpenSSH, WinSCP, Cyberduck y. FileZilla Puede obtener el nombre de host del servidor SFTP desde la consola. AWS SFTP  | Propietario de la aplicación, AMS | 

### Planificar y probar
<a name="plan-and-test"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Planifique la migración de la aplicación. | Planifique los cambios necesarios en la configuración de la aplicación, establezca la fecha de migración y determine el programa de pruebas. | Propietario de la aplicación, AMS | 
| Pruebe la infraestructura. | Realice pruebas en un entorno que no sea de producción. | Propietario de la aplicación, AMS | 

## Recursos relacionados
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-resources"></a>

**Referencias**
+ [AWS Transfer for SFTP Guía del usuario](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)
+ [AWS Direct Connect resources](https://aws.amazon.com/directconnect/resources/) 
+ [Puntos de enlace de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)

**Tutoriales y videos**
+ [AWS Transfer for SFTP (vídeo)](https://www.youtube.com/watch?v=wcnGez5PP1E)
+ [AWS Transfer for SFTP guía de usuario](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)
+ [AWS SA Whiteboarding - Direct Connect (vídeo)](https://www.youtube.com/watch?v=uP68iqyuqTg)

# Migre una base de datos Oracle local a Oracle on Amazon EC2
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2"></a>

*Baji Shaik y Pankaj Choudhary, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-summary"></a>

Este patrón le guía por los pasos para migrar una base de datos Oracle local a Oracle en una instancia de Amazon Elastic Compute Cloud EC2 (Amazon). Describe dos opciones de migración: usar AWS Data Migration Service (AWS DMS) o usar herramientas nativas de Oracle, como RMAN, importación/exportación de Data Pump, espacios de tabla transportables y Oracle. GoldenGate 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen de Oracle en un centro de datos en las instalaciones

**Limitaciones**
+ El sistema operativo (SO) de destino debe ser compatible con Amazon EC2. Para obtener una lista completa de los sistemas compatibles, consulta [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/).

**Versiones de producto**
+ Versiones de Oracle 10.2 y posteriores (para las versiones 10.x), 11g y hasta 12.2 y 18c para las ediciones Enterprise, Standard, Standard One y Standard Two. Para ver la lista más reciente de versiones compatibles con AWS DMS, consulte «Bases de datos locales y de EC2 instancias de Amazon» en [Fuentes para la migración de datos en la documentación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) de AWS DMS.  

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos de Oracle en las instalaciones

**Pila de tecnología de destino**
+ Una instancia de base de datos Oracle en Amazon EC2

**Arquitectura de destino**

![\[Configuración de la replicación de una base de datos Oracle en Amazon EC2.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66c98694-6580-4ffb-9f16-84de58cf8b07/images/386d5b14-8633-4ecc-98fb-59872de99d41.png)


**Arquitectura de migración de datos**

*Uso de AWS DMS:*

![\[Migración de una base de datos Oracle local a Amazon con EC2 AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66c98694-6580-4ffb-9f16-84de58cf8b07/images/14954066-d22b-486a-a432-265296752878.png)


*Uso de herramientas nativas de Oracle:*

![\[Migración de una base de datos Oracle local a Amazon EC2 con herramientas de Oracle.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66c98694-6580-4ffb-9f16-84de58cf8b07/images/82ba5fcb-8640-45fa-b432-2702dedc0774.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-tools"></a>
+ **AWS DMS**: [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/index.html) admite varios tipos de bases de datos de origen y destino. Para obtener información sobre las versiones y ediciones de bases de datos compatibles, consulte [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html). Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características.  
+ **Herramientas nativas de Oracle:** RMAN, importación/exportación de Data Pump, tablespaces transportables, Oracle GoldenGate                                                         

## Epics
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
|  Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
|  Identifique la versión del sistema operativo de destino. |  | DBA, SysAdmin | 
| Identifique los requisitos de hardware de la instancia del servidor de destino en función de la lista de compatibilidad de Oracle y los requisitos de capacidad. |  | DBA, SysAdmin | 
| Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento). |  | DBA, SysAdmin | 
| Identifique los requisitos de la red, como la latencia y el ancho de banda. |  | DBA, SysAdmin | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de network/host acceso para las bases de datos de origen y destino. |  | DBA, SysAdmin | 
| Identifique una lista de los usuarios del sistema operativo necesarios para la instalación del software Oracle. |  | DBA, SysAdmin | 
| Descargue e instale la herramienta de conversión de esquemas de AWS (AWS SCT) |  | Administrador de base de datos | 
| Cree un proyecto de AWS SCT para la carga de trabajo y conéctese a la base de datos de origen. |  | Administrador de base de datos | 
| Genere archivos SQL para la creación de objetos (tablas, índices, secuencias, etc.). |  | Administrador de base de datos | 
| Determine una estrategia de copia de seguridad. |  | DBA, SysAdmin  | 
| Determine los requisitos de disponibilidad. |  | Administrador de base de datos | 
| Identifique la estrategia de migración/cambio de aplicaciones. |  | DBA, propietario de la SysAdmin aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC) y subredes en su cuenta de AWS. |  | SysAdmin | 
| Cree grupos de seguridad y listas de control de acceso a la red (ACLs). |  | SysAdmin | 
| Configure e inicie la EC2 instancia. |  | SysAdmin | 

### Instalación del software Oracle
<a name="install-the-oracle-software"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree los usuarios y grupos del sistema operativo necesarios para que funcione el software Oracle. |  | DBA, SysAdmin | 
| Descargue la versión requerida del software Oracle. |  |  | 
| Instale el software de Oracle en la EC2 instancia. |  | DBA, SysAdmin | 
| Cree objetos como tablas, claves principales, vistas y secuencias mediante los scripts generados por AWS SCT. |  | Administrador de base de datos | 

### Migración de datos: opción 1
<a name="migrate-data---option-1"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice las herramientas nativas de Oracle o herramientas de terceros para migrar los objetos y datos de la base de datos. | Las herramientas de Oracle incluyen la importación/exportación de Data Pump, RMAN, espacios de tablas transportables y. GoldenGate | Administrador de base de datos | 

### Migración de datos: opción 2
<a name="migrate-data---option-2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Determine el método de migración. |  | Administrador de base de datos | 
| Cree una instancia de replicación con la consola de AWS DMS. |  | Administrador de base de datos | 
| Cree puntos de conexión de origen y destino. |  | Administrador de base de datos | 
| Cree una tarea de replicación. |  | Administrador de base de datos | 
| Habilite la captura de datos de cambios (CDC) para capturar los cambios para una replicación continua. |  | Administrador de base de datos | 
| Ejecute la tarea de replicación y supervise los registros. |  | Administrador de base de datos | 
| Cree objetos secundarios como índices y claves externas cuando se complete la carga. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. |  |  SysAdminDBA, propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Siga la estrategia de transición o cambio de la aplicación. |  | DBA, propietario de la SysAdmin aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre los recursos temporales de AWS Secrets Manager. |  | DBA, SysAdmin | 
| Revise y valide los documentos del proyecto. |  | DBA, propietario de la SysAdmin aplicación | 
| Recopile métricas sobre el tiempo de migración, el porcentaje de migraciones manuales en comparación con las realizadas con herramientas, el ahorro de costos, etc. |  | DBA, propietario de la SysAdmin aplicación | 
| Cerrar el proyecto y enviar comentarios. |  |  | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-resources"></a>

**Referencias**
+ [Estrategias para migrar bases de datos de Oracle a AWS](https://docs.aws.amazon.com/whitepapers/latest/strategies-migrating-oracle-db-to-aws/strategies-migrating-oracle-db-to-aws.html) 
+ [Migración de bases de datos de Oracle a la nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/)
+ [ EC2 Sitio web de Amazon](https://aws.amazon.com/ec2/)
+ [Sitio web de AWS DMS](https://aws.amazon.com/dms/)
+ [Publicaciones del blog de AWS DMS](https://aws.amazon.com/blogs/database/category/dms/)
+ [ EC2 Precios de Amazon](https://aws.amazon.com/ec2/pricing/)
+ [Concesión de licencias de software de Oracle en el entorno de computación en la nube](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)

**Tutoriales y videos**
+ [Cómo empezar con Amazon EC2](https://aws.amazon.com/ec2/getting-started/)
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon EC2 : Elastic Cloud Server & Hosting con AWS (vídeo)](https://www.youtube.com/watch?v=TsRBftzZsQo) 

# Migre una base de datos Oracle local a Amazon EC2 mediante Oracle Data Pump
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump"></a>

*Navakanth Talluri, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-summary"></a>

Al migrar las bases de datos, debe tener en cuenta factores como los motores y las versiones de las bases de datos de origen y destino, las herramientas y servicios de migración y los períodos de inactividad aceptables. Si va a migrar una base de datos Oracle local a Amazon Elastic Compute Cloud EC2 (Amazon), puede utilizar herramientas de Oracle, como Oracle Data Pump y Oracle Recovery Manager (RMAN). Para obtener más información sobre estrategias, consulte la guía [Migración de bases de datos de Oracle a la nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html).

Oracle Data Pump le ayuda a extraer la copia de seguridad lógica y coherente de la base de datos y a restaurarla en la instancia de destino. EC2 Este patrón describe cómo migrar una base de datos Oracle local a una EC2 instancia mediante Oracle Data Pump y el `NETWORK_LINK` parámetro, con un tiempo de inactividad mínimo. El parámetro `NETWORK_LINK` inicia una importación a través de un enlace de base de datos. El cliente Oracle Data Pump Import (impdp) de la EC2 instancia de destino se conecta a la base de datos de origen, recupera los datos de la misma y los escribe directamente en la base de datos de la instancia de destino. En esta solución no se utilizan archivos de copia de seguridad ni de *volcado*.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una base de datos de Oracle en las instalaciones: 
  + No es una base de datos de Oracle Real Application Clusters (RAC)
  + No es una base de datos de Oracle Automatic Storage Management (Oracle ASM)
  + Está en modo de lectura-escritura.
+ Ha creado un enlace de AWS Direct Connect entre su centro de datos en las instalaciones y AWS. Para obtener más información, consulte [Crear una conexión](https://docs.aws.amazon.com/directconnect/latest/UserGuide/create-connection.html) (documentación de Direct Connect).

**Versiones de producto**
+ Oracle Database 10g versión 1 (10.1) y posteriores

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-architecture"></a>

**Pila de tecnología de origen**
+ Un servidor de base de datos de Oracle independiente (sin RAC ni ASM) en un centro de datos en las instalaciones

**Pila de tecnología de destino**
+ Una base de datos Oracle que se ejecuta en Amazon EC2

**Arquitectura de destino**

El [pilar de fiabilidad](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html) del Marco de AWS Well-Architected recomienda crear copias de seguridad de datos para ayudar a proporcionar alta disponibilidad y resiliencia. Para obtener más información, consulte [Diseño de arquitectura para alta disponibilidad](https://docs.aws.amazon.com/whitepapers/latest/oracle-database-aws-best-practices/architecting-for-high-availability.html#amazon-ec2) en *Prácticas recomendadas para ejecutar bases de datos de Oracle en AWS*. Este patrón configura las bases de datos principales y en espera en EC2 las instancias mediante Oracle Active Data Guard. Para una alta disponibilidad, las EC2 instancias deben estar en diferentes zonas de disponibilidad. Sin embargo, las zonas de disponibilidad pueden estar en la misma región de AWS o en regiones de AWS diferentes.

Active Data Guard proporciona acceso de solo lectura a una base de datos física en espera al tiempo que rehace los cambios de forma continua desde la base de datos principal. En función de su objetivo de punto de recuperación (RPO) y el objetivo de tiempo de recuperación (RTO), puede elegir entre las opciones de transporte de rehacer síncrono y asíncrono.

La siguiente imagen muestra la arquitectura de destino si las EC2 instancias principal y en espera se encuentran en distintas regiones de AWS.

![\[Aplicación que se conecta a la nueva base de datos en la EC2 instancia principal\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bdd49395-2f99-43e2-ad1d-a1d09d90fb58/images/37fcd4dc-5516-416b-a280-0c5f002880de.png)


**Arquitectura de migración de datos**

Una vez que haya terminado de configurar la arquitectura de destino, utilice Oracle Data Pump para migrar los datos y esquemas locales a la instancia principal EC2 . Durante la transición, las aplicaciones no pueden acceder a la base de datos en las instalaciones ni a la base de datos de destino. Cierre estas aplicaciones hasta que se puedan conectar a la nueva base de datos de destino de la instancia principal EC2 .

En la imagen siguiente, se muestra la arquitectura durante la migración de datos. En este ejemplo de arquitectura, las EC2 instancias principal y en espera se encuentran en distintas regiones de AWS.

![\[La base de datos de origen se conecta a la base de datos de destino. Las aplicaciones están desconectadas del origen y el destino DBs\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bdd49395-2f99-43e2-ad1d-a1d09d90fb58/images/c58b669b-b11f-4d78-8911-c07b81b7c6a0.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-tools"></a>

**Servicios de AWS**
+ [AWS Direct Connect](https://aws.amazon.com/directconnect/) vincula su red interna con una ubicación de Direct Connect a través de un cable estándar Ethernet de fibra óptica. Con esta conexión, puede crear interfaces virtuales directamente en servicios públicos de AWS omitiendo a los proveedores de servicios de Internet en su ruta de acceso a la red.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.

**Otras herramientas y servicios**
+ [Oracle Active Data Guard](https://docs.oracle.com/en/database/oracle/oracle-database/21/sbydb/introduction-to-oracle-data-guard-concepts.html#GUID-5E73667D-4A56-445E-911F-1E99092DD8D7) le ayuda a crear, mantener, gestionar y supervisar bases de datos en espera.
+ [Oracle Data Pump](https://www.oracle.com/technetwork/documentation/data-pump-overview-084963.html) le ayuda a trasladar datos y metadatos de una base de datos a otra a altas velocidades.

## Prácticas recomendadas
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-best-practices"></a>
+ [Best Practices for Running Oracle Database on AWS](https://docs.aws.amazon.com/whitepapers/latest/oracle-database-aws-best-practices/architecting-for-security-and-performance.html)
+ [Importación de datos mediante NETWORK\$1LINK](https://docs.oracle.com/database/121/SUTIL/GUID-23E58D59-A477-4A87-BD0E-C82447581D0A.htm#SUTIL856)

## Epics
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-epics"></a>

### Configure las EC2 instancias en AWS
<a name="set-up-the-ec2-instances-on-aws"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique la configuración de hardware de origen para el host en las instalaciones y los parámetros del núcleo. | Valide la configuración local, incluidos el tamaño del almacenamiento, input/output las operaciones por segundo (IOPS) y la CPU. Esto es importante para las licencias de Oracle, que se basan en los núcleos de la CPU. | DBA, SysAdmin | 
| Cree la infraestructura en AWS. | Cree las nubes privadas virtuales (VPCs), las subredes privadas, los grupos de seguridad, las listas de control de acceso a la red (ACLs), las tablas de enrutamiento y la puerta de enlace a Internet. Para obtener más información, consulte los siguientes temas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.html) | Administrador de base de datos, administrador de sistemas | 
| Configure las EC2 instancias mediante Active Data Guard. | Configure las EC2 instancias de AWS mediante una configuración de Active Data Guard, tal y como se describe en el [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html). La versión de Oracle Database de la EC2 instancia puede ser diferente de la versión local porque este patrón utiliza copias de seguridad lógicas. Tenga en cuenta lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.html)Para obtener más información, consulte lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.html) | Administrador de base de datos, administrador de sistemas | 

### Migre la base de datos a Amazon EC2
<a name="migrate-the-database-to-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un dblink a la base de datos local desde la instancia. EC2  | Cree un enlace de base de datos (dblink) entre la base de datos Oracle de la EC2 instancia y la base de datos Oracle local. Para obtener más información, consulte [Uso de la importación de enlaces de red para mover datos](https://docs.oracle.com/database/121/SUTIL/GUID-3E1D4B46-E856-4ABE-ACC5-977A898BB0F1.htm#SUTIL806) (documentación de Oracle). | Administrador de base de datos | 
| Compruebe la conexión entre la EC2 instancia y el host local. | Usa el dblink para confirmar que la conexión entre la EC2 instancia y la base de datos local funciona. Para obtener instrucciones, consulte [CREATE DATABASE LINK](https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm) (documentación de Oracle). | Administrador de base de datos | 
| Detenga todas las aplicaciones conectadas a la base de datos en las instalaciones. | Una vez aprobado el tiempo de inactividad de la base de datos, cierre todas las aplicaciones y trabajos dependientes que se conecten a la base de datos en las instalaciones. Puede hacerlo directamente desde la aplicación o desde la base de datos mediante cron. Para obtener más información, consulte [Uso de la utilidad Crontab para programar tareas en Oracle Linux](https://docs.oracle.com/en/learn/oracle-linux-crontab/index.html). | Administrador de base de datos, desarrollador de aplicaciones | 
| Programe el trabajo de migración de datos.  | En el host de destino, utilice el comando `impdb` para programar la importación de Data Pump. Esto conecta la base de datos de destino con el host en las instalaciones e inicia la migración de datos. Para obtener más información, consulte [Importación de Data Pump](https://docs.oracle.com/database/121/SUTIL/GUID-D11E340E-14C6-43B8-AB09-6335F0C1F71B.htm#SUTIL300) y [NETWORK\$1LINK](https://docs.oracle.com/database/121/SUTIL/GUID-0871E56B-07EB-43B3-91DA-D1F457CF6182.htm#SUTIL919) (documentación de Oracle). | Administrador de base de datos | 
| Validar la migración de datos. | La validación de los datos es un paso crucial. Para la validación de datos, puede utilizar herramientas personalizadas o herramientas de Oracle, como una combinación de consultas dblink y SQL. | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Coloque la base de datos de origen en un modo de solo lectura. | Confirme que la aplicación esté cerrada y que no se estén realizando cambios en la base de datos de origen. Abra la base de datos de origen en modo de solo lectura. Esto le permite evitar cualquier transacción abierta. Para obtener más información, consulte `ALTER DATABASE` en [SQL Statements](https://docs.oracle.com/database/121/SQLRF/statements_1006.htm#i2135540) (documentación de Oracle). | Administrador de bases de datos, DevOps ingeniero y desarrollador de aplicaciones | 
| Valide el recuento de objetos y los datos. | Para validar los datos y objetos, puede utilizar herramientas personalizadas o herramientas de Oracle, como una combinación de consultas dblink y SQL. | Administrador de base de datos, desarrollador de aplicaciones | 
| Conecte las aplicaciones a la base de datos de la EC2 instancia principal. | Cambie el atributo de conexión de la aplicación para que apunte a la nueva base de datos que creó en la EC2 instancia principal. | Administrador de base de datos, desarrollador de aplicaciones | 
| Valide el rendimiento de la aplicación. | Inicie la aplicación. Valide la funcionalidad y el rendimiento de la aplicación mediante el [Repositorio automatizado de cargas de trabajo](https://docs.oracle.com/database/121/RACAD/GUID-C3CD2DCE-38BD-46BA-BC32-7A28CAC9A7FD.htm#RACAD951) (documentación de Oracle). | Desarrollador de aplicaciones, DevOps ingeniero y administrador de bases de datos | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-resources"></a>

**Referencias de AWS**
+ [Migración de bases de datos de Oracle a la Nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)
+ [Amazon EC2 para Oracle](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/ec2-oracle.html)
+ [Migración de bases de datos voluminosas de Oracle a AWS para entornos multiplataforma](https://docs.aws.amazon.com/prescriptive-guidance/latest/migrate-bulky-oracle-databases/welcome.html)
+ [VPCs y subredes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)
+ [Tutorial: Creación de una VPC para utilizarla con una instancia de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateVPC.html)

**Referencias de Oracle**
+ [Configuraciones de Oracle Data Guard](https://docs.oracle.com/en/database/oracle/oracle-database/21/sbydb/introduction-to-oracle-data-guard-concepts.html#GUID-AB9DF863-2C7E-4767-81F2-56AD0FA30B49)
+ [Importación de Data Pump](https://docs.oracle.com/database/121/SUTIL/GUID-D11E340E-14C6-43B8-AB09-6335F0C1F71B.htm#SUTIL300)

# Migración de los sistemas BYOL de RHEL a instancias con licencia incluida de AWS mediante AWS MGN
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn"></a>

*Mike Kuznetsov, Amazon Web Services*

## Resumen
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-summary"></a>

Al migrar sus cargas de trabajo a AWS mediante el AWS Application Migration Service (AWS MGN), es posible que tenga que migrar mediante lift-and-shift (volver a alojar) sus instancias de Red Hat Enterprise Linux (RHEL) y cambiar la licencia del modelo traiga su propia licencia (BYOL) predeterminado a un modelo AWS License Included (LI) durante la migración. AWS MGN admite un enfoque escalable que utiliza los Identificadores de imagen de máquina de Amazon (AMI). Este patrón describe cómo realizar el cambio de licencia en los servidores de RHEL durante la migración de volver a alojar a escala. También explica cómo cambiar la licencia de un sistema RHEL que ya se ejecuta en Amazon Elastic Compute Cloud (Amazon EC2).

## Requisitos previos y limitaciones
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-prereqs"></a>

**Requisitos previos **
+ Acceso a la cuenta de AWS de destino
+ AWS MGN se inicializó en la cuenta y región de AWS de destino para la migración (no es obligatorio si ya ha migrado de su sistema en las instalaciones a AWS)
+ Un servidor RHEL de origen con una licencia RHEL válida

## Arquitectura
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-architecture"></a>

Este patrón cubre dos escenarios:
+ Migración de un sistema en las instalaciones directamente a una instancia de AWS LI mediante AWS MGN. Para este escenario, siga las instrucciones de la primera epopeya (*Migración a una instancia de LI: opción 1*) y de la tercera epopeya.
+ Cambie el modelo de licencias de BYOL a LI para un sistema RHEL migrado anteriormente que ya se ejecuta en Amazon EC2. Para este escenario, siga las instrucciones de la segunda epopeya (*migrar a una instancia de LI*: *opción 2*) y de la tercera epopeya.

**nota**  
La tercera epopeya implica la reconfiguración de la nueva instancia de RHEL para utilizar los servidores de Red Hat Update Infrastructure (RHUI) proporcionados por AWS. Este proceso es el mismo en ambos escenarios.

## Tools (Herramientas)
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-tools"></a>

**Servicios de AWS**
+ El [AWS Application Migration Service (AWS MGN)](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) le ayuda a volver a alojar (migrar mediante lift-and-shift) las aplicaciones a la nube de AWS sin cambios y con un tiempo de inactividad mínimo.

## Epics
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-epics"></a>

### Migración a una instancia LI: opción 1 (para un sistema RHEL en las instalaciones)
<a name="migrate-to-li-instance---option-1-for-an-on-premises-rhel-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Busque el Identificador de AMI de la instancia de RHEL AWS LI en la región de destino. | Visite [AWS Marketplace](https://aws.amazon.com/marketplace) o utilice la [consola Amazon EC2](https://console.aws.amazon.com/ec2/) para buscar el Identificador de AMI de RHEL que coincida con la versión del sistema fuente de RHEL (por ejemplo, RHEL-7.7) y anote el ID de AMI. En la consola Amazon EC2, puede filtrarlos AMIs mediante uno de los siguientes términos de búsqueda:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | Administrador de la nube | 
| Configure los ajustes de lanzamiento de AWS MGN.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html)AWS MGN utilizará ahora esta versión de la plantilla de lanzamiento para lanzar instancias de prueba o de transición. Para obtener más información, consulte la [documentación de AWS MGN](https://docs.aws.amazon.com/mgn/latest/ug/ec2-launch.html). | Administrador de la nube | 
| Valide la configuración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | Administrador de la nube | 
| Lance la nueva instancia de LI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | Administrador de la nube | 

### Migración a una instancia LI: opción 2 (para una instancia RHEL BYOL EC2)
<a name="migrate-to-li-instance---option-2-for-a-rhel-byol-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre una instancia de RHEL BYOL EC2 a una instancia de AWS LI. | Puede cambiar los sistemas RHEL que anteriormente migró a AWS como BYOL a instancias de AWS LI moviendo sus discos (volúmenes de Amazon Elastic Block Store) y adjuntándolos a una nueva instancia de LI. Para realizar este cambio, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | Administrador de la nube | 

### Reconfigurar el sistema operativo RHEL para usar la RHUI proporcionada por AWS (ambas opciones)
<a name="reconfigure-rhel-os-to-use-aws-provided-rhui-ndash-both-options"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Anule el registro del sistema operativo de la suscripción y la licencia de Red Hat. | Tras la migración y la transición exitosa, es necesario eliminar el sistema RHEL de la suscripción a Red Hat para dejar de consumir la licencia de Red Hat y evitar la doble facturación.Para eliminar el sistema operativo RHEL de la suscripción a Red Hat, siga el proceso descrito en la [documentación sobre Red Hat Subscription Management (RHSM)](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/installation_guide/chap-subscription-management-unregistering). Utilice el comando CLI:  <pre>subscription-manager unregister</pre>También puede deshabilitar el complemento del administrador de suscripciones para dejar de comprobar el estado de la suscripción en cada llamada de **yum**. Para ello, edite el archivo de configuración `/etc/yum/pluginconf.d/subscription-manager.conf` y cambie el parámetro `enabled=1` a `enabled=0`. | Administrador de sistemas o Linux | 
| Sustituya la configuración de actualización anterior (RHUI, red Red Hat Satellite, repositorios yum) por la RHUI proporcionada por AWS. | Debe volver a configurar el sistema RHEL migrado para utilizar los servidores RHUI proporcionados por AWS. Esto le da acceso a los servidores RHUI dentro de las regiones de AWS sin necesidad de una infraestructura de actualización externa. El proceso consta de los pasos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html)Estos son los pasos y comandos detallados:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | Administrador de sistemas o Linux | 
| Valide la configuración. | En la instancia migrada de destino, compruebe que la nueva configuración es correcta:<pre>sudo yum clean all <br />sudo yum repolist </pre> | Administrador de sistemas o Linux | 

## Recursos relacionados
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-resources"></a>
+ [Guía del usuario de AWS Application Migration Service (AWS MGN)](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)
+ [Obtenga soporte para un paquete de cliente RHUI de AWS IMDSv2 (artículo](https://access.redhat.com/solutions/5009491) de la base de conocimiento de Red Hat)
+ [Plantillas de lanzamiento de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) (documentación de Amazon EC2)

# Migre una base de datos local de Microsoft SQL Server a Amazon EC2
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2"></a>

*Senthil Ramasamy, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-summary"></a>

Este patrón describe cómo migrar una base de datos de Microsoft SQL Server local a Microsoft SQL Server en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Incluye dos opciones de migración: usar AWS Database Migration Service (AWS DMS) o usar herramientas nativas de Microsoft SQL Server, como la copia de seguridad y la restauración, el asistente para copiar bases de datos o copiar y adjuntar bases de datos. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-prereqs"></a>

**Requisitos previos **
+ Una AWS cuenta activa
+ Un sistema operativo compatible con Amazon EC2 (para obtener una lista completa de las versiones de sistemas operativos compatibles, consulte [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/))
+ Una base de datos de origen de Microsoft SQL Server en un centro de datos en las instalaciones

**Versiones de producto**
+ Para las bases de datos locales y de EC2 instancias de Amazon, AWS DMS admite: 
  + Versiones de SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016, 2017 y 2019 
  + Ediciones Enterprise, Standard, Workgroup, Developer y Web
+ Para ver la lista actualizada de versiones compatibles, consulte [Using a Microsoft SQL Server Database as a Target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html).   

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Microsoft SQL Server en las instalaciones

**Pila de tecnología de destino**
+ Base de datos de Microsoft SQL Server en una EC2 instancia

**Arquitectura de destino**

![\[Instancias principales y en espera de Microsoft SQL Server en EC2 instancias de dos zonas de disponibilidad.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f0a155b3-4977-4e1f-8332-89eab29c1e25/images/53e2c27d-ceb4-4d88-a022-93dd0b343eaf.png)


**Arquitectura de migración de datos**
+ Usando AWS DMS

![\[Migración de datos de SQL Server locales a una EC2 instancia mediante AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f0a155b3-4977-4e1f-8332-89eab29c1e25/images/1cbe32ea-e285-4cac-9153-4428bad9b229.png)

+ Uso de herramientas nativas de SQL Server 

![\[Migración de datos de SQL Server locales a una EC2 instancia mediante herramientas nativas de SQL Server.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f0a155b3-4977-4e1f-8332-89eab29c1e25/images/ad2caf54-7399-4038-91a3-acba9fa7da29.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/) le ayuda a migrar sus datos hacia y desde bases de datos comerciales y de código abierto muy utilizadas, como Oracle, SQL Server, MySQL y PostgreSQL. Puede utilizarlos AWS DMS para migrar sus datos a Nube de AWS, entre instancias locales (mediante una Nube de AWS configuración) o entre combinaciones de configuraciones locales y en la nube.
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) admite migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayoría del código personalizado a un formato compatible con la base de datos de destino.
+ Las herramientas nativas de Microsoft SQL Server incluyen la copia de seguridad y restauración, el asistente para copiar bases de datos y la función de copiar y adjuntar bases de datos.

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
| Identificar la versión del sistema operativo de destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de hardware para la instancia del servidor de destino en función de la lista de compatibilidad de Microsoft SQL Server y los requisitos de capacidad. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar los requisitos de almacenamiento relativos al tipo y la capacidad. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar los requisitos de la red, como la latencia y el ancho de banda. |  | Administrador de base de datos, administrador de sistemas | 
| Elija el tipo de EC2 instancia en función de la capacidad, las características de almacenamiento y las características de la red. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar los requisitos de seguridad para acceder a la red y al host de las bases de datos de origen y destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar la lista de usuarios necesarios para la instalación del software Microsoft SQL Server. |  | Administrador de base de datos, administrador de sistemas | 
| Determinar la estrategia de copia de seguridad. |  | Administrador de base de datos | 
| Determinar los requisitos de disponibilidad. |  | Administrador de base de datos | 
| Identificar la estrategia de migración y transición de aplicaciones. |  | Administrador de base de datos, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC) y subredes. |  | Administrador de sistemas | 
| Cree grupos de seguridad y listas de control de acceso a la red (ACL). |  | Administrador de sistemas | 
| Configura e inicia una EC2 instancia. |  | Administrador de sistemas | 

### Instalar el software
<a name="install-the-software"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear los usuarios y grupos necesarios para el software Microsoft SQL Server. |  | Administrador de base de datos, administrador de sistemas | 
| Descargar el software Microsoft SQL Server. |  | Administrador de base de datos, administrador de sistemas | 
| Instale el software Microsoft SQL Server en la EC2 instancia y configure el servidor. |  | Administrador de base de datos, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilizar herramientas nativas de MySQL Server o herramientas de terceros para migrar los objetos y datos de la base de datos. | Las herramientas incluyen la copia de seguridad y la restauración, el asistente para copiar bases de datos y la función de copiar y adjuntar bases de datos. Para obtener más información, consulte la guía [Migrating Microsoft SQL Server databases to the Nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/). | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los datos mediante AWS DMS. | Para obtener más información sobre su uso AWS DMS, consulte los enlaces de la sección [Recursos relacionados](#migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-resources). | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. | Utilice AWS Schema Conversion Tool (AWS SCT) para analizar y modificar el código SQL que está incrustado en el código fuente de la aplicación. | Administrador de base de datos, propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de cambio de aplicaciones. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre todos los AWS recursos temporales. | Los recursos temporales incluyen la instancia de AWS DMS replicación y la EC2 instancia para AWS SCT. | Administrador de base de datos, administrador de sistemas | 
| Revise y valide los documentos del proyecto. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopile métricas sobre el tiempo de migración, el porcentaje de ahorro de costos manuales en comparación con los de herramientas, etc. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cerrar el proyecto y enviar comentarios. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-resources"></a>

**Referencias**
+ [Migración de bases de datos de Microsoft SQL Server a Nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/)
+ [Amazon EC2](https://aws.amazon.com/ec2/)
+ [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/)
+ [ EC2 Precios de Amazon](https://aws.amazon.com/ec2/pricing/)
+ [AWS Database Migration Service](https://aws.amazon.com/dms/)
+ [Productos de Microsoft en AWS](https://aws.amazon.com/windows/products/)
+ [Licencias de Microsoft en AWS](https://aws.amazon.com/windows/resources/licensing/)
+ [Microsoft SQL Server en AWS](https://aws.amazon.com/windows/products/sql/)

**Tutoriales y videos**
+ [Cómo empezar con](https://aws.amazon.com/ec2/getting-started/) Amazon EC2
+ [Introducción a ](https://aws.amazon.com/dms/getting-started/)AWS Database Migration Service
+ [Unir una EC2 instancia de Amazon a su Active Directory de Simple AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/simple_ad_join_instance.html)
+ [Unir una EC2 instancia de Amazon a su AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_join_instance.html)
+ [AWS Database Migration Service ](https://www.youtube.com/watch?v=zb4GcjEdl8U)(video)
+ [Introducción a Amazon EC2 : Elastic Cloud Server & Hosting con AWS](https://www.youtube.com/watch?v=TsRBftzZsQo) (vídeo)

# Vuelva a alojar las cargas de trabajo en las instalaciones en la nube de AWS: lista de verificación de migración
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist"></a>

*Srikanth Rangavajhala, Amazon Web Services*

## Resumen
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-summary"></a>

Volver a alojar las cargas de trabajo en las instalaciones en la nube de Amazon Web Services (AWS) implica las siguientes fases de migración: planificación, predetección, detección, creación, prueba y transición. Este patrón describe las fases y sus tareas relacionadas. Las tareas se describen de forma detallada y soportan aproximadamente el 75 % de todas las cargas de trabajo de las aplicaciones. Puede implementar estas tareas en un plazo de dos o tres semanas en un ciclo de iteraciones ágil.

Debería revisar y examinar estas tareas con su equipo de migración y sus consultores. Tras la revisión, puede recopilar los datos, eliminar o volver a evaluar las tareas según sea necesario para cumplir con sus requisitos y modificar otras tareas para que admitan al menos el 75 % de las cargas de trabajo de las aplicaciones de su cartera. A continuación, puede utilizar una herramienta de gestión de proyectos ágil, como Atlassian Jira o Rally Software, para importar las tareas, asignarlas a los recursos y realizar un seguimiento de las actividades de migración. 

El patrón supone que utiliza [AWS Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/solution-overview.html) para volver a alojar sus cargas de trabajo, pero puede utilizar la herramienta de migración que prefiera.

Amazon Macie puede ser útil para identificar información confidencial en sus bases de conocimiento, que se almacenan como orígenes de datos, registros de invocación de modelos y almacenes de peticiones en buckets de Amazon Simple Storage Service (Amazon S3). Para obtener más información, consulte la [documentación de Macie](https://docs.aws.amazon.com/macie/latest/user/data-classification.html).

## Requisitos previos y limitaciones
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-prereqs"></a>

**Requisitos previos **
+ Herramienta de gestión de proyectos para realizar un seguimiento de las tareas de migración (por ejemplo, Atlassian Jira o Rally Software)
+ Herramienta de migración para volver a alojar sus cargas de trabajo en AWS (por ejemplo, [Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/solution-overview.html))

## Arquitectura
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-architecture"></a>

**Plataforma de origen**
+ Pila de origen en las instalaciones (incluidas tecnologías, aplicaciones, bases de datos e infraestructura)  

**Plataforma de destino**
+ Pila de destino en la nube de AWS (incluidas tecnologías, aplicaciones, bases de datos e infraestructura) 

**Arquitectura**

En el siguiente diagrama, se muestra el realojamiento (detección y migración de servidores desde un entorno de origen en las instalaciones a AWS) mediante Cloud Migration Factory y AWS Application Migration Service.

![\[Realojamiento de servidores en AWS mediante Cloud Migration Factory y Application Migration Service\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8e2d2d72-30cc-4e98-8abd-ac2ef95e599b/images/735ad65b-2646-4803-82c9-f7f93369b3a5.png)


## Tools (Herramientas)
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-tools"></a>
+ Puede utilizar la herramienta de migración y gestión de proyectos que elija.

## Epics
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-epics"></a>

### Fase de planificación
<a name="planning-phase"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el volumen de trabajo pendiente previo a la detección. | Lleve a cabo la sesión de trabajo previa a la detección de los volúmenes de trabajo pendientes con los jefes de departamento y los propietarios de las aplicaciones.  | Director de proyectos, líder de Agile Scrum | 
|  Dirija la sesión de trabajo de planificación de la iteración. | Como ejercicio de análisis, distribuya las aplicaciones que desee migrar entre iteraciones y oleadas. | Director de proyectos, líder de Agile Scrum | 

### Fase previa a la detección
<a name="pre-discovery-phase"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Confirmar los conocimientos de la aplicación. | Confirme y documente al propietario de la aplicación y su conocimiento de la aplicación. Determinar si hay otra persona de contacto para las cuestiones técnicas. | Especialista en migración (entrevistador) | 
| Determine los requisitos de conformidad de las aplicaciones. | Confirme con el propietario de la aplicación que la aplicación no tiene por qué cumplir los requisitos del estándar de seguridad de datos del sector de las tarjetas de pago (PCI DSS), la Ley Sarbanes-Oxley (SOX), la información de identificación personal (PII) u otras normas. Si existen requisitos de conformidad, los equipos deben finalizar las comprobaciones de conformidad en los servidores que se van a migrar. | Especialista en migración (entrevistador) | 
| Confirme los requisitos de lanzamiento de producción.  | Confirme los requisitos para lanzar la aplicación migrada a producción (como la fecha de lanzamiento y la duración del tiempo de inactividad) con el propietario de la aplicación o el contacto técnico. | Especialista en migración (entrevistador) | 
| Obtener la lista de servidores. | Obtenga la lista de servidores asociados a la aplicación de destino. | Especialista en migración (entrevistador) | 
| Obtener el diagrama lógico que muestra el estado actual. | Obtenga el diagrama de estado actual de la aplicación del arquitecto empresarial o del propietario de la aplicación. | Especialista en migración (entrevistador) | 
| Crear un diagrama lógico que muestre el estado objetivo. | Cree un diagrama lógico de la aplicación que muestre la arquitectura de destino en AWS. Este diagrama debe ilustrar los servidores, la conectividad y los factores de asignación. | Arquitecto empresarial, propietario de una empresa | 
| Obtener información sobre el servidor. | Recopile información sobre los servidores asociados a la aplicación, incluidos sus detalles de configuración. | Especialista en migración (entrevistador) | 
| Añada la información del servidor a la plantilla de detección. | Añada información detallada del servidor a la plantilla de detección de aplicaciones (consulte `mobilize-application-questionnaire.xlsx` en el anexo de este patrón). Esta plantilla incluye todos los detalles de seguridad, infraestructura, sistema operativo y redes relacionados con las aplicaciones. | Especialista en migración (entrevistador) | 
| Publicar la plantilla de detección de aplicaciones. | Comparta la plantilla de detección de aplicaciones con el propietario de la aplicación y el equipo de migración para un acceso y un uso comunes. | Especialista en migración (entrevistador) | 

### Fase de detección
<a name="discovery-phase"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Confirmar la lista de servidores. | Confirme la lista de servidores y el propósito de cada servidor con el propietario de la aplicación o el responsable técnico. | Especialista de migración | 
| Identificar y añadir grupos de servidores. | Identifique grupos de servidores, como servidores web o servidores de aplicaciones, y añada esta información a la plantilla de detección de aplicaciones. Seleccione el nivel de la aplicación (web, aplicación, base de datos) al que debe pertenecer cada servidor. | Especialista de migración | 
| Publicar la plantilla de detección de aplicaciones. | Complete los detalles de la plantilla de detección de aplicaciones con la ayuda del equipo de migración, el equipo de aplicaciones y AWS. | Especialista de migración | 
| Añada los detalles del servidor que faltan (equipos de middleware y sistema operativo). | Pida a los equipos de middleware y sistema operativo (SO) que revisen la plantilla de detección de aplicaciones y añadan los detalles del servidor que falten, incluida la información de la base de datos. | Especialista de migración | 
| Obtenga las normas de inbound/outbound tráfico (equipo de red). | Pida al equipo de red que obtenga las reglas de inbound/outbound tráfico para los servidores de origen y destino. El equipo de red también debe añadir las reglas de firewall existentes, exportarlas a un formato de grupo de seguridad y añadir los equilibradores de carga existentes a la plantilla de detección de aplicaciones. | Especialista de migración | 
| Identificar el etiquetado necesario. | Determine los requisitos de etiquetado de la aplicación. | Especialista de migración | 
| Crear detalles de solicitud de firewall. | Capture y filtre las reglas de firewall necesarias para comunicarse con la aplicación.  | Especialista en migración, arquitecto de soluciones y líder de redes  | 
| Actualiza el tipo de EC2 instancia. | Actualice el tipo de instancia de Amazon Elastic Compute Cloud (Amazon EC2) para que se utilice en el entorno de destino, en función de los requisitos de infraestructura y servidor.  | Especialista en migración, arquitecto de soluciones y líder de redes | 
| Identifique el diagrama de estado actual. | Identifique o cree el diagrama que muestra el estado actual de la aplicación. Este diagrama se utilizará en la solicitud de seguridad de la información (InfoSec).  | Especialista en migración, arquitecto de soluciones | 
| Finalice el diagrama de estado futuro. | Finalice el diagrama que muestra el estado futuro (destino) de la aplicación. Este diagrama también se utilizará en la InfoSec solicitud.   | Especialista en migración, arquitecto de soluciones | 
| Cree solicitudes de servicio de firewall o grupo de seguridad. | Cree solicitudes de servicios de firewall o grupos de seguridad (para desarrollo, control de calidad, preproducción y producción). Si utiliza Cloud Migration Factory, incluya puertos específicos para la replicación si aún no están abiertos.  | Especialista en migración, arquitecto de soluciones y líder de redes | 
| Revise las solicitudes de firewall o grupos de seguridad (InfoSec equipo). | En este paso, el InfoSec equipo revisa y aprueba las solicitudes de firewall o grupo de seguridad que se crearon en el paso anterior.  | InfoSec ingeniero, especialista en migración | 
| Implemente las solicitudes de grupos de seguridad de firewall (equipo de red). | Una vez que el InfoSec equipo aprueba las solicitudes de firewall, el equipo de red implementa las reglas de inbound/outbound firewall requeridas.  | Especialista en migración, arquitecto de soluciones y líder de redes | 

### Fase de construcción (repita para los entornos de desarrollo/control de calidad, preproducción y producción)
<a name="build-phase-repeat-for-development-qa-pre-production-and-production-environments"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Importe los datos de la aplicación y del servidor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist.html)Si no utiliza Cloud Migration Factory, siga las instrucciones para configurar su herramienta de migración. | Especialista en migración, administrador de la nube | 
| Compruebe los requisitos previos de los servidores de origen. | Conéctese con los servidores de origen incluidos en el ámbito para comprobar los requisitos previos, como el puerto TCP 1500, el puerto TCP 443, el espacio libre del volumen raíz, la versión de .NET Framework y otros parámetros. Estos son necesarios para la replicación. Para obtener información adicional, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#prerequisites-2). | Especialista en migración, administrador de la nube | 
| Cree una solicitud de servicio para instalar agentes de replicación.  | Cree una solicitud de servicio para instalar los agentes de replicación en los servidores incluidos para fines de desarrollo, control de calidad, preproducción o producción. | Especialista en migración, administrador de la nube | 
| Instale los agentes de replicación. | Instale los agentes de replicación en los servidores de origen incluidos en los equipos de desarrollo, control de calidad, preproducción o producción. Para obtener información adicional, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#install-the-replication-agents). | Especialista en migración, administrador de la nube | 
| Inserte los scripts posteriores al lanzamiento. | Application Migration Service admite scripts posteriores al lanzamiento para ayudarlo a automatizar las actividades a nivel del sistema operativo, como la instalación o desinstalación del software después de lanzar las instancias de destino. Este paso envía los scripts posteriores al lanzamiento a equipos Windows o Linux, en función de los servidores identificados para la migración. Para obtener instrucciones, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#push-the-post-launch-scripts). | Especialista en migración, administrador de la nube | 
| Verificar el estado de la replicación. | Confirme automáticamente el estado de la replicación de los servidores de origen incluidos en el ámbito de aplicación mediante el script proporcionado. El script se repite cada cinco minutos hasta que el estado de todos los servidores de origen de la oleada en cuestión cambie a **Correcto**. Para obtener instrucciones, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#verify-the-replication-status). | Especialista en migración, administrador de la nube | 
| Cree el usuario administrador. | Es posible que se necesite un administrador local o un usuario de sudo en los equipos de origen para solucionar cualquier problema tras la transición de la migración de los servidores de origen incluidos en el ámbito a AWS. El equipo de migración utiliza este usuario para iniciar sesión en el servidor de destino cuando no se puede acceder al servidor de autenticación (por ejemplo, el servidor DC o LDAP). Para obtener instrucciones para este paso, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/step4.html#add-a-user-to-the-admin-group). | Especialista en migración, administrador de la nube | 
| Valide la plantilla de lanzamiento. | Valide los metadatos del servidor para asegurarse de que funcionan correctamente y que no contienen datos no válidos. Este paso valida los metadatos de prueba y de transición. Para obtener instrucciones, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#validate-launch-template-1). | Especialista en migración, administrador de la nube | 

### Fase de prueba (repita para los entornos de desarrollo/control de calidad, preproducción y producción)
<a name="test-phase-repeat-for-development-qa-pre-production-and-production-environments"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una solicitud de servicio. | Cree una solicitud de servicio para que el equipo de infraestructura y otros equipos realicen la transición de las aplicaciones a las instancias de desarrollo, control de calidad, preproducción o producción.  | Especialista en migración, administrador de la nube | 
| Configure un equilibrador de carga (opcional). | Configure los equilibradores de carga necesarios, como un [Equilibrador de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) o un [equilibrador de cargas F5](https://www.f5.com/resources/white-papers/load-balancing-101-nuts-and-bolts) con iRules. | Especialista en migración, administrador de la nube | 
| Inicie instancias para realizar pruebas. | Inicie todos los equipos de destino de una oleada determinada en Application Migration Service en modo de prueba. Para obtener información adicional, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#launch-instances-for-testing). | Especialista en migración, administrador de la nube | 
| Verifique el estado de la instancia de destino. | Verifique el estado de la instancia de destino comprobando el proceso de arranque de todos los servidores de origen incluidos en la misma oleada. Las instancias de destino pueden tardar hasta 30 minutos en iniciarse. Para comprobar el estado manualmente, inicia sesión en la EC2 consola de Amazon, busca el nombre del servidor de origen y revisa la columna **Comprobación de estado**. Las **dos comprobaciones de estado aprobadas** indican que la instancia está en buen estado desde el punto de vista de la infraestructura. | Especialista en migración, administrador de la nube | 
| Modifique las entradas de DNS. | Modifique las entradas del sistema de nombres de dominio (DNS). (Utilice `resolv.conf` o `host.conf` para un entorno Microsoft Windows). Configura cada EC2 instancia para que apunte a la nueva dirección IP de este host.Asegúrese de que no haya conflictos de DNS entre los servidores en las instalaciones y los de la nube de AWS. Este paso y los siguientes son opcionales, según el entorno en el que esté alojado el servidor. | Especialista en migración, administrador de la nube | 
| Pruebe la conectividad con los hosts de back-end desde EC2 las instancias. | Compruebe los inicios de sesión con las credenciales de dominio de los servidores migrados. | Especialista en migración, administrador de la nube | 
| Actualice el registro A de DNS. | Actualiza el registro A de DNS de cada host para que apunte a la nueva dirección IP EC2 privada de Amazon. | Especialista en migración, administrador de la nube | 
| Actualice el registro CNAME de DNS. | Actualice el registro CNAME del DNS virtual IPs (nombres de los balanceadores de carga) para que apunte al clúster de los servidores web y de aplicaciones. | Especialista en migración, administrador de la nube | 
| Pruebe la aplicación en los entornos aplicables. | Inicie sesión en la nueva EC2 instancia y pruebe la aplicación en los entornos de desarrollo, control de calidad, preproducción y producción. | Especialista en migración, administrador de la nube | 
| Marque como listo para la transición. | Cuando se hayan completado las pruebas, cambie el estado del servidor de origen para indicar que está listo para la transición, de modo que los usuarios puedan iniciar una instancia de transición. Para obtener instrucciones, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#mark-as-ready-for-cutover). | Especialista en migración, administrador de la nube | 

### Fase de transición
<a name="cutover-phase"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un plan de implementación de producción. | Cree un plan de implementación de producción (que incluya un plan de respaldo). | Especialista en migración, administrador de la nube | 
| Notifique al equipo de operaciones sobre el tiempo de inactividad. | Notifique al equipo de operaciones el programa de inactividad de los servidores. Es posible que algunos equipos necesiten un ticket de solicitud de cambio o de solicitud de servicio (CR/SR) para esta notificación. | Especialista en migración, administrador de la nube | 
| Replique los equipos de producción. | Replique los equipos de producción mediante Application Migration Service u otra herramienta de migración. | Especialista en migración, administrador de la nube | 
| Cierre los servidores de origen incluidos en el ámbito de aplicación. | Tras comprobar el estado de replicación de los servidores de origen, puede cerrar los servidores de origen para detener las transacciones de las aplicaciones cliente a los servidores. Puede cerrar los servidores de origen en la ventana de transición. Para obtener más información, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#shut-down-the-in-scope-source-servers). | Administrador de la nube | 
| Inicie instancias para la transición. | Inicie todos los equipos de destino de una oleada determinada en Application Migration Service en modo de transición. Para obtener más información, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#launch-instances-for-cutover). | Especialista en migración, administrador de la nube | 
| Recupere la instancia de destino. IPs | Recupera IPs las cuatro instancias de destino. Si la actualización del DNS es un proceso manual en su entorno, necesitará obtener las nuevas direcciones IP de todas las instancias de destino. Para obtener más información, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-command-prompt.html#retrieve-the-target-instance-ip). | Especialista en migración, administrador de la nube | 
| Verifique las conexiones del servidor de destino. | Tras actualizar los registros DNS, puede conectarse a las instancias de destino con el nombre de host para comprobar las conexiones. Para obtener más información, consulte la [Guía de implementación de Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-command-prompt.html#verify-the-target-server-connections). | Especialista en migración, administrador de la nube | 

## Recursos relacionados
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-resources"></a>
+ [¿Cómo migrar?](https://aws.amazon.com/migrate-modernize-build/cloud-migration/how-to-migrate/)
+ [Guía de implementación de AWS Cloud Migration Factory](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/solution-overview.html)
+ [Automatizar las migraciones de servidores a gran escala con Cloud Migration Factory](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-factory-cloudendure/welcome.html)
+ [Guía de usuario del servicio de migración de aplicaciones de AWS](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)
+ [Programa de aceleración de la migración AWS](https://aws.amazon.com/migration-acceleration-program/)

## Conexiones
<a name="attachments-8e2d2d72-30cc-4e98-8abd-ac2ef95e599b"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/8e2d2d72-30cc-4e98-8abd-ac2ef95e599b/attachments/attachment.zip)

# Configure una infraestructura Multi-AZ para una FCI Always On de SQL Server mediante Amazon FSx
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx"></a>

*Manish Garg, T.V.R.L. Phani Kumar Dadi, Nishad Mankar y RAJNEESH TYAGI, Amazon Web Services*

## Resumen
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-summary"></a>

Si necesita migrar rápidamente un gran número de instancias de clúster de conmutación por error Always On de Microsoft SQL Server (FCIs), este patrón puede ayudarle a minimizar el tiempo de aprovisionamiento. Al utilizar la automatización y Amazon FSx for Windows File Server, se reducen los esfuerzos manuales, los errores cometidos por el hombre y el tiempo necesario para implementar una gran cantidad de clústeres.

Este patrón configura la infraestructura de SQL Server FCIs en una implementación de zona de disponibilidad múltiple (Multi-AZ) en Amazon Web Services (AWS). El aprovisionamiento de los servicios de AWS necesarios para esta infraestructura se automatiza mediante CloudFormation plantillas de [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html). La instalación de SQL Server y la creación de nodos de clúster en una instancia de [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) se realizan mediante PowerShell comandos.

Esta solución utiliza un sistema de archivos [Amazon FSx para Windows](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) Multi-AZ de alta disponibilidad como testigo compartido para almacenar los archivos de la base de datos de SQL Server. El sistema de FSx archivos de Amazon y las instancias de EC2 Windows que alojan SQL Server se unen al mismo dominio de AWS Directory Service para Microsoft Active Directory (AWS Managed Microsoft AD).

## Requisitos previos y limitaciones
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Un usuario de AWS con permisos suficientes para aprovisionar recursos mediante CloudFormation plantillas de AWS
+ AWS Directory Service para Microsoft Active Directory
+ Credenciales en AWS Secrets Manager para autenticarse en AWS Managed Microsoft AD en un par clave-valor:
  + `ADDomainName`: <Nombre del dominio>
  + `ADDomainJoinUserName`: <Nombre-de-usuario>
  + `ADDomainJoinPassword`: <Domain User Password>
  + `TargetOU`: <Target OU Value>
**nota**  
Utilizará el mismo nombre clave en la automatización de AWS Systems Manager para la actividad de unión a AWS Managed Microsoft AD.
+ Archivos multimedia de SQL Server para la instalación de SQL Server y la creación de cuentas de servicio o dominio de Windows, que se utilizarán durante la creación del clúster
+ Una nube privada virtual (VPC), con dos subredes públicas en zonas de disponibilidad independientes, dos subredes privadas en las zonas de disponibilidad, una puerta de enlace de Internet, puertas de enlace NAT, asociaciones de tablas de enrutamiento y un servidor Jump

**Versiones de producto**
+ Microsoft Windows Server 2012 R2 y Microsoft SQL Server 2016

## Arquitectura
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-architecture"></a>

**Pila de tecnología de origen**
+ SQL Server local con el FCIs uso de una unidad compartida

**Pila de tecnología de destino**
+  EC2 Instancias de AWS
+ Servidor FSx de archivos Amazon para Windows
+ Manual de procedimiento de Automatización de AWS Systems Manager
+ Configuraciones de red (VPC, subredes, puerta de enlace de Internet, puertas de enlace NAT, servidor de salto, grupos de seguridad)
+ AWS Secrets Manager
+ AWS Managed Microsoft AD
+ Amazon EventBridge
+ AWS Identity y Access Management (IAM)

**Arquitectura de destino**

El siguiente diagrama muestra una cuenta de AWS en una sola región de AWS, con una VPC que incluye dos zonas de disponibilidad, dos subredes públicas con puertas de enlace NAT, un servidor de salto en la primera subred pública, dos subredes privadas, cada una con una EC2 instancia para un nodo de SQL Server en un grupo de seguridad de nodos, y un sistema de FSx archivos de Amazon que se conecta a cada uno de los nodos de SQL Server. También se incluyen AWS Directory Service EventBridge, Amazon, AWS Secrets Manager y AWS Systems Manager.

![\[Arquitectura multi-AZ con recursos en subredes públicas y privadas, con grupos de seguridad de nodos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f09c0164-be2d-4665-a574-7ec29fd25082/images/543829a9-e130-4542-9c4e-7518c6cbe967.png)


**Automatización y escala**
+ Puede usar AWS Systems Manager para unirse a AWS Managed Microsoft AD y realizar la instalación de SQL Server.

## Tools (Herramientas)
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-tools"></a>

**Servicios 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 Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) ofrece varias formas de utilizar Microsoft Active Directory (AD) con otros servicios de AWS, como Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) para SQL Server y FSx Amazon para Windows File Server.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [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, las funciones de AWS Lambda, los puntos de conexión de invocación HTTP que utilizan destinos de API o los buses de eventos de otras cuentas de AWS.
+ [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 Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) le permite reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [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.

**Otras herramientas**
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)es un programa de administración de automatización y configuración de Microsoft que se ejecuta en Windows, Linux y macOS. Este patrón utiliza PowerShell scripts.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [aws-windows-failover-cluster-automation](https://github.com/aws-samples/aws-windows-failover-cluster-automation).

## Prácticas recomendadas
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-best-practices"></a>
+ Las funciones de IAM que se utilizan para implementar esta solución deben cumplir con el principio de privilegios mínimos. Para obtener más información, consulte [la documentación de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Siga las [prácticas CloudFormation recomendadas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html).

## Epics
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la CloudFormation pila Systems Manager. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps, DevOps ingeniero | 
| Implemente la pila de infraestructuras. | Tras implementar correctamente la pila de Systems Manager, cree la `infra` pila, que incluye los nodos de EC2 instancia, los grupos de seguridad, el sistema de archivos Amazon FSx for Windows File Server y la función de IAM.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps, DevOps ingeniero | 

### Configure el Windows SQL Server Always On FCI
<a name="set-up-the-windows-sql-server-always-on-fci"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale las herramientas de Windows. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps, DevOps ingeniero, administrador de bases de datos | 
| Preconfigure los objetos informáticos del clúster en los servicios de dominio de Active Directory. | Para preconfigurar el objeto de nombre de clúster (CNO) en los Servicios de dominio de Active Directory (AD DS) y preconfigurar un objeto de equipo virtual (VCO) para una función agrupada, siga las instrucciones de [Documentación de Windows Server.](https://learn.microsoft.com/en-us/windows-server/failover-clustering/prestage-cluster-adds) | AWS DevOps, administrador de bases de datos, ingeniero DevOps  | 
| Cree el WSFC. | Para crear el Clúster de Conmutación por error de Windows Server (WSFC), haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps, administrador de bases de datos, ingeniero DevOps  | 
| Instale el clúster de conmutación por error de SQL Server. | Una vez configurado el clúster de WSFC, instale el clúster de SQL Server en la instancia principal (node1).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html)<pre>D:\setup.exe /Q  `<br />/ACTION=InstallFailoverCluster `<br />/IACCEPTSQLSERVERLICENSETERMS `<br />/FEATURES="SQL,IS,BC,Conn"  `<br />/INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"  `<br />/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"  `<br />/RSINSTALLMODE="FilesOnlyMode"  `<br />/INSTANCEID="MSSQLSERVER" `<br />/INSTANCENAME="MSSQLSERVER"  `<br />/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)"  `<br />/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>"  `<br />/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>"  `<br />/INSTANCEDIR="C:\Program Files\Microsoft SQL Server"  `<br />/ENU="True"  `<br />/ERRORREPORTING=0  `<br />/SQMREPORTING=0  `<br />/SAPWD="<Domain User password>" `<br />/SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS"  `<br />/SQLSYSADMINACCOUNTS="<domain\username>" `<br />/SQLSVCACCOUNT="<domain\username>"  /SQLSVCPASSWORD="<Domain User password>" `<br />/AGTSVCACCOUNT="<domain\username>"  /AGTSVCPASSWORD="<Domain User password>" `<br />/ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>"  `<br />/FTSVCACCOUNT="NT Service\MSSQLFDLauncher"  `<br />/INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server"  `<br />/SQLUSERDBDIR="\\<FSX DNS name>\share\data"  `<br />/SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" `<br />/SQLTEMPDBDIR="T:\tempdb"  `<br />/SQLTEMPDBLOGDIR="T:\log"  `<br />/SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" `<br />/SkipRules=Cluster_VerifyForErrors `<br />/INDICATEPROGRESS</pre> | AWS DevOps, administrador de bases de datos, ingeniero DevOps  | 
| Agregue un nodo secundario al clúster. | Para añadir SQL Server al nodo secundario (nodo 2), ejecute el siguiente PowerShell comando.<pre>D:\setup.exe /Q  `<br />/ACTION=AddNode `<br />/IACCEPTSQLSERVERLICENSETERMS `<br />/INSTANCENAME="MSSQLSERVER"  `<br />/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `<br />/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" `<br />/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `<br />/CONFIRMIPDEPENDENCYCHANGE=1 `<br />/SQLSVCACCOUNT="<domain\username>"  /SQLSVCPASSWORD="<Domain User password>" `<br />/AGTSVCACCOUNT="domain\username>"  /AGTSVCPASSWORD="<Domain User password>" `<br />/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `<br />/SkipRules=Cluster_VerifyForErrors `<br />/INDICATEPROGRESS</pre> | AWS DevOps, administrador de bases de datos, ingeniero DevOps  | 
| Pruebe la FCI de SQL Server. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | DBA, ingeniero DevOps  | 

### Eliminar recursos
<a name="clean-up-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Eliminación de recursos. | Para limpiar los recursos, utilice el proceso de eliminación de CloudFormation pilas de AWS:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html)Una vez que se haya completado la eliminación de la pila, la pila estará en el estado `DELETE_COMPLETE`. De forma predeterminada, las pilas en ese `DELETE_COMPLETE` estado no se muestran en la CloudFormation consola. Para mostrar las pilas eliminadas, debe cambiar el filtro de vista de pilas tal y como se describe en [Visualización de las pilas eliminadas en la consola de AWS CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-deleted-stacks.html).Si la eliminación ha fallado, la pila tendrá el estado `DELETE_FAILED`. Para obtener información sobre las soluciones, consulte los errores al [eliminar una pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-delete-stack-fails) en la CloudFormation documentación. | AWS DevOps, administrador de bases de datos, ingeniero DevOps  | 

## Resolución de problemas
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Fallo en CloudFormation la plantilla de AWS | Si la CloudFormation plantilla falla durante la implementación, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | 
| Error de conexión de AWS Managed Microsoft AD | Para solucionar los problemas de unión, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | 

## Recursos relacionados
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-resources"></a>
+ [Simplifique las implementaciones de alta disponibilidad de Microsoft SQL Server con Amazon FSx for Windows File Server](https://aws.amazon.com/blogs/storage/simplify-your-microsoft-sql-server-high-availability-deployments-using-amazon-fsx-for-windows-file-server/)
+ [Uso FSx para Windows File Server con Microsoft SQL Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/sql-server.html)

# Utilice las consultas de BMC Discovery para extraer datos de migración para planificar la migración
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning"></a>

*Ben Tailor-Hamblin, Emma Baldry, Simon Cunningham y Shabnam Khan, Amazon Web Services*

## Resumen
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-summary"></a>

Esta guía proporciona ejemplos de consultas y pasos que le ayudarán a extraer datos de su infraestructura y aplicaciones en las instalaciones mediante BMC Discovery. El patrón le muestra cómo utilizar las consultas de BMC Discovery para analizar su infraestructura y extraer información sobre el software, los servicios y las dependencias. Los datos extraídos son necesarios para las fases de evaluación y movilización de una migración a gran escala a la nube de Amazon Web Services (AWS). Puede utilizar estos datos para tomar decisiones críticas sobre qué aplicaciones migrar juntas como parte de su plan de migración.

## Requisitos previos y limitaciones
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-prereqs"></a>

**Requisitos previos **
+ Una licencia para BMC Discovery (anteriormente BMC ADDM) o la versión de software como servicio (SaaS) de BMC Helix Discovery
+ La versión de BMC Discovery en las instalaciones o SaaS [instalada](https://docs.bmc.com/docs/discovery/221/installing-1050933835.html) 
**nota**  
En el caso de las versiones en las instalaciones de BMC Discovery, debe instalar la aplicación en una red cliente con acceso a todos los dispositivos de red y servidor que puedan migrarse a varios centros de datos. El acceso a la red del cliente debe proporcionarse de acuerdo con las instrucciones de instalación de la aplicación. Si es necesario escanear la información de Windows Server, debe configurar un dispositivo administrador de proxy de Windows en la red.
+ [Acceso a la red](https://docs.bmc.com/docs/discovery/221/network-ports-used-for-discovery-communications-1050933821.html) para permitir que la aplicación escanee dispositivos en todos los centros de datos, si utiliza BMC Helix Discovery

**Versiones de producto**
+ BMC Discovery 22.2 (12.5)
+ BMC Discovery 22.1 (12.4)
+ BMC Discovery 21.3 (12.3)
+ BMC Discovery 21.05 (12.2)
+ BMC Discovery 20.08 (12.1)
+ BMC Discovery 20.02 (12.0)
+ BMC Discovery 11.3
+ BMC Discovery 11.2
+ BMC Discovery 11.1
+ BMC Discovery 11.0
+ BMC Atrium Discovery 10.2
+ BMC Atrium Discovery 10.1
+ BMC Atrium Discovery 10.0

## Arquitectura
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-architecture"></a>

El siguiente diagrama muestra cómo los administradores de activos pueden utilizar las consultas de BMC Discovery para escanear aplicaciones modeladas por BMC en entornos SaaS y en las instalaciones.

![\[Arquitectura que utiliza BMC Discovery para extraer información sobre el software, los servicios y las dependencias.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5e549882-8deb-4459-8891-e39bbf80e320/images/0ebb3e68-5828-45aa-86f4-c741c7b6cd94.jpeg)


El diagrama muestra el siguiente flujo de trabajo: un administrador de activos utiliza BMC Discovery o BMC Helix Discovery para escanear las instancias de bases de datos y software que se ejecutan en servidores virtuales alojados en varios servidores físicos. La herramienta puede modelar aplicaciones con componentes que abarquen varios servidores físicos y virtuales.

**Pila de tecnología**
+ BMC Discovery
+ BMC Helix Discovery

## Tools (Herramientas)
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-tools"></a>
+ [BMC Discovery](https://docs.bmc.com/xwiki/bin/view/IT-Operations-Management/Discovery/BMC-Discovery/) es una herramienta de detección de centros de datos que le ayuda a descubrir automáticamente su centro de datos.
+ [BMC Helix Discovery](https://www.bmc.com/it-solutions/bmc-helix-discovery.html) es un sistema de descubrimiento y modelado de dependencias basado en SaaS que le ayuda a modelar dinámicamente sus activos de datos y sus dependencias.

## Prácticas recomendadas
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-best-practices"></a>

Se recomienda mapear los datos de las aplicaciones, las dependencias y la infraestructura al migrar a la nube. El mapeo le ayuda a comprender la complejidad de su entorno actual y las dependencias entre los distintos componentes.

La información sobre los activos que proporcionan estas consultas es importante por varios motivos:

1. **Planificación**: comprender las dependencias entre los componentes le ayuda a planificar el proceso de migración de forma más eficaz. Por ejemplo, es posible que primero deba migrar algunos componentes para asegurarse de que otros se puedan migrar correctamente.

1. **Evaluación de riesgos**: mapear las dependencias entre los componentes puede ayudarle a identificar cualquier riesgo o problema potencial que pueda surgir durante el proceso de migración. Por ejemplo, es posible que descubra que algunos componentes se basan en tecnologías anticuadas o no compatibles, lo que podría provocar problemas en la nube.

1. **Arquitectura de nube**: mapear los datos de sus aplicaciones e infraestructura también puede ayudarlo a diseñar una arquitectura de nube adecuada que satisfaga las necesidades de su organización. Por ejemplo, es posible que necesite diseñar una arquitectura de varios niveles para cumplir con los requisitos de alta disponibilidad o escalabilidad.

En general, el mapeo de los datos de las aplicaciones, las dependencias y la infraestructura es un paso crucial en el proceso de migración a la nube. El ejercicio de mapeo puede ayudarlo a comprender mejor su entorno actual, identificar cualquier problema o riesgo potencial y diseñar una arquitectura de nube adecuada.

## Epics
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-epics"></a>

### Identifique y evalúe las herramientas de descubrimiento
<a name="identify-and-evaluate-discovery-tooling"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique a los propietarios de ITSM. | Identifique a los propietarios de la administración de servicios de TI (ITSM) (por lo general, contactando con los equipos de soporte operativo). | Líder de migración | 
| Visitar CMDB.  | Identifique la cantidad de bases de datos de administración de la configuración (CMDBs) que contienen información de activos y, a continuación, identifique las fuentes de esa información. | Líder de migración | 
| Identifique las herramientas de descubrimiento y compruebe el uso de BMC Discovery. | Si su organización utiliza BMC Discovery para enviar datos sobre su entorno a la herramienta CMDB, compruebe el alcance y la cobertura de sus escaneos. Por ejemplo, compruebe si BMC Discovery escanea todos los centros de datos y si los servidores de acceso están ubicados en zonas perimetrales. | Líder de migración | 
| Compruebe el nivel de modelado de la aplicación. | Compruebe si las aplicaciones están modeladas en BMC Discovery. Si no es así, recomiende utilizar la herramienta BMC Discovery para modelar qué instancias de software en ejecución proporcionan una aplicación y un servicio empresarial. | Ingeniero de migraciones, líder de migración | 

### Extracción de datos de infraestructura
<a name="extract-infrastructure-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Extraiga datos en servidores físicos y virtuales. | Para extraer datos de los servidores físicos y virtuales escaneados por BMC Discovery, utilice [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html) para ejecutar la siguiente consulta:<pre>search Host show key as 'Serverid', virtual, name as 'HOSTNAME', os_type as 'osName', os_version as 'OS Version', num_logical_processors as 'Logical Processor Counts', cores_per_processor as 'Cores per Processor', logical_ram as 'Logical RAM', #Consumer:StorageUse:Provider:DiskDrive.size as 'Size'</pre>Puede utilizar los datos extraídos para determinar los tamaños de instancia adecuados para la migración. | Ingeniero de migraciones, líder de migración | 
| Extraiga datos de aplicaciones modeladas. | Si sus aplicaciones están modeladas en BMC Discovery, puede extraer datos sobre los servidores que ejecutan el software de la aplicación. Para obtener los nombres de los servidores, utilice [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html) para ejecutar la siguiente consulta:<pre>search SoftwareInstance show key as 'ApplicationID', #RunningSoftware:HostedSoftware:Host:Host.key as 'ReferenceID', type, name</pre>Las aplicaciones se modelan en BMC Discovery mediante un conjunto de instancias de software en ejecución. La aplicación depende de todos los servidores que ejecutan el software de la aplicación. | Propietario de la aplicación BMC Discovery | 
| Extraiga datos de bases de datos. | Para obtener una lista de todas las bases de datos escaneadas y los servidores en los que se ejecutan estas bases de datos, utilice [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html) para ejecutar la siguiente consulta:<pre>search Database show key as 'Key', name, type as 'Source Engine Type', #Detail:Detail:ElementWithDetail:SoftwareInstance.name as 'Software Instance', #Detail:Detail:ElementWithDetail:SoftwareInstance.product_version as 'Product Version', #Detail:Detail:ElementWithDetail:SoftwareInstance.edition as 'Edition', #Detail:Detail:ElementWithDetail:SoftwareInstance.#RunningSoftware:HostedSoftware:Host:Host.key as 'ServerID'</pre> | Propietario de la aplicación | 
| Extraiga datos de la comunicación con el servidor. | Para obtener información sobre todas las comunicaciones de red entre servidores recopilada por BMC Discovery a partir de los registros históricos de comunicaciones de red, utilice [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html) para ejecutar la siguiente consulta:<pre>search Host<br /> TRAVERSE InferredElement:Inference:Associate:DiscoveryAccess<br /> TRAVERSE DiscoveryAccess:DiscoveryAccessResult:DiscoveryResult:NetworkConnectionList<br /> TRAVERSE List:List:Member:DiscoveredNetworkConnection<br /> PROCESS WITH networkConnectionInfo</pre> | Propietario de la aplicación BMC Discovery | 
| Extraiga datos sobre el descubrimiento de aplicaciones. | Para obtener información sobre las dependencias de las aplicaciones, utilice [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html) para ejecutar la siguiente consulta:<pre>search SoftwareInstance show key as 'SRC App ID', #Dependant:Dependency:DependedUpon:SoftwareInstance.key as 'DEST App ID'</pre> | Propietario de la aplicación BMC Discovery | 
| Extraiga datos sobre servicios empresariales. | Para extraer datos sobre los servicios empresariales proporcionados por los hosts, utilice [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html) para ejecutar la siguiente consulta:<pre>search Host show name, #Host:HostedSoftware:AggregateSoftware:BusinessService.name as 'Name'</pre> | Propietario de la aplicación BMC Discovery | 

## Resolución de problemas
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| No se puede ejecutar una consulta o contiene columnas sin rellenar. | Revise los registros de activos de BMC Discovery y determine qué campos necesita. A continuación, sustituya estos campos en la consulta mediante [Generador de consultas](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html). | 
| Los detalles de un activo dependiente no se rellenan. | Es probable que esto se deba a los permisos de acceso o a la conectividad de la red. Es posible que la herramienta de detección no tenga los permisos necesarios para acceder a determinados activos, especialmente si se encuentran en redes o entornos diferentes.Le recomendamos que colabore estrechamente con expertos en la materia de descubrimiento para garantizar que se identifiquen todos los activos relevantes. | 

## Recursos relacionados
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-resources"></a>

**Referencias**
+ [Derechos de BMC Discovery Licensing](https://docs.bmc.com/docs/discovery/bmc-discovery-licensing-entitlement-531336348.html) (documentación de BMC)
+ [Características y componentes de BMC Discovery](https://docs.bmc.com/docs/discovery/221/bmc-discovery-features-and-components-1052418000.html) (documentación de BMC)
+ [Guía del usuario de BMC Discovery](https://docs.bmc.com/xwiki/bin/view/IT-Operations-Management/Discovery/BMC-Discovery/) (documentación de BMC)
+ [Búsqueda de datos (en BMC Discovery)](https://docs.bmc.com/docs/discovery/120/searching-for-data-911457232.html) (documentación de BMC)
+ [Descubrimiento y análisis de carteras para la migración](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-portfolio-discovery/welcome.html) (Recomendaciones de AWS)

**Tutoriales y videos**
+ [BMC Discovery: seminario web sobre las mejores prácticas en materia de consultas de informes (primera parte) (YouTube)](https://www.youtube.com/watch?v=iwXy6x40kO8)

# Reubicar
<a name="migration-relocate-pattern-list"></a>

**Topics**
+ [Migre una base de datos de Amazon RDS for Oracle a Cuenta de AWS otra Región de AWS y AWS DMS utilícela para la replicación continua](migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication.md)
+ [Migración de una instancia de base de datos de Amazon RDS a otra VPC o cuenta](migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.md)
+ [Migración de un clúster de Amazon Redshift a una región de AWS en China](migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china.md)
+ [Transportar bases de datos PostgreSQL entre dos instancias de base de datos de Amazon RDS utilizando pg\$1transport](transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.md)

# Migre una base de datos de Amazon RDS for Oracle a Cuenta de AWS otra Región de AWS y AWS DMS utilícela para la replicación continua
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication"></a>

*Durga Prasad Cheepuri y Eduardo Valentim, Amazon Web Services*

## Resumen
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-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. | 
| --- |

Este patrón le guía por los pasos para migrar una base de datos fuente de Amazon Relational Database Service (Amazon RDS) para Oracle a una y diferente. Cuenta de AWS Región de AWS El patrón utiliza una instantánea de base de datos para una carga completa de datos única y habilita AWS Database Migration Service (AWS DMS) para una replicación continua.

## Requisitos previos y limitaciones
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS que contiene la base de datos Amazon RDS for Oracle de origen, que se ha cifrado con una clave AWS Key Management Service distinta de la predeterminada AWS KMS()
+ Un activo Cuenta de AWS en una base de datos Región de AWS diferente a la de origen, para usarlo en la base de datos Amazon RDS for Oracle de destino
+ Emparejamiento de nube privada virtual (VPC) entre el origen y el destino VPCs
+ Familiaridad con el [uso de una base de datos Oracle como fuente de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ Familiaridad con el [uso de una base de datos Oracle como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html) 

**Versiones de producto**
+ Versiones de Oracle 11g (versiones 11.2.0.3.v1 y posteriores) hasta 12.2, y 18c. Para ver la lista más reciente de versiones y ediciones compatibles, consulte la AWS documentación sobre el [uso de una base de datos Oracle como fuente AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) [y con el uso de una base de AWS DMS datos Oracle como destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html). Para ver las versiones de Oracle compatibles con Amazon RDS, consulte [Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html). 

## Arquitectura
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-architecture"></a>

**Pilas de tecnología de origen y destino**
+ Instancia de base de datos de Amazon RDS para Oracle

![\[Cuenta de AWS de origen que se conecta a la cuenta de AWS de destino que contiene las regiones de origen y destino\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5ecd5359-884e-455c-b5d0-ef08eda2ea1f/images/e17fa7fe-d924-4f35-9707-b93572fa1227.png)


**Arquitectura de replicación continua**

![\[Base de datos en una EC2 instancia que se conecta mediante el emparejamiento de VPC a una instancia de replicación y Amazon RDS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5ecd5359-884e-455c-b5d0-ef08eda2ea1f/images/b60b3500-5d29-487a-bbab-0ae9f3f386aa.png)


## Tools (Herramientas)
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-tools"></a>

**Herramientas utilizadas para la carga completa de datos de una sola vez**
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) crea una instantánea del volumen de almacenamiento de la instancia de base de datos; para ello, hace una copia de seguridad de toda la instancia de base de datos y no solo de las bases de datos individuales. Cuando se crea una instantánea de base de datos, se debe identificar la instancia de base de datos cuya copia de seguridad se va a realizar y, a continuación, se debe asignar un nombre a la instantánea de base de datos para poder restaurarla posteriormente. El tiempo que tarda en crearse una instantánea varía en función del tamaño de sus bases de datos. Debido a que la instantánea incluye todo el volumen de almacenamiento, el tamaño de los archivos (por ejemplo, archivos temporales) también afecta la cantidad de tiempo que tarda en crearse la instantánea. Para obtener más información acerca de la instantáneas de base de datos, consulte [crear una instantánea de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html) en la documentación de Amazon RDS. 
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) crea una**** clave para el**** cifrado de**** Amazon RDS. Al crear una instancia de base de datos cifrada, también puede proporcionar el identificador de [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)clave de su clave de cifrado. Si no especifica un identificador de clave de [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html), Amazon RDS utiliza la clave de cifrado predeterminada para la nueva instancia de base de datos. [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) crea la clave de cifrado predeterminada para su Cuenta de AWS. Cuenta de AWS Tiene una clave de cifrado predeterminada diferente para cada una de ellas Región de AWS. En este patrón, la instancia de base de datos de Amazon RDS debe cifrarse con la clave de [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) no predeterminada. Para obtener más información sobre el uso de claves de [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) para el cifrado de Amazon RDS, consulte [Cifrado de recursos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html) en la documentación de Amazon RDS.

**Herramientas utilizadas para la replicación continua**
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) se utiliza para replicar los cambios en curso y para mantener sincronizadas las bases de datos de origen y destino. Para obtener más información sobre AWS DMS su uso para la replicación continua, consulte [Trabajar con una instancia de AWS DMS replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html) en la AWS DMS documentación. 

## Epics
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-epics"></a>

### Configure su fuente Cuenta de AWS
<a name="configure-your-source-aws-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare la instancia de base de datos de origen. | Ejecute la instancia de base de datos Amazon RDS para Oracle en modo ARCHIVELOG y defina el período de retención. Para obtener más información, consulte [Trabajar con una base de datos Oracle AWS gestionada como fuente de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Amazon-Managed). | Administrador de base de datos | 
| Configure el registro complementario para la instancia de base de datos de Oracle de origen. | Configure el registro complementario a nivel de base de datos y de tabla para la instancia de base de datos de Amazon RDS para Oracle. Para obtener más información, consulte [Trabajar con una base de datos Oracle AWS gestionada como fuente de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Amazon-Managed). | Administrador de base de datos | 
| Actualice la política AWS KMS clave de la cuenta de origen. | Actualice la política de AWS KMS claves en el origen Cuenta de AWS para permitir que el destino Cuenta de AWS utilice la AWS KMS clave cifrada de Amazon RDS. Para obtener más información, consulte la [documentación de AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts). | SysAdmin | 
| Cree una instantánea manual de Amazon RDS de la instancia de base de datos de origen. |  | AWS IAM user | 
| Compartir la instantánea manual cifrada de Amazon RDS con la Cuenta de AWS de destino. | Para obtener más información, consulte [Uso compartido de una instantánea de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html). | Usuario de AWS IAM | 

### Configure su objetivo Cuenta de AWS
<a name="configure-your-target-aws-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Adjunte una política.  | En el destino Cuenta de AWS, adjunte una política AWS Identity and Access Management (IAM) al usuario raíz de IAM para que este pueda copiar una instantánea de base de datos cifrada con la clave compartida. AWS KMS  | SysAdmin | 
| Cambiar a la Región de AWS de origen. |  | Usuario de AWS IAM | 
| Copie la instantánea compartida. | En la consola de Amazon RDS, en el panel **Instantáneas**, elija **Compartido conmigo** y, a continuación, seleccione la instantánea compartida. Copie la instantánea en la Región de AWS misma base de datos de origen utilizando el Amazon Resource Name (ARN) como AWS KMS clave utilizada por la base de datos de origen. Para obtener más información, consulte [Copia de una instantánea de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html). | Usuario de AWS IAM | 
| Cambie al destino Región de AWS y cree una AWS KMS clave nueva. |  | Usuario de AWS IAM | 
| Copie la instantánea. | Cambiar a la Región de AWS de origen. En la consola de Amazon RDS, en el panel **Instantáneas**, elija **De mi propiedad** y, a continuación, seleccione la instantánea copiada. Copie la instantánea en el objetivo Región de AWS mediante la AWS KMS clave del nuevo objetivo Región de AWS. | Usuario de AWS IAM | 
| Restaurare la instantánea. | Cambia al objetivo Región de AWS. En la consola de Amazon RDS, en el panel **Instantáneas**, elija **De mi propiedad**. Seleccione la instantánea copiada y restáurela en una instancia de base de datos de Amazon RDS para Oracle. Para obtener más información, consulte [Restauración a una instancia de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). | Usuario de AWS IAM | 

### Prepare la base de datos de origen para la replicación continua
<a name="prepare-your-source-database-for-ongoing-replication"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un usuario de Oracle con los permisos adecuados. | Crear un usuario de Oracle con los privilegios obligatorios para Oracle como origen para AWS DMS. Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html). | Administrador de base de datos | 
| Configure la base de datos de origen para Oracle LogMiner u Oracle Binary Reader. |  | Administrador de base de datos | 

### Prepare la base de datos de destino para la replicación continua
<a name="prepare-your-target-database-for-ongoing-replication"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un usuario de Oracle con los permisos adecuados. | Cree un usuario de Oracle con los privilegios obligatorios para Oracle como destino de AWS DMS. Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html#CHAP_Target.Oracle.Privileges). | Administrador de base de datos | 

### Cree AWS DMS componentes
<a name="create-dms-components"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación en el destino Región de AWS. | Cree una instancia de replicación en la VPC del destino. Región de AWS Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.ReplicationInstance). | Usuario de AWS IAM | 
| Cree puntos de conexión de origen y destino con el cifrado necesario y pruebe las conexiones. | Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Endpoints). | Administrador de base de datos | 
| Cree tareas de replicación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication.html)Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Tasks). | Usuario de IAM | 
| Inicie las tareas y monitorícelas. | Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html). | Usuario de AWS IAM | 
| Habilite la validación de la tarea si es necesario. | Tenga en cuenta que habilitar la validación afectará al rendimiento de la replicación. Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html). | Usuario de AWS IAM | 

## Recursos relacionados
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-resources"></a>
+ [Cambiar una política clave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts)
+ [Crear una instantánea manual de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)
+ [Crear una instantánea manual de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)
+ [Copia de una instantánea](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html) 
+ [Restauración desde una instantánea de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html) 
+ [Empezando con AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) 
+ [Uso de una base de datos Oracle como fuente para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) 
+ [Utilizar una base de datos Oracle como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html) 
+ [AWS DMS configuración mediante interconexión de VPC](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer) 
+ [¿Cómo comparto instantáneas de bases de datos manuales de Amazon RDS o instantáneas de clústeres de bases de datos con otra Cuenta de AWS?](https://aws.amazon.com/premiumsupport/knowledge-center/rds-snapshots-share-account/) (Artículo del centro de conocimientos de AWS) 

# Migración de una instancia de base de datos de Amazon RDS a otra VPC o cuenta
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account"></a>

*Dhrubajyoti Mukherjee, Amazon Web Services*

## Resumen
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-summary"></a>

Este patrón proporciona una guía para migrar una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) de una nube privada virtual (VPC) a otra en la misma cuenta de AWS, o bien de una cuenta de AWS a otra cuenta de AWS.

Este patrón resulta útil si quiere migrar sus instancias de base de datos de Amazon RDS a otra VPC o cuenta por motivos de seguridad o de separación (por ejemplo, cuando quiere colocar la pila de aplicaciones y la base de datos en VPCs un lugar diferente). 

La migración de una instancia de base de datos a otra cuenta de AWS conlleva ciertos pasos, como tomar una instantánea manual, compartirla y restaurar la instantánea en la cuenta de destino. En función de los cambios en la base de datos y de las tasas de transacción, este proceso puede llevar mucho tiempo. También provoca un tiempo de inactividad en la base de datos, por lo que debe planificar la migración con antelación. Considere una estrategia de blue/green implementación para minimizar el tiempo de inactividad. Como alternativa, puede evaluar AWS Data Migration Service (AWS DMS) para minimizar el tiempo de inactividad provocado por el cambio. Sin embargo, este patrón no aborda dicha opción. Para obtener más información, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html).

## Requisitos previos y limitaciones
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Permisos de AWS Identity and Access Management (IAM) para la VPC, las subredes y la consola de Amazon RDS

**Limitaciones**
+ Los cambios en una VPC provocan el reinicio de la base de datos, lo que, a su vez, provoca interrupciones en las aplicaciones. Se recomienda que realice la migración durante las horas de menor actividad.
+ Limitaciones al migrar Amazon RDS a otra VPC:
  + La instancia de base de datos a migrar debe ser una instancia única y no estar en espera. No puede formar parte de un clúster.
  + Amazon RDS no debe estar en varias zonas de disponibilidad.
  + Amazon RDS no debe tener réplicas de lectura.
  + El grupo de subredes creado en la VPC de destino debe tener subredes en la zona de disponibilidad en la que se ejecuta la base de datos de origen.
+ Limitaciones al migrar Amazon RDS a otra cuenta de AWS:
  + Actualmente no es posible compartir instantáneas cifradas con la clave de servicio predeterminada de Amazon RDS.

## Arquitectura
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-architecture"></a>

**Migración a una VPC en la misma cuenta de AWS**

El siguiente diagrama muestra el flujo de trabajo para migrar una instancia de base de datos de Amazon RDS a una VPC diferente en la misma cuenta de AWS.

![\[Flujo de trabajo para migrar una instancia de base de datos de Amazon RDS a una VPC diferente en la misma cuenta de AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/dabcee69-9cc6-47f9-9964-635e349caaaf/images/73e16544-6276-4f03-9ae2-42b8c7c20315.png)


Los pasos son los siguientes. Consulte la sección [Epics](#migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-epics) para obtener instrucciones detalladas.

1. Cree un grupo de subredes de base de datos en la VPC de destino. Un grupo de subredes de base de datos es una colección de subredes que se permiten especificar una VPC concreta al crear instancias de base de datos.

1. Configure la instancia de base de datos de Amazon RDS en la VPC de origen para usar el nuevo grupo de subredes de base de datos.

1. Aplique los cambios para migrar la base de datos de Amazon RDS a la VPC de destino.

**Migración a otra cuenta de AWS**

El siguiente diagrama muestra el flujo de trabajo para migrar una instancia de base de datos de Amazon RDS a una cuenta diferente de AWS.

![\[Flujo de trabajo para migrar una instancia de base de datos de Amazon RDS a una cuenta diferente de AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/dabcee69-9cc6-47f9-9964-635e349caaaf/images/5536e69e-3965-4ca2-8a0b-2573659b5f8f.png)


Los pasos son los siguientes. Consulte la sección [Epics](#migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-epics) para obtener instrucciones detalladas.

1. Acceda a la instancia de base de datos de Amazon RDS en la cuenta de AWS de origen.

1. Cree una instantánea de Amazon RDS en la cuenta de AWS de origen.

1. Comparta la instantánea de Amazon RDS con la cuenta de AWS de destino.

1. Acceda a la instantánea de Amazon RDS en la cuenta de AWS de destino.

1. Cree una instancia de base de datos de Amazon RDS en la cuenta de AWS de destino.

## Tools (Herramientas)
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-tools"></a>

**Servicios de AWS**
+ [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 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.

## Prácticas recomendadas
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-best-practices"></a>
+ Si el tiempo de inactividad de la base de datos al migrar una instancia de base de datos de Amazon RDS a otra cuenta le resulta un problema, le recomendamos que use [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html). La replicación de datos proporcionada por este servicio le permite reducir la interrupción a menos de cinco minutos.

## Epics
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-epics"></a>

### Migración a una VPC diferente en la misma cuenta de AWS
<a name="migrate-to-a-different-vpc-in-the-same-aws-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nueva VPC. | En la [consola de Amazon VPC](https://console.aws.amazon.com/vpc/), cree una nueva VPC y subredes con las propiedades y los rangos de direcciones IP deseados. Para obtener instrucciones detalladas, consulte la [documentación de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html). | Administrador | 
| Creación de un grupo de subredes de base de datos. | Abra la [consola de Amazon RDS](https://console.aws.amazon.com/rds/):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html)Para obtener más información, consulte la [ documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.CreateDBSubnetGroup). | Administrador | 
| Modifique la instancia de base de datos de Amazon RDS para usar el nuevo grupo de subredes. | Abra la consola de Amazon RDS:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html)Cuando se completa la migración a la VPC de destino, el grupo de seguridad predeterminado de la VPC de destino se asigna a la instancia de base de datos de Amazon RDS. Puede configurar un nuevo grupo de seguridad para esa VPC con las reglas de entrada y salida necesarias para su instancia de base de datos.También puede usar la interfaz de la línea de comandos de AWS (AWS CLI) para realizar la migración a la VPC de destino proporcionando explícitamente la ID del nuevo grupo de seguridad de la VPC. Por ejemplo:<pre>aws rds modify-db-instance \<br />    --db-instance-identifier testrds \<br />    --db-subnet-group-name new-vpc-subnet-group \<br />    --vpc-security-group-ids sg-idxxxx \<br />    --apply-immediately</pre> | Administrador | 

### Migración a una cuenta de AWS diferente
<a name="migrate-to-a-different-aws-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nueva VPC y un grupo de subredes en la cuenta de AWS de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html) | Administrador | 
| Cree una instantánea manual de la base de datos y compártala con la cuenta de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html) | Administrador | 
| Lance una nueva instancia de base de datos en Amazon RDS. | Lance una nueva instancia de base de datos de Amazon RDS a partir de la instantánea compartida en la cuenta de AWS de destino. Para obtener instrucciones, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html). | Administrador | 

## Recursos relacionados
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-resources"></a>
+ [Documentación de Amazon RDS](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)
+ [Documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)
+ [¿Cómo cambio la VPC de una instancia de base de datos de Amazon RDS?](https://aws.amazon.com/premiumsupport/knowledge-center/change-vpc-rds-db-instance/) (artículo de AWS Re:post)
+ [¿Cómo transfiero la propiedad de los recursos de Amazon RDS a otra cuenta de AWS?](https://aws.amazon.com/premiumsupport/knowledge-center/account-transfer-rds/) (artículo de AWS Re:post)
+ [¿Cómo comparto las instantáneas manuales de bases de datos de Amazon RDS o las instantáneas del clúster de base de datos Aurora con otra cuenta de AWS?](https://aws.amazon.com/premiumsupport/knowledge-center/rds-snapshots-share-account/) (artículo de AWS Re:post)
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)

# Migración de un clúster de Amazon Redshift a una región de AWS en China
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china"></a>

*Jing Yan, Amazon Web Services*

## Resumen
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-summary"></a>

Este patrón proporciona un step-by-step enfoque para migrar un clúster de Amazon Redshift a una región de AWS en China desde otra región de AWS.

Este patrón emplea comandos SQL para recrear todos los objetos de base de datos, y usa el comando UNLOAD para mover estos datos de Amazon Redshift a un bucket de Amazon Simple Storage Service (Amazon S3) en la región de origen. A continuación, los datos se migran a un bucket de S3 en la región de AWS en China. El comando COPY carga datos del bucket de S3 y los transfiere al clúster de Amazon Redshift de destino.

Actualmente, Amazon Redshift no admite características entre regiones, como la copia de instantáneas en regiones de AWS en China. Este patrón proporciona una forma de evitar esta limitación. También puede invertir los pasos de este patrón para migrar datos de una región de AWS en China a otra región de AWS.

## Requisitos previos y limitaciones
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-prereqs"></a>

*Requisitos previos *
+ Cuentas de AWS activas, tanto en una región de China como en una región de AWS fuera de China
+ Clústeres de Amazon Redshift existentes, tanto en una región de China como en una región de AWS fuera de China

*Limitaciones*
+ Esta es una migración sin conexión, por lo que el clúster de Amazon Redshift de origen no podrá realizar operaciones de escritura durante la migración.

## Arquitectura
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-architecture"></a>

**Pila de tecnología de origen**
+ Clúster de Amazon Redshift en una región de AWS fuera de China

**Pila de tecnología de destino**
+ Clúster de Amazon Redshift en una región de AWS en China

**Arquitectura de destino**

![\[Migración de los datos del clúster de Amazon Redshift de un bucket de S3 en una región de AWS a un bucket en una región de China.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f7d241d9-b700-406b-95a0-3e47e7f0fa60/images/b6016e3d-76db-4176-8f99-f804da94d3f2.png)


## Tools (Herramientas)
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-tools"></a>

**Herramientas**
+ [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 que ofrece escalabilidad, disponibilidad de datos, seguridad y resultados. Puede usar Amazon S3 para almacenar datos de Amazon Redshift y copiar datos de un bucket de S3 a Amazon Redshift.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html): Amazon Redshift es un servicio de almacenamiento de datos de varios petabytes totalmente administrado en la nube. 
+ [psql](https://www.postgresql.org/docs/8.4/app-psql.html): psql es un frontend de PostgreSQL basado en terminal. 

## Epics
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-epics"></a>

### Preparación para la migración en la región de origen
<a name="prepare-for-migration-in-the-source-region"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lance y configure una EC2 instancia en la región de origen. | Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Elastic Compute Cloud (Amazon EC2). En la barra de navegación de la parte superior de la pantalla, se muestra la región actual. Esta región no puede ser una región de AWS en China. En el panel de control de la EC2 consola de Amazon, selecciona «Lanzar instancia» y crea y configura una EC2 instancia. Importante: Asegúrese de que sus grupos de EC2 seguridad para las reglas de entrada permitan el acceso sin restricciones al puerto TCP 22 desde su máquina de origen. Para obtener instrucciones sobre cómo lanzar y configurar una EC2 instancia, consulta la sección «Recursos relacionados». | Administrador de base de datos, desarrollador | 
| Instale la herramienta psql. | Descargue e instale PostgreSQL. Amazon Redshift no proporciona la herramienta psql. Esta se instala con PostgreSQL. Para obtener más información sobre el uso de psql y la instalación de las herramientas de PostgreSQL, consulte la sección “Recursos relacionados”. | Administrador de base de datos | 
| Registre los detalles del clúster de Amazon Redshift.  | Abra la consola de Amazon Redshift y elija “Clústeres” en el panel de navegación. A continuación, seleccione el nombre del clúster de Amazon Redshift de la lista. En la pestaña “Propiedades”, en la sección “Configuraciones de la base de datos”, registre los valores de “Nombre de la base de datos” y “Puerto”. Abra la sección “Detalles de la conexión” y registre el valor de “Punto de conexión”, en el formato “endpoint:<puerto>/<nombrebasedatos>”. Importante: Asegúrese de que sus grupos de seguridad de Amazon Redshift para las reglas de entrada permitan el acceso sin restricciones al puerto TCP 5439 desde su instancia. EC2  | Administrador de base de datos | 
| Conecte psql al clúster de Amazon Redshift.  | En una línea de comandos, especifique la información de conexión ejecutando el comando “psql -h <puntoconexión> -U <idusuario> -d <nombrebasedatos> -p <puerto>”. Cuando se le solicite la contraseña de psql, ingrese la contraseña del usuario “<idusuario>”. Estará entonces conectado al clúster de Amazon Redshift y puede ingresar comandos de forma interactiva. | Administrador de base de datos | 
| Cree un bucket de S3.  | Abra la consola de Amazon S3 y cree un bucket de S3 que contenga los archivos exportados desde Amazon Redshift. Para obtener instrucciones sobre cómo crear un bucket de S3, consulte la sección “Recursos relacionados”. | Administrador de base de datos, AWS general | 
| Cree una política de IAM que permita descargar datos. | Abra la consola de AWS Identity and Access Management (IAM) y seleccione “Políticas”. Seleccione “Crear política” y, a continuación, la pestaña “JSON”. Copie y pegue la política de IAM para descargar datos de la sección “Información adicional”. Importante: Sustituya “s3\$1bucket\$1name” por el nombre de su bucket de S3. Seleccione “Revisar política” e ingrese un nombre y una descripción para la política. Seleccione “Crear política”. | Administrador de base de datos | 
| Cree un rol de IAM que permita la operación UNLOAD en Amazon Redshift. | Abra la consola de IAM y seleccione “Roles”. Seleccione “Crear rol” y elija “Servicio de AWS” en “Seleccionar el tipo de entidad de confianza”. Elija “Redshift” en el servicio, seleccione “Redshift - Personalizable” y, a continuación, elija “Siguiente”. Elija la política “Descargar” que creó anteriormente y seleccione “Siguiente”. Ingrese un valor en “Nombre del rol” y seleccione “Crear rol”. | Administrador de base de datos | 
| Asociar un rol de IAM al clúster de Amazon Redshift.  | Abra la consola de Amazon Redshift y elija “Administrar roles de IAM”. Elija “Roles disponibles” en el menú desplegable y seleccione el rol que creó anteriormente. Seleccione “Aplicar cambios”. Cuando el valor de “Estado” del rol de IAM en la sección “Administrar roles de IAM” aparezca como “Sincronizado”, podrá ejecutar el comando UNLOAD. | Administrador de base de datos | 
| Detenga las operaciones de escritura en el clúster de Amazon Redshift. | Recuerde detener todas las operaciones de escritura en el clúster de Amazon Redshift de origen hasta que se complete la migración. | Administrador de base de datos | 

### Preparación para la migración en la región de destino
<a name="prepare-for-migration-in-the-target-region"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lance y configure una EC2 instancia en la región de destino. | Inicie sesión en la consola de administración de AWS de una región de China, ya sea Pekín o Ningxia. En la EC2 consola de Amazon, selecciona «Lanzar instancia» y crea y configura una EC2 instancia. Importante: Asegúrese de que sus grupos de EC2 seguridad de Amazon para las reglas de entrada permitan el acceso sin restricciones al puerto TCP 22 desde su máquina de origen. Para obtener más instrucciones sobre cómo lanzar y configurar una EC2 instancia, consulta la sección «Recursos relacionados». | Administrador de base de datos | 
| Registre los detalles del clúster de Amazon Redshift.  | Abra la consola de Amazon Redshift y elija “Clústeres” en el panel de navegación. A continuación, seleccione el nombre del clúster de Amazon Redshift de la lista. En la pestaña “Propiedades”, en la sección “Configuraciones de la base de datos”, registre los valores de “Nombre de la base de datos” y “Puerto”. Abra la sección “Detalles de la conexión” y registre el valor de “Punto de conexión”, en el formato “endpoint:<puerto>/<nombrebasedatos>”. Importante: Asegúrese de que sus grupos de seguridad de Amazon Redshift para las reglas de entrada permitan el acceso sin restricciones al puerto TCP 5439 desde su instancia. EC2  | Administrador de base de datos | 
| Conecte psql al clúster de Amazon Redshift.  | En una línea de comandos, especifique la información de conexión ejecutando el comando “psql -h <puntoconexión> -U <idusuario> -d <nombrebasedatos> -p <puerto>”. Cuando se le solicite la contraseña de psql, ingrese la contraseña del usuario “<idusuario>”. Estará entonces conectado al clúster de Amazon Redshift y puede ingresar comandos de forma interactiva. | Administrador de base de datos | 
| Cree un bucket de S3.  | Abra la consola de Amazon S3 y cree un bucket de S3 que contenga los archivos exportados desde Amazon Redshift. Para obtener ayuda con esta y otras historias, consulte la sección “Recursos relacionados”. | Administrador de base de datos | 
| Cree una política de IAM que permita copiar datos. | Abra la consola de IAM y seleccione “Políticas”. Seleccione “Crear política” y, a continuación, la pestaña “JSON”. Copie y pegue la política de IAM para copiar datos de la sección “Información adicional”. Importante: Sustituya “s3\$1bucket\$1name” por el nombre de su bucket de S3. Seleccione “Revisar política” e ingrese un nombre y una descripción para la política. Seleccione “Crear política”. | Administrador de base de datos | 
| Cree un rol de IAM que permita la operación COPIAR en Amazon Redshift. | Abra la consola de IAM y seleccione “Roles”. Seleccione “Crear rol” y elija “Servicio de AWS” en “Seleccionar el tipo de entidad de confianza”. Elija “Redshift” en el servicio, seleccione “Redshift - Personalizable” y, a continuación, elija “Siguiente”. Elija la política “Copiar” que creó anteriormente y seleccione “Siguiente”. Ingrese un valor en “Nombre del rol” y seleccione “Crear rol”. | Administrador de base de datos | 
| Asociar un rol de IAM al clúster de Amazon Redshift.  | Abra la consola de Amazon Redshift y elija “Administrar roles de IAM”. Elija “Roles disponibles” en el menú desplegable y seleccione el rol que creó anteriormente. Seleccione “Aplicar cambios”. Cuando el valor de “Estado” del rol de IAM en la sección “Administrar roles de IAM” aparezca como “Sincronizado”, podrá ejecutar el comando “COPY”. | Administrador de base de datos | 

### Compruebe los datos de origen y la información de objeto antes de iniciar la migración
<a name="verify-source-data-and-object-information-before-beginning-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe las filas de las tablas de Amazon Redshift de origen. | Use los scripts de la sección “Información adicional” para verificar y registrar el número de filas de las tablas de Amazon Redshift de origen. Recuerde dividir los datos equitativamente para los scripts UNLOAD y COPY. Esto mejorará la eficiencia de la descarga y carga de datos, ya que la cantidad de datos incluida en cada script estará equilibrada. | Administrador de base de datos | 
| Compruebe el número de objetos de base de datos en el clúster de Amazon Redshift de origen. | Utilice los scripts de la sección «Información adicional» para verificar y registrar el número de bases de datos, usuarios, esquemas, tablas, vistas y funciones definidas por el usuario (UDFs) en su clúster de Amazon Redshift de origen. | Administrador de base de datos | 
| Compruebe los resultados de las instrucciones SQL antes de la migración. | Algunas instrucciones SQL de validación de datos deben clasificarse de acuerdo con las situaciones empresariales y de datos reales. Este paso verificará los datos importados y garantizará que sean coherentes y se muestren correctamente. | Administrador de base de datos | 

### Migración de datos y objetos a la región de destino
<a name="migrate-data-and-objects-to-the-target-region"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere scripts DDL de Amazon Redshift.  | Genere scripts de lenguaje de definición de datos (DDL) mediante los enlaces de la sección “Instrucciones de SQL para consultas en Amazon Redshift” en la sección “Información adicional”. Estos scripts de DDL deben incluir las consultas “crear usuario”, “crear esquema”, “privilegios del usuario sobre el esquema”, “crear tabla/vista”, “privilegios del usuario sobre los objetos” y “crear función”. | Administrador de base de datos | 
| Cree objetos en el clúster de Amazon Redshift para la región de destino. | Ejecute los scripts de DDL usando la Interfaz de la línea de comandos de AWS (AWS CLI) en la región de AWS en China. Estos guiones crean objetos en el clúster de Amazon Redshift para la región de destino. | Administrador de base de datos | 
| Descargue los datos de origen del clúster de Amazon Redshift en el bucket de S3. | Ejecute el comando UNLOAD para descargar los datos del clúster de Amazon Redshift de la región de origen al bucket de S3. | Administrador de base de datos, desarrollador  | 
| Transfiera los datos del bucket de la región S3 de origen al bucket de la región S3 de destino. | Transfiera los datos del bucket de la región S3 de origen al bucket de la región S3 de destino. Ya que no se puede usar el comando “\$1 aws s3 sync”, asegúrese de seguir el proceso descrito en el artículo “Transferir datos de Amazon S3 de regiones de AWS a regiones de AWS en China” de la sección “Recursos relacionados”. | Desarrollador | 
|  Cargue los datos en el clúster de Amazon Redshift de destino.  | En la herramienta psql de la región de destino, ejecute el comando COPY para cargar los datos del bucket de S3 al clúster de Amazon Redshift de destino. | Administrador de base de datos | 

### Verifique los datos en las regiones de origen y destino tras la migración
<a name="verify-the-data-in-the-source-and-target-regions-after-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Verifique y compare el número de filas en las tablas de origen y destino. | Verifique y compare el número de filas en las tablas de origen y destino de las regiones para asegurarse de que todas han migrado. | Administrador de base de datos | 
| Verifique y compare el número de objetos en las bases de datos de origen y destino. | Verifique y compare todos los objetos de la base de datos en las regiones de origen y destino para asegurarse de que todos se hayan migrado. | Administrador de base de datos | 
| Verifique y compare los resultados de los scripts SQL en las regiones de origen y destino. | Ejecute los scripts SQL preparados antes de la migración. Verifique y compare los datos para asegurarse de que los resultados de SQL sean correctos. | Administrador de base de datos | 
| Restablezca las contraseñas de todos los usuarios del clúster de Amazon Redshift de destino.  | Una vez finalizada la migración y verificados todos los datos, debe restablecer todas las contraseñas de usuario del clúster de Amazon Redshift en la región de AWS en China. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-resources"></a>
+ [Transferir datos de Amazon S3 de regiones de AWS a regiones de AWS en China](https://aws.amazon.com/cn/blogs/storage/transferring-amazon-s3-data-from-aws-regions-to-aws-regions-in-china/)
+ [Creating an S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) (Crear un bucket de S3)
+ [Restablecer una contraseña de usuario de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html)
+ [Documentación de psql](https://www.postgresql.org/docs/8.4/static/app-psql.html)

## Información adicional
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-additional"></a>

*Política de IAM para descargar datos*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::s3_bucket_name"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::s3_bucket_name/*"]
    }
  ]
}
```

*Política de IAM para copiar datos*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::s3_bucket_name"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::s3_bucket_name/*"]
    }
  ]
}
```

*Instrucciones de SQL para consultas en Amazon Redshift*

```
##Database

select * from pg_database where datdba>1;

##User

select * from pg_user where usesysid>1;

##Schema

SELECT n.nspname AS "Name",

  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"

FROM pg_catalog.pg_namespace n

WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'

ORDER BY 1;

##Table

select count(*) from pg_tables where schemaname not in ('pg_catalog','information_schema');

select schemaname,count(*) from pg_tables where schemaname not in ('pg_catalog','information_schema') group by schemaname order by 1;

##View

SELECT 

    n.nspname AS schemaname,c.relname AS viewname,pg_catalog.pg_get_userbyid(c.relowner) as "Owner"

FROM 

    pg_catalog.pg_class AS c

INNER JOIN

    pg_catalog.pg_namespace AS n

    ON c.relnamespace = n.oid

WHERE relkind = 'v' and n.nspname not in ('information_schema','pg_catalog');

##UDF

SELECT 

   n.nspname AS schemaname,

   p.proname AS proname,

   pg_catalog.pg_get_userbyid(p.proowner) as "Owner"

FROM pg_proc p

LEFT JOIN pg_namespace n on n.oid = p.pronamespace

WHERE p.proowner != 1;
```

*Secuencias de comandos SQL para generar sentencias DDL*
+ [Script Get\$1schema\$1priv\$1by\$1user](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_get_schema_priv_by_user.sql)
+ [Script Generate\$1tbl\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql)
+ [Generate\$1view\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_view_ddl.sql)
+ [Generate\$1user\$1grant\$1revoke\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_user_grant_revoke_ddl.sql)
+ [Generate\$1udf\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_udf_ddl.sql)

# Transportar bases de datos PostgreSQL entre dos instancias de base de datos de Amazon RDS utilizando pg\$1transport
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport"></a>

*Raunak Rishabh y Jitender Kumar, Amazon Web Services*

## Resumen
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-summary"></a>

Este patrón describe los pasos para migrar bases de datos extremadamente grandes entre dos instancias de base de datos de Amazon Relational Database Service (Amazon RDS) para PostgreSQL mediante la extensión **pg\$1transport**. Esta extensión proporciona un mecanismo físico de transporte para trasladar cada base de datos. Al transmitir por streaming los archivos de base de datos con un procesamiento mínimo, proporciona un método extremadamente rápido para migrar bases de datos de gran tamaño entre instancias de base de datos con un tiempo de inactividad mínimo. Esta extensión utiliza un modelo de extracción donde la instancia de base de datos de destino importa la base de datos de la instancia de base de datos de origen.

## Requisitos previos y limitaciones
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-prereqs"></a>

**Requisitos previos **
+ Ambas instancias de base de datos deben ejecutar la misma versión principal de PostgreSQL.
+ La base de datos no debe existir en el destino. De lo contrario, el transporte devuelve un error.
+ No se debe habilitar ninguna extensión que no sea **pg\$1transport** en la base de datos de origen.
+ Todos los objetos de base de datos deben estar en el espacio de tablas predeterminado **pg\$1default**.
+ El grupo de seguridad de la instancia de base de datos de origen debe permitir el tráfico desde la instancia de base de datos de destino.
+ Instale un cliente de PostgreSQL, [como](https://www.postgresql.org/docs/11/app-psql.html) psql, [PgAdmin](https://www.pgadmin.org/)o para trabajar con la instancia de base de datos PostgreSQL de Amazon RDS. Puede instalar el cliente en su sistema local o utilizar una instancia de Amazon Elastic Compute Cloud (Amazon EC2). En este patrón, utilizamos psql en una EC2 instancia.

**Limitaciones**
+ No puede transportar bases de datos entre distintas versiones principales de Amazon RDS para PostgreSQL.
+ Los privilegios de acceso y la propiedad de la base de datos de origen no se transfieren a la base de datos de destino.
+ No puede transportar bases de datos en réplicas de lectura ni en instancias principales de réplicas de lectura.
+ No puede utilizar tipos de datos de **registro** en ninguna tabla de base de datos que planee transportar con este método.
+ Puede ejecutar hasta 32 transportes totales al mismo tiempo en una instancia de base de datos, (incluidas tanto importaciones como exportaciones).
+ No puedes cambiar el nombre de nuestras tablas. include/exclude Todo se migra tal cual.

**Precaución**
+ Realice copias de seguridad antes de eliminar la extensión, ya que al eliminar la extensión también se eliminan los objetos dependientes y algunos datos que son fundamentales para el funcionamiento de la base de datos.
+ Tenga en cuenta la clase de instancia y los procesos que se ejecutan en otras bases de datos de la instancia de origen al determinar la cantidad de trabajadores y los `work_mem` valores de **pg\$1transport**.
+ Cuando se inicia el transporte, finalizan todas las conexiones de la base de datos de origen y la base de datos pasa al modo de solo lectura.

**nota**  
Cuando el transporte se ejecuta en una base de datos, no afecta a las demás bases de datos del mismo servidor.** **

**Versiones de producto**
+ Amazon RDS para PostgreSQL 10.10 y posteriores y Amazon RDS para PostgreSQL 11.5 y posteriores. Para obtener información sobre la versión más reciente, consulte [Transporte de bases de datos PostgreSQL entre instancias](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html) de base de datos en la documentación de Amazon RDS.

## Arquitectura
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-architecture"></a>

![\[Transporte de bases de datos de PostgreSQL entre instancias de base de datos de Amazon RDS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/d5fb7ea3-32b7-4602-b382-3cf5c075c7c9/images/aec4d8d2-37a8-4136-9042-f9667ac4aebb.png)


## Tools (Herramientas)
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-tools"></a>
+ **pg\$1transport** proporciona un mecanismo físico de transporte para trasladar cada base de datos. Al transmitir por streaming los archivos de la base de datos con un procesamiento mínimo, el transporte físico mueve los datos mucho más rápido que los procesos tradicionales de volcado y carga y requiere un tiempo de inactividad mínimo. Las bases de datos transportables de PostgreSQL utilizan un modelo de extracción donde la instancia de base de datos de destino importa la base de datos de la instancia de base de datos de origen. Esta extensión se instala en las instancias de base de datos al preparar los entornos de origen y destino, tal y como se explica en este patrón.
+ [psql](https://www.postgresql.org/docs/11/app-psql.html) le permite conectarse a sus instancias de base de datos de PostgreSQL y trabajar con ellas. Para instalar **psql** en su sistema, consulte la página de descargas de [PostgreSQL](https://www.postgresql.org/download/).

## Epics
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-epics"></a>

### Cree el grupo de parámetros de destino
<a name="create-the-target-parameter-group"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un grupo de parámetros para el sistema de destino. | Especifique un nombre de grupo que lo identifique como grupo de parámetros de destino; por ejemplo,v`pgtarget-param-group`. Para obtener instrucciones, consulte la [Documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating). | Administrador de base de datos | 
| Modifique los parámetros para el grupo de parámetros. | Establezca los siguientes parámetros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)Para obtener más información acerca de estos parámetros, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html). | Administrador de base de datos | 

### Crear el grupo de parámetros
<a name="create-the-source-parameter-group"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un grupo de parámetros para el sistema de origen. | Especifique un nombre de grupo que lo identifique como grupo de parámetros de origen; por ejemplo, `pgsource-param-group`. Para obtener instrucciones, consulte la [Documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating). | Administrador de base de datos | 
| Modifique los parámetros para el grupo de parámetros. | Establezca los siguientes parámetros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)Para obtener más información acerca de estos parámetros, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html). | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nueva instancia de base de datos de Amazon RDS para PostgreSQL a la que transportar la base de datos de origen. | Determine la clase de instancia y la versión de PostgreSQL en función de los requisitos de su empresa. | Administrador de base de datos, administrador de sistemas, arquitecto de bases de datos | 
| Modifique el grupo de seguridad del destino para permitir las conexiones en el puerto de la instancia de base de datos desde la EC2 instancia. | De forma predeterminada, el puerto para la instancia de PostgreSQL es 5432. Si utiliza otro puerto, las conexiones a ese puerto deben estar abiertas para la EC2 instancia. | Administrador de base de datos, administrador de sistemas | 
| Modifique la instancia y asigne el nuevo grupo de parámetros de destino. | Por ejemplo, `pgtarget-param-group`. | Administrador de base de datos | 
| Reinicie la instancia de base de datos de Amazon RDS de destino.  | Los parámetros `shared_preload_libraries` y `max_worker_processes` son parámetros estáticos y requieren el reinicio de la instancia. | Administrador de base de datos, administrador de sistemas | 
| Conéctese a la base de datos desde la EC2 instancia mediante psql. | Utilice el comando: <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | Administrador de base de datos | 
| Cree la extensión pg\$1transport. | Ejecute la siguiente consulta como usuario con el rol `rds_superuser`:<pre>create extension pg_transport;</pre> | Administrador de base de datos | 

### Preparación del entorno de origen
<a name="prepare-the-source-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Modifique el grupo de seguridad de la fuente para permitir las conexiones en el puerto de la instancia de base de datos desde la instancia de Amazon y la EC2 instancia de base de datos de destino | De forma predeterminada, el puerto para la instancia de PostgreSQL es 5432. Si utiliza otro puerto, las conexiones a ese puerto deben estar abiertas para la EC2 instancia. | Administrador de base de datos, administrador de sistemas | 
| Modifique la instancia y asigne el nuevo grupo de parámetros de origen. | Por ejemplo, `pgsource-param-group`. | Administrador de base de datos | 
| Reinicie la instancia de base de datos de Amazon RDS de origen.  | Los parámetros `shared_preload_libraries` y `max_worker_processes` son parámetros estáticos y requieren el reinicio de la instancia. | Administrador de base de datos | 
| Conéctese a la base de datos desde la EC2 instancia mediante psql. | Utilice el comando: <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | Administrador de base de datos | 
| Cree la extensión pg\$1transport y elimine todas las demás extensiones de las bases de datos que se van a transportar. | El transporte fallará si hay alguna extensión que no sea **pg\$1transport** instalada en la base de datos de origen. Este comando debe ejecutarlo un usuario con el rol `rds_superuser`. | Administrador de base de datos | 

### Realice el transporte
<a name="perform-the-transport"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute una prueba. | Utilice la función `transport.import_from_server` para realizar primero un simulacro:<pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', 'true');</pre>El último parámetro de esta función (establecido en`true`) define el funcionamiento en seco. Esta función muestra los errores que aparecen al ejecutar el transporte principal. Resuelva los errores antes de ejecutar el transporte principal.  | Administrador de base de datos | 
| Si el simulacro se realiza correctamente, inicie el transporte de la base de datos. | Ejecute la función `transport.import_from_server` para realizar el transporte. Se conecta a la fuente e importa los datos. <pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', false);</pre>El último parámetro de esta función (establecido en`false`) indica que no se trata de un simulacro. | Administrador de base de datos | 
| Realice los pasos posteriores al transporte. | Una vez finalizado el transporte de la base de datos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html) | Administrador de base de datos | 

## Recursos relacionados
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-resources"></a>
+ [Documentación de Amazon RDS](https://docs.aws.amazon.com/rds/)
+ [Documentación de pg\$1transport](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#PostgreSQL.TransportableDB.Setup)
+ [Migración de bases de datos mediante bases de datos transportables PostgreSQL de RDS (entrada del blog](https://aws.amazon.com/blogs/database/migrating-databases-using-rds-postgresql-transportable-databases/))
+ [Descargas de PostgreSQL](https://www.postgresql.org/download/linux/redhat/)
+ [utilidad psql](https://www.postgresql.org/docs/11/app-psql.html)
+ [Creación de un grupo de parámetros de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Creating)
+ [Cómo modificar parámetros en un grupo de parámetros de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Modifying)
+ [Descargas de PostgreSQL](https://www.postgresql.org/download/)

# Redefinir la plataforma
<a name="migration-replatform-pattern-list"></a>

**Topics**
+ [Exportación de una base de datos de Microsoft SQL Server a Amazon S3 mediante AWS DMS](export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms.md)
+ [Migración de valores CLOB de Oracle a filas individuales en PostgreSQL en AWS](migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws.md)
+ [Migre Oracle PeopleSoft a Amazon RDS Custom](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Migración de la funcionalidad ROWIdentificador de Oracle a PostgreSQL en AWS](migrate-oracle-rowid-functionality-to-postgresql-on-aws.md)
+ [Migración de códigos de error de Oracle Database a una base de datos Amazon Aurora compatible con PostgreSQL](migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.md)
+ [Migre SAP ASE de Amazon EC2 a Amazon Aurora compatible con PostgreSQL mediante AWS SCT y AWS DMS](migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms.md)
+ [Migración de los certificados SSL de Windows a un equilibrador de carga de aplicación mediante ACM](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [Migración de una cola de mensajes de Microsoft Azure Service Bus a Amazon SQS](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [Migre una EnterpriseOne base de datos de Oracle JD Edwards a AWS mediante Oracle Data Pump y AWS DMS](migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.md)
+ [Migre una PeopleSoft base de datos de Oracle a AWS mediante AWS DMS](migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.md)
+ [Migración de una base de datos MySQL en las instalaciones a Amazon RDS para MySQL](migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql.md)
+ [Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon RDS para SQL Server](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server.md)
+ [Migración de datos de Microsoft Azure Blob a Amazon S3 mediante Rclone](migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.md)
+ [Migración de Couchbase Server a Couchbase Capella en AWS](migrate-from-couchbase-server-to-couchbase-capella-on-aws.md)
+ [Migre de IBM WebSphere Application Server a Apache Tomcat en Amazon EC2](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)
+ [Migre de IBM WebSphere Application Server a Apache Tomcat en Amazon EC2 con Auto Scaling](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [Migración de una aplicación .NET de Microsoft Azure App Service a AWS Elastic Beanstalk](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [Migre de Oracle WebLogic a Apache Tomcat (ToMEE) en Amazon ECS](migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs.md)
+ [Migre una base de datos Oracle de Amazon EC2 a Amazon RDS for Oracle mediante AWS DMS](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms.md)
+ [Migre una base de datos Oracle local a Amazon OpenSearch Service mediante Logstash](migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump.md)
+ [Migre de PostgreSQL en EC2 Amazon a Amazon RDS para PostgreSQL mediante pglogical](migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.md)
+ [Migración de una base de datos PostgreSQL en las instalaciones a Aurora PostgreSQL](migrate-an-on-premises-postgresql-database-to-aurora-postgresql.md)
+ [Migre una base de datos local de Microsoft SQL Server a Microsoft SQL Server en Amazon EC2 con Linux](migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux.md)
+ [Migración de bases de datos en las instalaciones de Microsoft SQL Server a Amazon RDS para SQL Server mediante servidores vinculados](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers.md)
+ [Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon RDS para SQL Server mediante métodos nativos de copia de seguridad y restauración](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.md)
+ [Migración de una base de datos de Microsoft SQL Server a Aurora MySQL mediante AWS DMS y AWS SCT](migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct.md)
+ [Migración de una base de datos de MariaDB en las instalaciones hasta Amazon RDS para MariaDB mediante herramientas nativas](migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools.md)
+ [Migración de una base de datos de MySQL en las instalaciones a Aurora MySQL](migrate-an-on-premises-mysql-database-to-aurora-mysql.md)
+ [Migre bases de datos MySQL locales a Aurora MySQL mediante Percona, XtraBackup Amazon EFS y Amazon S3](migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.md)
+ [Migración de aplicaciones Java locales en las instalaciones a AWS mediante AWS App2Container](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [Migre sistemas de archivos compartidos en una migración AWS grande](migrate-shared-file-systems-in-an-aws-large-migration.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)
+ [Cambie las aplicaciones de Python y Perl para que admitan la migración de bases de datos de Microsoft SQL Server a una edición compatible con PostgreSQL de Amazon Aurora](change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.md)

# Exportación de una base de datos de Microsoft SQL Server a Amazon S3 mediante AWS DMS
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms"></a>

*Sweta Krishna, Amazon Web Services*

## Resumen
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-summary"></a>

Con frecuencia, las organizaciones necesitan copiar bases de datos a Amazon Simple Storage Service (Amazon S3) para la migración de bases de datos, la copia de seguridad y la restauración, el archivado y el análisis de datos. Este patrón describe cómo puede exportar una base de datos de Microsoft SQL Server a Amazon S3. La base de datos de origen se puede alojar localmente o en Amazon Elastic Compute Cloud (Amazon EC2) o Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server en la nube de Amazon Web Services (AWS).

Los datos se exportan mediante AWS Database Migration Service (AWS DMS). De forma predeterminada, AWS DMS escribe los datos de captura de datos de carga completa y cambios (CDC) en formato de valores separados por comas (.csv). Para un almacenamiento más compacto y opciones de consulta más rápidas, este patrón utiliza la opción de formato Apache Parquet (.parquet).

## Requisitos previos y limitaciones
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Un rol de AWS Identity and Access Management (IAM) para la cuenta con acceso de escritura, eliminación y etiquetado al bucket de S3 de destino, y se ha agregado AWS DMS (`dms.amazonaws.com`) como entidad de confianza a este rol de IAM
+ Una base de datos Microsoft SQL Server local (o Microsoft SQL Server en una EC2 instancia o una base de datos Amazon RDS for SQL Server)
+ Conectividad de red entre la nube privada virtual (VPC) de AWS y la red en las instalaciones proporcionada por AWS Direct Connect o una red privada virtual (VPN)

**Limitaciones**
+ Actualmente, las versiones de AWS DMS anteriores a la 3.4.7 no admiten un bucket de S3 habilitado para VPC (VPC de puerta de enlace).
+ No se admiten cambios en la estructura de la tabla de origen durante la carga completa.
+ No se admite el modo de objetos binarios grandes (LOB) completo de AWS DMS.

**Versiones de producto**
+ Versiones de Microsoft SQL Server 2005 o posterior, para las ediciones Enterprise, Standard, Workgroup y Developer.
+ La compatibilidad con Microsoft SQL Server versión 2019 como origen está disponible en las versiones 3.3.2 y posteriores de AWS DMS.

## Arquitectura
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos Microsoft SQL Server local (o Microsoft SQL Server en una EC2 instancia o una base de datos Amazon RDS for SQL Server)**** 

**Pila de tecnología de destino**
+ AWS Direct Connect
+ AWS DMS
+ Amazon S3

**Arquitectura de destino**

![\[Los datos se migran desde la base de datos de SQL Server a través de Direct Connect a AWS DMS y, después, al bucket de S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/75b8b20f-a1a8-4633-9816-1b370cc7e92c/images/85bd433c-4a0a-4825-8661-e53f53265191.png)


## Tools (Herramientas)
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-tools"></a>
+ [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.
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) vincula su red interna con una ubicación de Direct Connect a través de un cable estándar Ethernet de fibra óptica. Con esta conexión, puede crear interfaces virtuales directamente en servicios públicos de AWS omitiendo a los proveedores de servicios de Internet en su ruta de acceso a la red.
+ [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.

## Epics
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la versión de la base de datos. | Valide la versión de la base de datos de origen y asegúrese de que es compatible con AWS DMS. Para obtener información sobre las versiones de bases de datos de SQL Server compatibles, consulte [Uso de una base de datos de Microsoft SQL Server como fuente de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html). | Administrador de base de datos | 
| Crear una VPC y un grupo de seguridad. | En su cuenta de AWS, cree una VPC y un grupo de seguridad. Para obtener más información, consulte la [documentación de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html). | Administrador de sistemas | 
| Cree un usuario para la tarea de AWS DMS. | Cree un usuario de AWS DMS en la base de datos de origen y concédale permisos de LECTURA. AWS DMS utilizará este usuario. | Administrador de base de datos | 
| Pruebe la conectividad de la base de datos. | Pruebe la conectividad con la instancia de base de datos SQL Server desde el usuario de AWS DMS. | Administrador de base de datos | 
| Cree un bucket de S3. | Crear el bucket de S3 objetivo. Este bucket contendrá los datos de la tabla migrados. | Administrador de sistemas | 
| Crear una política y un rol de IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms.html) | Administrador de sistemas | 

### Migración de datos mediante AWS DMS
<a name="migrate-data-by-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación de AWS DMS. | Inicie sesión en la Consola de administración de AWS y abra la consola de AWS DMS. En el panel de navegación, seleccione **Instancias de replicación** y **Crear instancia de replicación**. Para obtener instrucciones, consulte el [paso 1](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.ReplicationInstance) de la documentación de AWS DMS. | Administrador de base de datos | 
| Cree puntos de conexión de origen y destino. | Cree puntos de conexión de origen y destino. Pruebe la tarea desde la instancia de replicación a los puntos de conexión de origen y destino. Para obtener instrucciones, consulte el [paso 2](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Endpoints) de la documentación de AWS DMS. | Administrador de base de datos | 
| Cree una tarea de replicación. | Cree una tarea de replicación y seleccione carga completa o carga completa con captura de datos de cambios (CDC) para migrar los datos de SQL Server al bucket de S3. Para obtener instrucciones, consulte el [paso 3](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Tasks) de la documentación de AWS DMS. | Administrador de base de datos | 
| Iniciar la tarea de replicación. | Inicie la tarea de replicación y supervise los registros para detectar cualquier error. | Administrador de base de datos | 

### Valide los datos
<a name="validate-the-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide los datos migrados. | En la consola de Amazon S3, acceda a su bucket. Abra la subcarpeta que tiene el mismo nombre que la base de datos de origen. Confirme que la carpeta contiene todas las tablas que se migraron de la base de datos de origen. | Administrador de base de datos | 

### Eliminar recursos
<a name="clean-up-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre y elimine los recursos temporales de AWS. | Cierre los recursos temporales de AWS que haya creado para la migración de datos, como la instancia de replicación de AWS DMS, y elimínelos después de validar la exportación. | Administrador de base de datos | 

## Recursos relacionados
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-resources"></a>
+ [Guía de usuario del servicio de migración de bases de datos de AWS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Uso de una base de datos de Microsoft SQL Server como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)
+ [Uso de Amazon S3 como destino para el servicio de migración de bases de datos de AWS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html)
+ [Uso de un bucket de S3 como destino de AWS DMS](https://repost.aws/knowledge-center/s3-bucket-dms-target) (AWS re:POST)

## Información adicional
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-additional"></a>

Utilice el siguiente código para añadir una política de IAM con permisos de bucket de S3 para la función DMS de AWS. Reemplace `bucketname` con el nombre de su bucket.

```
{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "s3:PutObject",
                 "s3:DeleteObject"
             ],
             "Resource": [
                 "arn:aws:s3:::bucketname*"
             ]
         },
         {
             "Effect": "Allow",
             "Action": [
                 "s3:ListBucket"
             ],
             "Resource": [
                 "arn:aws:s3:::bucketname*"
             ]
         }
     ]
 }
```

# Migración de valores CLOB de Oracle a filas individuales en PostgreSQL en AWS
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws"></a>

*Sai Krishna Namburu y Sindhusha Paturu, Amazon Web Services*

## Resumen
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-summary"></a>

Este patrón describe cómo dividir valores de objetos grandes (CLOB) de Oracle en filas individuales en Amazon Aurora compatible con PostgreSQL y Amazon Relational Database Service (Amazon RDS) para PostgreSQL. PostgreSQL no admite el tipo de datos CLOB. 

Las tablas con particiones de intervalos se identifican en la base de datos de Oracle de origen, y el nombre de la tabla, el tipo de partición, el intervalo de partición y otros metadatos se registran y cargan en la base de datos de destino. Puede cargar datos CLOB de tamaño inferior a 1 GB en tablas de destino como texto mediante AWS Database Migration Service (AWS DMS), o bien puede exportar los datos en formato CSV, cargarlos en un bucket de Amazon Simple Storage Service (Amazon S3) y migrarlos a su base de datos PostgreSQL de destino.

Tras la migración, puede usar el código de PostgreSQL personalizado proporcionado con este patrón para dividir los datos CLOB en filas individuales en función del nuevo identificador de caracteres de línea (`CHR(10)`) y rellenar la tabla** **de destino. 

## Requisitos previos y limitaciones
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-prereqs"></a>

**Requisitos previos **
+ Una tabla de base de datos de Oracle con particiones de intervalos y registros con tipo de datos CLOB.
+ Una base de datos de Aurora compatible con PostgreSQL o Amazon RDS para PostgreSQL con una estructura de tabla similar a la tabla de origen (las mismas columnas y tipos de datos).

**Limitaciones**
+ El valor de CLOB no puede superar 1 GB.
+ Cada fila de la tabla de destino debe tener un nuevo identificador de caracteres de línea.

**Versiones de producto**
+ Oracle 12c
+ Aurora PostgreSQL 11.6

## Arquitectura
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-architecture"></a>

El siguiente diagrama muestra una tabla de origen de Oracle con datos CLOB, y la tabla PostgreSQL equivalente en Aurora compatible con PostgreSQL versión 11.6.

![\[Tabla CLOB de origen y tabla PostgreSQL de destino equivalente.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/55806ee7-6a9f-4058-9a47-a07de68223ca/images/79b9d4b9-6f20-4db5-8ca8-2a599769a498.png)


## Tools (Herramientas)
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de PostgreSQL en la nube 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 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**

Puede usar las siguientes herramientas de cliente para conectarse, acceder y gestionar sus bases de datos de Aurora compatible con PostgreSQL y Amazon RDS para PostgreSQL. (Estas herramientas no se usan en este patrón).
+ [pgAdmin](https://www.pgadmin.org/) es una herramienta de gestión de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.
+ [DBeaver](https://dbeaver.io/)es una herramienta de base de datos de código abierto para desarrolladores y administradores de bases de datos. Esta herramienta le permite manipular, supervisar, analizar, administrar y migrar sus datos.

## Prácticas recomendadas
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-best-practices"></a>

Para conocer las prácticas recomendadas para migrar su base de datos de Oracle a PostgreSQL, consulte la publicación del blog de AWS [Prácticas recomendadas para migrar una base de datos de Oracle a Amazon RDS PostgreSQL o Amazon Aurora PostgreSQL: consideraciones sobre el proceso de migración y la infraestructura](https://aws.amazon.com/blogs/database/best-practices-for-migrating-an-oracle-database-to-amazon-rds-postgresql-or-amazon-aurora-postgresql-migration-process-and-infrastructure-considerations/).

Para obtener información sobre las prácticas recomendadas para configurar la tarea de AWS DMS para migrar objetos binarios grandes, consulte [Migración de objetos binarios grandes (LOBs) en la documentación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html#CHAP_BestPractices.LOBS) de AWS DMS.

## Epics
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-epics"></a>

### Identifique los datos de CLOB
<a name="identify-the-clob-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice los datos de CLOB. | En la base de datos de Oracle de origen, analice los datos de CLOB para comprobar si contienen encabezados de columna y así poder determinar el método de carga de los datos en la tabla de destino. Para analizar los datos de entrada, ejecute la siguiente consulta.`SELECT * FROM clobdata_or;  ` | Desarrollador | 
| Cargue los datos de CLOB en la base de datos de destino. | Migre la tabla que contiene datos de CLOB a una tabla provisional (transitoria) en la base de datos de destino de Aurora o Amazon RDS. Puede usar AWS DMS o cargar los datos en formato de archivo CSV a un bucket de Amazon S3.Para obtener más información sobre el uso de AWS DMS para esta tarea, consulte [Uso de una base de datos de Oracle como fuente](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) y [Uso de una base de datos PostgreSQL como destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) en la documentación de AWS DMS.Para obtener más información sobre el uso de Amazon S3 para esta tarea, consulte [Uso de Amazon S3 como destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html) en la documentación de AWS DMS. | Ingeniero de migraciones, administrador de bases de datos | 
| Valide la tabla PostgreSQL de destino. | Valide los datos de destino, incluidos los encabezados, comparándolos con los datos de origen. Para ello, ejecute las siguientes consultas en la base de datos de destino.<pre>SELECT * FROM clobdata_pg;<br />SELECT * FROM clobdatatarget;</pre>Compare los resultados con los resultados de las consultas a la base de datos de origen (desde el primer paso). | Desarrollador | 
| Divida los datos de CLOB en filas independientes. | Ejecute el código PostgreSQL personalizado que se proporciona en la sección [Información adicional](#migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-additional) para dividir los datos CLOB e insertarlos en filas independientes en la tabla PostgreSQL de destino. | Desarrollador | 

### Valide los datos.
<a name="validate-the-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide los datos en la tabla de destino. | Valide los datos insertados en la tabla de destino ejecutando las siguientes consultas.<pre>SELECT * FROM clobdata_pg;<br />SELECT * FROM clobdatatarget;</pre> | Desarrollador | 

## Recursos relacionados
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-resources"></a>
+ [Tipo de datos CLOB](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF0021) (documentación de Oracle)
+ [Tipos de datos](https://www.postgresql.org/docs/11/datatype.html) (documentación de PostgreSQL)

## Información adicional
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-additional"></a>

**Función de PostgreSQL para dividir datos CLOB**

```
do
$$
declare
totalstr varchar;
str1 varchar;
str2 varchar;
pos1 integer := 1;
pos2 integer ;
len integer;


begin
        select rawdata||chr(10) into totalstr from clobdata_pg;
        len :=  length(totalstr) ;
        raise notice 'Total length : %',len;
        raise notice 'totalstr : %',totalstr;
        raise notice 'Before while loop';


        while pos1 < len  loop


                  select position (chr(10) in totalstr) into pos2;
                 raise notice '1st position of new line : %',pos2;


                str1 := substring (totalstr,pos1,pos2-1);
                raise notice 'str1 : %',str1;


                   insert into clobdatatarget(data) values (str1);
                   totalstr := substring(totalstr,pos2+1,len);
                   raise notice 'new totalstr :%',totalstr;
                len :=  length(totalstr) ;


        end loop;
end
$$
LANGUAGE 'plpgsql' ;
```

**Ejemplos de entrada y salida**

Puede usar los siguientes ejemplos para probar el código PostgreSQL antes de migrar los datos.

Cree una base de datos de Oracle con tres líneas de entrada.

```
CREATE TABLE clobdata_or (
id INTEGER GENERATED ALWAYS AS IDENTITY,
rawdata clob  );


insert into clobdata_or(rawdata) values (to_clob('test line 1') || chr(10) || to_clob('test line 2') || chr(10) || to_clob('test line 3') || chr(10));
COMMIT;


SELECT * FROM clobdata_or;
```

Se mostrarán los siguientes valores.


|  |  | 
| --- |--- |
| id | rawdata | 
| 1 | test line 1 test line 2 test line 3 | 

Cargue los datos de origen en una tabla transitoria de PostgreSQL (`clobdata_pg`) para su procesamiento.

```
SELECT * FROM clobdata_pg;

CREATE TEMP TABLE clobdatatarget (id1 SERIAL,data VARCHAR );

<Run the code in the additional information section.>

SELECT * FROM clobdatatarget;
```

Se mostrarán los siguientes valores.


|  |  | 
| --- |--- |
| id1 | datos | 
| 1 | Línea de prueba 1 | 
| 2 | Línea de prueba 2 | 
| 3 | Línea de prueba 3 | 

# Migre Oracle PeopleSoft a Amazon RDS Custom
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom"></a>

*Gaurav Gupta, Amazon Web Services*

## Resumen
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-summary"></a>

[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/) es una solución de planificación de recursos empresariales (ERP) para procesos de toda la empresa. PeopleSoft tiene una arquitectura de tres niveles: cliente, aplicación y base de datos. PeopleSoft se puede ejecutar en [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)). Ahora, también puede ejecutar PeopleSoft en [Amazon RDS Custom](https://aws.amazon.com/rds/custom/), que proporciona acceso al sistema operativo subyacente.

[Amazon RDS Custom para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-custom-oracle.html) es un servicio de base de datos administrado para aplicaciones heredadas, personalizadas y empaquetadas que requieren acceso al sistema operativo y al entorno de base de datos subyacentes. Al migrar la base de datos de Oracle a Amazon RDS Custom, Amazon Web Services (AWS) puede gestionar las tareas de backup y la alta disponibilidad, al tiempo que usted puede centrarse en el mantenimiento de la PeopleSoft aplicación y la funcionalidad. Para conocer los factores clave a tener en cuenta durante la planificación de una migración, consulte [Estrategias de migración de bases de datos de Oracle](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html) en Recomendaciones de AWS.

Este patrón se centra en los pasos para migrar una PeopleSoft base de datos de Amazon Elastic Compute Cloud (Amazon EC2) a Amazon RDS Custom mediante una copia de seguridad de Oracle Recovery Manager (RMAN). Utiliza un sistema de archivos compartido [Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/) entre la instancia EC2 y Amazon RDS Custom, aunque también puede utilizar Amazon FSx o cualquier unidad compartida. El patrón utiliza una copia de seguridad completa en RMAN (a veces denominada copia de seguridad de nivel 0). 

## Requisitos previos y limitaciones
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-prereqs"></a>

**Requisitos previos **
+ Base de datos de origen de Oracle versión 19C que se ejecuta en Amazon EC2 con Oracle Linux 7, Oracle Linux 8, Red Hat Enterprise Linux (RHEL) 7 o RHEL 8. En los ejemplos de este patrón, el nombre de la base de datos de origen es `FSDMO92`, pero no es obligatorio.
**nota**  
También puede utilizar este patrón con las bases de datos de origen de Oracle en las instalaciones. Debe tener la conectividad de red adecuada entre la red en las instalaciones y una nube privada virtual (VPC).
+ Una instancia de demostración de PeopleSoft 9.2.
+ Un único nivel PeopleSoft de aplicación. Sin embargo, puede adaptar este patrón para que funcione con varios niveles de aplicación.
+ Amazon RDS Custom está configurado con al menos 8 GB de espacio de intercambio.

**Limitaciones**

Este patrón no admite las siguientes configuraciones:
+ Cómo establecer el parámetro `ARCHIVE_LAG_TARGET` de la base de datos en un valor fuera del rango de 60 a 7200
+ Cómo inhabilitar el modo de registro de la instancia de base de datos (`NOARCHIVELOG`)
+ Cómo desactivar el atributo optimizado Amazon Elastic Block Store (Amazon EBS) de la instancia EC2
+ Cómo modificar los volúmenes de EBS originales adjuntos a la instancia EC2
+ Cómo añadir nuevos volúmenes de EBS o cambiar el tipo de volumen de gp2 a gp3
+ Cómo cambiar el formato de extensión del parámetro `LOG_ARCHIVE_FORMAT` (requiere `*.arc`)
+ Multiplexar o cambiar la ubicación y el nombre del archivo de control (tiene que ser `/rdsdbdata/db/*DBNAME*/controlfile/control-01.ctl`)

Para obtener información adicional sobre estas y otras configuraciones no compatibles, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-troubleshooting.html#custom-troubleshooting.fix-unsupported).

**Versiones de producto**

Para ver las versiones de Oracle Database y clases de instancia compatibles con Amazon RDS Custom, consulte [Requisitos y limitaciones de Amazon RDS Custom para Oracle](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/UserGuide/custom-reqs-limits.html).

## Arquitectura
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-architecture"></a>

**Pila de tecnología de destino**
+ Equilibrador de carga de aplicación
+ Amazon EFS
+ Amazon RDS Custom para Oracle
+ AWS Secrets Manager
+ Amazon Simple Storage Service (Amazon S3)

**Arquitectura de destino**

El siguiente diagrama de arquitectura representa un PeopleSoft sistema que se ejecuta en una única [zona de disponibilidad](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) en AWS. Se accede al nivel de aplicación a través de un [Equilibrador de carga de aplicación](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/). Tanto la aplicación como las bases de datos se encuentran en subredes privadas, y las instancias de base de datos Amazon RDS Custom y Amazon EC2 utilizan un sistema de archivos compartidos Amazon EFS para almacenar y acceder a los archivos de copia de seguridad de RMAN. Amazon S3 se utiliza para crear el motor RDS Oracle personalizado y para almacenar los metadatos de redo logs.

![\[Servidores web, servidores de aplicaciones, Amazon RDS Custom, una instancia de base de datos de EC2 y Amazon EFS en subredes privadas.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bd423dfe-f3c8-42d9-ac84-bf3d093c52bc/images/0e9a6431-e6c7-4047-ae6c-85311938041f.jpeg)


## Tools (Herramientas)
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-tools"></a>

**Herramientas**

*Servicios de AWS*
+ [Amazon RDS Custom para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-custom-oracle.html) es un servicio de base de datos administrado para aplicaciones heredadas, personalizadas y empaquetadas que requieren acceso al sistema operativo y al entorno de base de datos subyacentes. Automatiza las tareas de administración de bases de datos, como las copias de seguridad y la alta disponibilidad. 
+ [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. Este patrón emplea un sistema de archivos compartidos de Amazon EFS para almacenar y acceder a los archivos de copia de seguridad de RMAN.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) le permite reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación. En este patrón, se recuperan las contraseñas de usuario de la base de datos de Secrets Manager para crear los usuarios `RDSADMIN` y `ADMIN` y cambiar las contraseñas `sys` y `system`.
+ [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.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuye el tráfico entrante de aplicaciones o redes entre varios destinos. Así, por ejemplo, puede distribuir el tráfico a través de instancias de Amazon Elastic Compute Cloud (Amazon EC2), contenedores y direcciones IP de una o varias zonas de disponibilidad. Este patrón utiliza un equilibrador de carga de aplicación.

*Otras herramientas*
+ Oracle Recovery Manager (RMAN) proporciona soporte de copia de seguridad y recuperación para bases de datos de Oracle. Este patrón utiliza RMAN para realizar una copia de seguridad activa de la base de datos de Oracle de origen en Amazon EC2 que se restaura en Amazon RDS Custom.

## Prácticas recomendadas
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-best-practices"></a>
+ Para los parámetros de inicialización de la base de datos, personalice el perfil estándar que proporciona la instancia de base de datos personalizada de Amazon RDS PeopleSoft en lugar de utilizar el archivo spfile de la base de datos de origen de Oracle. El motivo de esto es que los espacios en blanco y los comentarios causan problemas al crear réplicas de lectura en Amazon RDS Custom. Para obtener más información sobre los parámetros de inicialización de la base de datos, consulte la nota de soporte de Oracle 1100831.1 (requiere una cuenta de [Oracle Support](https://support.oracle.com/portal/)).
+ Amazon RDS Custom utiliza la administración automática de memoria de Oracle de forma predeterminada. Si desea utilizar el núcleo de Hugemem, puede configurar Amazon RDS Custom para que utilice en su lugar la gestión automática de la memoria compartida.
+ Mantenga el parámetro `memory_max_target` habilitado de forma predeterminada. El marco lo utiliza en segundo plano para crear réplicas de lectura.
+ Habilite la base de datos de Oracle Flashback. Esta característica resulta útil para restablecer el modo de espera en escenarios de pruebas de conmutación por error (no de transición).

## Epics
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-epics"></a>

### Configure la instancia de base de datos y el sistema de archivos
<a name="set-up-the-db-instance-and-file-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear la instancia de base de datos. | En la consola de Amazon RDS, cree una instancia de base de datos Amazon RDS Custom for Oracle con un nombre de base de datos denominado FSDMO92 (o el nombre de la base de datos de origen).Para obtener más instrucciones, consulte [Trabajo con Amazon RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-custom.html) en la documentación de AWS, y la publicación del blog [Amazon RDS Custom for Oracle – New Control Capabilities in Database Environment](https://aws.amazon.com/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/). Este paso garantiza que la base de datos tenga el mismo nombre que la base de datos de origen. (Si se deja en blanco, la instancia de EC2 y el nombre de la base de datos se definirán como `ORCL`). | Administrador de base de datos | 

### Realice una copia de seguridad completa de RMAN de la base de datos de Amazon EC2 de origen
<a name="perform-an-rman-full-backup-of-the-source-amazon-ec2-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un script de copia de seguridad. | Cree un script de copia de seguridad de RMAN para hacer una copia de seguridad de la base de datos en el sistema de archivos Amazon EFS que montó (`/efs` en el siguiente ejemplo). Puede usar el código de ejemplo o ejecutar uno de sus scripts de RMAN existentes.<pre>#!/bin/bash<br />Dt=`date +'%Y%m%d-%H%M'`<br />BACKUP_LOG="rman-${ORACLE_SID}-$Dt"<br />export TAGDATE=`date +%Y%m%d%H%M`;<br />LOGPATH=/u01/scripts/logs<br />rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF<br />SQL "ALTER SYSTEM SWITCH LOGFILE";<br />SQL "ALTER SESSION SET NLS_DATE_FORMAT="DD.MM.YYYY HH24:MI:SS"";<br />RUN<br />{<br />  ALLOCATE CHANNEL ch11 TYPE DISK MAXPIECESIZE 5G;<br />  ALLOCATE CHANNEL ch12 TYPE DISK MAXPIECESIZE 5G;<br />  BACKUP AS COMPRESSED BACKUPSET FULL DATABASE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_FULL' ;<br />  SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";<br />  BACKUP FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_ARCHIVE' ARCHIVELOG ALL DELETE ALL INPUT ;<br />  BACKUP CURRENT CONTROLFILE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_CONTROL';<br />}<br />EXIT;<br />EOF<br />  </pre> | Administrador de base de datos | 
| Ejecute el script de copia de seguridad. | Para ejecutar el script de copia de seguridad de RMAN, inicie sesión como Oracle Home User y ejecute el script.<pre>$  chmod a+x rman_backup.sh<br />$ ./rman_backup.sh &</pre> | Administrador de base de datos | 
| Compruebe que no haya errores y anote el nombre del archivo de copia de seguridad. | Compruebe si hay errores en el archivo de registro RMAN. Si todo parece correcto, publique la copia de seguridad del archivo de control ejecutando el siguiente comando.<pre>RMAN> list backup of controlfile;<br /><br />using target database control file instead of recovery catalog<br /></pre>Anote el nombre del archivo de salida.<pre>List of Backup Sets<br />===================<br /><br />BS Key  Type LV Size       Device Type Elapsed Time Completion Time<br />------- ---- -- ---------- ----------- ------------ ---------------<br />12      Full    21.58M     DISK        00:00:01     13-JUL-22<br />        BP Key: 12   Status: AVAILABLE  Compressed: NO  Tag: TAG20220713T150155<br />        Piece Name: /efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL<br /> Control File Included: Ckp SCN: 16559159985898   Ckp time: 13-JUL-22<br /></pre>Utilizará el archivo de control de la copia de seguridad `/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL` cuando restaure la base de datos en Amazon RDS Custom. | Administrador de base de datos | 

### Apague el nivel de aplicación de origen
<a name="shut-down-the-source-application-tier"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre la aplicación.  | Para cerrar el nivel de la aplicación de origen, utilice la utilidad `psadmin` o la utilidad de línea de comandos `psadmin`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA, administrador PeopleSoft  | 

### Configure la base de datos Amazon RDS Custom de destino
<a name="configure-the-target-amazon-rds-custom-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el paquete nfs-utils rpm. | Para instalar el paquete `nfs-utils rpm`, ejecute el comando siguiente.<pre>$ yum install -y nfs-utils<br /></pre> | Administrador de base de datos | 
| Monte el almacenamiento EFS. | Obtenga el comando de montaje de Amazon EFS en la página de la consola de Amazon EFS. Monte el sistema de archivos EFS en la instancia de Amazon RDS mediante un cliente de Network File System (NFS).<pre>sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxxxxx.efs.eu-west-1.amazonaws.com:/ /efs<br />sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxxxxx.efs.eu-west-1.amazonaws.com:/ /efs</pre> | Administrador de base de datos | 

### Elimine la base de datos inicial y cree los directorios para almacenar los archivos de la base de datos
<a name="drop-the-starter-database-and-create-the-directories-to-store-the-database-files"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pause el modo de automatización. | Debe pausar el [modo de automatización](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-managing.html#custom-managing.pausing) en su instancia de base de datos de Amazon RDS Custom antes de continuar con los siguientes pasos, para asegurarse de que la automatización no interfiera con la actividad de restauración de RMAN.Puede pausar la automatización mediante la consola de AWS o el comando Interfaz de la línea de comandos de AWS (AWS CLI) (asegúrese de haber [configurado AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) primero).<pre>aws rds modify-db-instance \<br />--db-instance-identifier peoplesoft-fscm-92 \<br />--automation-mode all-paused \<br />--resume-full-automation-mode-minute 360 \<br />--region eu-west-1<br /></pre>Cuando especifique la duración de la pausa, asegúrese de dejar tiempo suficiente para la restauración de RMAN. Este tiempo dependerá del tamaño de la base de datos de origen, por lo que deberá modificar el valor 360 en consecuencia.Además, asegúrese de que el tiempo total de la automatización pausada no se superponga con la ventana de copia de seguridad o mantenimiento de la base de datos. | Administrador de base de datos | 
| Cree y modifique el archivo de parámetros para PeopleSoft | Para crear y modificar el perfil PeopleSoft, utilice el perfil estándar creado con la instancia de base de datos personalizada de Amazon RDS. Añada los parámetros que necesite. PeopleSoft[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | Administrador de base de datos | 
| Elimine la base de datos inicial. | Para eliminar la base de datos Amazon RDS Custom existente, utilice el siguiente código.<pre>$ sqlplus / as sysdba<br />SQL> shutdown immediate;<br />SQL> startup mount exclusive restrict;<br />SQL> drop database;<br />SQL> exit</pre> |  | 
| Restaure la base de datos Amazon RDS Custom a partir de la copia de seguridad. | Restaure la base de datos mediante el siguiente script. El script restaurará primero el archivo de control y, a continuación, restaurará toda la base de datos a partir de las piezas de respaldo almacenadas en el soporte EFS.<pre>#!/bin/bash<br />Dt=`date +'%Y%m%d-%H%M'`<br />BACKUP_LOG="rman-${ORACLE_SID}-$Dt"<br />export TAGDATE=`date +%Y%m%d%H%M`;<br />LOGPATH=/rdsdbdata/scripts/logs<br />rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF<br />restore controlfile from "/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL";<br />alter database mount;<br />run<br />{<br />set newname for database to '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b';<br />SET NEWNAME FOR TEMPFILE 1 TO '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b';<br />RESTORE DATABASE;<br />SWITCH DATAFILE ALL;<br />SWITCH TEMPFILE ALL;<br />RECOVER DATABASE;<br />}<br />EOF<br />sqlplus / as sysdba >> $LOGPATH/rman-${ORACLE_SID}-$Dt<<-EOF<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo01.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo01.log';<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo02.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo02.log';<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo03.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo03.log';<br />alter database clear unarchived logfile group 1;<br />alter database clear unarchived logfile group 2;<br />alter database clear unarchived logfile group 3;<br />alter database open resetlogs;<br />EXIT<br />EOF<br /></pre> | Administrador de base de datos | 

### Recupere contraseñas de Secrets Manager, cree usuarios y cambie contraseñas
<a name="retrieve-passwords-from-secrets-manager-create-users-and-change-passwords"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Recupere la contraseña de Secrets Manager. | Puede ejecutar este paso mediante la consola de AWS o la AWS CLI. Los siguientes pasos muestran instrucciones para la consola.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | Administrador de base de datos | 
| Cree el usuario RDSADMIN. | `RDSADMIN` es el usuario de la base de datos para monitorear y orquestar la instancia de base de datos de Amazon RDS Custom. Ya que la base de datos inicial se ha eliminado y la base de datos de destino se ha restaurado desde el origen mediante RMAN, deberá volver a crear este usuario tras la operación de restauración para asegurarse de que la supervisión de Amazon RDS Custom funciona según lo previsto. También debe crear un perfil y un espacio de tabla independientes para el usuario de `RDSADMIN`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | Administrador de base de datos | 
| Cree el usuario maestro. | Ya que la base de datos inicial se ha eliminado y la base de datos de destino se ha restaurado desde el origen mediante RMAN, deberá volver a crear el usuario principal. En este ejemplo, el nombre del usuario principal es `admin`.<pre>SQL> create user admin identified by <password>;<br />SQL> grant dba to admin</pre> | Administrador de base de datos | 
| Cambie las contraseñas del sistema. | Cambie las contraseñas del sistema usando la contraseña que obtuvo de Secrets Manager.<pre>SQL> alter user sys identified by xxxxxxxxxxx;<br />SQL> alter user system identified by xxxxxxxxxx;</pre>Si no cambia estas contraseñas, Amazon RDS Custom mostrará el mensaje de error “El usuario o las credenciales de usuario que supervisa la base de datos han cambiado”. | Administrador de base de datos | 

### Configure las entradas de TNS para Amazon RDS Custom y PeopleSoft
<a name="configure-the-tns-entries-for-amazon-rds-custom-and-peoplesoft"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el archivo tnsnames. | Para conectarse a la base de datos desde el nivel de aplicación, configure el archivo `tnsnames.ora` de forma que pueda conectarse a la base de datos desde el nivel de aplicación. En el siguiente ejemplo, puede ver que hay un enlace temporal al archivo `tnsnames.ora`, pero el archivo está vacío de forma predeterminada. <pre>$ cd /rdsdbbin/oracle/network/admin<br />$ ls -ltr<br />-rw-r--r-- 1 rdsdb database 1536 Feb 14  2018 shrept.lst<br />lrwxrwxrwx 1 rdsdb database   30 Apr  5 13:19 listener.ora -> /rdsdbdata/config/listener.ora<br />lrwxrwxrwx 1 rdsdb database   28 Apr  5 13:19 sqlnet.ora -> /rdsdbdata/config/sqlnet.ora<br />lrwxrwxrwx 1 rdsdb database   30 Apr  5 13:19 tnsnames.ora -> /rdsdbdata/config/tnsnames.ora</pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | Administrador de base de datos | 

### Cree el enlace temporal de spfile
<a name="create-the-spfile-softlink"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el enlace temporal de spfile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | Administrador de base de datos | 

### Realice los pasos posteriores a la migración
<a name="perform-post-migration-steps"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide el esquema, las conexiones y las tareas de mantenimiento. | Para finalizar la migración, realice las siguientes tareas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-resources"></a>
+ [Trabajar con Amazon RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-custom.html)
+ [Amazon RDS Custom for Oracle – New Control Capabilities in Database Environment](https://aws.amazon.com/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/) (entrada del blog)
+ [Integrate Amazon RDS Custom for Oracle with Amazon EFS](https://aws.amazon.com/blogs/database/integrate-amazon-rds-custom-for-oracle-with-amazon-efs/) (entrada del blog)
+ [Configuración de Amazon RDS como una PeopleSoft base de datos de Oracle](https://d1.awsstatic.com/whitepapers/configuring-amazon-rds-as-peoplesoft-database.pdf) (documento técnico de AWS)

# Migración de la funcionalidad ROWIdentificador de Oracle a PostgreSQL en AWS
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws"></a>

*Rakesh Raghav y Ramesh Pathuri, Amazon Web Services*

## Resumen
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-summary"></a>

Este patrón describe las opciones para migrar la funcionalidad de `ROWID` pseudocolumnas de Oracle Database a una base de datos PostgreSQL en Amazon Relational Database Service (Amazon RDS) para PostgreSQL, Amazon Aurora PostgreSQL Compatible Edition o Amazon Elastic Compute Cloud (Amazon). EC2

En una base de datos de Oracle, la pseudocolumna `ROWID` es la dirección física de una fila de una tabla. Esta pseudocolumna se utiliza para identificar de forma exclusiva una fila, incluso si la clave principal no está presente en la tabla. PostgreSQL tiene una pseudocolumna similar llamada `ctid`, pero no se puede usar como `ROWID`. Como se explica en la [documentación de PostgreSQL](https://www.postgresql.org/docs/current/ddl-system-columns.html), `ctid` puede cambiar si se actualiza o después de cada proceso `VACUUM`.

Hay tres maneras de crear la funcionalidad de pseudocolumnas `ROWID` en PostgreSQL:
+ Utilice una columna de clave principal en lugar de `ROWID` para identificar una fila de una tabla.
+ Utilice una primary/unique clave lógica (que puede ser una clave compuesta) en la tabla. 
+ Agregue una columna con valores generados automáticamente y conviértala en una primary/unique clave para imitar`ROWID`.

Este patrón le guía por las tres implementaciones y describe las ventajas y desventajas de cada opción.

## Requisitos previos y limitaciones
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Experiencia en codificación procedimental Language/PostgreSQL (PL/pgSQL)
+ Base de datos de origen de Oracle
+ Un clúster de Amazon RDS for PostgreSQL o Aurora compatible con PostgreSQL, o una instancia para alojar la base de datos de PostgreSQL EC2 

**Limitaciones**
+ Este patrón proporciona soluciones alternativas para la funcionalidad de `ROWID`. PostgreSQL no proporciona un equivalente a `ROWID` en Oracle Database.

**Versiones de producto**
+ PostgreSQL 11.9 o posterior

## Arquitectura
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Oracle

**Pila de tecnología de destino**
+ Aurora compatible con PostgreSQL, Amazon RDS for PostgreSQL o una instancia con una base de datos PostgreSQL EC2 

![\[Conversión de una base de datos de Oracle a PostgreSQL en AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9a2ce994-4f68-4975-aab2-796cc20a3c82/images/6e7c2ef6-f440-476a-9003-f1f166718e15.png)


**Opciones de implementación**

Existen tres opciones para solucionar la falta de compatibilidad de `ROWID` con PostgreSQL, en función de si la tabla tiene una clave principal o un índice único, una clave principal lógica o un atributo de identidad. La elección depende de los plazos del proyecto, de la fase de migración actual y de las dependencias del código de la aplicación y de la base de datos.


| 
| 
| Opción | Description (Descripción) | Ventajas | Desventajas | 
| --- |--- |--- |--- |
| **Clave principal o índice único** | Si la tabla de Oracle tiene una clave principal, puede utilizar los atributos de esta clave para identificar de forma exclusiva una fila.  | No depende de las funciones de la base de datos patentada.El impacto en el rendimiento es mínimo, ya que los campos de clave principal están indexados. | Requiere cambios en el código de la aplicación y la base de datos en el que se basa en `ROWID` para cambiar a los campos de clave principal.  | 
| ** primary/unique Clave lógica** | Si la tabla de Oracle tiene una clave principal lógica, puede utilizar los atributos de esta clave para identificar de forma exclusiva una fila. Una clave principal lógica consta de un atributo o un conjunto de atributos que pueden identificar de forma única una fila, pero no se aplica a la base de datos mediante una restricción. | No depende de las funciones de la base de datos patentada. | Requiere cambios en el código de la aplicación y la base de datos en el que se basa en `ROWID` para cambiar a los campos de clave principal.Si los atributos de la clave principal lógica no están indexados, se produce un impacto significativo en el rendimiento. No obstante, puede añadir un índice único para evitar problemas de rendimiento. | 
| **Atributo de identidad** | si la tabla de Oracle no tiene una clave principal, puede crear un campo adicional como `GENERATED ALWAYS AS IDENTITY`. Este atributo genera un valor único cada vez que se insertan datos en la tabla, por lo que se puede utilizar para identificar de forma única una fila para las operaciones del lenguaje de manipulación de datos (DML). | No depende de las funciones de la base de datos patentada.La base de datos PostgreSQL rellena el atributo y mantiene su exclusividad. | Requiere cambios en el código de la aplicación y la base de datos en el que se basa en `ROWID` para cambiar el atributo de identidad.Si el campo adicional no está indexado, tiene un impacto significativo en el rendimiento. No obstante, puede añadir un índice para evitar problemas de rendimiento. | 

## Tools (Herramientas)
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-tools"></a>
+ [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de PostgreSQL en la nube de AWS.
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ 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. En este patrón, puede usar la AWS CLI para ejecutar comandos SQL a través de **pgAdmin.**
+ [pgAdmin](https://www.pgadmin.org/) es una herramienta de gestión de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.
+ La [Herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) simplifica las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado, lo que incluye las vistas, los procedimientos almacenados y las funciones, a un formato compatible con la base de datos de destino.

## Epics
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-epics"></a>

### Identificar las tablas de origen
<a name="identify-the-source-tables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifique las tablas de Oracle que utilizan el atributo `ROWID`. | Utilice la herramienta de conversión de esquemas de AWS (AWS SCT) para identificar las tablas de Oracle que tienen funcionalidad de `ROWID`. Para obtener más información, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.ToPostgreSQL.html#CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID).—o—En Oracle, utilice la vista de `DBA_TAB_COLUMNS` para identificar las tablas que tienen un atributo `ROWID`. Estos campos se pueden utilizar para almacenar caracteres alfanuméricos de 10 bytes. Determine el uso y conviértalos en un campo `VARCHAR`, si procede. | Administrador de base de datos o desarrollador | 
| Identifique el código que hace referencia a estas tablas. | Utilice AWS SCT para generar un informe de evaluación de la migración a fin de identificar los procedimientos afectados por `ROWID`. Para obtener más información, consulte la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.html).—o—En la base de datos de Oracle de origen, utilice el campo de texto de la tabla `dba_source` para identificar los objetos que utilizan la funcionalidad de `ROWID`. | Administrador de base de datos o desarrollador | 

### Determine el uso de clave principal
<a name="determine-primary-key-usage"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identifica las tablas que no tienen claves principales. | En la base de datos de Oracle de origen, utilice `DBA_CONSTRAINTS` para identificar las tablas que no tienen claves principales. Esta información le ayudará a determinar la estrategia de cada tabla. Por ejemplo:<pre>select dt.*<br />from dba_tables dt<br />where not exists (select 1<br />                  from all_constraints ct<br />                  where ct.owner = Dt.owner<br />                    and ct.table_name = Dt.table_name<br />                    and ct.constraint_type = 'P'<br />                  )<br />and dt.owner = '{schema}'</pre> | Administrador de base de datos o desarrollador | 

### Identifique y aplique la solución
<a name="identify-and-apply-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Aplique cambios a las tablas que tengan una clave principal lógica o definida.  | Realice los cambios en el código de la aplicación y la base de datos que se muestran en la sección [Información adicional](#migrate-oracle-rowid-functionality-to-postgresql-on-aws-additional) para utilizar una clave principal única o una clave principal lógica para identificar una fila de la tabla. | Administrador de base de datos o desarrollador | 
| Agregue un campo adicional a las tablas que no tengan una clave principal lógica o definida. | Añada un atributo de tipo `GENERATED ALWAYS AS IDENTITY`. Realice los cambios en el código de la aplicación y la base de datos que se muestran en la sección [Información adicional](#migrate-oracle-rowid-functionality-to-postgresql-on-aws-additional). | Administrador de base de datos o desarrollador | 
| Añada un índice si es necesario. | Agregue un índice al campo adicional o a la clave principal lógica para mejorar el rendimiento de SQL. | Administrador de base de datos o desarrollador | 

## Recursos relacionados
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-resources"></a>
+ [CTID de PostgreSQL](https://www.postgresql.org/docs/current/ddl-system-columns.html) (documentación de PostgreSQL)
+ [Columnas generadas](https://www.postgresql.org/docs/current/ddl-generated-columns.html) (documentación de PostgreSQL)
+ [Pseudocolumna ROWID](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ROWID-Pseudocolumn.html#GUID-F6E0FBD2-983C-495D-9856-5E113A17FAF1) (documentación de Oracle)

## Información adicional
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-additional"></a>

En las siguientes secciones se proporcionan ejemplos de código de Oracle y PostgreSQL para ilustrar los tres enfoques.

**Escenario 1: Uso de una clave única principal**

En los siguientes ejemplos, se crea la tabla `testrowid_s1` con `emp_id` la clave principal.

*Código de Oracle:*

```
create table testrowid_s1 (emp_id integer, name varchar2(10), CONSTRAINT testrowid_pk PRIMARY KEY (emp_id));
INSERT INTO testrowid_s1(emp_id,name) values (1,'empname1');
INSERT INTO testrowid_s1(emp_id,name) values (2,'empname2');
INSERT INTO testrowid_s1(emp_id,name) values (3,'empname3');
INSERT INTO testrowid_s1(emp_id,name) values (4,'empname4');
commit;

SELECT rowid,emp_id,name FROM testrowid_s1;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3pAAAAAAAMOAAA          1 empname1
AAAF3pAAAAAAAMOAAB          2 empname2
AAAF3pAAAAAAAMOAAC          3 empname3
AAAF3pAAAAAAAMOAAD          4 empname4

UPDATE testrowid_s1 SET name = 'Ramesh' WHERE rowid = 'AAAF3pAAAAAAAMOAAB' ;
commit;

SELECT rowid,emp_id,name FROM testrowid_s1;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3pAAAAAAAMOAAA          1 empname1
AAAF3pAAAAAAAMOAAB          2 Ramesh
AAAF3pAAAAAAAMOAAC          3 empname3
AAAF3pAAAAAAAMOAAD          4 empname4
```

*Código PostgreSQL:*

```
CREATE TABLE public.testrowid_s1
(
    emp_id integer,
    name character varying,
    primary key (emp_id)
);

insert into public.testrowid_s1 (emp_id,name) values 
(1,'empname1'),(2,'empname2'),(3,'empname3'),(4,'empname4');

select emp_id,name from testrowid_s1;
 emp_id |   name   
--------+----------
      1 | empname1
      2 | empname2
      3 | empname3
      4 | empname4

update testrowid_s1 set name = 'Ramesh' where emp_id = 2 ;

select emp_id,name from testrowid_s1;
 emp_id |   name   
--------+----------
      1 | empname1
      3 | empname3
      4 | empname4
      2 | Ramesh
```

**Escenario 2: uso de una clave principal lógica**

En los ejemplos siguientes, se crea la tabla `testrowid_s2` con `emp_id` la clave principal lógica.

*Código de Oracle:*

```
create table testrowid_s2 (emp_id integer, name varchar2(10) );
INSERT INTO testrowid_s2(emp_id,name) values (1,'empname1');
INSERT INTO testrowid_s2(emp_id,name) values (2,'empname2');
INSERT INTO testrowid_s2(emp_id,name) values (3,'empname3');
INSERT INTO testrowid_s2(emp_id,name) values (4,'empname4');
commit;

SELECT rowid,emp_id,name FROM testrowid_s2;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3rAAAAAAAMeAAA          1 empname1
AAAF3rAAAAAAAMeAAB          2 empname2
AAAF3rAAAAAAAMeAAC          3 empname3
AAAF3rAAAAAAAMeAAD          4 empname4

UPDATE testrowid_s2 SET name = 'Ramesh' WHERE rowid = 'AAAF3rAAAAAAAMeAAB' ;
commit;

SELECT rowid,emp_id,name FROM testrowid_s2;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3rAAAAAAAMeAAA          1 empname1
AAAF3rAAAAAAAMeAAB          2 Ramesh
AAAF3rAAAAAAAMeAAC          3 empname3
AAAF3rAAAAAAAMeAAD          4 empname4
```

*Código PostgreSQL:*

```
CREATE TABLE public.testrowid_s2
(
    emp_id integer,
    name character varying
);

insert into public.testrowid_s2 (emp_id,name) values 
(1,'empname1'),(2,'empname2'),(3,'empname3'),(4,'empname4');

select emp_id,name from testrowid_s2;
 emp_id |   name   
--------+----------
      1 | empname1
      2 | empname2
      3 | empname3
      4 | empname4

update testrowid_s2 set name = 'Ramesh' where emp_id = 2 ;

select emp_id,name from testrowid_s2;
 emp_id |   name   
--------+----------
      1 | empname1
      3 | empname3
      4 | empname4
      2 | Ramesh
```

**Escenario 3: Uso de un atributo de identidad**

En los ejemplos siguientes, se crea la tabla `testrowid_s3` sin clave principal y mediante un atributo de identidad.

*Código de Oracle:*

```
create table testrowid_s3 (name varchar2(10));
INSERT INTO testrowid_s3(name) values ('empname1');
INSERT INTO testrowid_s3(name) values ('empname2');
INSERT INTO testrowid_s3(name) values ('empname3');
INSERT INTO testrowid_s3(name) values ('empname4');
commit;

SELECT rowid,name FROM testrowid_s3;
ROWID              NAME
------------------ ----------
AAAF3sAAAAAAAMmAAA empname1
AAAF3sAAAAAAAMmAAB empname2
AAAF3sAAAAAAAMmAAC empname3
AAAF3sAAAAAAAMmAAD empname4

UPDATE testrowid_s3 SET name = 'Ramesh' WHERE rowid = 'AAAF3sAAAAAAAMmAAB' ;
commit;

SELECT rowid,name FROM testrowid_s3;
ROWID              NAME
------------------ ----------
AAAF3sAAAAAAAMmAAA empname1
AAAF3sAAAAAAAMmAAB Ramesh
AAAF3sAAAAAAAMmAAC empname3
AAAF3sAAAAAAAMmAAD empname4
```

*Código PostgreSQL:*

```
CREATE TABLE public.testrowid_s3
(
    rowid_seq bigint generated always as identity,
    name character varying
);

insert into public.testrowid_s3 (name) values 
('empname1'),('empname2'),('empname3'),('empname4');

select rowid_seq,name from testrowid_s3;
 rowid_seq |   name   
-----------+----------
         1 | empname1
         2 | empname2
         3 | empname3
         4 | empname4

update testrowid_s3 set name = 'Ramesh' where rowid_seq = 2 ;

select rowid_seq,name from testrowid_s3;
 rowid_seq |   name   
-----------+----------
         1 | empname1
         3 | empname3
         4 | empname4
         2 | Ramesh
```

# Migración de códigos de error de Oracle Database a una base de datos Amazon Aurora compatible con PostgreSQL
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database"></a>

*Sai Parthasaradhi y Veeranjaneyulu Grandhi, Amazon Web Services*

## Resumen
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-summary"></a>

Este patrón muestra cómo migrar los códigos de error de Oracle Database a una base de datos de [Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) mediante una tabla de metadatos predefinida.

Los códigos de error de Oracle Database no siempre tienen un código de error de PostgreSQL correspondiente. Esta diferencia en los códigos de error puede dificultar la configuración de la lógica de procesamiento de los procedimientos o funciones en la arquitectura PostgreSQL de destino.

Puede simplificar el proceso almacenando los códigos de error de la base de datos de origen y destino que son significativos para el PL/pgSQL programa en una tabla de metadatos. Configure la tabla para marcar los códigos de error válidos de Oracle Database y asignarlos a sus equivalentes de PostgreSQL antes de continuar con el resto de la lógica del proceso. Si el código de error de Oracle Database no está en la tabla de metadatos, el proceso finaliza con una excepción. Podrá revisar manualmente los detalles del error y añadir el nuevo código de error a la tabla si su programa lo requiere.

Al usar esta configuración, su base de datos Amazon Aurora compatible con PostgreSQL puede gestionar los errores de la misma manera que lo hace su base de datos de Oracle de origen.

**nota**  
La configuración de una base de datos PostgreSQL para gestionar correctamente los códigos de error de Oracle Database suele requerir cambios en el código de la base de datos y de la aplicación.

## Requisitos previos y limitaciones
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de Oracle de origen con servicios de instancia y oyente en ejecución
+ Un clúster de Amazon Aurora compatible con PostgreSQL en ejecución
+ Familiaridad con Oracle Database
+ Familiaridad con bases de datos PostgreSQL

## Arquitectura
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-architecture"></a>

El siguiente diagrama muestra un ejemplo de flujo de trabajo de base de datos Amazon Aurora compatible con PostgreSQL para la validación y gestión de códigos de error de datos:

![\[Validación y gestión de códigos de error de datos para una base de datos de Aurora compatible con PostgreSQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/82751f40-2fd9-4ce7-ab61-0874552d857b/images/b7ab627e-8f34-4635-8660-93c5c80ce38d.png)


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

1. La tabla contiene los códigos de error y clasificaciones de Oracle Database, así como los códigos de error y clasificaciones de PostgreSQL equivalentes. La tabla incluye una columna **valid\$1error** que clasifica si los códigos de error específicos y predefinidos son válidos o no.

1. **Cuando una PL/pgSQL función (**func\$1processdata**) genera una excepción, invoca una segunda PL/pgSQL función (error\$1validation).**

1. La función **error\$1validation** acepta el código de error de la base de datos de Oracle como argumento de entrada. A continuación, la función compara el código de error entrante con la tabla para comprobar si el error está incluido en la tabla.

1. Si el código de error de la base de datos de Oracle está incluido en la tabla, la función **error\$1validation** devuelve un valor **TRUE** y la lógica del proceso continúa. Si el código de error no está incluido en la tabla, la función devuelve un valor **FALSE** y la lógica del proceso se cierra con una excepción.

1. Cuando la función devuelve un valor **FALSE**, el responsable funcional de la aplicación revisa manualmente los detalles del error para determinar su validez.

1. A continuación, el nuevo código de error se añade manualmente a la tabla o no. Si el código de error es válido y se añade a la tabla, la función **error\$1validation** devolverá un valor **TRUE** la próxima vez que se produzca la excepción. Si el código de error no es válido y el proceso debe fallar cuando se produzca la excepción, el código de error no se agregará a la tabla.

**Pila de tecnología **
+ PostgreSQL de Amazon Aurora
+ pgAdmin
+ Oracle SQL Developer

## Tools (Herramientas)
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-tools"></a>
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ [pgAdmin](https://www.pgadmin.org/) es una plataforma de administración y desarrollo de código abierto para PostgreSQL. Proporciona una interfaz gráfica que ayuda a crear, mantener y usar objetos de base de datos.
+ [Oracle SQL Developer](https://www.oracle.com/in/database/technologies/appdev/sqldeveloper-landing.html) es un entorno de desarrollo integrado que simplifica el desarrollo y la administración de bases de datos de Oracle, tanto en implementaciones tradicionales como en implementaciones basadas en la nube.

## Epics
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-epics"></a>

### Migración de códigos de error de Oracle Database a una base de datos Amazon Aurora compatible con PostgreSQL
<a name="migrate-oracle-database-error-codes-to-your-amazon-aurora-postgresql-compatible-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una tabla en la base de datos de Amazon Aurora compatible con PostgreSQL. | Ejecute el comando de PostgreSQL [CREATE TABLE](https://www.postgresql.org/docs/current/sql-createtable.html):<pre>(<br /><br />    source_error_code numeric NOT NULL,<br /><br />    target_error_code character varying NOT NULL,<br /><br />    valid_error character varying(1) NOT NULL<br /><br />); </pre> | Desarrollador de PostgreSQL, Oracle, para PostgreSQL RDS/Aurora  | 
| Añada los códigos de error de PostgreSQL y sus correspondientes códigos de error de Oracle Database a la tabla. | Ejecute el comando de PostgreSQL [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) para añadir los valores de código de error necesarios a la tabla **error\$1codes**.Los códigos de error de PostgreSQL deben usar un tipo de datos que varíe en caracteres (valor **SQLSTATE**). Los códigos de error de Oracle deben usar un tipo de datos numéricos (valor **SQLCODE**).**Ejemplo de instrucciones de inserción:**<pre>insert into error_codes values (-1817,'22007','Y');<br />insert into error_codes values (-1816,'22007','Y');<br />insert into error_codes values (-3114,'08006','N');</pre>Si detecta excepciones de conectividad de bases de datos Java (JDBC) específicas de Oracle, debe sustituirlas por excepciones genéricas entre bases de datos o cambiar a excepciones específicas de PostgreSQL. | Desarrollador de PostgreSQL, Oracle, para PostgreSQL RDS/Aurora  | 
| Cree una PL/pgSQL función para validar los códigos de error. | Cree una PL/pgSQL función ejecutando el comando CREATE FUNCTION de [PostgreSQL](https://www.postgresql.org/docs/current/sql-createfunction.html). Asegúrese de que la función haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.html) | Desarrollador de PostgreSQL, Oracle, para PostgreSQL RDS/Aurora  | 
| Revise manualmente los nuevos códigos de error a medida que los vaya registrando la función. PL/pgSQL  | Revise manualmente los nuevos códigos de error.Si un nuevo código de error es válido para su caso de uso, agréguelo a la tabla **error\$1codes** ejecutando el comando de PostgreSQL **INSERT**.-o bien-Si un código de error nuevo no es válido para su caso de uso, no lo añada a la tabla. La lógica del proceso seguirá fallando y se cerrará con una excepción cuando se produzca el error. | Desarrollador de PostgreSQL, Oracle, para PostgreSQL RDS/Aurora  | 

## Recursos relacionados
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-resources"></a>

[Apéndice A. Códigos de error de PostgreSQL](https://www.postgresql.org/docs/11/errcodes-appendix.html) (documentación de PostgreSQL)

[Mensajes de error de base de datos](https://docs.oracle.com/cd/E11882_01/server.112/e17766/toc.htm) (documentación de Oracle Database)

# Migre SAP ASE de Amazon EC2 a Amazon Aurora compatible con PostgreSQL mediante AWS SCT y AWS DMS
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms"></a>

*Amit Kumar y Ankit Gupta, Amazon Web Services*

## Resumen
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-summary"></a>

Este patrón describe cómo migrar una base de datos de SAP Adaptive Server Enterprise (SAP ASE) alojada en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) a una edición compatible con PostgreSQL de Amazon Aurora mediante la herramienta de conversión de esquemas de AWS (AWS SCT) y el Servicio de migración de bases de datos de AWS (AWS DMS). El patrón se centra tanto en la conversión del lenguaje de definición de datos (DDL) para los objetos almacenados como en la migración de datos.

Compatible con Aurora PostgreSQL, admite las cargas de trabajo de procesamiento de transacciones online (OLTP). Este servicio gestionado proporciona configuraciones que se escalan automáticamente según la demanda. Puede iniciar, cerrar, ampliar o reducir automáticamente la base de datos en función de las necesidades de la aplicación. Puede ejecutar su base de datos en la nube sin administrar ninguna instancia de base de datos. Compatible con Aurora PostgreSQL ofrece una opción rentable para las cargas de trabajo poco frecuentes, intermitentes o impredecibles.

El proceso de migración consta de dos fases principales:
+ Conversión de esquemas de bases de datos con AWS SCT
+ Migración de los datos mediante AWS DMS

En la sección *Epics* se proporcionan instrucciones detalladas para ambas fases. Para obtener información sobre la solución de problemas específicos del uso de AWS DMS con bases de datos de SAP ASE, consulte [Solución de problemas con SAP ASE](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.SAP) en la documentación de AWS DMS.

## Requisitos previos y limitaciones
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos SAP ASE de origen en una EC2 instancia con servicios de servidor, base de datos y escucha en funcionamiento
+ Una base de datos de destino Aurora compatible con PostgreSQL 

**Limitaciones**
+ El número de puerto para las conexiones puede ser 5432.
+ La función [huge\$1pages](https://www.postgresql.org/docs/9.6/static/runtime-config-resource.html) está activada de forma predeterminada, pero se puede modificar.
+ Point-in-time La granularidad de la recuperación (PITR) es de 5 minutos.
+ La replicación entre regiones no está disponible actualmente.
+ El tamaño máximo de almacenamiento para una base de datos Aurora es de 128 TiB.
+ Puede crear un máximo de 15 réplicas de lectura.
+ El límite de tamaño de la tabla está limitado únicamente por el tamaño del volumen del clúster de Aurora, por lo que el tamaño máximo de la tabla para un clúster de base de datos compatible con Aurora PostgreSQL es de 32 TiB. Le recomendamos que siga estas prácticas recomendadas de diseño de tabla, como la partición de tablas grandes.

**Versiones de producto**
+ Base de datos de origen: AWS DMS actualmente es compatible con SAP ASE 15, 15.5, 15.7 y 16.x. Consulte la [Guía del usuario de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html) para obtener la información más reciente sobre el soporte de versiones de SAP ASE.
+ Base de datos de destino: PostgreSQL 9.4 y versiones posteriores (para la versión 9.x), 10.x, 11.x, 12.x, 13.x y 14.x. Consulte la [Guía del usuario de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) para ver las últimas versiones compatibles de PostgreSQL.
+ Amazon Aurora 1.x o posterior. Para obtener la información más reciente, consulte las [versiones compatibles con Aurora PostgreSQL y las versiones del motor](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) en la documentación de Aurora.

## Arquitectura
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos SAP ASE que se ejecuta en Amazon EC2

**Pila de tecnología de destino**
+ Base de datos Aurora compatible con PostgreSQL

**Arquitectura de migración **

![\[Migración de una base de datos de ASE de SAP a la edición de Aurora compatible con PostgreSQL mediante AWS SCT y AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/07fbdea1-0242-40ae-8e5f-2ce4a620a047/images/a3b018f3-2e7b-4c37-a218-870c56132acb.png)


## Tools (Herramientas)
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-tools"></a>
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ La [herramienta de conversión de esquemas de AWS (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) admite migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino.
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) admite varias bases de datos de origen y destino diferentes. Para obtener más información, consulte [Fuentes de migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) y [Objetivos de migración de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html) en la documentación de AWS DMS. Para obtener el soporte más completo de versiones y funciones, recomendamos que utilice la última versión de AWS DMS. 

## Epics
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el acceso a la red en la EC2 instancia de origen. | Configure grupos de seguridad en la EC2 instancia que aloja la base de datos SAP ASE de origen.Para obtener instrucciones, consulta [los grupos EC2 de seguridad de Amazon para instancias de Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html?icmpid=docs_ec2_console) en la EC2 documentación de Amazon. | Administrador de sistemas | 
| Cree su clúster de base de datos Aurora compatible con PostgreSQL de destino. | Instale, configure y lance un clúster compatible con Aurora PostgreSQL para la base de datos de destino.Para obtener más información, consulte [ Creación de un clúster de base de datos de Amazon Aurora, en la documentación de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html). | Administrador de base de datos | 
| Configure la autorización para el clúster de base de datos de destino. | Configure grupos de seguridad y firewalls para la base de datos de destino.Para obtener instrucciones, consulte [Creación de un clúster de base de datos de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) en la documentación de Aurora. | Administrador de base de datos, administrador de sistemas | 

### Convierta el esquema de su base de datos con AWS SCT
<a name="convert-your-database-schema-with-aws-sct"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Iniciar AWS SCT. | Para iniciar AWS SCT, siga las instrucciones de la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_GettingStarted.html).AWS SCT proporciona una interfaz de usuario basada en el proyecto para convertir automáticamente el esquema de la base de datos de su base de datos SAP ASE de origen en un formato compatible con su instancia de base de datos de Aurora compatible con PostgreSQL de destino. | Administrador de base de datos | 
| Cree puntos de enlace SCT de AWS. | Cree puntos de conexión para las bases de datos de origen SAP ASE, y las bases de datos de desino PostgreSQL.Para obtener instrucciones, consulte [la documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AddServers). | Administrador de base de datos | 
| Generar un informe de evaluación. | Cree un informe de evaluación de la migración de la base de datos para evaluar la migración y detectar cualquier objeto o función incompatible.Para obtener instrucciones, consulte [la documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport). | Administrador de base de datos | 
| Convierta el esquema.  | Convierta el esquema de la base de datos siguiendo las instrucciones de la [documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html). | Administrador de base de datos | 
| Valide los objetos de la base de datos. | Si AWS SCT no puede convertir un objeto de base de datos, identificará su nombre y otros detalles. Debe convertir estos objetos manualmente.Para identificar estas discrepancias, siga las instrucciones de la entrada del blog de AWS sobre cómo [Validar los objetos de la base de datos después de migrar de SAP ASE a Amazon RDS para PostgreSQL o Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/validate-database-objects-after-migrating-from-sap-ase-to-amazon-rds-for-postgresql-or-amazon-aurora-postgresql/). | Administrador de base de datos | 

### Analice la migración a AWS DMS
<a name="analyze-the-aws-dms-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. | Compruebe la compatibilidad de las versiones de las bases de datos SAP ASE con AWS DMS. Para obtener más información, consulte [Origens de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html#CHAP_Introduction.Sources.title) y [Objetivos de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) en la documentación de AWS DMS. | Administrador de base de datos | 
| Identifique los requisitos para el tipo y la capacidad de almacenamiento. | Elija la capacidad de almacenamiento adecuada para la base de datos de destino en función del tamaño de la base de datos de origen. | Administrador de base de datos, administrador de sistemas | 
| Elija el tipo de instancia, la capacidad y otras características de la instancia de replicación. | Elija el tipo de instancia, la capacidad, las funciones de almacenamiento y las funciones de red que mejor se adapten a sus necesidades.Para obtener orientación, consulte [Elegir la instancia de replicación de AWS DMS correcta para la migración](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Types.html) en la documentación de AWS DMS. | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de seguridad de acceso a la red. | Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino.Siga las instrucciones de [Configuración de una red para una instancia de replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html) en la documentación de AWS DMS. | Administrador de base de datos, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los datos mediante la creación de una tarea de migración en AWS DMS. | Para migrar datos, cree una tarea y siga las instrucciones en [la documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html). Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características. | Administrador de base de datos | 
| Valide los datos. | Para validar que los datos se migraron con precisión de la base de datos de origen a la base de datos de destino, siga las [pautas de validación de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html) que se proporcionan en la documentación de AWS DMS. | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identificar la estrategia de migración de aplicaciones. | Elija una de las [siete estrategias (7R)](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/planning-phase.html) para migrar aplicaciones a la nube. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Seguir la estrategia de migración de aplicaciones. | Complete las tareas de la base de datos identificadas por el equipo de la aplicación, incluida la actualización de los detalles de la conexión DNS de la base de datos de destino y la actualización de las consultas dinámicas.  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Realizar la transición a la base de datos de destino
<a name="cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. | Cambie la conexión de la base de datos de origen a la base de datos de destino. Para obtener más información, consulte la sección de [Transición](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/cut-over.html) de la *Estrategia de migración para bases de datos relacionales*. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. | Finalice todas las tareas de migración, las instancias de replicación, los puntos de enlace y otros recursos de AWS SCT y AWS DMS. Para obtener más información, consulte [la documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Deleting). | Administrador de base de datos, administrador de sistemas | 
| Revise y valide los documentos del proyecto. | Valide todos los pasos de la documentación del proyecto para asegurarse de que todas las tareas se hayan completado correctamente. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cierre el proyecto. | Cierre el proyecto de migración y envíe sus comentarios. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-resources"></a>

**Referencias**
+ [Habilite las conexiones cifradas para las instancias de base de datos de PostgreSQL en Amazon RDS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/enable-encrypted-connections-for-postgresql-db-instances-in-amazon-rds.html) (Recomendaciones de AWS)
+ [Transporte bases de datos PostgreSQL entre dos instancias de base de datos de Amazon RDS mediante pg\$1transport](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg_transport.html) (Recomendaciones de AWS)
+ [Precios de Amazon Aurora](https://aws.amazon.com/rds/aurora/pricing/)
+ [Prácticas recomendadas con Edición compatible con Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraPostgreSQL.BestPractices.html) (documentación de Amazon Aurora)
+ [Documentación de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Uso de una base de datos SAP ASE como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)

**Tutoriales y videos**
+ [Introducción a AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/getting-started/)
+ [AWS Database Migration Service (AWS DMS)](https://www.youtube.com/watch?v=zb4GcjEdl8U) (video)

# Migración de los certificados SSL de Windows a un equilibrador de carga de aplicación mediante ACM
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm"></a>

*Chandra Sekhar Yaratha e Igor Kovalchuk, Amazon Web Services*

## Resumen
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-summary"></a>

El patrón proporciona orientación sobre el uso de AWS Certificate Manager (ACM) para migrar los certificados Secure Sockets Layer (SSL) existentes de sitios web alojados en servidores locales o instancias de Amazon Elastic Compute Cloud (Amazon EC2) en Microsoft Internet Information Services (IIS). Después, los certificados SSL se pueden usar con Elastic Load Balancing en AWS. 

SSL protege sus datos, afirma su identidad, proporciona una mejor clasificación en los motores de búsqueda, ayuda a cumplir los requisitos de la norma de seguridad de datos del sector de las tarjetas de pago (PCI DSS) y mejora la confianza de los clientes. Los desarrolladores y los equipos de TI que administran estas cargas de trabajo desean que sus aplicaciones e infraestructuras web, incluidos el servidor IIS y Windows Server, sigan cumpliendo con sus políticas básicas.

Este patrón incluye la exportación manual de los certificados SSL existentes desde Microsoft IIS, su conversión del formato de intercambio de información personal (PFX) al formato de correo privado mejorado (PEM) compatible con ACM y, a continuación, su importación a ACM en la cuenta de AWS. También se describe cómo crear un equilibrador de carga de aplicación para la aplicación y cómo configurar el equilibrador de carga de aplicación para que utilice los certificados importados. A continuación, las conexiones HTTPS finalizan en el equilibrador de carga de aplicación y no se necesita más sobrecarga de configuración en el servidor web. Para obtener más información, consulte [Create an HTTPS listener for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html) (Crear un oyente HTTPS para el equilibrador de carga de aplicación).

Los servidores Windows utilizan archivos .pfx o .p12 para contener el archivo de clave pública (certificado SSL) y el archivo de clave privada exclusivo. La autoridad de certificación (CA) le proporciona su archivo de clave pública. El servidor se utiliza para generar el archivo de clave privada asociado en el que se creó la solicitud de firma de certificados (CSR).

## Requisitos previos y limitaciones
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una nube privada virtual (VPC) en AWS con al menos una subred privada y una pública en cada zona de disponibilidad utilizada por los destinos
+ La versión 8.0 o posterior de IIS se ejecuta en Windows Server 2012 o posterior
+ Una aplicación web que se ejecute en IIS
+ Acceso de administrador al servidor IIS

## Arquitectura
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-architecture"></a>

**Pila de tecnología de origen**
+ Implementación de un servidor web IIS con SSL para garantizar que los datos se transmitan de forma segura en una conexión cifrada (HTTPS) 

**Arquitectura de origen**

![\[Arquitectura de origen para migrar los certificados SSL de Windows a un equilibrador de carga de aplicación mediante ACM\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cad6e465-da39-4819-970e-10e1c30e0a1f/images/e63efb6f-205b-4e20-a043-6bc954470191.png)


**Pila de tecnología de destino**
+ Certificados ACM en su cuenta de AWS
+ Un equilibrador de carga de aplicación configurado para usar certificados importados
+ Instancias de Windows Server en las subredes privadas

**Arquitectura de destino**

![\[Arquitectura de destino para migrar los certificados SSL de Windows a un equilibrador de carga de aplicación mediante ACM\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/cad6e465-da39-4819-970e-10e1c30e0a1f/images/45ac7fba-fbad-4c74-9b1f-80ca212dae08.png)


 

## Tools (Herramientas)
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-tools"></a>
+ [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.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuye el tráfico entrante de aplicaciones o redes entre varios destinos. Por ejemplo, puede distribuir el tráfico entre EC2 instancias, contenedores y direcciones IP en una o más zonas de disponibilidad.

## Prácticas recomendadas
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-best-practices"></a>
+ Imponga redireccionamientos de tráfico de HTTP a HTTPS.
+ Configure correctamente los grupos de seguridad para su equilibrador de carga de aplicación para permitir el tráfico entrante solo a puertos específicos.
+ Lance sus EC2 instancias en diferentes zonas de disponibilidad para garantizar una alta disponibilidad.
+ Configure el dominio de la aplicación para que apunte al nombre DNS del equilibrador de carga de aplicación en lugar de a su dirección IP.
+ Asegúrese de que el equilibrador de carga de aplicación tenga configuradas las [comprobaciones de estado](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) de la capa de aplicación.
+ Configure el umbral para las comprobaciones de estado.
+ Usa [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) para monitorear el Application Load Balancer.

## Epics
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-epics"></a>

### Exportar un archivo .pfx
<a name="export-a-pfx-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Exporte el archivo .pfx desde Windows Server. | Para exportar el certificado SSL como un archivo .pfx desde el administrador de IIS en las instalaciones de Windows Server:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html)El archivo .pfx ahora debería guardarse en la ubicación y la ruta que especificó. | Administrador de sistemas | 

### Convertir el certificado codificado en PFX al formato PEM
<a name="convert-the-pfx-encoded-certificate-to-pem-format"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue e instale el kit de herramientas de OpenSSL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html) | Administrador de sistemas | 
| Convertir el certificado codificado en PFX al formato PEM. | Los pasos siguientes convierten el archivo de certificado firmado y codificado en PFX en tres archivos en formato PEM:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html)Para convertir el certificado codificado en PFX:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html) | Administrador de sistemas | 

### Importar un certificado a ACM
<a name="import-a-certificate-into-acm"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepárese para importar el certificado. | En la [consola ACM](https://console.aws.amazon.com/acm/home), seleccione **Import a certificate** (Importar un certificado). | Administrador de la nube | 
| Proporcione el cuerpo del certificado. | En el **Certificate body**, pegue el certificado codificado en PEM para importar. Para obtener más información sobre los comandos y los pasos descritos en esta y otras tareas de esta Epic, consulte [Import a certificate](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html) (Importar un certificado) en la documentación de ACM. | Administrador de la nube | 
| Proporcione la clave privada del certificado. | En **Certificate private key**, pegue la clave privada codificada en PEM y sin cifrar que coincida con la clave pública del certificado. | Administrador de la nube | 
| Proporcione la cadena del certificado. | En **Certificate chain** (Cadena del certificado), pegue la cadena del certificado codificada en PEM, que se almacena en el archivo `CertificateChain.pem`. | Administrador de la nube | 
| Importe el certificado. | Seleccione **Review and import**. Confirme que la información sobre su certificado es correcta y, a continuación, seleccione **Import**. | Administrador de la nube | 

### Creación de un equilibrador de carga de aplicación
<a name="create-an-application-load-balancer"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y configure el equilibrador de carga y los oyentes. | Siga las instrucciones de la [documentación de Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) para configurar un grupo objetivo, registrar los objetivos y crear un equilibrador de carga de aplicación y un oyente. Agregue un segundo oyente (HTTPS) para el puerto 443. | Administrador de la nube | 

## Resolución de problemas
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Windows PowerShell no reconoce el comando OpenSSL incluso después de agregarlo a la ruta del sistema. | Compruebe que `$env:path` incluya la ubicación de los binarios de OpenSSL.Si no es así, ejecute el siguiente comando en: PowerShell<pre>$env:path = $env:path + ";C:\OpenSSL-Win64\bin"</pre> | 

## Recursos relacionados
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-resources"></a>

**Importing a certificate into ACM** (Importar un certificado a ACM)
+ [Consola de ACM](https://console.aws.amazon.com/acm/home)
+ [Certificate and key format for importing](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-format.html) (Formato de certificado y de clave para importación)
+ [Importing a certificate](https://aws.amazon.com/blogs/security/how-to-import-pfx-formatted-certificates-into-aws-certificate-manager-using-openssl/) (Importar un certificado)
+ [AWS Certificate Manager User Guide](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) (Guía del usuario de AWS Certificate Manager)

**Creating an Application Load Balancer** (Crear un equilibrador de carga de aplicación)
+ [Creación de un equilibrador de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)
+ [Application Load Balancer User Guide](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) (Guía del usuario del equilibrador de carga de aplicación)

# Migración de una cola de mensajes de Microsoft Azure Service Bus a Amazon SQS
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs"></a>

*Nisha Gambhir, Amazon Web Services*

## Resumen
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-summary"></a>

Este patrón describe cómo migrar una aplicación web o de consola .NET Framework o .NET Core desde la plataforma de mensajería en cola Service Bus de Microsoft Azure a Amazon Simple Queue Service (Amazon SQS).

Las aplicaciones utilizan los servicios de mensajería para enviar y recibir datos de otras aplicaciones. Estos servicios ayudan a compilar microservicios disociados y altamente escalables, sistemas distribuidos y aplicaciones sin servidor en la nube.

Las colas de Azure Service Bus forman parte de una infraestructura de mensajería de Azure más amplia que admite las colas y publish/subscribe la mensajería. 

Amazon 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. Amazon SQS elimina la complejidad y la sobrecarga asociadas a la administración y el funcionamiento del middleware orientado a mensajes y permite a los desarrolladores centrarse en diferenciar el trabajo. Con Amazon SQS, puede enviar, almacenar y recibir mensajes entre componentes de software a cualquier volumen, sin perder mensajes ni requerir la disponibilidad de otros servicios.

## Requisitos previos y limitaciones
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Una cuenta de AWS activa 
+ Una aplicación web o de consola .NET Framework o .NET Core que utiliza colas de Azure Service Bus (se adjunta un código de muestra)

**Versiones de producto**
+ .NET Framework 3.5 o posterior, o .NET Core 1.0.1, 2.0.0 o posterior

## Arquitectura
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-architecture"></a>

**Pila de tecnología de origen**
+ Una aplicación web o de consola .NET (Core o Framework) que utiliza una cola de Azure Service Bus para enviar mensajes

 

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

## Tools (Herramientas)
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-tools"></a>

**Herramientas**
+ Microsoft Visual Studio

**Código**

Para crear una política de AWS Identity and Access Management (IAM) para Amazon SQS:

1. Inicie sesión en la consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

2. En el panel de navegación de la izquierda, elija **Políticas** y, a continuación, elija **Crear política**.

3. Elija la pestaña **JSON** y pegue el siguiente código:

```
{
   "Version": "2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
            "sqs:DeleteMessage",
            "sqs:GetQueueUrl",
            "sqs:ChangeMessageVisibility",
            "sqs:SendMessageBatch",
            "sqs:ReceiveMessage",
            "sqs:SendMessage",
            "sqs:GetQueueAttributes",
            "sqs:ListQueueTags",
            "sqs:ListDeadLetterSourceQueues",
            "sqs:DeleteMessageBatch",
            "sqs:PurgeQueue",
            "sqs:DeleteQueue",
            "sqs:CreateQueue",
            "sqs:ChangeMessageVisibilityBatch",
            "sqs:SetQueueAttributes"
         ],
         "Resource": "arn:aws:sqs:*:<AccountId>:*"
      },
      {
         "Sid": "VisualEditor1",
         "Effect": "Allow",
         "Action": "sqs:ListQueues",
         "Resource": "*"
      }
   ]
}
```

4. Elija **Revisar política**, escriba un nombre y seleccione **Crear política**.

5. Adjunte la política recién creada a su rol de IAM existente o cree un rol nuevo.

## Epics
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-epics"></a>

### Configuración de Amazon SQS en AWS
<a name="set-up-amazon-sqs-in-aws"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una política de IAM para Amazon SQS. | Cree la política de IAM que proporcionará acceso a Amazon SQS. Consulte la sección Código para ver una muestra de política. | Ingeniero de sistemas | 
| Crear un perfil de AWS. | Cree un perfil nuevo ejecutando las herramientas de AWS para PowerShell el comando Set-AWSCredential. Este comando almacena la clave de acceso y la clave secreta en el archivo de credenciales predeterminado bajo el nombre de perfil que especifique. Vincule la política de Amazon SQS que creó anteriormente con esta cuenta. Conserve el ID de clave de acceso y la clave de acceso secreta de AWS. Estos serán necesarios en los pasos siguientes. | Ingeniero de sistemas | 
| Crear una cola de SQS. | Puede crear una cola estándar o una cola con el primero en entrar, primero en salir (FIFO). Para obtener instrucciones, consulte el enlace de la sección Referencias. | Ingeniero de sistemas | 

### Revisar el código de su aplicación .NET
<a name="revise-your-net-application-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar AWS Toolkit for Visual Studio  | Este kit de herramientas es una extensión para Microsoft Visual Studio y facilita la creación e implementación de aplicaciones .NET en AWS. Para obtener instrucciones de instalación y uso, consulte el enlace de la sección Referencias. | Desarrollador de aplicaciones | 
| Instale el paquete AWSSDK .SQS. NuGet  | Puede instalar AWSSDK .SQS seleccionando «Administrar NuGet paquete» en Visual Studio o ejecutando el comando « AWSSDKInstall-Package .SQS». | Desarrollador de aplicaciones | 
| Cree un objeto en su AWSCredentials aplicación.NET. | La aplicación de ejemplo del archivo adjunto muestra cómo crear un AWSCredentials objeto básico, que hereda de AWSCredentials. Puede utilizar el identificador de clave de acceso y la clave de acceso secreta de antes, o dejar que el objeto los elija de la carpeta .aws como parte del perfil de usuario en tiempo de ejecución. | Desarrollador de aplicaciones | 
| Cree un objeto de cliente de SQS. | Cree un objeto cliente SQS (AmazonSQSClient) para .NET Framework. Esto forma parte del espacio de nombres Amazon.SQS. Este objeto es obligatorio en lugar del IQueue Cliente, que forma parte de Microsoft.Azure. ServiceBus espacio de nombres. | Desarrollador de aplicaciones | 
| Llame al SendMessageAsync método para enviar mensajes a la cola de SQS. | Cambie el código que envía el mensaje a la cola para usar el. amazonSqsClient SendMessageAsync método. Para obtener más información, consulte el código de muestra adjunto. | Desarrollador de aplicaciones | 
| Llame al ReceiveMessageAsync método para recibir mensajes de la cola de SQS. | Cambie el código que recibe el mensaje para usar el. amazonSqsClient ReceiveMessageAsync método. Para obtener más información, consulte el código de muestra adjunto. | Desarrollador de aplicaciones | 
| Llame al DeleteMessageAsync método para eliminar los mensajes de la cola de SQS. | Para eliminar mensajes, cambie el código del QueueClient. CompleteAsync método para. amazonSqsClient DeleteMessageAsync método. Para obtener más información, consulte el código de muestra adjunto. | Desarrollador de aplicaciones | 

## Recursos relacionados
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-related-resources"></a>
+ [Guía para desarrolladores de AWS SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html)
+ [Mensajería mediante Amazon SQS](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sqs-apis-intro.html)
+ [Creación y uso de una cola de Amazon SQS con AWS SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/how-to-sqs.html)
+ [Enviar un mensaje de Amazon SQS](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/SendMessage.html)
+ [Recibir un mensaje de una cola de Amazon SQS](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/ReceiveMessage.html)
+ [Eliminar un mensaje de una cola de Amazon SQS](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/DeleteMessage.html)
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html)

## Información adicional
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-additional-information"></a>

Este patrón incluye dos aplicaciones de muestra (consulte la sección de adjuntos):
+ **AzureSbTestApp**incluye código que usa la cola del bus de servicio de Azure.
+ **AmazonSqsTestApp**utiliza Amazon SQS. Se trata de una aplicación de consola que utiliza .NET Core 2.2 e incluye ejemplos para enviar y recibir mensajes.

Notas:
+ QueueClient es un objeto de IQueue Client, que forma parte de Microsoft.Azure. ServiceBus espacio de nombres (incluido en Microsoft.Azure). ServiceBus NuGet paquete).
+ amazonSqsClient es un objeto de AmazonSQSClient, que forma parte del espacio de nombres Amazon.sqs (incluido en el paquete .SQS). AWSSDK NuGet 
+ Según dónde se ejecute el código, por ejemplo, si se está ejecutando, el rol debe tener permiso para escribir en EC2 la cola de SQS.

## Conexiones
<a name="attachments-25334709-7000-4f60-87ed-ea41acb41a99"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/25334709-7000-4f60-87ed-ea41acb41a99/attachments/attachment.zip)

# Migre una EnterpriseOne base de datos de Oracle JD Edwards a AWS mediante Oracle Data Pump y AWS DMS
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms"></a>

*Thanigaivel Thirumalai, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-summary"></a>

Puede migrar y ejecutar la EnterpriseOne base de datos de JD Edwards en [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)). Al migrar la base de datos a Amazon RDS, AWS puede encargarse de las tareas de backup y de la configuración de alta disponibilidad, para que pueda concentrarse en el mantenimiento de EnterpriseOne la aplicación y su funcionalidad. Para obtener una lista completa de los factores clave a tener en cuenta durante el proceso de migración, consulte [Estrategias de migración de bases de datos de Oracle](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html) en Recomendaciones de AWS.

Existen varias formas de migrar una EnterpriseOne base de datos, entre las que se incluyen las siguientes:
+ Uso de Oracle Universal Batch Engine (UBE) R98403 para la creación de esquemas y tablas, y uso de AWS Database Migration Service (AWS DMS) para la migración
+ Uso de herramientas nativas de bases de datos para la creación de esquemas y tablas y uso de AWS DMS para la migración
+ Uso de herramientas nativas de bases de datos para la migración de datos existentes (carga completa) y uso de AWS DMS para tareas de captura de datos de cambios (CDC)

Este patrón cubre la tercera opción. En él se explica cómo migrar las EnterpriseOne bases de datos locales a Amazon RDS for Oracle mediante Oracle Data Pump con [AWS](https://aws.amazon.com/dms) DMS y su función CDC.

[Oracle JD Edwards EnterpriseOne](https://www.oracle.com/applications/jd-edwards-enterpriseone/) es una solución de planificación de recursos empresariales (ERP) para organizaciones que fabrican, construyen, distribuyen, dan servicio o gestionan productos o activos físicos. JD Edwards EnterpriseOne es compatible con varios hardware, sistemas operativos y plataformas de bases de datos.

Al migrar aplicaciones ERP fundamentales, como JD Edwards EnterpriseOne, es fundamental minimizar el tiempo de inactividad. AWS DMS minimiza el tiempo de inactividad gracias a su replicación, tanto continua como de carga completa, desde la base de datos de origen a la base de datos de destino. AWS DMS también proporciona supervisión y registro de la migración en tiempo real, lo que le ayudará a identificar y resolver cualquier problema que pueda provocar un tiempo de inactividad.

Cuando replique cambios con AWS DMS, debe especificar una hora o un número de cambio del sistema (SCN) como punto de partida para leer los cambios de los registros de la base de datos. Es crucial mantener estos registros accesibles en el servidor durante un periodo de tiempo determinado (recomendamos 15 días) para garantizar que AWS DMS tenga acceso a estos cambios.

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-prereqs"></a>

**Requisitos previos **
+ Una base de datos de Amazon RDS para Oracle aprovisionada en su entorno de la nube de AWS como base de datos de destino. Para obtener instrucciones, consulte la [Documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html).
+ Una EnterpriseOne base de datos que se ejecuta localmente o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en AWS.
**nota**  
Este patrón está diseñado para migrar de las instalaciones a AWS, pero se probó con una EnterpriseOne base de datos en una instancia de EC2. Si planea migrar desde su entorno en las instalaciones, debe configurar la conectividad de red adecuada.
+ Detalles del esquema. Identifique el esquema de base de datos de Oracle (por ejemplo DV920) para el que planea migrar. EnterpriseOne Antes de iniciar el proceso de migración, recopile los siguientes detalles sobre el esquema:
  + Tamaño del esquema
  + La cantidad de objetos por tipo de objeto
  + La cantidad de objetos no válidos

**Limitaciones**
+ Debe crear los esquemas que desee en la base de datos de Amazon RDS para Oracle de destino; AWS DMS no los crea por usted. (La sección [Epics](#migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-epics) describe cómo usar Data Pump para exportar e importar esquemas). El nombre del esquema debe existir ya para la base de datos de Oracle de destino. Las tablas del esquema de origen se importan al usuario o al esquema, y AWS DMS utiliza la cuenta del administrador o del sistema para conectarse a la instancia de destino. Para migrar varios esquemas, puede crear varias tareas de replicación. También puede migrar datos a diferentes esquemas en una instancia de destino. Para ello, utilice las reglas de transformación de esquemas en las asignaciones de tablas de AWS DMS.
+ Este patrón se probó con un conjunto de datos de demostración. Le recomendamos que valide la compatibilidad y la personalización de su conjunto de datos.
+ Este patrón usa una EnterpriseOne base de datos que se ejecuta en Microsoft Windows. Sin embargo, puede utilizar el mismo proceso con otros sistemas operativos compatibles con AWS DMS.

## Arquitectura
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-architecture"></a>

El siguiente diagrama muestra un sistema que se ejecuta EnterpriseOne en una base de datos Oracle como base de datos de origen y una base de datos Amazon RDS for Oracle como base de datos de destino. Los datos se exportan desde la base de datos de Oracle de origen y se importan a la base de datos Amazon RDS para Oracle de destino mediante Oracle Data Pump, y se replican para las actualizaciones de CDC mediante AWS DMS.

![\[Diagram showing data replication from on-premises Oracle to Amazon RDS using AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/c8ec3789-f80e-4f3a-a3f4-72a4541316b0/images/4e3e3477-2fe0-4a5d-b95e-05a8aafe8b68.png)


1. Oracle Data Pump extrae los datos de la base de datos de origen y los envía al destino de la base de datos de Amazon RDS para Oracle.

1. Los datos de CDC se envían desde la base de datos de origen a un punto de conexión de origen en AWS DMS.

1. Desde el punto de conexión de origen, los datos se envían a la instancia de replicación de AWS DMS, donde se realiza la tarea de replicación.

1. Una vez completada la tarea de replicación, los datos se envían al punto de conexión de destino en AWS DMS.

1. Desde el punto de conexión de destino, los datos se envían a la instancia de base de datos Amazon RDS para Oracle.

## Tools (Herramientas)
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-tools"></a>

**Servicios 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 Relational Database Service (Amazon RDS) para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle en la nube de AWS.

**Otros servicios**
+ [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) le ayuda a trasladar datos y metadatos entre una base de datos y otra a alta velocidad.

## Prácticas recomendadas
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-best-practices"></a>

**Migrating LOBs**

Si la base de datos de origen contiene objetos binarios de gran tamaño (LOBs) que deben migrarse a la base de datos de destino, AWS DMS ofrece las siguientes opciones:
+ **Modo LOB completo**: AWS DMS migra todas las bases de datos LOBs de origen a la de destino, independientemente de su tamaño. Aunque la migración es más lenta que en los otros modos, la ventaja es que los datos no se truncan. Para mejorar el rendimiento, puede crear una tarea independiente en la nueva instancia de replicación para migrar las tablas LOBs que tengan un tamaño superior a unos pocos megabytes.
+ **Modo LOB limitado**: usted especifica el tamaño máximo de los datos de la columna LOB, lo que permite a AWS DMS preasignar los recursos y aplicarlos de forma masiva. LOBs Si el tamaño de las columnas LOB supera el tamaño especificado en la tarea, AWS DMS trunca los datos y envía advertencias al archivo de registro de AWS DMS. Puede mejorar el rendimiento usando el modo LOB limitado si el tamaño de los datos de LOB se encuentra dentro del tamaño de LOB limitado.
+ **Modo LOB en línea**: puede migrar LOBs sin truncar los datos ni ralentizar el rendimiento de la tarea al replicar tanto los datos pequeños como los grandes. LOBs En primer lugar, especifique un valor para el parámetro `InlineLobMaxSize`, que sólo está disponible cuando el modo LOB completo está establecido en `true`. La tarea de AWS DMS transfiere lo pequeño LOBs en línea, lo que es más eficiente. A continuación, AWS DMS migra el tamaño grande LOBs realizando una búsqueda en la tabla de origen. Sin embargo, el modo LOB en línea funciona únicamente en la fase de carga completa.

**Generación de valores de secuencia**

Durante el proceso de AWS DMS CDC, los números de secuencia incrementales no se replican desde la base de datos de origen. Para evitar discrepancias en los valores de secuencia, debe generar el valor de secuencia más reciente del origen para todas las secuencias y aplicarlo a la base de datos Amazon RDS para Oracle de destino.

**AWS Secrets Manager**

Para ayudarle a gestionar sus credenciales, le recomendamos que siga las instrucciones de la entrada del blog [Gestionar sus credenciales de punto de conexión de AWS DMS con AWS Secrets Manager](https://aws.amazon.com/blogs/database/manage-your-aws-dms-endpoint-credentials-with-aws-secrets-manager/).

**Rendimiento**
+ **Instancias de replicación**: para obtener orientación sobre cómo elegir el mejor tamaño de instancia, consulte [Selección del mejor tamaño para una instancia de replicación](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.SizingReplicationInstance.html) en la documentación de AWS DMS.
+ **Opciones de conectividad**: para evitar problemas de latencia, le recomendamos que elija la opción de conectividad adecuada. AWS Direct Connect proporciona el camino más corto a los recursos de AWS, ya que es una conexión dedicada entre los centros de datos corporativos y AWS. Mientras se encuentra en tránsito, el tráfico de red permanece en la red global de AWS y nunca pasa por Internet. Esto reduce la posibilidad de que se produzcan cuellos de botella o aumentos inesperados de la latencia en comparación con el uso de una VPN o de la Internet pública.
+ **Ancho de banda de la red**: para optimizar el rendimiento, compruebe que el rendimiento de la red sea rápido. Si utiliza un túnel VPN entre la base de datos de origen en las instalaciones y AWS DMS, asegúrese de que el ancho de banda sea suficiente para su carga de trabajo.
+ **Paralelismo de tareas**: puede acelerar la replicación de datos cargando varias tablas en paralelo durante la carga completa. Este patrón utiliza puntos de conexión del RDBMS, por lo que esta opción solo se aplica al proceso de carga completa. El paralelismo de las tareas se controla mediante el parámetro `MaxFullLoadSubTasks`, que determina cuántas subtareas a plena carga se ejecutan en paralelo. De forma predeterminada, este parámetro está establecido en 8, lo que significa que ocho tablas (si se seleccionan en el mapeo de tablas) se cargan juntas durante el modo completo. Puede ajustar este parámetro en la sección de configuración de tareas de carga completa del script JSON de la tarea.
+ **Paralelismo de tablas**: AWS DMS también le permite cargar una sola tabla grande mediante varios subprocesos paralelos. Esto resulta especialmente útil para las tablas fuente de Oracle que tienen miles de millones de registros, así como varias particiones y subparticiones. Si la tabla de origen no está particionada, puede usar límites de columna para cargas paralelas.
+ **Dividir las cargas**: al dividir las cargas en varias tareas o instancias de AWS DMS, recuerde los límites de las transacciones al capturar los cambios.

## Epics
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-epics"></a>

### Utilice Oracle Data Pump para exportar el esquema EnterpriseOne
<a name="use-oracle-data-pump-to-export-the-enterpriseone-schema"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere el SCN. | Cuando la base de datos de origen esté activa y la EnterpriseOne aplicación la utilice, inicie la exportación de datos con Oracle Data Pump. En primer lugar, debe generar un número de cambio del sistema (SCN) a partir de la base de datos de origen, tanto para la coherencia de datos durante la exportación con Oracle Data Pump como punto de partida para el CDC en AWS DMS.Para generar el SCN actual a partir de su base de datos de origen, utilice la siguiente instrucción SQL:<pre>SQL> select current_scn from v$database;<br /><br />CURRENT_SCN<br />-----------<br />   30009727</pre>Guarde el SCN generado. Utilizará el SCN cuando exporte los datos y para crear la tarea de replicación de AWS DMS. | Administrador de base de datos | 
| Cree el archivo de parámetros. | Para crear un archivo de parámetros para exportar el esquema, puede usar el siguiente código.<pre>directory=DMS_DATA_PUMP_DIR<br />logfile=export_dms.log<br />dumpfile=export_dms_data.dmp<br />schemas=<schema name><br />flashback_scn=<SCN from previous command></pre>También puede definir su propio `DATA_PUMP_DIR` mediante los siguientes comandos, en función de sus necesidades.<pre>SQL> CREATE OR REPLACE DIRECTORY DMS_DATA_PUMP_DIR AS '<Directory for dump>';<br />Directory created.<br /><br />SQL> GRANT READ, WRITE ON DIRECTORY DMS_DATA_PUMP_DIR TO SYSTEM;<br />Grant succeeded.</pre> | Administrador de base de datos | 
| Exporte el esquema. | Para realizar la exportación, utilice la utilidad `expdp` como se indica a continuación:<pre>C:\Users\Administrator>expdp system/********@<DB Name> PARFILE='<Path to PAR file create above>'<br /><br />Export: Release 19.0.0.0.0 - Production on *** *** ** **:**:** ****<br />Version 19.3.0.0.0<br /><br />Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.<br /><br />Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production<br />Starting "SYSTEM"."SYS_EXPORT_SCHEMA_02":  system/********@<DB Name>PARFILE='E:\exp_dms_datapump.par'<br />Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA<br />Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS<br />Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS<br />Processing object type SCHEMA_EXPORT/STATISTICS/MARKER<br />Processing object type SCHEMA_EXPORT/USER<br />Processing object type SCHEMA_EXPORT/ROLE_GRANT<br />Processing object type SCHEMA_EXPORT/DEFAULT_ROLE<br />Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA<br />Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA<br />Processing object type SCHEMA_EXPORT/TABLE/TABLE<br />Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT<br />Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX<br />Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT<br />. . exported "<Schema Name>"."<Table Name>"                            228.9 MB  496397 rows</pre><pre>Master table "SYSTEM"."SYS_EXPORT_SCHEMA_02" successfully loaded/unloaded<br />******************************************************************************<br />Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_02 is:<br />  E:\DMSDUMP\EXPORT_DMS_DATA.DMP<br />Job "SYSTEM"."SYS_EXPORT_SCHEMA_02" successfully completed at *** *** ** **:**:** **** elapsed 0 00:01:57</pre> | Administrador de base de datos | 

### Utilice Oracle Data Pump para importar el EnterpriseOne esquema
<a name="use-oracle-data-pump-to-import-the-enterpriseone-schema"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Transfiera el archivo de volcado a la instancia de destino. | Para transferir sus archivos mediante la utilidad `DBMS_FILE_TRANSFER`, necesita crear un enlace de base de datos desde la base de datos de origen a la instancia de Amazon RDS para Oracle. Una vez establecido el enlace, la utilidad le permitirá transferir los archivos de Data Pump directamente a la instancia de Amazon RDS.Como alternativa, puede transferir los archivos de Data Pump a [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) y, a continuación, importarlos a la instancia de Amazon RDS para Oracle. Para más información sobre esta opción, consulte la sección [Información adicional](#migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-additional).Para crear un enlace de base de datos `ORARDSDB` que conecte con el usuario principal de Amazon RDS en la instancia de base de datos de destino, ejecute los siguientes comandos en la base de datos de origen:<pre>sqlplus / as sysdba<br /><br />SQL*Plus: Release 19.0.0.0.0 on *** *** ** **:**:** ****<br />Version 19.3.0.0.0<br /><br />Copyright (c) 1982, 2019, Oracle.  All rights reserved.<br /><br />Connected to:<br />Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0<br />Version 19.3.0.0.0<br /><br />SQL> create database link orardsdb connect to admin identified by "******" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orcl.******.us-east-1.rds.amazonaws.com)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))';<br /><br />Database link created.<br /><br />SQL></pre> | Administrador de base de datos | 
| Pruebe el enlace de la base de datos. | Pruebe el enlace a la base de datos para asegurarse de que puede conectarse a la base de datos de destino de Amazon RDS para Oracle usando `sqlplus`.<pre>SQL> select name from v$database@orardsdb;<br /><br />NAME<br />---------<br />ORCL<br /></pre> | Administrador de base de datos | 
| Transfiera el archivo de volcado a la base de datos de destino. | Para copiar el archivo de volcado en la base de datos de Amazon RDS para Oracle, puede utilizar el directorio `DATA_PUMP_DIR` predeterminado o crear su propio directorio mediante el código siguiente, que debe ejecutarse en la instancia de Amazon RDS de destino:<pre>exec rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'DMS_TARGET_PUMP_DIR');<br /><br />PL/SQL procedure successfully completed.</pre>El siguiente script copia un archivo de volcado denominado `EXPORT_DMS_DATA.DMP` desde la instancia de origen a una base de datos de Amazon RDS para Oracle usando el enlace de la base de datos denominado `orardsdb`. Debe ejecutar el script en la instancia de la base de datos de origen.<pre>BEGIN<br />DBMS_FILE_TRANSFER.PUT_FILE(<br />source_directory_object => 'DMS_DATA_PUMP_DIR',<br />source_file_name => 'EXPORT_DMS_DATA.DMP',<br />destination_directory_object => 'DMS_TARGET_PUMP_DIR',<br />destination_file_name => 'EXPORT_DMS_DATA.DMP',<br />destination_database => 'orardsdb');<br />END;<br /><br />PL/SQL procedure successfully completed.</pre> | Administrador de base de datos | 
| Incluya el archivo de volcado en la base de datos de destino. | Una vez finalizado el PL/SQL procedimiento, puede incluir el archivo de volcado de datos en la base de datos Amazon RDS for Oracle mediante el siguiente código:<pre>select * from table (rdsadmin.rds_file_util.listdir(p_directory => 'DMS_TARGET_PUMP_DIR'));</pre> | Administrador de base de datos | 
| Cree usuarios específicos de JDE en la instancia de destino. | Cree un perfil y un rol de JD Edwards mediante estos comandos en la instancia de destino:<pre>SQL> CREATE PROFILE "JDEPROFILE" LIMIT IDLE_TIME 15;<br />Profile created.<br /><br />SQL> CREATE ROLE "JDE_ROLE";<br />Role created.<br /><br />SQL> CREATE ROLE "JDEADMIN";<br />CREATE ROLE "JDEUSER";<br />Role created.<br />Role created.</pre>Conceda los permisos necesarios al rol:<pre>SQL> GRANT CREATE ANY SEQUENCE TO JDE_ROLE;<br /> GRANT DROP ANY SEQUENCE TO JDE_ROLE;<br /> GRANT CREATE ANY TRIGGER TO JDE_ROLE;<br /> GRANT DROP ANY TRIGGER TO JDE_ROLE;<br /></pre> | Administrador de base de datos, JDE CNC | 
| Cree espacios de tabla en la instancia de destino. | Cree los espacios de tabla necesarios en la instancia de destino mediante los siguientes comandos para los esquemas que intervienen en esta migración:<pre>SQL> CREATE TABLESPACE <Tablespace Name for Tables>;<br />Tablespace created.<br /><br />SQL> CREATE TABLESPACE <Tablespace Name for Indexes>;<br />Tablespace created.</pre> | Administrador de base de datos, JDE CNC | 
| Inicie la importación en la base de datos de destino. | Antes de iniciar el proceso de importación, configure los roles, esquemas y espacios de tabla en la base de datos de destino Amazon RDS para Oracle mediante el archivo de volcado de datos.Para realizar la importación, acceda a la base de datos de destino con la cuenta de usuario principal de Amazon RDS y use el nombre de la cadena de conexión del archivo `tnsnames.ora`, que incluye el `tns-entry` de la base de datos Amazon RDS para Oracle. Si es necesario, puede incluir una opción de reasignación para importar el archivo de volcado de datos a un espacio de tabla diferente o con un nombre de esquema diferente.Para iniciar la importación, utilice el siguiente código:<pre>impdp admin@orardsdb directory=DMS_TARGET_PUMP_DIR logfile=import.log dumpfile=EXPORT_DMS_DATA.DMP</pre>Para garantizar una importación correcta, compruebe la ausencia de errores en el archivo de registro de importación y revise detalles como el número de objetos, el número de filas y los objetos no válidos. Si hay algún objeto no válido, repita la compilación. Compare también los objetos de la base de datos de origen y destino para confirmar que coinciden. | Administrador de base de datos | 

### Aprovisione una instancia de replicación de AWS DMS con los puntos de conexión de origen y destino
<a name="provision-an-aws-dms-replication-instance-with-the-source-and-target-endpoints"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue la plantilla de . | Descargue la plantilla AWS CloudFormation [DMS\$1Instance.yaml para aprovisionar la instancia](https://aws-database-blog.s3.amazonaws.com/artifacts/Migrating_oracle_using_DMS/DMS_Instance.yaml) de replicación de AWS DMS y sus puntos de enlace de origen y destino. | Administrador de la nube, Administrador de bases de datos | 
| Inicie la creación de la pila. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | Administrador de la nube, Administrador de bases de datos | 
| Especifique los parámetros. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | Administrador de la nube, Administrador de bases de datos | 
| Cree la pila. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html)El aprovisionamiento debería completarse en un plazo aproximado de 5 a 10 minutos. Se completa cuando la página de AWS CloudFormation Stacks muestra **CREATE\$1COMPLETE**. | Administrador de la nube, Administrador de bases de datos | 
| Configure los puntos de conexión. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | Administrador de la nube, Administrador de bases de datos | 
| Probar la conectividad. | Cuando los puntos de conexión de origen y destino muestren el estado **Activo**, pruebe la conectividad. Seleccione **Ejecutar prueba** en cada punto de conexión (origen y destino) para asegurarse de que el estado sea correcto. | Administrador de la nube, Administrador de bases de datos | 

### Crear una tarea de replicación de AWS DMS para la replicación en vivo
<a name="create-an-aws-dms-replication-task-for-live-replication"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una tarea de replicación. | Cree la tarea de replicación de AWS DMS siguiendo estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html)Tras crear la tarea, AWS DMS migra los cambios en curso a la instancia de base de datos de Amazon RDS para Oracle desde el SCN que proporcionó en el modo de inicio de CDC. También puede verificar la migración revisando los CloudWatch registros. | Administrador de la nube, Administrador de bases de datos | 
| Repita la tarea de replicación. | Repita los pasos anteriores para crear tareas de replicación para otros esquemas de JD Edwards que formen parte de la migración. | Administrador de la nube, Administrador de bases de datos, administrador de JDE CNC | 

### Valide el esquema de la base de datos de Amazon RDS para Oracle
<a name="validate-the-database-schema-on-the-target-amazon-rds-for-oracle-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la transferencia de datos. | Una vez iniciada la tarea de AWS DMS, puede consultar la pestaña **Estadísticas de tabla** en la página **Tareas** para ver los cambios realizados en los datos.Puede supervisar el estado de la replicación en curso desde la consola, en la página **Tareas de migración de bases de datos**.Para más información, consulte [Validación de datos de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html) | Administrador de la nube, Administrador de bases de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detención de la replicación. | Interrumpa el procedimiento de replicación y detenga los servicios de la aplicación de origen. | Administrador de la nube, Administrador de bases de datos | 
| Inicie la aplicación JD Edwards. | Inicie la aplicación de nivel lógico y de presentación JD Edwards de destino en AWS y diríjala a la base de datos Amazon RDS para Oracle.Cuando acceda a la aplicación, verá que todas las conexiones se establecen ahora con la base de datos Amazon RDS para Oracle. | Administrador de base de datos, administrador de JDE CNC | 
| Desactive la base de datos de origen. | Después de confirmar que no hay más conexiones, puede desactivar la base de datos de origen. | Administrador de base de datos | 

## Resolución de problemas
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Recibe un mensaje de advertencia para habilitar el [registro adicional](https://docs.oracle.com/database/121/SUTIL/GUID-D2DDD67C-E1CC-45A6-A2A7-198E4C142FA3.htm#SUTIL1583) en la base de datos de origen para una replicación continua | Introduzca estos comandos para habilitar el registro suplementario:<pre>SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;</pre> | 
| AWS DMS tiene desactivado el registro suplementario. | El registro suplementario se encuentra desactivado de forma predeterminada en AWS DMS. Para activarlo en un punto de conexión de Oracle de origen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | 
| El registro suplementario no está habilitado en el nivel de CDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | 
| Aparece el siguiente mensaje de error: «Falló el punto final de prueba: estado de la aplicación: 1020912, mensaje de la aplicación: no es compatible con el entorno PDB de Oracle, no LogMiner se pudo inicializar el punto final». | Si aparece este mensaje de error, puede utilizar Binary Reader en lugar de. LogMinerEn **Configuración de puntos de conexión**, añada esta línea a los atributos de conexión adicionales de la base de datos de origen:<pre>useLogMinerReader=N;useBfile=Y;</pre> | 

## Recursos relacionados
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-resources"></a>
+ [Introducción a AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [Buenas prácticas de AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)
+ [Migración de bases de datos de Oracle a la nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)
+ [Referencia de tipo de recurso de AWS Database Migration Service para AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DMS.html)
+ [Administre sus credenciales de punto de conexión de AWS DMS con AWS Secrets Manager](https://aws.amazon.com/blogs/database/manage-your-aws-dms-endpoint-credentials-with-aws-secrets-manager/)
+ [Solución de problemas de las tareas de migración en AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.Oracle.RecordsMissing)
+ [Buenas prácticas de AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)

## Información adicional
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-additional"></a>

**Cómo transferir archivos con Amazon S3**

Para transferir los archivos a Amazon S3, puede utilizar la CLI de AWS o la consola de Amazon S3. Tras transferir los archivos a Amazon S3, puede usar la instancia de Amazon RDS para Oracle para importar los archivos de Data Pump desde Amazon S3.

Si prefiere transferir el archivo de volcado usando la integración de Amazon S3 como método alternativo, siga estos pasos:

1. Cree un bucket de S3.

1. Exporte los datos de la base de datos de origen utilizando Oracle Data Pump.

1. Suba los archivos de Data Pump al bucket de S3.

1. Descargue los archivos de Data Pump desde el bucket de S3 en la base de datos de destino Amazon RDS para Oracle.

1. Realice la importación con los archivos de Data Pump.

**nota**  
Para transferir archivos de datos de gran tamaño entre instancias de RDS y S3, le recomendamos que utilice la característica [Aceleración de transferencias de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html).

# Migre una PeopleSoft base de datos de Oracle a AWS mediante AWS DMS
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms"></a>

*Sampath Kathirvel, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-summary"></a>

[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/) es una solución de planificación de recursos empresariales (ERP) para procesos de toda la empresa. PeopleSoft tiene una arquitectura de tres niveles: cliente, aplicación y base de datos. PeopleSoft se puede ejecutar en [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)).

Si migra su base de datos de Oracle a Amazon RDS, Amazon Web Services (AWS) podrá encargarse de las tareas de backup y de la alta disponibilidad, lo que le permitirá concentrarse en el mantenimiento de PeopleSoft la aplicación y su funcionalidad. Para obtener una lista completa de los factores clave a tener en cuenta durante el proceso de migración, consulte [Estrategias de migración de bases de datos de Oracle](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html) en Recomendaciones de AWS.

Este patrón proporciona una solución para migrar sus bases de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump con [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms) y su característica de captura de datos de cambios (CDC).

Al migrar aplicaciones ERP críticas, como Oracle PeopleSoft, es fundamental minimizar el tiempo de inactividad. AWS DMS minimiza el tiempo de inactividad gracias a su replicación, tanto continua como de carga completa, desde la base de datos de origen a la base de datos de destino. AWS DMS también proporciona supervisión y registro de la migración en tiempo real, lo que le ayudará a identificar y resolver cualquier problema que pueda provocar un tiempo de inactividad.

Al replicar los cambios con AWS DMS, debe especificar una hora o número de cambio de sistema (SCN) como punto de partida para que AWS DMS lea los cambios de los registros de la base de datos. Es fundamental mantener estos registros accesibles en el servidor durante un determinado período de tiempo para asegurar que AWS DMS tenga acceso a estos cambios.

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-prereqs"></a>

**Requisitos previos **
+ Base de datos Amazon RDS para Oracle aprovisionada en su entorno de nube de AWS como base de datos de destino.
+ Una PeopleSoft base de datos de Oracle que se ejecuta en las instalaciones o en Amazon Elastic Compute Cloud (Amazon EC2) en la nube de AWS.
**nota**  
Este patrón está diseñado para migrar de las instalaciones a AWS, pero se probó con Oracle Database en una EC2 instancia de Amazon. Para migrar desde una ubicación en las instalaciones, necesitará configurar la conectividad de red adecuada.
+ Detalles del esquema. Al migrar una PeopleSoft aplicación de Oracle a Amazon RDS for Oracle, es necesario identificar qué esquema de base de datos de Oracle (por ejemplo`SYSADM`) se va a migrar. Antes de iniciar el proceso de migración, recopile los siguientes detalles sobre el esquema:
  + Tamaño
  + La cantidad de objetos por tipo de objeto
  + La cantidad de objetos no válidos.

  Esta información ayudará en el proceso de migración.

**Limitaciones**
+ Este escenario se ha probado únicamente con la base de datos PeopleSoft DEMO. No se ha probado con un conjunto de datos grande.

## Arquitectura
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-architecture"></a>

El siguiente diagrama muestra una instancia que ejecuta una base de datos de Oracle como base de datos de origen y una base de datos Amazon RDS para Oracle como base de datos de destino. Los datos se exportan e importan de la base de datos de Oracle de origen a la base de datos Amazon RDS para Oracle de destino mediante Oracle Data Pump, y los cambios de CDC se replican mediante AWS DMS.

![\[Proceso de cinco pasos de una instancia de base de datos en las instalaciones a Amazon RDS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/c8ec3789-f80e-4f3a-a3f4-72a4541316b0/images/4e3e3477-2fe0-4a5d-b95e-05a8aafe8b68.png)


1. El paso inicial consiste en extraer los datos de la base de datos de origen mediante Oracle Data Pump y, a continuación, enviarlos a la base de datos de destino Amazon RDS para Oracle.

1. Los datos se envían desde la base de datos de origen a un punto de conexión de origen en AWS DMS.

1. Desde el punto de conexión de origen, los datos se envían a la instancia de replicación de AWS DMS, donde se realiza la tarea de replicación.

1. Una vez completada la tarea de replicación, los datos se envían al punto de conexión de destino en AWS DMS.

1. Desde el punto de conexión de destino, los datos se envían a la instancia de base de datos Amazon RDS para Oracle.

## Tools (Herramientas)
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-tools"></a>

**Servicios 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 Relational Database Service (Amazon RDS) para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle en la nube de AWS.

**Otros servicios**
+ [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.

## Prácticas recomendadas
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-best-practices"></a>

**Migrating LOBs**

Si la base de datos de origen contiene objetos binarios de gran tamaño (LOBs) que deben migrarse a la base de datos de destino, AWS DMS ofrece las siguientes opciones:
+ **Modo LOB completo**: AWS DMS migra todas las bases de datos LOBs de origen a la de destino, independientemente de su tamaño. Aunque la migración es más lenta, la ventaja es que los datos no se truncan. Para obtener un mejor rendimiento, puede crear una tarea independiente en la nueva instancia de replicación para migrar las tablas que tengan LOBs más de unos pocos megabytes.
+ **Modo LOB limitado**: usted especifica el tamaño máximo de los datos de la columna LOB, lo que permite a AWS DMS preasignar los recursos y aplicarlos de forma masiva. LOBs Si el tamaño de las columnas LOB supera el tamaño especificado en la tarea, AWS DMS trunca los datos y envía advertencias al archivo de registro de AWS DMS. Puede mejorar el rendimiento usando el modo LOB limitado si el tamaño de los datos de LOB se encuentra dentro del tamaño de LOB limitado.
+ **Modo LOB en línea**: puede migrar LOBs sin truncar los datos ni ralentizar el rendimiento de la tarea al replicar tanto los datos pequeños como los grandes. LOBs En primer lugar, especifique un valor para el InlineLobMaxSize parámetro, que solo estará disponible cuando el modo LOB completo esté establecido en true. La tarea de AWS DMS transfiere lo pequeño LOBs en línea, lo que es más eficiente. A continuación, AWS DMS migra el tamaño grande LOBs realizando una búsqueda en la tabla de origen. Sin embargo, el modo LOB en línea funciona únicamente en la fase de carga completa.

**Generación de valores de secuencia**

Tenga en cuenta que, durante el proceso de captura de datos de cambios con AWS DMS, los números de secuencia progresivos no se replican desde la base de datos de origen. Para evitar discrepancias en los valores de secuencia, debe generar el valor de secuencia más reciente del origen para todas las secuencias y aplicarlo a la base de datos Amazon RDS para Oracle de destino.

**Administración de credenciales**

Para ayudar a proteger sus recursos de AWS, le recomendamos seguir las [prácticas recomendadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) de AWS Identity and Access Management (IAM).

## Epics
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-epics"></a>

### Aprovisione una instancia de replicación de AWS DMS con los puntos de conexión de origen y destino
<a name="provision-an-aws-dms-replication-instance-with-the-source-and-target-endpoints"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue la plantilla de . | Descargue la CloudFormation plantilla de AWS [DMS\$1Instance.yaml](https://aws-database-blog.s3.amazonaws.com/artifacts/Migrating_oracle_using_DMS/DMS_Instance.yaml) para aprovisionar la instancia de replicación de AWS DMS y sus puntos de enlace de origen y destino. | Administrador de la nube, Administrador de bases de datos | 
| Inicie la creación de la pila. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html) | Administrador de la nube, Administrador de bases de datos | 
| Especifique los parámetros. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html) | Administrador de la nube, Administrador de bases de datos | 
| Cree la pila. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html)El aprovisionamiento debería completarse en un plazo aproximado de 5 a 10 minutos. Se completa cuando la página de AWS CloudFormation Stacks muestra **CREATE\$1COMPLETE**. | Administrador de la nube, Administrador de bases de datos | 
| Configure los puntos de conexión. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html) | Administrador de la nube, administrador de bases de datos | 
| Probar la conectividad. | Cuando los puntos de conexión de origen y destino muestren el estado Activo, pruebe la conectividad. Seleccione **Ejecutar prueba** en cada punto de conexión (origen y destino) para asegurarse de que el estado sea correcto. | Administrador de la nube, Administrador de bases de datos | 

### Exporte el PeopleSoft esquema de la base de datos Oracle local mediante Oracle Data Pump
<a name="export-the-peoplesoft-schema-from-the-on-premises-oracle-database-by-using-oracle-data-pump"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere el SCN. | Cuando la base de datos de origen esté activa y la aplicación la utilice, inicie la exportación de datos con Oracle Data Pump. En primer lugar, debe generar un número de cambio del sistema (SCN) de la base de datos de origen para garantizar la coherencia de datos durante la exportación con Oracle Data Pump. También servirá como punto de partida para la captura de datos de cambios en AWS DMS.Para generar el SCN actual de la base de datos de origen, introduzca la siguiente instrucción SQL.<pre>SQL> select name from v$database;<br />SQL> select name from v$database;<br />NAME<br />---------<br />PSFTDMO<br />SQL> SELECT current_scn FROM v$database;<br />CURRENT_SCN<br />-----------<br />23792008</pre>Guarde el SCN generado. Lo usará para exportar los datos y crear la tarea de replicación de AWS DMS. | Administrador de base de datos | 
| Cree el archivo de parámetros. | Para crear un archivo de parámetros para exportar el esquema, puede usar el siguiente código.<pre>$ cat exp_datapmp.par<br />userid=system/*******<br />directory=DATA_PUMP_DIR<br />logfile=export_dms_sample_user.log<br />dumpfile=export_dms_sample_data_%U.dmp<br />schemas=SYSADM<br />flashback_scn=23792008</pre>También puede definir su propio `DATA_PUMP_DIR` mediante los siguientes comandos, en función de sus necesidades.<pre>SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/opt/oracle/product/19c/dbhome_1/dmsdump/';<br />Directory created.<br />SQL> GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO system;<br />Grant succeeded.<br />SQL><br />SQL> SELECT owner, directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR';<br />OWNER DIRECTORY_NAME DIRECTORY_PATH<br />------------------------------------------------------------------------------------------------------------------<br />SYS DATA_PUMP_DIR /opt/oracle/product/19c/dbhome_1/dmsdump/</pre> | Administrador de base de datos | 
| Exporte el esquema. | Realice la exportación con la utilidad `expdp`.<pre>$ expdp parfile=exp_datapmp.par<br />.......................<br />Transferring the dump file with DBMS_FILE_TRANSFER to Target:<br />. . exported "SYSADM"."PS_XML_TEMPLT_LNG" 6.320 KB 0 rows<br />. . exported "SYSADM"."PS_XML_TEMPLT_LNK" 6.328 KB 0 rows<br />. . exported "SYSADM"."PS_XML_XLATDEF_LNG" 6.320 KB 0 rows<br />. . exported "SYSADM"."PS_XML_XLATITM_LNG" 7.171 KB 0 rows<br />. . exported "SYSADM"."PS_XPQRYRUNCNTL" 7.601 KB 0 rows<br />. . exported "SYSADM"."PS_XPQRYRUNPARM" 7.210 KB 0 rows<br />. . exported "SYSADM"."PS_YE_AMOUNTS" 9.351 KB 0 rows<br />. . exported "SYSADM"."PS_YE_DATA" 16.58 KB 0 rows<br />. . exported "SYSADM"."PS_YE_EE" 6.75 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2CP_AMOUNTS" 9.414 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2CP_DATA" 20.94 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2C_AMOUNTS" 10.27 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2C_DATA" 20.95 KB 0 rows<br />. . exported "SYSADM"."PS_ZBD_JOBCODE_TBL" 14.60 KB 0 rows<br />. . exported "SYSADM"."PTGRANTTBL" 5.468 KB 0 rows<br />Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded<br />**<br />Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:<br />/opt/oracle/product/19c/dbhome_1/dmsdump/export_dms_sample_data_01.dmp<br />Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Dec 19 20:13:57 2022 elapsed 0 00:38:22</pre> | Administrador de base de datos | 

### Importe el PeopleSoft esquema a la base de datos Amazon RDS for Oracle mediante Oracle Data Pump
<a name="import-the-peoplesoft-schema-into-the-amazon-rds-for-oracle-database-by-using-oracle-data-pump"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Transfiera el archivo de volcado a la instancia de destino. | Para transferir sus archivos mediante `DBMS_FILE_TRANSFER`, debe crear un enlace de base de datos desde la base de datos de origen a la instancia de Amazon RDS para Oracle. Una vez establecido el enlace, la utilidad le permitirá transferir los archivos de Data Pump directamente a la instancia de RDS.Como alternativa, puede transferir los archivos de Data Pump a [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) y, a continuación, importarlos a la instancia de Amazon RDS para Oracle. Para más información sobre esta opción, consulte la sección Información adicional.Para crear un enlace de base de datos `ORARDSDB` que conecte con el usuario principal de Amazon RDS en la instancia de base de datos de destino, ejecute los siguientes comandos en la base de datos de origen.<pre>$sqlplus / as sysdba<br />$ SQL> create database link orardsdb connect to admin identified by "*****" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = testpsft.*******.us-west-2.rds.amazonaws.com)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))';<br />Database link created.</pre> | Administrador de base de datos | 
| Pruebe el enlace de la base de datos. | Pruebe el enlace de la base de datos para asegurarse de que puede conectarse mediante sqlplus a la base de datos de destino de Amazon RDS para Oracle.<pre>SQL><br />SQL> select name from v$database@orardsdb;<br />NAME<br />---------<br />ORCL<br />SQL></pre> | Administrador de base de datos | 
| Transfiera el archivo de volcado a la base de datos de destino. | Para copiar el archivo de volcado a la base de datos de Amazon RDS para Oracle, puede usar el directorio predeterminado `DATA_PUMP_DIR` o bien crear su propio directorio con el siguiente código.<pre>exec rdsadmin.rdsadmin_util.create_directory(p_directory_name => ‘TARGET_PUMP_DIR’);</pre>El siguiente script copia un archivo de volcado denominado `export_dms_sample_data_01.dmp` desde la instancia de origen a una base de datos de Amazon RDS para Oracle usando el enlace de la base de datos denominado `orardsdb`.<pre>$ sqlplus / as sysdba<br />SQL><br />BEGIN<br />DBMS_FILE_TRANSFER.PUT_FILE(<br />source_directory_object => 'DATA_PUMP_DIR',<br />source_file_name => 'export_dms_sample_data_01.dmp',<br />destination_directory_object => 'TARGET_PUMP_DIR’',<br />destination_file_name => 'export_dms_sample_data_01.dmp',<br />destination_database => 'orardsdb'<br />);<br />END;<br />/<br />PL/SQL procedure successfully completed.</pre> | Administrador de base de datos | 
| Incluya el archivo de volcado en la base de datos de destino. | Una vez finalizado el PL/SQL procedimiento, puede incluir el archivo de volcado de datos en la base de datos Amazon RDS for Oracle mediante el siguiente código.<pre>SQL> select * from table (rdsadmin.rds_file_util.listdir(p_directory => ‘TARGET_PUMP_DIR’));</pre> | Administrador de base de datos | 
| Inicie la importación en la base de datos de destino. | Antes de iniciar el proceso de importación, configure los roles, esquemas y espacios de tabla en la base de datos de destino Amazon RDS para Oracle mediante el archivo de volcado de datos.Para realizar la importación, acceda a la base de datos de destino con la cuenta de usuario maestra de Amazon RDS y use el nombre de la cadena de conexión del archivo `tnsnames.ora`, que incluye el `tns-entry` de la base de datos Amazon RDS para Oracle. Si es necesario, puede incluir una opción de reasignación para importar el archivo de volcado de datos a un espacio de tabla diferente o con un nombre de esquema diferente.Para iniciar la importación, utilice el siguiente código.<pre>impdp admin@orardsdb directory=TARGET_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp</pre>Para garantizar una importación correcta, compruebe la ausencia de errores en el archivo de registro de importación y revise detalles como el número de objetos, el número de filas y los objetos no válidos. Si hay algún objeto no válido, repita la compilación. Compare también los objetos de la base de datos de origen y destino para confirmar que coinciden. | Administrador de base de datos | 

### Cree una tarea de replicación de AWS DMS usando CDC para realizar la replicación en vivo
<a name="create-an-aws-dms-replication-task-using-cdc-to-perform-live-replication"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una tarea de replicación. | Cree la tarea de replicación de AWS DMS siguiendo estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html)Tras crear la tarea, se migra el CDC a la instancia de base de datos Amazon RDS para Oracle desde el SCN que proporcionó en el modo de inicio de CDC. También puede verificarlos revisando los CloudWatch registros. | Administrador de la nube, Administrador de bases de datos | 

### Valide el esquema de la base de datos de Amazon RDS para Oracle
<a name="validate-the-database-schema-on-the-target-amazon-rds-for-oracle-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la transferencia de datos. | Una vez iniciada la tarea de AWS DMS, puede consultar la pestaña **Estadísticas de tabla** en la página **Tareas** para ver los cambios realizados en los datos.Puede supervisar el estado de la replicación en curso desde la consola, en la página **Tareas de migración de bases de datos**.Para más información, consulte [Validación de datos de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html) | Administrador de la nube, Administrador de bases de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detención de la replicación. | Interrumpa el procedimiento de replicación y detenga los servicios de la aplicación de origen. | Administrador de la nube, Administrador de bases de datos | 
| Lanza el nivel PeopleSoft medio. | Lance la aplicación de nivel PeopleSoft medio de destino en AWS y diríjala a la base de datos Amazon RDS for Oracle migrada recientemente.Cuando acceda a la aplicación, verá que todas las conexiones de la aplicación se establecen ahora con la base de datos Amazon RDS para Oracle. | DBA, administrador PeopleSoft  | 
| Desactive la base de datos de origen. | Tras haber confirmado que no hay más conexiones a la base de datos de origen, puede desactivarla. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-resources"></a>
+ [Introducción a AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [Buenas prácticas de AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)
+ [Migración de bases de datos de Oracle a la nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)

## Información adicional
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-additional"></a>

**Cómo transferir archivos con Amazon S3**

Para transferir los archivos a Amazon S3, puede utilizar la CLI de AWS o la consola de Amazon S3. Tras transferir los archivos a Amazon S3, puede usar la instancia de Amazon RDS para Oracle para importar los archivos de Data Pump desde Amazon S3.

Si prefiere transferir el archivo de volcado usando la integración de Amazon S3 como método alternativo, siga estos pasos:

1. Cree un bucket de S3.

1. Exporte los datos de la base de datos de origen utilizando Oracle Data Pump.

1. Suba los archivos de Data Pump al bucket de S3.

1. Descargue los archivos de Data Pump desde el bucket de S3 en la base de datos de destino Amazon RDS para Oracle.

1. Realice la importación con los archivos de Data Pump.

**nota**  
Para transferir archivos de datos de gran tamaño entre instancias de RDS y S3, se recomienda usar la característica Aceleración de transferencias de Amazon S3.

**Active el registro adicional**

Si recibe un mensaje de advertencia solicitando habilitar el [registro adicional](https://docs.oracle.com/database/121/SUTIL/GUID-D2DDD67C-E1CC-45A6-A2A7-198E4C142FA3.htm#SUTIL1583) en la base de datos de origen para la replicación continua, siga estos pasos.

```
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
```

# Migración de una base de datos MySQL en las instalaciones a Amazon RDS para MySQL
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql"></a>

*Lorenzo Mota, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-summary"></a>

Este patrón proporciona una guía para migrar una base de datos MySQL en las instalaciones a Amazon Relational Database Service (Amazon RDS) para MySQL. El patrón analiza el uso de AWS Database Migration Service (AWS DMS) o herramientas nativas de MySQL, como **mysqldump**, para una migración completa de bases de datos. Este patrón es principalmente para DBAs arquitectos de soluciones. Se puede usar en proyectos pequeños o grandes como un procedimiento de prueba (recomendamos al menos un ciclo de prueba) o como procedimiento de migración definitiva. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-prereqs"></a>

**Requisitos previos **
+ Una AWS cuenta activa
+ Una base de datos MySQL de origen en un centro de datos en las instalaciones

**Limitaciones**
+ Límite de tamaño de la base de datos: [64 TB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)

**Versiones de producto**
+ Versiones de MySQL 5.5, 5.6, 5.7, 8.0. Para ver la lista más reciente de versiones compatibles, consulte [MySQL en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) en la AWS documentación. Si está utilizando AWS DMS, consulte también Uso de [una base de datos compatible con MySQL como destino para](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) las versiones de AWS DMS MySQL compatibles actualmente con. AWS DMS

## Arquitectura
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos MySQL en las instalaciones

**Pila de tecnología de destino**
+ Una instancia de base de datos de Amazon RDS que ejecute MySQL

**Arquitectura de destino**

En el diagrama siguiente se muestra la implementación de Amazon RDS para MySQL en el destino tras la migración.

![\[Implementación de Amazon RDS para MySQL de destino tras la transición.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/2e10114e-e389-4d24-9b6a-fa56beee5369.png)


**AWS arquitectura de migración de datos**

**Uso de AWS DMS:**

El siguiente diagrama muestra la arquitectura de migración de datos cuando se utiliza AWS DMS para enviar cambios completos e incrementales hasta la transición. La conexión de red local a otra AWS depende de sus requisitos y está fuera del alcance de este patrón.

![\[Arquitectura de migración de datos a AWS cuando se utiliza AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/ecc9b282-1897-4971-99ed-83223b17000d.png)


**Uso de herramientas MySQL nativas:**

El diagrama siguiente muestra la arquitectura de migración de datos cuando se utilizan herramientas nativas de MySQL. Los archivos volcados de exportación se copian a Amazon Simple Storage Service (Amazon S3) y se importan a la base de datos Amazon RDS for MySQL antes de la transición. AWS La conexión de red local a otra AWS depende de sus requisitos y está fuera del alcance de este patrón.

 

![\[Arquitectura de migración de datos a AWS cuando se utilizan herramientas de MySQL nativas.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/3bbec989-c3eb-473e-ba4a-032d6a4271c5.png)


**Notas:**
+ Según los requisitos de tiempo de inactividad y el tamaño de la base de datos, el uso de una herramienta de captura de datos modificados (CDC) AWS DMS o una herramienta de captura de datos modificados (CDC) minimiza el tiempo de transición. AWS DMS puede ayudar a reducir al mínimo el tiempo de transición al nuevo objetivo (normalmente en minutos). Una estrategia offline con **mysqldump** puede ser suficiente si el tamaño de la base de datos y la latencia de la red permiten un período corto. (Recomendamos efectuar pruebas para obtener un tiempo aproximado).
+ Por lo general, una estrategia de los CDC AWS DMS requiere más supervisión y complejidad que las opciones fuera de línea. 

## Tools (Herramientas)
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-tools"></a>
+ **Servicios de AWS**: [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) le ayuda a migrar los almacenes de datos a una combinación de configuraciones en la nube y locales Nube de AWS o entre ellas. Para obtener información sobre las bases de datos de origen y destino de MySQL compatibles con AWS DMS, consulte [Migración de bases de datos compatibles con MySQL](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MySQL.html) a. AWS Si su base de datos de origen no es compatible con AWS DMS, debe elegir otro método para migrar los datos.
+ **Herramientas de MySQL nativas**: [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
+ **Herramientas de terceros**: [Percona XtraBackup](https://www.percona.com/software/mysql-database/percona-xtrabackup)

## Epics
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos. | Valide las versiones de las bases de datos de origen y de destino. | Administrador de base de datos | 
| Identifique los requisitos de hardware. | Identifique los requisitos de hardware del servidor de destino. | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de almacenamiento. | Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento) de la base de datos de destino. | Administrador de base de datos, administrador de sistemas | 
| Seleccione el tipo de instancia. | Seleccione el tipo de instancia de destino en función de la capacidad, las características de almacenamiento y las características de red. | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de acceso a la red. | Identifique requisitos de seguridad para acceder a la red de las bases de datos de origen y destino.  | Administrador de base de datos, administrador de sistemas | 
| Identifique los objetos no compatibles. | Identifique los objetos no compatibles (si los hay) y determine el esfuerzo de migración. | Administrador de base de datos | 
| Identifique las dependencias. | Identifique cualquier dependencia en las bases de datos remotas. | Administrador de base de datos | 
| Determine la estrategia de migración de la aplicación.  | Determine la estrategia para migrar las aplicaciones cliente.  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). | Configure las tablas de enrutamiento, las puertas de enlace de Internet, las puertas de enlace NAT y las subredes. Para obtener más información, consulte [VPCs Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) en la documentación de Amazon RDS. | Administrador de sistemas | 
| Cree grupos de seguridad. | Configure puertos y rangos de CIDR o específicos en IPs función de sus requisitos. El puerto predeterminado para MySQL es el 3306. Para obtener más información, consulte [Controlling access with security groups (Control de acceso con grupos de seguridad)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html) en la documentación de Amazon RDS. | Administrador de sistemas | 
| Configure e inicie una instancia de base de datos de Amazon RDS para MySQL. | Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateInstance.html) en la documentación de Amazon RDS. Compruebe si hay versiones compatibles. | Administrador de sistemas | 

### Migración de datos: opción 1 (con herramientas nativas)
<a name="migrate-data-option-1-using-native-tools"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice las herramientas nativas de MySQL o herramientas de terceros para migrar los objetos y datos de la base de datos. | Para obtener instrucciones, consulte la documentación de las herramientas de MySQL, como [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) y [Percona XtraBackup](https://www.percona.com/software/mysql-database/percona-xtrabackup) (para la migración física). Para obtener más información sobre las opciones, consulte la entrada del blog [Opciones de migración de MySQL a Amazon RDS para MySQL o Amazon Aurora MySQL](https://aws.amazon.com/blogs/database/migration-options-for-mysql-to-amazon-rds-for-mysql-or-amazon-aurora-mysql/). | Administrador de base de datos | 

### Migrar datos: opción 2 (usar) AWS DMS
<a name="migrate-data-option-2-using-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre datos con AWS DMS. | Para obtener instrucciones, consulte la [documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html). | Administrador de base de datos | 

### Llevar a cabo las tareas preliminares antes de la transición
<a name="perform-preliminary-tasks-before-cutover"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Corrija cualquier discrepancia en el recuento de objetos. | Recopile los recuentos de objetos de la base de datos de origen y de la nueva base de datos de destino. Corrija cualquier discrepancia en la base de datos objetivo. | Administrador de base de datos | 
| Compruebe las dependencias. | Compruebe si las dependencias (los enlaces) con destino y origen en otras bases de datos son válidas y funcionan según lo previsto. | Administrador de base de datos | 
| Efectúe pruebas. | Si se trata de un ciclo de pruebas, lleve a cabo pruebas de consulta, recopile métricas y solucione los problemas. | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie a la base de datos de destino. | Cambie las aplicaciones cliente a la nueva infraestructura. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Proporcione soporte para las pruebas. | Proporcione soporte para las pruebas de aplicaciones funcionales.  | Administrador de base de datos | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre los recursos. | Cierre los AWS recursos temporales que creó para la migración.  | Administrador de base de datos, administrador de sistemas | 
| Valide los documentos del proyecto.  | Revise y valide los documentos del proyecto.  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopile métricas. | Recopile métricas como el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado, el ahorro de costos, etc. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cerrar el proyecto.  | Cerrar el proyecto y enviar comentarios.  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Reitre de servicio la base de datos de origen. | Una vez completadas todas las tareas de migración y transición, retire la base de datos en las instalaciones. | Administrador de base de datos, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-resources"></a>

**Referencias**
+ [Estrategia de migración para bases de datos relacionales](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/welcome.html)
+ [AWS DMS sitio web](https://aws.amazon.com/dms/)
+ [AWS DMS documentación](https://docs.aws.amazon.com/dms/)
+ [Documentación de Amazon RDS](https://docs.aws.amazon.com/rds/)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)
+ [Amazon VPC y Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)
+ [Implementaciones de Amazon RDS Multi-AZ](https://aws.amazon.com/rds/details/multi-az/)
+ [Migre bases de datos MySQL locales a Aurora MySQL mediante Percona, XtraBackup Amazon EFS y Amazon S3](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.html)
+ [Almacenamiento de instancias de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)

**Tutoriales**
+ [Cómo empezar con AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)

# Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon RDS para SQL Server
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server"></a>

*Henrique Lobao, Jonathan Pereira Cruz y Vishal Singh, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-summary"></a>

Este patrón proporciona una guía para migrar una base de datos de Microsoft SQL Server en las instalaciones a Amazon Relational Database Service (Amazon RDS) para SQL Server. Describe dos opciones de migración: utilizar AWS Data Migration Service (AWS DMS) o utilizar herramientas nativas de Microsoft SQL Server como Copy Database Wizard.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen Microsoft SQL Server en un centro de datos en las instalaciones

**Limitaciones**
+ Límite de tamaño de la base de datos: 16 TB

**Versiones de producto**
+ Para ver la lista actualizada de versiones y características compatibles, consulte [Microsoft SQL Server en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport) en la documentación de AWS. Si utiliza AWS DMS, consulte también [Uso de una base de datos de Microsoft SQL Server como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html) para conocer las versiones de SQL Server compatibles con AWS DMS. 

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Microsoft SQL Server en las instalaciones

**Pila de tecnología de destino**
+ Instancia de base de datos de Amazon RDS para SQL Server 

**Arquitectura de origen y destino**

*Uso de AWS DMS*:

![\[Arquitectura para migrar SQL Server en las instalaciones a Amazon RDS mediante AWS DMS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/27942833-c294-405c-90e6-32cc197e36ee/images/69b9877c-2d56-4d64-8475-a3dae789c5de.png)


*Uso de herramientas nativas de SQL Server:*

![\[Arquitectura para migrar SQL Server en las instalaciones a Amazon RDS mediante herramientas de SQL Server\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/27942833-c294-405c-90e6-32cc197e36ee/images/45ee14e4-3c7e-4b35-a2c9-3e8e3c7e6cee.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) admite varios tipos de bases de datos de origen y destino. Para obtener más información, consulte los [ Step-by-Steptutoriales de AWS DMS.](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) Si AWS DMS no es compatible con la base de datos de origen, seleccione otro método para migrar los datos. 
+ Las Herramientas nativas de Microsoft SQL Server incluyen copia de seguridad y restauración, Copy Database Wizard y la función de copiar y adjuntar bases de datos.

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la versión y el motor de la base de datos de origen y de destino. |  | Administrador de base de datos | 
| Identifique los requisitos de hardware de la instancia del servidor de destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de almacenamiento (el tipo y la capacidad de almacenamiento). |  | Administrador de base de datos, administrador de sistemas | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar los requisitos de seguridad del acceso a la red para las bases de datos de origen y destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar la estrategia de migración de aplicaciones. |  | Administrador de base de datos, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). |  | Administrador de sistemas | 
| Cree grupos de seguridad. |  | Administrador de sistemas | 
| Configure e inicie una instancia de base de datos de Amazon RDS. |  | Administrador de base de datos, administrador de sistemas | 

### Migración de datos: opción 1
<a name="migrate-data---option-1"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice las herramientas nativas de SQL Server o herramientas de terceros para migrar los objetos y datos de la base de datos. |  | Administrador de base de datos | 

### Migración de datos: opción 2
<a name="migrate-data---option-2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre datos con AWS DMS. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | Administrador de base de datos, administrador de sistemas | 
| Revise y valide los documentos del proyecto. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopile métricas como el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado y el ahorro de costos. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cerrar el proyecto y enviar comentarios. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-resources"></a>

**Referencias**
+ [Implementación de Microsoft SQL Server en Amazon Web Services](https://d1.awsstatic.com/whitepapers/RDS/Deploying_SQLServer_on_AWS.pdf) 
+ [Sitio web de AWS DMS](https://aws.amazon.com/dms/)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)
+ [Productos de Microsoft en AWS](https://aws.amazon.com/windows/products/)
+ [Licencias de Microsoft en AWS](https://aws.amazon.com/windows/resources/licensing/)
+ [Microsoft SQL Server en AWS](https://aws.amazon.com/windows/products/sql/)
+ [Uso de la autenticación de Windows con una instancia de base de datos de Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_SQLServerWinAuth.html)
+ [Implementaciones Multi-AZ de Amazon RDS](https://aws.amazon.com/rds/details/multi-az/)

**Tutoriales y videos**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [AWS DMS (video)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 
+ [Amazon RDS (video)](https://www.youtube.com/watch?v=igRfulrrYCo)  

# Migración de datos de Microsoft Azure Blob a Amazon S3 mediante Rclone
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone"></a>

*Suhas Basavaraj, Aidan Keane y Corey Lane, Amazon Web Services*

## Resumen
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-summary"></a>

Este patrón describe cómo usar [Rclone](https://rclone.org/) para migrar datos del almacenamiento de objetos Blob de Microsoft Azure a un bucket de Amazon Simple Storage Service (Amazon S3). Puede usar este patrón para realizar una migración única o una sincronización continua de los datos. Rclone es un programa de línea de comandos escrito en Go. Se usa para mover datos a través de diversas tecnologías de almacenamiento de los proveedores de la nube.

## Requisitos previos y limitaciones
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Datos almacenados en el servicio de contenedor Blob de Azure

## Arquitectura
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-architecture"></a>

**Pila de tecnología de origen**
+ Contenedor de almacenamiento Blob de Azure

**Pila de tecnología de destino**
+ Bucket de Amazon S3
+ Instancia Linux de Amazon Elastic Compute Cloud (Amazon EC2)

**Arquitectura**

![\[Migración de datos de Microsoft Azure a Amazon S3\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6ead815d-7768-4726-b27d-97a70cd21081/images/abe69eee-632f-4ca2-abf6-3223f3f3ec94.png)


## Tools (Herramientas)
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-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 le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [Rclone](https://rclone.org/) es un programa de línea de comandos de código abierto inspirado en **rsync**. Se usa para administrar archivos en numerosas plataformas de almacenamiento en la nube.

## Prácticas recomendadas
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-best-practices"></a>

Al migrar datos de Azure a Amazon S3, tenga en cuenta estas consideraciones para evitar costos innecesarios o lentitud en la velocidad de transferencia:
+ Cree su infraestructura de AWS en la misma región geográfica que la cuenta de almacenamiento de Azure y el contenedor Blob, por ejemplo, en la región de AWS `us-east-1` (Virginia del Norte) y la región de Azure `East US`.
+ Evite usar puerta de enlace NAT si es posible, ya que genera tarifas de transferencia de datos tanto para el ancho de banda de entrada como para el de salida.
+ Use un [punto de conexión de puerta de enlace VPC para Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) a fin de aumentar el rendimiento.
+ Considere la posibilidad de utilizar una EC2 instancia basada en el procesador AWS Graviton2 (ARM) para reducir el coste y aumentar el rendimiento en comparación con las instancias x86 de Intel. Rclone presenta compilación cruzada y proporciona un binario ARM precompilado.

## Epics
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-epics"></a>

### Prepare los recursos en la nube de AWS y Azure
<a name="prepare-aws-and-azure-cloud-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare un bucket de S3 de destino. | [Cree un nuevo bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la región de AWS correspondiente, o bien elija un bucket existente como destino de los datos que desee migrar. | Administrador de AWS | 
| Crea un rol de instancia de IAM para Amazon EC2. | [Cree un nuevo rol de AWS Identity and Access Management (IAM) para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#working-with-iam-roles). Esta función le da a la EC2 instancia acceso de escritura al bucket S3 de destino. | Administrador de AWS | 
| Adjunte una política al rol de la instancia de IAM. | Utilice la consola de IAM o la interfaz de línea de comandos de AWS (AWS CLI) para crear una política en línea para EC2 el rol de instancia que permita permisos de acceso de escritura al bucket de S3 de destino. Para un ejemplo de política, consulte la sección [Información adicional](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional). | Administrador de AWS | 
| Lance una instancia EC2 . | Lance una EC2 instancia de Amazon Linux configurada para usar el rol de servicio de IAM recién creado. Esta instancia también necesitará acceder a los puntos de conexión de la API pública de Azure a través de Internet. Considere usar [ EC2 instancias basadas en AWS Graviton](https://docs.aws.amazon.com/compute-optimizer/latest/ug/graviton-recommendations.html) para reducir los costos. Rclone proporciona binarios compilados en ARM. | Administrador de AWS | 
| Cree una entidad principal de servicio de Azure AD. | Use la CLI de Azure para crear una entidad principal de servicio de Azure Active Directory (Azure AD) con acceso de solo lectura al contenedor de almacenamiento Blob de Azure de origen. Para obtener instrucciones, consulte la sección [Información adicional](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional). Guarde estas credenciales en la EC2 instancia en la ubicación. `~/azure-principal.json` | Administrador de la nube, Azure | 

### Instalar y configurar Rclone
<a name="install-and-configure-rclone"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargar e instalar Rclone.  | Descargue e instale el programa de línea de comandos Rclone. Para instrucciones sobre la instalación, consulte la [documentación de instalación de Rclone](https://rclone.org/install/). | AWS general, administrador de la nube | 
| Configure Rclone. | Copie el siguiente archivo de ejemplo `rclone.conf`. Sustituya `AZStorageAccount` por el nombre de su cuenta de Azure Storage y `us-east-1` por la región de AWS en la que se encuentra su bucket de S3. Guarda este archivo en la ubicación `~/.config/rclone/rclone.conf` de la EC2 instancia.<pre>[AZStorageAccount]<br />type = azureblob<br />account = AZStorageAccount<br />service_principal_file = azure-principal.json<br /><br />[s3]<br />type = s3<br />provider = AWS<br />env_auth = true<br />region = us-east-1</pre> | AWS general, administrador de la nube | 
| Verifique la configuración de Rclone. | Para confirmar que Rclone está configurado y que los permisos funcionan correctamente, compruebe que Rclone puede analizar el archivo de configuración y que los objetos del contenedor Blob de Azure y del bucket de S3 sean accesibles. Consulte a continuación algunos ejemplos de comandos de validación.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.html) | AWS general, administrador de la nube | 

### Migración de datos con Rclone
<a name="migrate-data-using-rclone"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los datos de sus contenedores. | Ejecute los comandos de Rclone [copy](https://rclone.org/commands/rclone_copy/) o [sync](https://rclone.org/commands/rclone_sync/).  **Ejemplo: copy**Este comando copia datos del contenedor Blob de Azure de origen al bucket de S3 de destino.<pre>rclone copy AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>**Ejemplo: sync**Este comando sincroniza los datos entre el contenedor Blob de Azure de origen y el bucket de S3 de destino. ****<pre>rclone sync AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>Al usar el comando **sync**, los datos que no estén en el contenedor de origen se eliminarán del bucket de S3 de destino. | AWS general, administrador de la nube | 
| Sincronice sus contenedores.  | Una vez completada la copia inicial, ejecute el comando de Rclone **sync** para continuar con la migración. Solo se copiarán los archivos nuevos que no estén ya en el bucket de S3 de destino. | AWS general, administrador de la nube | 
| Compruebe que los datos se hayan migrado correctamente.  | Para comprobar que los datos se han copiado correctamente en el bucket de S3 de destino, ejecute los comandos [lsd](https://rclone.org/commands/rclone_lsd/) y [ls](https://rclone.org/commands/rclone_ls/) de Rclone. | AWS general, administrador de la nube | 

## Recursos relacionados
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-resources"></a>
+ [Guía del usuario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) (documentación de AWS)
+ [Funciones de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) (documentación de AWS)
+ [Creación de un contenedor Blob de Microsoft Azure](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) (documentación de Microsoft Azure)
+ [Comandos de Rclone](https://rclone.org/commands/) (documentación de Rclone)

## Información adicional
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional"></a>

**Ejemplo de política de roles para instancias EC2 **

Esta política otorga a tu EC2 instancia acceso de lectura y escritura a un segmento específico de tu cuenta. Si este bucket usa una clave administrada por el cliente para realizar el cifrado en el servidor, es posible que la política necesite obtener acceso adicional a AWS Key Management Service (AWS KMS).

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        }    
    ]
}
```

**Crear una entidad principal de servicio de Azure AD de solo lectura**

Una entidad principal de servicio de Azure es una identidad de seguridad que usan las aplicaciones, los servicios y las herramientas de automatización de los clientes para acceder a recursos específicos de Azure. Considérelo como una identidad de usuario (nombre de usuario y contraseña o certificado) con un rol específico, y con permisos estrictamente controlados para acceder a sus recursos. Para crear una entidad principal de servicio de solo lectura, con permisos de privilegio mínimo, y proteger los datos de Azure ante eliminaciones accidentales, siga estos pasos: 

1. Inicia sesión en el portal de tu cuenta en la nube de Microsoft Azure e inicia Cloud Shell PowerShell o usa la interfaz de línea de comandos (CLI) de Azure en tu estación de trabajo.

1. Cree una entidad principal de servicio y configúrela con acceso de [solo lectura](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#storage-blob-data-reader) a su cuenta de almacenamiento Blob de Azure. Guarde la salida JSON de este comando en un archivo local llamado `azure-principal.json`. El archivo se cargará en tu instancia. EC2 Sustituya las variables de marcador de posición que aparecen entre corchetes (`{` y `}`) por el identificador de suscripción de Azure, el nombre del grupo de recursos y el nombre de la cuenta de almacenamiento.

   ```
   az ad sp create-for-rbac `
   --name AWS-Rclone-Reader `
   --role "Storage Blob Data Reader" `
   --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}
   ```

# Migración de Couchbase Server a Couchbase Capella en AWS
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws"></a>

*Battulga Purevragchaa y Saurabh Shanbhag, Amazon Web Services*

*Mark Gamble, ninguno*

## Resumen
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-summary"></a>

Couchbase Capella es una base de datos NoSQL como servicio (DBaaS) totalmente gestionada para aplicaciones de misión crítica (por ejemplo, perfiles de usuario o catálogos en línea y gestión de inventario). Couchbase Capella gestiona su carga de trabajo DBaa S en una cuenta de Amazon Web Services (AWS) gestionada por Couchbase. Capella facilita la ejecución y la administración de la replicación de múltiples clústeres, múltiples regiones de AWS, multinube y nube híbrida dentro de una sola interfaz.

Couchbase Capella le ayuda a escalar al instante sus aplicaciones de Couchbase Server, lo que le permite crear clústeres de varios nodos en cuestión de minutos. Couchbase Capella es compatible con todas las características de Couchbase Server, incluidas [SQL\$1\$1](https://www.couchbase.com/products/n1ql), [Full Text Search](https://www.couchbase.com/products/full-text-search), [Eventing Service](https://docs.couchbase.com/server/current/eventing/eventing-overview.html) y [Analytics Service](https://www.couchbase.com/products/analytics). También elimina la necesidad de gestionar las instalaciones, las actualizaciones, las copias de seguridad y el mantenimiento general de las bases de datos. 

Este patrón describe los pasos y las prácticas recomendadas para migrar un entorno de [Couchbase Server](https://www.couchbase.com/products/server) autogestionado a la nube de AWS. El patrón proporciona un proceso repetible para migrar datos e índices desde los clústeres de Couchbase Server, que se ejecutan en las instalaciones o en la nube, a Couchbase Capella. El uso de estos pasos le ayuda a evitar problemas durante la migración y acelera el proceso general de migración.

Este patrón proporciona las dos opciones de migración siguientes:
+ La **opción 1** es adecuada si tiene que migrar menos de 50 índices. 
+ La **opción 2** es adecuada si tiene que migrar más de 50 índices. 

También puede [configurar datos de muestra](https://docs.couchbase.com/server/current/manage/manage-settings/install-sample-buckets.html) en su Couchbase Server autogestionado para seguir la guía de migración.

Si elije la **opción de migración 2**, o si utiliza ámbitos o colecciones distintos del valor predeterminado, debe utilizar el archivo de configuración de ejemplo, que se encuentra en la sección *Información adicional*.

## Requisitos previos y limitaciones
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-prereqs"></a>

**Requisitos previos **
+ Una cuenta de pago de Couchbase Capella existente. También puede crear una [cuenta de Couchbase Capella en AWS](https://aws.amazon.com/marketplace/pp/prodview-xrhx5zgue5c26) y utilizar la prueba gratuita de Couchbase Capella y, a continuación, actualizar a una cuenta de pago para configurar el clúster para la migración. Para empezar con la versión de prueba, siga las instrucciones de [Introducción a Couchbase Capella](https://docs.couchbase.com/cloud/get-started/create-account.html).
+ Un entorno de Couchbase Server autogestionado existente, ya sea en las instalaciones o implementado en un proveedor de servicios en la nube. 
+ Para la opción de migración 2, Couchbase Shell y un archivo de configuración. Para crear el archivo de configuración, puede usar el archivo de ejemplo que se encuentra en la sección de *Información adicional*.
+ Familiaridad con la administración de Couchbase Server y Couchbase Capella.
+ Familiaridad con la apertura de puertos TCP y la ejecución de comandos en una interfaz de la línea de comandos (CLI).

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


| 
| 
| Rol | Experiencia | Responsabilidades | 
| --- |--- |--- |
| Administrador de Couchbase | Familiaridad con Couchbase Server y Couchbase CapellaEl conocimiento básico de la línea de comandos es útil pero no obligatorio | Couchbase Server y Capella: tareas específicas | 
| Administrador de sistemas; administrador de TI | Familiaridad con el entorno y la administración del sistema Couchbase Server autogestionado | Abrir puertos y determinar las direcciones IP en los nodos de clústeres de Couchbase Server autogestionados | 

 

**Limitaciones**
+ Este patrón se utiliza para migrar datos, índices e índices de [búsqueda de texto completo de Couchbase](https://docs.couchbase.com/server/current/fts/full-text-intro.html) desde Couchbase Server a Couchbase Capella en AWS. El patrón no se aplica a la migración de [Couchbase Eventing Service](https://docs.couchbase.com/server/current/eventing/eventing-overview.html) ni a [Couchbase Analytics](https://docs.couchbase.com/server/current/analytics/introduction.html).
+ Couchbase Capella se encuentra disponible en varias regiones de AWS. Para up-to-date obtener información sobre las regiones compatibles con Capella, consulte [Amazon Web Services](https://docs.couchbase.com/cloud/reference/aws.html) en la documentación de Couchbase.

**Versiones de producto**
+ [Couchbase Server (Community o Enterprise) Edition, versión 5.x o posterior](https://docs.couchbase.com/server/current/release-notes/relnotes.html)

## Arquitectura
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-architecture"></a>

**Pila de tecnología de origen**
+ Couchbase Server

**Pila de tecnología de destino**
+ Couchbase Capella

**Arquitectura de destino**

![\[Migración de Couchbase Capella a un clúster de Couchbase en el plano de datos de Capella en AWS en cuatro pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/14ac5a81-eade-4708-9335-f5602fa07824/images/95cd7f33-742e-4d10-8e2c-37c7b4d9df45.png)


1. Para acceder a Couchbase Capella, utilice el **plano de control de Capella**. Puede utilizar el plano de control de Capella para hacer lo siguiente:
   + Controlar y supervisar su cuenta.
   + Gestionar clústeres y datos, índices, usuarios y grupos, permisos de acceso, supervisión y eventos.

1. Se han creado clústeres.

1. El **plano de datos de Capella** se encuentra en la cuenta de AWS gestionada por Couchbase. Tras crear un clúster nuevo, Couchbase Capella lo implementa en varias zonas de disponibilidad de la región de AWS seleccionada.

1. Puede desarrollar e implementar aplicaciones de Couchbase en una VPC de su cuenta de AWS. Normalmente, esta VPC accede al plano de datos de Capella a través del [emparejamiento de VPC](https://docs.couchbase.com/cloud/clouds/private-network.html).

## Tools (Herramientas)
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-tools"></a>
+ La [replicación cruzada de centros de datos (XDCR) de Couchbase](https://docs.couchbase.com/cloud/current/clusters/xdcr/xdcr.html) ayuda a replicar los datos en clústeres ubicados en diferentes proveedores de nube y diferentes centros de datos. Se utiliza para migrar datos a Couchbase Capella desde clústeres de servidores Couchbase autogestionados.
**nota**  
XDCR no se puede usar con Couchbase Server Community Edition para migrar a Couchbase Capella. En su lugar, puede utilizar [cbexport](https://docs.couchbase.com/server/current/tools/cbexport.html). Para obtener más información, consulte la épica sobre cómo *migrar datos de Community Edition*.
+ [Couchbase Shell](https://couchbase.sh/docs/) es un intérprete de comandos de línea para que Couchbase Server y Couchbase Capella accedan a clústeres de Couchbase locales y remotos. En este patrón, Couchbase Shell se usa para migrar índices.
+ [cbexport](https://docs.couchbase.com/server/current/tools/cbexport.html) es una utilidad de Couchbase para exportar datos del clúster de Couchbase. Incluido en las [herramientas CLI de Couchbase Server](https://docs.couchbase.com/server/current/cli/cli-intro.html).

## Epics
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Evaluar el tamaño del clúster de Couchbase Server autogestionado. | Inicie sesión en la [consola web de Couchbase](https://docs.couchbase.com/server/current/manage/manage-ui/manage-ui.html) para Couchbase Server y evalúe los nodos y los buckets de su clúster autogestionado. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)Utilizará las configuraciones de clúster de Couchbase Server autogestionadas como guía general para dimensionar y configurar el clúster de destino en Couchbase Capella.Si necesita ayuda con un ejercicio de dimensionamiento más detallado del Couchbase Capella, [póngase en contacto con Couchbase](https://www.couchbase.com/contact). | Administrador de Couchbase | 
| Registre la distribución del servicio Couchbase en el clúster de Couchbase Server autogestionado.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 
| Registre las direcciones IP de los nodos del clúster de Couchbase Server autogestionados. | (Ignore este paso si utiliza Community Edition). Registre la dirección IP de cada nodo del clúster. Se añadirán a la lista de permitidos de su clúster de Couchbase Capella más adelante. | Administrador de Couchbase, administrador de sistemas | 

### Implemente y configure los recursos en Couchbase Capella
<a name="deploy-and-configure-resources-on-couchbase-capella"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elija una plantilla. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 
| Elija y configure los nodos. | Elija y configure los nodos para que se adapten a su entorno de clústeres de Couchbase Server autogestionado, incluida la cantidad de nodos, la distribución, el procesamiento o la RAM de los servicios y el almacenamiento.Couchbase Capella utiliza las prácticas recomendadas de [escalado multidimensional](https://docs.couchbase.com/cloud/clusters/scale-cluster.html#scale-a-cluster). Los servicios y los nodos solo se pueden elegir de acuerdo con las prácticas recomendadas de implementación. Esto puede significar que no puede igualar exactamente las configuraciones de su clúster de Couchbase Server autogestionado. | Administrador de Couchbase | 
| Implementación del clúster. | El conocimiento básico de la línea de comandos es útil pero no obligatorio Para obtener instrucciones y pasos detallados, consulte [Create a cluster (Crear un clúster)](https://docs.couchbase.com/cloud/clusters/create-cluster.html) en la documentación de Couchbase.Si utiliza la versión de prueba gratuita de Couchbase Capella, debe convertirla en una cuenta de pago antes de comenzar la migración. Para convertir su cuenta, abra la sección **Billing (Facturación)** del plano de control de Couchbase Capella y, a continuación, seleccione **Add Activation ID (Añadir un ID de activación)**. El ID de activación se envía a su dirección de correo electrónico de contacto de facturación después de completar un acuerdo de compra con Couchbase Sales o después de realizar una compra a través de [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-xrhx5zgue5c26). | Administrador de Couchbase | 
| Crear un usuario con credenciales de base de datos.  | Un usuario con credenciales de base de datos es específico de un clúster y consta de un nombre de usuario, una contraseña y un conjunto de privilegios de bucket. Este usuario es necesario para crear buckets y acceder a los datos del bucket. En el plano de control de Couchbase Capella, cree una credencial de base de datos para el nuevo clúster siguiendo las instrucciones de [Configure database credentials (Configurar las credenciales de la base de datos)](https://docs.couchbase.com/cloud/clusters/manage-database-users.html) de la documentación de Couchbase Capella.Un usuario de la organización necesita que se le asignen credenciales de rol organizativo si quiere acceder a los datos del bucket en un clúster concreto, ya sea de forma remota o a través de la interfaz de usuario de Couchbase Capella. Esto es independiente de las credenciales de la base de datos, que suelen utilizar las aplicaciones y las integraciones. La creación del usuario organizacional le permite crear y administrar los buckets de destino en su clúster de Couchbase Capella. | Administrador de Couchbase | 
| Si utiliza la opción de migración 2, instale Couchbase Shell. | Puede instalar Couchbase Shell en cualquier sistema que tenga acceso de red tanto a su Couchbase Server autogestionado como a los clústeres de Couchbase Capella. Para obtener más información, consulte [Instalar la versión 1.0.0-beta.5 de Couchbase Shell](https://couchbase.sh/docs/#_installation) en la documentación de Couchbase Shell.Confirme que Couchbase Shell esté instalado [probando una conexión a su clúster autogestionado](https://couchbase.sh/docs/#_connecting_to_a_cluster) en un terminal de línea de comandos. | Administrador de Couchbase, administrador de sistemas | 
| Permitir direcciones IP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)Para obtener más información sobre las direcciones IP permitidas, consulte [Configurar las direcciones IP permitidas](https://docs.couchbase.com/cloud/get-started/configure-cluster-access.html#allow-ip-address) en la documentación de Couchbase. | Administrador de Couchbase, administrador de sistemas | 
| Configuración de los certificados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase, administrador de sistemas | 
| Crear el archivo de configuración para Couchbase Shell. | Cree un archivo dotfile de configuración en el directorio principal de la instalación de Couchbase Shell (por ejemplo, `/<HOME_DIRECTORY>/.cbsh/config`). Para obtener más información, consulte [Dotfiles de configuración](https://couchbase.sh/docs/#_the_config_dotfiles) en la documentación de Couchbase.Añada las propiedades de conexión de los clústeres de origen y destino al archivo de configuración. Puede usar el archivo de ejemplo de configuración que se encuentra en la sección de *Información adicional* y editar los ajustes de los clústeres. Guarde el archivo de configuración con los ajustes actualizados en la carpeta `.cbsh` (por ejemplo, `/<HOME_DIRECTORY>/.cbsh/config`). | Administrador de Couchbase, administrador de sistemas | 
| Cree buckets de destino. | Para cada bucket de origen, cree un bucket de destino en su clúster de Couchbase Capella siguiendo las instrucciones de la documentación de Couchbase para [crear un bucket](https://docs.couchbase.com/cloud/clusters/data-service/manage-buckets.html#add-bucket).Las configuraciones de los buckets de destino deben coincidir con los nombres de los buckets, los ajustes de memoria y los ajustes de resolución de conflictos de los buckets de su clúster de Couchbase Server autogestionado. | Administrador de Couchbase | 
| Crear ámbitos y colecciones. | Cada bucket contiene un ámbito y una colección predeterminados con el espacio de claves `_default._default`. Si utiliza otros espacios de clave para el ámbito y la colección, debe crear espacios de clave idénticos en el clúster de Capella de destino.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)<pre>scopes --clusters "On-Prem-Cluster" --bucket <BUCKET_NAME> | select scope | where scope != "_default" | each { |it| scopes create $it.scope --clusters "Capella-Cluster" }<br />collections --clusters "On-Prem-Cluster" --bucket <BUCKET_NAME> | select scope collection | where $it.scope != "_default" | where $it.collection != "_default" | each { |it| collections create $it.collection --clusters "Capella-Cluster" --bucket <BUCKET_NAME> --scope $it.scope }</pre> | Administrador de Couchbase | 

### Migración de los datos de Enterprise Edition
<a name="migrate-the-data-from-enterprise-edition"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Abrir los puertos TCP en los nodos del clúster autogestionado de Couchbase Server. | Asegúrese de que los puertos adecuados estén abiertos para la comunicación XDCR en los nodos del clúster de Couchbase Server autogestionado. Para obtener más información, consulte la [documentación sobre puertos de Couchbase Server](https://docs.couchbase.com/server/current/install/install-ports.html#ports-listed-by-communication-path). | Administrador de Couchbase, administrador de sistemas | 
| Si utiliza Couchbase Server Enterprise Edition, configure Couchbase XDCR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 
| Iniciar Couchbase XDCR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 

### Migración de los índices mediante la opción 1
<a name="migrate-the-indexes-by-using-option-1"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migración de los índices de clústeres autogestionados a Couchbase Capella. | Recomendamos este proceso si tiene que migrar menos de 50 índices. Si tiene que migrar más de 50 índices, le recomendamos que utilice la opción de migración 2.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase, administrador de sistemas | 

### Migración de los índices mediante la opción 2
<a name="migrate-the-indexes-by-using-option-2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre las definiciones del índice.  | Recomendamos este proceso si tiene que migrar más de 50 índices. Si tiene que migrar menos de 50 índices, le recomendamos que utilice la opción de migración 1.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase, administrador de sistemas | 
| Crear las definiciones del índice.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase, administrador de sistemas | 

### Migración de índices de búsqueda de texto completo
<a name="migrate-full-text-search-indexes"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre los índices de búsqueda de texto completo de clústeres autogestionados a Couchbase Capella. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 

### Migración de los datos de Couchbase Community Edition
<a name="migrate-data-from-couchbase-community-edition"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Exportar datos desde Couchbase Server Community Edition autogestionada. | El XDCR cifrado no está disponible en Couchbase Community Edition. Puede exportar los datos de Couchbase Community Edition y luego importarlos manualmente a Couchbase Capella.Para exportar datos del bucket de origen, utilice `cbexport` en la línea de comandos.Puede ver un ejemplo en el siguiente comando:<pre>cbexport json \<br />--cluster localhost \<br />--bucket <SOURCE BUCKET NAME> \<br />--format lines \<br />--username <USERNAME> \<br />--password <PASSWORD> \<br />--include-key cbkey \<br />--scope-field cbscope \<br />--collection-field cbcoll \<br />--output cbexported_data.json</pre>Tenga en cuenta que `cbkey`, `cbscope`, `cbcoll` y `cbexported_data.json` son etiquetas arbitrarias. Se hará referencia a ellas más adelante en el proceso, así que si decide asignarles un nombre diferente, anótelo. | Administrador de Couchbase | 
| Importar datos a Couchbase Capella. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)Para archivos grandes, Couchbase Capella admite la importación por línea de comandos mediante cURL. Puede explorar las opciones de importación con más detalle en [Import data (Importar datos)](https://docs.couchbase.com/cloud/clusters/data-service/import-data-documents.html) en la documentación de Couchbase Capella. | Administrador de Couchbase | 

### Probar y verificar la migración
<a name="test-and-verify-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Comprobación de la migración de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 
| Verificar la migración del índice.  | En el plano de control de Couchbase Capella, en la lista desplegable **Tools (Herramientas)** del clúster de destino, seleccione **Indexes (Índices)**. Compruebe que los índices se hayan migrado y creado. | Administrador de Couchbase | 
| Verificar los resultados de consulta.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 
| Verificar los resultados de la búsqueda de texto completo (aplicable si migró los índices FTS). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Administrador de Couchbase | 

## Recursos relacionados
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-resources"></a>

**Preparativos para la migración**
+ [Comience con la prueba gratuita de Couchbase Capella](https://cloud.couchbase.com/sign-up)
+ [Requisitos de proveedor de servicios en la nube para Couchbase Capella](https://docs.couchbase.com/cloud/reference/aws.html)
+ [Pautas de tamaños de Couchbase Capella](https://docs.couchbase.com/cloud/clusters/sizing.html)

**Migración de datos e índices**
+ [Couchbase XDCR](https://docs.couchbase.com/cloud/clusters/xdcr/xdcr.html)
+ [Documentación de Couchbase Shell](https://couchbase.sh/docs/)

**Couchbase, Capella y su soporte SLAs **
+ Acuerdos de nivel de servicio de [Couchbase Capella](https://www.couchbase.com/capellasla) () SLAs
+ [Política de soporte del servicio Couchbase Capella](https://www.couchbase.com/support-policy/cloud)

## Información adicional
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-additional"></a>

El siguiente código es un ejemplo de [archivo de configuración para Couchbase Shelll](https://couchbase.sh/docs/#_the_config_dotfiles). 

```
Version = 1
 
[[clusters]]
identifier = "On-Prem-Cluster"
hostnames = ["<SELF_MANAGED_COUCHBASE_CLUSTER>"]
default-bucket = "travel-sample"
username = "<SELF_MANAGED_ADMIN>"
password = "<SELF_MANAGED_ADMIN_PWD>"
tls-cert-path = "/<ABSOLUTE_PATH_TO_SELF_MANAGED_ROOT_CERT>"
data-timeout = "2500ms"
connect-timeout = "7500ms"
query-timeout = "75s"
 
[[clusters]]
identifier = "Capella-Cluster"
hostnames = ["<COUCHBASE_CAPELLA_ENDPOINT>"]
default-bucket = "travel-sample"
username = "<CAPELLA_DATABASE_USER>"
password = "<CAPELLA_DATABASE_USER_PWD>"
tls-cert-path = "/<ABSOLUTE_PATH_TO_COUCHBASE_CAPELLA_ROOT_CERT>"
data-timeout = "2500ms"
connect-timeout = "7500ms"
query-timeout = "75s"
```

Antes de guardar el archivo de configuración, utilice la siguiente tabla para asegurarse de haber agregado su propia información de clúster de origen y destino.

 


|  |  | 
| --- |--- |
| <SELF\$1MANAGED\$1COUCHBASE\$1CLUSTER> | Use las direcciones IP para su clúster de Couchbase Server autogestionado. | 
| <SELF\$1MANAGED\$1ADMIN> | Use el usuario administrador para su clúster de Couchbase Server autogestionado. | 
| <ABSOLUTE\$1PATH\$1TO\$1SELF\$1MANAGED\$1ROOT\$1CERT> | Use la ruta absoluta al archivo de certificado raíz guardado para su clúster de Couchbase Server autogestionado. | 
| <COUCHBASE\$1CAPELLA\$1ENDPOINT> | Use el punto de conexión de su clúster de Couchbase Capella. | 
| <CAPELLA\$1DATABASE\$1USER> | Use el usuario de la base de datos para su clúster de Couchbase Capella. | 
| <CAPELLA\$1DATABASE\$1USER\$1PWD> | Use la contraseña de usuario de la base de datos para su clúster de Couchbase Capella. | 
| <ABSOLUTE\$1PATH\$1TO\$1COUCHBASE\$1CAPELLA\$1ROOT\$1CERT> | Use la ruta absoluta al archivo de certificado raíz guardado para su clúster de Couchbase Capella. | 

# Migre de IBM WebSphere Application Server a Apache Tomcat en Amazon EC2
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2"></a>

*Neal Ardeljan y Afroz Khan, Amazon Web Services*

## Resumen
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-summary"></a>

Este patrón le guía por los pasos para migrar de un sistema Red Hat Enterprise Linux (RHEL) 6.9 o posterior local que ejecute IBM WebSphere Application Server (WAS) a RHEL 8 con Apache Tomcat en una instancia de Amazon Elastic Compute Cloud (Amazon). EC2 

Este patrón se puede aplicar a las siguientes versiones de origen y destino: 
+ WebSphere Application Server 7.x a Apache Tomcat 8 (con Java 7 o posterior) 
+ WebSphere Del servidor de aplicaciones 8.x a Apache Tomcat 8 (con Java 7 o posterior) 
+ WebSphere Del servidor de aplicaciones 8.5.5.x a Apache Tomcat 9 (con Java 8 o posterior) 
+ WebSphere Del servidor de aplicaciones 8.5.5.x a Apache Tomcat 10 (con Java 8 o posterior) 

## Requisitos previos y limitaciones
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-prereqs"></a>

**Requisitos previos**** **
+ Una cuenta de AWS activa 
+ Código fuente de Java, con las siguientes suposiciones:
  + Emplea la versión de Java Development Kit (JDK) de Java 7 o posterior 
  + Emplea el marco Spring o Apache Struts 
  + No utiliza el framework Enterprise Java Beans (EJB) ni ninguna otra funcionalidad de WebSphere servidor que no esté fácilmente disponible para Tomcat
  + Utiliza principalmente servlets o Java Server Pages () JSPs 
  + Emplea conectores de Java Database Connectivity (JDBC) para conectar a las bases de datos  
+ Fuente: IBM WebSphere Application Server versión 7.x o superior 
+ Destino: Apache Tomcat, versión 8.5 o superior  

## Arquitectura
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-architecture"></a>

**Pila de tecnología de origen**** **
+ Una aplicación web creada con el marco Apache Struts Model-View-Controller (MVC) 
+ Una aplicación web que se ejecuta en las versiones 7.x u 8.x de IBM WebSphere Application Server
+ Una aplicación web que emplea un conector Lightweight Directory Access Protocol (LDAP) para conectar a un directorio LDAP (iPlanet/eTrust) 
+ Una aplicación que emplea la conectividad de IBM Tivoli Access Manager (TAM) para actualizar la contraseña del usuario de TAM (en la presente implementación, las aplicaciones usan PD.jar)

** ****Bases de datos en las instalaciones**
+ Oracle Database 21c (21.0.0.0)
+ Oracle Database 19c (19.0.0.0)
+ Oracle Database 12c Versión 2 (12.2.0.1)
+ Oracle Database 12c Release 1 (12.1.0.2)

**Pila de tecnología de destino**
+ Apache Tomcat versión 8 (o posterior) que se ejecuta en RHEL en una instancia EC2 
+ Amazon Relational Database Service (Amazon RDS) para Oracle

Para obtener más información sobre las versiones de Oracle compatibles con Amazon RDS, consulte el sitio web de [Amazon RDS para Oracle](https://aws.amazon.com/rds/oracle/). 

**Arquitectura de destino**

![\[Arquitectura para migrar de IBM WebSphere a Apache Tomcat en Amazon EC2\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/96f91201-e0a6-4d3f-a94e-7bd68a59cc4e/images/11afe7c0-b400-423b-9dfe-02a915fe47ff.png)


## Tools (Herramientas)
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-tools"></a>
+ Nivel de aplicación: reconstrucción de una aplicación Java en un archivo WAR.
+ Nivel de base de datos: copia de seguridad y restauración nativas de Oracle.
+ Herramienta de migración de Apache Tomcat para Jakarta EE. Esta herramienta toma una aplicación web escrita para Java EE 8 y ejecutada en Apache Tomcat 9 y la convierte automáticamente para ejecutarla en Apache Tomcat 10, que implementa Jakarta EE 9.

## Epics
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Complete el descubrimiento de las aplicaciones, el estado actual y la línea base de rendimiento. |  | BA, líder de migración | 
| Valide las versiones de las bases de datos de origen y de destino. |  | Administrador de base de datos | 
| Identifique los requisitos de hardware para la instancia del servidor EC2 de destino. |  | DBA, SysAdmin | 
| Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento). |  | DBA, SysAdmin | 
| Elija el tipo de EC2 instancia adecuado en función de la capacidad, las características de almacenamiento y las características de la red. |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino. |  | DBA, SysAdmin | 
| Identifique la estrategia y las herramientas de migración de aplicaciones. |  | Administrador de base de datos, líder de migración | 
| Complete el diseño de la migración y la guía de migración de la aplicación. |  | Responsable de compilación, líder de migración | 
| Complete el manual de procedimientos de migración de aplicaciones. |  | Responsable de compilación, líder de transición, líder de pruebas, líder de migración | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). |  | SysAdmin | 
| Creación de grupos de seguridad. |  | SysAdmin | 
| Configure e inicie Amazon RDS para Oracle. |  | DBA, SysAdmin | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree o acceda a los puntos de conexión para recuperar los archivos de copia de seguridad de la base de datos. |  | Administrador de base de datos | 
| Utilice el motor de base de datos nativo o una herramienta de terceros para migrar los objetos y datos de la base de datos. | Para obtener más información, consulte “Migración de objetos y datos de bases de datos” en la sección de *Información adicional*. | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Presente la solicitud de cambio (CR) para la migración. |  | Líder de transición | 
| Obtenga la aprobación de la CR para la migración. |  | Líder de transición | 
| Siga la estrategia de migración de aplicaciones según el manual de procedimientos de migración de aplicaciones. | Para obtener más información, consulte “Configurar el nivel de aplicación” en la sección de *Información adicional*. | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Actualice la aplicación (si es necesario). |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Complete las pruebas funcionales y no funcionales, de validación de datos, de acuerdo de nivel de servicio y de rendimiento. |  | Líder de pruebas, propietario de la aplicación, usuarios de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga la aprobación del propietario de la aplicación o del propietario de la empresa. |  | Líder de transición | 
| Cambie los clientes de aplicaciones a la nueva infraestructura. |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | DBA, ingeniero de migración, SysAdmin | 
| Revise y valide los documentos del proyecto. |  | Líder de migración | 
| Recopile métricas como el tiempo de migración, el porcentaje de esfuerzo manual en comparación con el automatizado y el ahorro de costos. |  | Líder de migración | 
| Cerrar el proyecto y enviar comentarios. |  | Líder de migración, propietario de la aplicación | 

## Recursos relacionados
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-resources"></a>

**Referencias**
+ [Documentación de Apache Tomcat 10.0](https://tomcat.apache.org/tomcat-10.0-doc/index.html)
+ [Documentación de Apache Tomcat 9.0](https://tomcat.apache.org/tomcat-9.0-doc/index.html)
+ [Documentación de Apache Tomcat 8.0](https://tomcat.apache.org/tomcat-8.0-doc)
+ [Guía de instalación de Apache Tomcat 8.0](https://tomcat.apache.org/tomcat-8.0-doc/setup.html)
+ [Documentación de JNDI de Apache Tomcat](https://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html)
+ [Sitio web de Amazon RDS para Oracle](https://aws.amazon.com/rds/oracle/) 
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/) 
+ [Oracle y Amazon Web Services](https://aws.amazon.com/oracle/) 
+ [Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ [Implementaciones de Amazon RDS Multi-AZ](https://aws.amazon.com/rds/details/multi-az/) 

**Tutoriales y videos**
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/) 

## Información adicional
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-additional"></a>

**Migración de objetos y datos de bases de datos**

Por ejemplo, si utiliza backup/restore utilidades nativas de Oracle:

1. Cree la copia de seguridad de Amazon Simple Storage Service (Amazon S3) para los archivos de copia de seguridad de la base de datos (opcional).

1. Haga una copia de seguridad de los datos de la base de datos de Oracle en la carpeta compartida de la red.

1. Inicie sesión en el servidor transitorio de migración para mapear la carpeta compartida de la red.

1. Copie los datos de la carpeta de recursos compartidos de la red al bucket de S3.

1. Solicite una implementación de Amazon RDS Multi-AZ para Oracle.

1. Restaure la copia de seguridad de la base de datos en las instalaciones en Amazon RDS para Oracle.

**Configurar el nivel de aplicación**

1. Instale Tomcat 8 (o 9/10) desde el sitio web de Apache Tomcat.

1. Empaquete la aplicación y las bibliotecas compartidas en un archivo WAR.

1. Implemente el archivo WAR en Tomcat.

1. Supervise el registro de inicio para `Linux cat` ver si hay alguna biblioteca compartida que falte WebSphere.

1. Observe el registro de inicio de `Linux cat` cualquier WebSphere extensión descriptora de despliegue específica.

1. Recopile del servidor las bibliotecas Java dependientes que falten. WebSphere 

1. Modifique los elementos descriptores de despliegue WebSphere específicos con equivalentes compatibles con Tomcat.

1. Reconstruya el archivo WAR con las bibliotecas Java dependientes y los descriptores de implementación actualizados.

1. Actualice la configuración de LDAP y la configuración de la base de datos y pruebe las conexiones (consulte las [instrucciones de configuración de Realm](https://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html) y las [instrucciones de JNDI Datasource](https://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html) en la documentación de Apache Tomcat).

1. Pruebe la aplicación instalada con la base de datos de Amazon RDS para Oracle restaurada.

1. Cree una Amazon Machine Image (AMI) para Linux a partir de la EC2 instancia.

1. Inicie la arquitectura completa con el equilibrador de carga de aplicación y el grupo de escalado automático.

1. Actualice URLs (mediante la unión WebSeal) para que apunte al Application Load Balancer.

1. Actualice la base de datos de administración de configuración (CMDB). 

# Migre de IBM WebSphere Application Server a Apache Tomcat en Amazon EC2 con Auto Scaling
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling"></a>

*Kevin Yung y Afroz Khan, Amazon Web Services*

## Resumen
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-summary"></a>

Este patrón proporciona orientación para migrar una aplicación Java de IBM WebSphere Application Server a Apache Tomcat en una instancia de Amazon Elastic Compute Cloud EC2 (Amazon) con Amazon EC2 Auto Scaling activado. 

Con el uso de este patrón, puede lograr lo siguiente:
+ Una reducción de los costos de licencias de IBM
+ Alta disponibilidad mediante la Implementación multi-AZ
+ Resiliencia de aplicaciones mejorada con Amazon EC2 Auto Scaling

## Requisitos previos y limitaciones
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Las aplicaciones Java (versión 7.*x* o 8.*x*) deben desarrollarse en pilas LAMP.
+ El estado de destino es alojar aplicaciones Java en hosts Linux. Este patrón se ha implementado con éxito en un entorno de Red Hat Enterprise Linux (RHEL) 7. Otras distribuciones de Linux pueden seguir este patrón, pero consultando siempre la configuración de la distribución de Apache Tomcat.
+ Debe comprender las dependencias de la aplicación Java.
+ Debe tener acceso al código fuente de la aplicación Java para poder realizar cambios. 

**Limitaciones y redefiniciones de plataforma**
+ Debe comprender los componentes del archivo empresarial (EAR) y comprobar que todas las bibliotecas estén empaquetadas en archivos WAR de componentes web. Debe configurar el [complemento WAR de Apache Maven](https://maven.apache.org/plugins/maven-war-plugin/) y producir artefactos en los archivos WAR.
+ Al usar Apache Tomcat 8, existe un conflicto conocido entre servlet-api.jar y los archivos jar integrados en el paquete de la aplicación. Para resolver este problema, elimine servlet-api.jar del paquete de la aplicación.
+ Debe configurar WEB-INF/Resources, ubicado en *classpath* de la [Configuración de Apache Tomcat](https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html). De forma predeterminada, las bibliotecas JAR no se cargan en el directorio. *Como alternativa, puede implementar todos los recursos que se indican a continuación. src/main/resources*
+ Compruebe si hay alguna raíz de contexto con codificación rígida en la aplicación Java y actualice la nueva [raíz de contexto de Apache Tomcat.](https://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Defining_a_context)
+ Para configurar las opciones de tiempo de ejecución de JVM, puede crear el archivo de configuración setenv.sh en la carpeta bin de Apache Tomcat; por ejemplo, JAVA\$1OPTS, JAVA\$1HOME**,** etc.  
+ La autenticación se configura a nivel de contenedor, como un dominio en las configuraciones de Apache Tomcat. La autenticación se establece para cualquiera de los tres dominios siguientes: 
  + [JDBC Database Realm](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm) busca los usuarios en una base de datos relacional a la que se accede mediante el controlador JDBC.
  + [DataSource Database Realm](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm) busca usuarios en una base de datos a la que accede JNDI. 
  + [JNDI Directory Realm](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm) busca a los usuarios en el directorio de Lightweight Directory Access Protocol (LDAP) al que accede el proveedor de JNDI. Las búsquedas requieren: 
    + Detalles de la conexión LDAP: base de búsqueda de usuarios, filtro de búsqueda, base de roles, filtro de roles 
    + Dominio clave del directorio JNDI: se conecta a LDAP, autentica a los usuarios y recupera todos los grupos de los que un usuario es miembro
+ Autorización: en el caso de un contenedor con una autorización basada en roles que compruebe las restricciones de autorización en web.xml, los recursos web deben definirse y compararse con los roles indicados en las restricciones. Si LDAP no tiene un mapeo de roles de grupo, debe establecer el atributo < security-role-ref > en web.xml para lograr el mapeo de roles de grupo. Para ver un ejemplo de un documento de configuración, consulte la [documentación de Oracle](https://docs.oracle.com/cd/E19226-01/820-7627/bncav/index.html). 
+ Conexión de base de datos: cree una definición de recurso en Apache Tomcat con una URL y detalles de conexión de un punto de conexión Amazon Relational Database Service (Amazon RDS). Actualice el código de la aplicación para que haga referencia a mediante la búsqueda JNDI. DataSource Una conexión de base de datos existente definida en no WebSphere funcionaría, ya que utiliza sus nombres WebSphere JNDI. Puede añadir una <resource-ref>entrada en el archivo web.xml con el nombre y la definición del DataSource tipo del JNDI. Para ver un ejemplo de documento de configuración, consulte la [documentación de Apache Tomcat](https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html#JDBC_Data_Sources).
+ Registro: de forma predeterminada, Apache Tomcat inicia sesión en la consola o en un archivo de registro. Puede habilitar el rastreo a nivel de dominio actualizando *logging.properties* (consulte [Registros en Tomcat](https://tomcat.apache.org/tomcat-8.0-doc/logging.html)). Si usa Apache Log4j para añadir registros a un archivo, debe descargar tomcat-juli y añadirlo al *classpath*.
+ Gestión de sesiones: si va a usar IBM WebSeal como equilibrador de carga de aplicación y gestión de sesiones, no es necesario realizar ningún cambio. [Si utiliza un Application Load Balancer o Network Load Balancer en AWS para reemplazar el componente IBM WebSeal, debe configurar la administración de sesiones mediante una instancia de ElastiCache Amazon con un clúster de Memcached y configurar Apache Tomcat para que utilice la administración de sesiones de código abierto.](https://github.com/magro/memcached-session-manager) 
+ Si usa el proxy de reenvío WebSeal de IBM, debe configurar un nuevo equilibrador de carga de red en AWS. Utilice lo que IPs proporciona el Network Load Balancer para las configuraciones de empalmes WebSeal.
+ Configuración SSL: le recomendamos que utilice Secure Sockets Layer (SSL) para end-to-end las comunicaciones. Para configurar un servidor SSL en Apache Tomcat, siga las instrucciones de la [documentación de Apache Tomcat](https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html). 

## Arquitectura
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-architecture"></a>

**Pila de tecnología de origen**
+ Servidor WebSphere de aplicaciones IBM

 

**Pila de tecnología de destino**
+ La arquitectura usa [Elastic Load Balancing (versión 2](https://docs.aws.amazon.com/elasticloadbalancing/)). Si usa IBM WebSeal para la gestión de identidades y el equilibrio de carga, puede seleccionar un equilibrador de carga de red en AWS para integrarlo con el proxy inverso IBM WebSeal.
+ Las aplicaciones Java se implementan en un servidor de aplicaciones Apache Tomcat, que se ejecuta en una EC2 instancia de un [grupo de Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html). Puedes configurar una [política de escalado](https://docs.aws.amazon.com/autoscaling/ec2/userguide/scaling_plan.html) basada en CloudWatch las métricas de Amazon, como el uso de la CPU. 
+ Si va a dejar de utilizar IBM WebSeal para el equilibrio de carga, puede utilizar [Amazon for Memcached ElastiCache para](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) la gestión de sesiones.
+ En la base de datos de backend, puede implementar [alta disponibilidad (Multi-AZ) para Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) y seleccionar un tipo de motor de base de datos.

 

**Arquitectura de destino**

![\[Nube de AWS architecture with VPC, two availability zones, load balancer, and database components.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/52b91dab-7b3b-4751-abe2-25e7c7cd8d89/images/25125023-9a81-452a-9ada-184e2416cc02.png)


## Tools (Herramientas)
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
+ Apache Tomcat (versión 7.*x* o 8.*x*)
+ RHEL 7 o Centos 7
+ [Implementación de Amazon RDS Multi-AZ](https://aws.amazon.com/rds/details/multi-az/)
+ [Amazon ElastiCache para Memcached (opcional](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html))

## Epics
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-epics"></a>

### Configure el VPC
<a name="set-up-the-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). |  |  | 
| Cree subredes. |  |  | 
| Cree tablas de enrutamiento si es necesario. |  |  | 
| Cree listas de control de acceso a la red (). ACLs |  |  | 
| Configure AWS Direct Connect o una conexión VPN corporativa. |  |  | 

### Redefina la plataforma de la aplicación
<a name="replatform-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Refactorice la configuración de Maven en compilación de la aplicación para generar los artefactos de WAR. |  |  | 
| Refactorice los orígenes de datos de dependencia de las aplicaciones en Apache Tomcat. |  |  | 
| Refactorice los códigos fuente de las aplicaciones para que usen nombres JNDI en Apache Tomcat. |  |  | 
| Implemente los artefactos WAR en Apache Tomcat. |  |  | 
| Complete las validaciones y pruebas de las aplicaciones. |  |  | 

### Configurar la red
<a name="configure-the-network"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el firewall corporativo para permitir la conexión a los servicios de dependencia. |  |  | 
| Configure el firewall corporativo para permitir el acceso de los usuarios finales a Elastic Load Balancing en AWS. |  |  | 

### Cree la infraestructura de aplicaciones
<a name="create-the-application-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree e implemente la aplicación en una EC2 instancia. |  |  | 
| Cree un clúster de Amazon ElastiCache for Memcached para la administración de sesiones. |  |  | 
| Cree una instancia de Amazon RDS Multi-AZ para la base de datos de backend. |  |  | 
| Cree certificados SSL e impórtelos a AWS Certificate Manager (ACM). |  |  | 
| Instale certificados SSL en los equilibradores de carga. |  |  | 
| Instale certificados SSL para los servidores Apache Tomcat. |  |  | 
| Complete las validaciones y pruebas de las aplicaciones. |  |  | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Desactive la infraestructura existente. |  |  | 
| Restaure la base de datos de producción a Amazon RDS. |  |  | 
| Realice cambios en el DNS para interrumpir la aplicación. |  |  | 

## Recursos relacionados
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-related-resources"></a>

**Referencias**
+ [Documentación de Apache Tomcat 7.0](https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html)
+ [Guía de instalación de Apache Tomcat 7.0](https://tomcat.apache.org/tomcat-7.0-doc/appdev/installation.html)
+ [Documentación de JNDI de Apache Tomcat](https://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html)
+ [Implementaciones Multi-AZ de Amazon RDS](https://aws.amazon.com/rds/details/multi-az/)
+ [Amazon ElastiCache para Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html)

**Tutoriales y videos**
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)

# Migración de una aplicación .NET de Microsoft Azure App Service a AWS Elastic Beanstalk
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk"></a>

*Raghavender Madamshitti, Amazon Web Services*

## Resumen
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-summary"></a>

Este patrón describe cómo migrar una aplicación web .NET alojada en Microsoft Azure App Service a AWS Elastic Beanstalk. Hay dos formas de migrar aplicaciones a Elastic Beanstalk:
+ Mediante AWS Toolkit para Visual Studio: este complemento para el IDE de Microsoft Visual Studio proporciona la forma más fácil y sencilla de implementar aplicaciones .NET personalizadas en AWS. Puede utilizar este enfoque para implementar código .NET directamente en AWS y crear recursos de apoyo, como Amazon Relational Database Service (Amazon RDS) para bases de datos de SQL Server, directamente desde Visual Studio.
+ Mediante carga e implementación en Elastic Beanstalk: cada Azure App Service incluye un servicio en segundo plano llamado Kudu que resulta útil para capturar los volcados de memoria y los registros de implementación, ver los parámetros de configuración y acceder a los paquetes de implementación. Puede usar la consola Kudu para acceder al contenido de Azure App Service, extraer el paquete de implementación y, a continuación, cargar el paquete en Elastic Beanstalk mediante la opción de carga e implementación de la consola de Elastic Beanstalk.

Este patrón describe el segundo enfoque (cargar la aplicación en Elastic Beanstalk a través de Kudu). El patrón también utiliza los siguientes servicios de AWS: AWS Elastic Beanstalk, Amazon Virtual Private Cloud (Amazon VPC), Amazon, Amazon Elastic Compute Cloud (Amazon) Auto Scaling, CloudWatch Amazon Simple Storage Service (Amazon S3 EC2) Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) y Amazon Route 53. 

La aplicación web.NET se implementa en AWS Elastic Beanstalk, que se ejecuta en un grupo de Amazon EC2 Auto Scaling. Puedes configurar una política de escalado basada en CloudWatch las métricas de Amazon, como el uso de la CPU. Para una base de datos, puede utilizar Amazon RDS en un entorno Multi-AZ o Amazon DynamoDB, según los requisitos empresariales y de la aplicación. 

## Requisitos previos y limitaciones
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una aplicación web .NET que se ejecute en Azure App Service
+ Permiso para usar la consola Kudu de Azure App Service

**Versiones de producto**
+ .NET Core (x64) 1.0.1, 2.0.0 o posterior, o .NET Framework 4.x, 3.5 (consulte [el historial de la plataforma .NET en Windows Server](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnet.html))
+ Internet Information Services (IIS) versión 8.0 o posterior que se ejecute en Windows Server 2012 o posterior
+ .NET 2.0 o 4.0 Runtime.

## Arquitectura
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-architecture"></a>

**Pila de tecnología de origen**
+  Aplicación desarrollada con .NET Framework 3.5 o posterior, o .NET Core 1.0.1, 2.0.0 o posterior, y alojada en Azure App Service (aplicación web o aplicación API)

**Pila de tecnología de destino**
+ AWS Elastic Beanstalk ejecutándose en un grupo de Amazon EC2 Auto Scaling

**Arquitectura de migración**

![\[Kudu accede al contenido de Azure App Service, obtiene el paquete de implementación y lo carga en Elastic Beanstalk.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/df606a2d-b0a8-4035-b377-0a760e7300c9/images/dd15f97b-9cf2-4bcc-af45-44df1c4ca4a5.png)


 

**Flujo de trabajo de una implementación**

![\[Flujo de trabajo de implementación para crear una aplicación, publicarla en el entorno de lanzamiento y, a continuación, administrarlo.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/df606a2d-b0a8-4035-b377-0a760e7300c9/images/accec77d-c753-4166-8f27-bd4932b3d884.png)


## Tools (Herramientas)
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-tools"></a>

**Herramientas**
+ .NET Core o .NET Framework
+ C\$1
+ IIS
+ Consola Kudu

**Servicios y características de AWS**
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html): Elastic Beanstalk es un servicio para implementar y easy-to-use escalar aplicaciones web.NET. Elastic Beanstalk administra automáticamente el aprovisionamiento de capacidad, el equilibrio de carga y el escalado automático.
+ [Grupo Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html): Elastic Beanstalk incluye un grupo de Auto Scaling que administra las instancias de Amazon en EC2 el entorno. En un entorno de una sola instancia, el grupo de escalado automático garantiza que siempre haya una instancia en ejecución. En un entorno con equilibrio de carga, puede configurar el grupo con un rango de instancias para su ejecución, y Amazon EC2 Auto Scaling añade o elimina instancias según sea necesario, en función de la carga.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html): cuando habilita el equilibrio de carga en AWS Elastic Beanstalk, se crea un balanceador de carga que distribuye el tráfico entre las instancias del entorno. EC2 
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html): Elastic Beanstalk CloudWatch utiliza Amazon automáticamente para proporcionar información sobre los recursos de su aplicación y entorno. Amazon CloudWatch admite métricas estándar, métricas personalizadas y alarmas.
+ [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 usar los registros de alias de Route 53 para asignar nombres de dominio personalizados a los entornos de AWS Elastic Beanstalk.

## Epics
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-epics"></a>

### Configurar una VPC
<a name="set-up-a-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure una nube privada virtual (VPC). | En su cuenta de AWS, cree una VPC con la información requerida. | Administrador de sistemas | 
| Cree subredes. | Cree dos o más subredes en la VPC. | Administrador de sistemas | 
| Cree una tabla de enrutamiento. | Cree una tabla de enrutamiento según sus necesidades. | Administrador de sistemas | 

### Configurar Elastic Beanstalk
<a name="set-up-elastic-beanstalk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Acceda a la consola Kudu de Azure App Service. | Para acceder a Kudu a través del portal de Azure, diríjase al panel de control de App Service y, a continuación, seleccione **Advanced Tools** (Herramientas avanzadas) y **Go** (Ir). O bien, puede modificar la URL del servicio de aplicaciones de Azure de la siguiente manera: `https://<appservicename>.scm.azurewebsites.net`. | Desarrollador de aplicaciones, administrador de sistemas | 
| Descargue el paquete de implementación de Kudu. | Navegue a Windows PowerShell seleccionando la **DebugConsole**opción. De esta forma se abrirá la consola Kudo. Vaya a la carpeta `wwwroot` y descárguela. Se descargará el paquete de implementación de Azure App Service como un archivo zip. Para ver un ejemplo, consulte el archivo adjunto. | Desarrollador de aplicaciones, administrador de sistemas | 
| Cree un paquete para Elastic Beanstalk. | Descomprima el paquete de implementación que descargó de Azure App Service. Cree un archivo JSON llamado `aws-windows-deployment-manifest.json` (este archivo solo es necesario para las aplicaciones .NET Core). Cree un archivo zip que incluya el archivo `aws-windows-deployment-manifest.json` del paquete de implementación de Azure App Service. Para ver un ejemplo, consulte el archivo adjunto. | Desarrollador de aplicaciones, administrador de sistemas | 
| Cree una nueva aplicación de Elastic Beanstalk. | Abra la consola de Elastic Beanstalk. Seleccione una aplicación existente o cree una nueva. | Desarrollador de aplicaciones, administrador de sistemas | 
| Cree el entorno. | En el menú **Actions** (Acciones) de la consola de Elastic Beanstalk, seleccione **Create environment** (Crear entorno). Seleccione el entorno del servidor web y la plataforma .NET/IIS. En código de aplicación, seleccione **Cargar**. Cargue el archivo zip que preparó para Elastic Beanstalk y, a continuación, seleccione **Create Environment** (Crear entorno). | Desarrollador de aplicaciones, administrador de sistemas | 
| Configura Amazon CloudWatch. | De forma predeterminada, la CloudWatch supervisión básica está habilitada. Si desea cambiar la configuración, en el asistente de Elastic Beanstalk, seleccione la aplicación publicada y, a continuación, **Monitoring** (Supervisión). | Administrador de sistemas | 
| Compruebe que el paquete de implementación se encuentre en Amazon S3.  | Una vez creado el entorno de la aplicación, encontrará el paquete de implementación en el bucket de S3. | Desarrollador de aplicaciones, administrador de sistemas | 
| Probar la aplicación. | Una vez creado el entorno, utilice la URL proporcionada en la consola de Elastic Beanstalk para probar la aplicación. | Administrador de sistemas | 

## Recursos relacionados
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-resources"></a>
+ [Conceptos AWS Elastic Beanstack](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.html) (documentación de Elastic Beanstalk)
+ [Getting Started with .NET on Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/dotnet-getstarted.html) (Introducción a .NET en Elastic Beanstalk (documentación de Elastic Beanstalk)
+ [Consola Kudu](https://github.com/projectkudu/kudu/wiki/Kudu-console) () GitHub
+ [Using "Kudu" to Manage Azure Web Apps](https://www.gslab.com/blogs/kudu-azure-web-app/) (artículo de GS Lab)
+ [Custom ASP.NET Core Elastic Beanstalk Deployments](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-beanstalk-custom-netcore.html) (Guía del usuario del Kit de herramientas de AWS para Visual Studio)
+ [Documentación de Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ [AWS Elastic Beanstalk Supported Platforms](https://docs.amazonaws.cn/en_us/elasticbeanstalk/latest/platforms/platforms-supported.html) (Plataformas compatibles con AWS Elastic Beanstalk (documentación de Elastic Beanstalk)
+ [Deploy a Web Application to AWS](https://www.c-sharpcorner.com/article/deploying-a-web-application-to-aws/) (Implementación de una aplicación web en AWS) (artículo de C\$1 Corner)
+ [Cómo escalar el tamaño de su grupo de Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/scaling_plan.html) ( EC2 documentación de Amazon)
+ [High Availability (Multi-AZ) for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) (Alta disponibilidad (Multi-AZ) para Amazon RDS) (documentación de Amazon RDS)

## Información adicional
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-additional"></a>

**Notas**
+ Si va a migrar una base de datos en las instalaciones o de Azure SQL Server a Amazon RDS, también debe actualizar los detalles de conexión a la base de datos. 
+ Para realizar las pruebas, se adjunta un ejemplo de aplicación de demostración.

## Conexiones
<a name="attachments-df606a2d-b0a8-4035-b377-0a760e7300c9"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/df606a2d-b0a8-4035-b377-0a760e7300c9/attachments/attachment.zip)

# Migre de Oracle WebLogic a Apache Tomcat (ToMEE) en Amazon ECS
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs"></a>

*Anya Epishcheva y Harshad Gohil, Amazon Web Services*

## Resumen
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-summary"></a>

Este patrón describe los pasos para migrar un sistema Oracle Solaris SPARC local que ejecuta Oracle WebLogic a una instalación basada en contenedores Docker que ejecuta [Apache ToMEE (Apache Tomcat](http://tomee.apache.org/) con soporte adicional para contenedores) con Amazon Elastic Container Service (Amazon ECS). 

Para obtener información sobre la migración de las bases de datos asociadas a las aplicaciones que va a migrar de Oracle a Tomcat, consulte los patrones de migración de bases de datos de este WebLogic catálogo. 

**Prácticas recomendadas**

Los pasos para migrar las aplicaciones web de Java y Java Enterprise Edition (Java EE) varían según la cantidad de recursos específicos del contenedor que utilice la aplicación. Las aplicaciones basadas en Spring suelen ser más fáciles de migrar, ya que tienen un número reducido de dependencias en el contenedor de implementación. Por el contrario, las aplicaciones Java EE que utilizan recursos empresariales JavaBeans (EJBs) y de contenedores gestionados, como los grupos de subprocesos, el Servicio de autenticación y autorización de Java (JAAS) y la persistencia gestionada por contenedores (CMP), requieren más esfuerzo. 

Las aplicaciones desarrolladas para Oracle Application Server utilizan con frecuencia la suite Oracle Identity Management. Los clientes que migran a servidores de aplicaciones de código abierto suelen optar por volver a implementar la gestión de identidades y accesos mediante una federación basada en SAML. Otros utilizan Oracle HTTP Server Webgate en casos en los que la migración desde la suite Oracle Identity Management no es una opción. 

Las aplicaciones web Java y Java EE son excelentes candidatas para su implementación en los servicios de AWS basados en Docker, como AWS Fargate y Amazon ECS. Los clientes suelen elegir una imagen de Docker con la última versión del servidor de aplicaciones de destino (como ToMEE) y el kit de desarrollo de Java (JDK) preinstalados. Instalan sus aplicaciones sobre la imagen de Docker base, la publican en su registro Amazon Elastic Container Registry (Amazon ECR) y la utilizan para la implementación escalable de sus aplicaciones en AWS Fargate o Amazon ECS. 

Lo ideal es que la implementación de aplicaciones sea elástico, es decir, que el número de instancias de aplicaciones se amplíe o disminuya en función del tráfico o la carga de trabajo. Esto significa que las instancias de aplicaciones deben estar en línea o cancelarse para ajustar la capacidad a la demanda. 

Cuando traslade una aplicación Java a AWS, considere convertirla en apátrida. Este es un principio arquitectónico clave del Marco de AWS Well-Architected que permitirá el escalado horizontal mediante el almacenaje en contenedores. Por ejemplo, la mayoría de las aplicaciones web basadas en Java almacenan la información de las sesiones de los usuarios de forma en las instalaciones. Para sobrevivir a la finalización de la instancia de la aplicación debido al escalado automático en Amazon Elastic Compute Cloud (Amazon EC2) o por otros motivos, la información de las sesiones de los usuarios debe almacenarse de forma global para que los usuarios de aplicaciones web puedan seguir trabajando sin problemas y de forma transparente sin tener que volver a conectarse a una aplicación web ni volver a iniciar sesión en ella. Existen varias opciones de arquitectura para este enfoque, como Amazon ElastiCache for Redis o el almacenamiento del estado de la sesión en una base de datos global. Los servidores de aplicaciones, como ToMEE, tienen complementos que permiten almacenar y administrar las sesiones a través de Redis, bases de datos y otros almacenes de datos globales.

Utilice una herramienta común y centralizada de registro y depuración que se integre fácilmente con Amazon CloudWatch y AWS X-Ray. La migración brinda la oportunidad de mejorar las capacidades del ciclo de vida de las aplicaciones. Por ejemplo, es posible que desee automatizar el proceso de creación para que los cambios se puedan realizar fácilmente mediante una canalización de integración y entrega continuas (CI/CD). Esto puede requerir cambios en la aplicación para que pueda implementarse sin tiempo de inactividad. 

## Requisitos previos y limitaciones
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Una cuenta de AWS activa 
+ Código fuente de Java y JDK 
+ Aplicación de origen creada con Oracle WebLogic
+ Solución definida para Identity and Access Management (SAML u Oracle Webgate)
+ Solución definida para la gestión de las sesiones de la aplicación ( like-for-liketrasladarla o con Amazon ElastiCache, o hacer que la aplicación quede sin estado si es necesario)
+ Sepa si el equipo necesita refactorizar las bibliotecas específicas de J2EE para poder transferirlas a Apache ToMEE (consulte el [estado de implementación de Java EE 7](http://tomee.apache.org/javaee7-status.html) en el sitio web de Apache) 
+ Imagen reforzada de ToMEE en función de sus requisitos de seguridad
+ Imagen de contenedor con el objetivo ToMee preinstalado 
+ Se acuerda e implementa la corrección de la aplicación si es necesaria (por ejemplo, registro, depuración, compilación o autenticación)

**Versiones de producto**
+ Oracle WebLogic OC4 J, 9i, 10 g 
+ Tomcat 7 (con Java 1.6 o versiones posteriores) 

## Arquitectura
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-architecture"></a>

 **Pila de tecnología de origen**
+ Aplicación web creada con Oracle WebLogic
+ Aplicación web que utiliza la autenticación Oracle Webgate o SAML
+ Aplicaciones web conectadas a la versión 10g y posteriores de Oracle Database 

**Pila de tecnología de destino**
+ ToMEE (Apache Tomcat con soporte adicional para contenedores) que se ejecuta en Amazon ECS (consulte también [Implementación de aplicaciones web Java](https://aws.amazon.com/answers/web-applications/aws-web-app-deployment-java/) y [microservicios Java en Amazon ECS](https://aws.amazon.com/blogs/compute/deploying-java-microservices-on-amazon-ec2-container-service/)) 
+ Amazon Relational Database Service (Amazon RDS) para Oracle; para ver las versiones de Oracle compatibles con Amazon RDS, consulte [Amazon RDS para Oracle](https://aws.amazon.com/rds/oracle/)** **

**Arquitectura de destino**

![\[Nube de AWS architecture diagram showing VPC, application subnets, and shared services account components.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/d5e7b3fa-062f-4559-af56-aa6058f96755/images/762193cf-aa68-4195-b3c7-6541caee61c9.png)


 

## Tools (Herramientas)
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-tools"></a>

Para funcionar en ToMEE, una aplicación Java debe reconstruirse en un archivo.war. En algunos casos, es posible que sea necesario realizar cambios en la aplicación para que funcione en ToMee; debe comprobar que las opciones de configuración y las propiedades del entorno necesarias estén definidas correctamente.  

Además, las búsquedas de la interfaz de nombres y directorios de Java (JNDI) y los espacios de nombres de JavaServer páginas (JSP) deben definirse correctamente. Considere la posibilidad de comprobar los nombres de los archivos utilizados por la aplicación para evitar colisiones de nombres con las bibliotecas T integradas. Por ejemplo, persistence.xml es un nombre de archivo utilizado por el marco Apache OpenJPA (que se incluye con OpenEJB en ToMEE) con fines de configuración. El archivo persistence.xml de PUI contiene las declaraciones Bean de Spring Framework.  

La versión 7.0.3 y posteriores de ToMee (Tomcat 8.5.7 y posteriores) devuelve una respuesta HTTP 400 (solicitud incorrecta) en formato RAW (sin codificar) con caracteres especiales. URLs La respuesta del servidor aparece como una página en blanco para el usuario final. [Las versiones anteriores de ToMee y Tomcat permitían el uso de ciertos caracteres especiales no codificados URLs; sin embargo, se considera inseguro, como se indica en el sitio web CVE-2016-6816.](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6816) Para resolver el problema de codificación de las URL, las que URLs se pasen directamente al navegador a través de ellas JavaScript deben codificarse con el método **encodeURI ()** en lugar de utilizarse como cadenas sin procesar. 

Tras implementar el archivo.war en ToMEE, supervise el *registro de inicio* de *Linux cat* para ver si faltan bibliotecas compartidas y extensiones específicas de Oracle para añadir los componentes que falten de las bibliotecas de Tomcat. 

 

**Procedimiento general**
+ Configure la aplicación en ToMee.
+ Identifique y reconfigure los archivos y recursos de configuración específicos del servidor de aplicaciones desde el formato de origen al formato de destino.
+ Identifique y reconfigure los recursos de JNDI.
+ Ajuste el espacio de nombres y las búsquedas de EJB al formato requerido por el servidor de aplicaciones de destino (si corresponde).
+ Reconfigure las funciones de seguridad y las asignaciones principales específicas del contenedor de aplicaciones de JAAS (si corresponde).
+ Empaquete la aplicación y las bibliotecas compartidas en un archivo.war.
+ Implemente el archivo.war en ToMEE mediante el contenedor de Docker proporcionado.
+ Supervise el *registro de inicio* para identificar cualquier biblioteca compartida o extensión descriptora de implementación que falte. Si encuentra alguna, vuelva a la primera tarea. 
+ Pruebe la aplicación instalada con la base de datos de Amazon RDS restaurada.
+ Inicie la arquitectura completa con un equilibrador de carga y un clúster de Amazon ECS siguiendo las instrucciones de [Implementación de contenedores de Docker](https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/).
+ Actualiza el punto URLs para que apunte al balanceador de cargas. 
+ Actualice la base de datos de administración de configuración (CMDB). 

## Epics
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice el descubrimiento de aplicaciones (estado actual del entorno y punto de referencia de rendimiento). |  | BA, líder de migración | 
| Validar versiones y motores de las bases de datos de origen y destino. |  | Administrador de base de datos | 
| Valide el diseño de la aplicación de origen y destino (gestión de identidades y sesiones). |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Identifique los requisitos de hardware y almacenamiento para la instancia del servidor de destino. |  | DBA, SysAdmin | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | DBA, SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red de las bases de datos de origen y destino. |  | DBA, SysAdmin | 
| Identifique la estrategia y las herramientas de migración de aplicaciones. |  | Administrador de base de datos, líder de migración | 
| Complete el diseño de la migración y la guía de migración de la aplicación. |  | Responsable de compilación, líder de migración | 
| Complete el manual de procedimientos de migración de aplicaciones. |  | Responsable de compilación, líder de transición, líder de pruebas, líder de migración | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). |  | SysAdmin | 
| Cree grupos de seguridad. |  | SysAdmin | 
| Configure e inicie la instancia de base de datos de Amazon RDS. |  | DBA, SysAdmin | 
| Configure la implementación de Amazon ECS. |  | SysAdmin | 
| Empaquete su aplicación como una imagen de Docker. |  | SysAdmin | 
| Inserte la imagen en el registro de Amazon ECR (u omita este paso y envíela al clúster de Amazon ECS). |  | SysAdmin | 
| Configure la definición de tareas para la aplicación y las opciones de servicio de Amazon ECS. |  | SysAdmin | 
| Configure su clúster, revise los ajustes de seguridad y establezca los roles de AWS Identity and Access Management (IAM). |  | SysAdmin | 
| Inicie la configuración y ejecute las pruebas de acuerdo con el manual de procedimientos de migración de aplicaciones. |  | SysAdmin | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga el permiso de su equipo de control de seguridad para trasladar los datos de producción a AWS. |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Cree puntos de conexión y obtenga acceso a ellos para recuperar los archivos de copia de seguridad de la base de datos. |  | Administrador de base de datos | 
| Utilice el motor de base de datos nativo o herramientas de terceros para migrar los objetos y datos de la base de datos. |  | Administrador de base de datos | 
| Ejecute las pruebas necesarias del manual de procedimientos de migración de aplicaciones para confirmar que la migración de datos se realizó correctamente. |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una solicitud de cambio (CR) para la migración. |  | Líder de transición | 
| Obtenga la aprobación de CR para la migración. |  | Líder de transición | 
| Siga la estrategia de migración de aplicaciones del manual de procedimientos de migración de aplicaciones. |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Actualice la aplicación (si es necesario). |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Realice pruebas funcionales y no funcionales, de validación de datos, de acuerdo de nivel de servicio y de rendimiento. |  | Líder de pruebas, propietario de la aplicación, usuarios de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga la aprobación del propietario de la aplicación o de la empresa. |  | Líder de transición | 
| Realiza un ejercicio sobre un tema de mesa para repasar todos los pasos del manual de procedimientos de transición. |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 
| Cambie los clientes de aplicaciones a la nueva infraestructura. |  | Administrador de base de datos, ingeniero de migraciones, propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | DBA, ingeniero de migración, SysAdmin | 
| Revise y valide los documentos del proyecto. |  | Líder de migración | 
| Recopile métricas sobre el tiempo de migración, el porcentaje de migraciones manuales en comparación con las realizadas con herramientas, el ahorro de costos, etc. |  | Líder de migración | 
| Cerrar el proyecto y enviar comentarios. |  | Líder de migración, propietario de la aplicación | 

## Recursos relacionados
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-related-resources"></a>

**Referencias**
+ [Documentación de Apache Tomcat 7.0](https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html) 
+ [Guía de instalación de Apache Tomcat 7.0](https://tomcat.apache.org/tomcat-7.0-doc/appdev/installation.html) 
+ [Documentación de JNDI de Apache Tomcat](https://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html) 
+ [Documentación de Apache ToMee](http://tomee.apache.org/) 
+ [Amazon RDS para Oracle](https://aws.amazon.com/rds/oracle/) 
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/) 
+ [Oracle y AWS](https://aws.amazon.com/oracle/) 
+ [Documentación de Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ [Implementaciones de Amazon RDS Multi-AZ](https://aws.amazon.com/rds/details/multi-az/) 
+ [Introducción a Amazon ECS](https://aws.amazon.com/ecs/getting-started/)
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/) 

**Tutoriales y videos**
+ [Prácticas recomendadas para ejecutar las bases de datos de Oracle en Amazon RDS](https://www.youtube.com/watch?v=j2wqT0EPDbw) (re:Invent 2018 presentation) 

# Migre una base de datos Oracle de Amazon EC2 a Amazon RDS for Oracle mediante AWS DMS
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms"></a>

*Chethan Gangadharaiah y Brian Motzer, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-summary"></a>

Este patrón describe los pasos para migrar una base de datos Oracle en Amazon Elastic Compute Cloud (Amazon EC2) a Amazon Relational Database Service (Amazon RDS) para Oracle mediante AWS Database Migration Service (AWS DMS). El patrón también utiliza Oracle SQL Developer o SQL \$1Plus para conectarse a la instancia de base de datos de Oracle e incluye una CloudFormation plantilla de AWS que automatiza algunas de las tareas.

La migración a Amazon RDS para Oracle le permite centrarse en su empresa y en sus aplicaciones, mientras que Amazon RDS se encarga de las tareas de administración de bases de datos, como el aprovisionamiento de bases de datos, las copias de seguridad y la recuperación, los parches de seguridad, las actualizaciones de versiones y la administración del almacenamiento.

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una imagen de máquina de Amazon (AMI) para Oracle Database en Amazon EC2

**Versiones de producto**
+ AWS DMS es compatible con las versiones de Oracle 11g (versiones 11.2.0.3.v1 y posteriores), 12c y 18c para bases de datos de instancias de Amazon RDS para las ediciones Enterprise, Standard, Standard One y Standard Two. Para obtener la información más reciente sobre las versiones compatibles, consulte [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html) en la documentación de AWS. (Las CloudFormation plantillas de AWS adjuntas utilizan la versión 12c de Oracle como base de datos de origen).
+ Desarrollador SQL de Oracle 4.0.3

## Arquitectura
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-architecture"></a>

**Arquitectura de origen**
+ Base de datos Oracle en Amazon EC2

**Arquitectura de destino**
+ Amazon RDS para Oracle

**Arquitectura de migración**

![\[Nube de AWS architecture showing Oracle database migration from EC2 to RDS across availability zones.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4db0c731-0897-4eb8-a06f-b648c3d94b2c/images/636c2a69-5a78-482d-ae81-55e9ec975ead.png)


## Tools (Herramientas)
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/index.html): AWS Database Migration Service (AWS DMS) le ayuda a migrar los datos de forma rápida y segura a AWS. Admite migraciones homogéneas y heterogéneas. Para obtener información sobre las versiones y ediciones de bases de datos de Oracle compatibles, consulte [Uso de una base de datos de Oracle como origen para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) y [Uso de una base de datos de Oracle como destino para AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html) en la documentación de AWS.
+ **Oracle SQL Developer o SQL \$1Plus**: estas herramientas le permiten conectarse a la instancia de base de datos de Amazon RDS para Oracle.

## Epics
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-epics"></a>

### Configurar la base de datos de destino
<a name="set-up-your-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una instancia de base de datos de Amazon RDS para Oracle. | Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/. Cree una instancia de base de datos de Oracle seleccionando el motor, la plantilla, la configuración de credenciales de base de datos, el tipo de instancia, el almacenamiento, la configuración de multi-AZ, la nube privada virtual (VPC) y la configuración, las credenciales de inicio de sesión y las configuraciones adicionales para la base de datos de Oracle. Para obtener instrucciones, consulte los enlaces de la sección "Recursos relacionados". O utilice la CloudFormation plantilla de AWS (Create\$1RDS.yaml) del archivo adjunto para crear la instancia de base de datos Amazon RDS for Oracle. | Desarrollador | 
| Conéctese a Amazon RDS y conceda privilegios al usuario de Oracle. | Modifique el grupo de seguridad para abrir los puertos adecuados para conectarse desde la máquina local y la instancia de replicación de AWS DMS. Al configurar la conectividad, asegúrese de que la opción «Accesible públicamente» esté seleccionada para poder conectarse a la base de datos desde fuera de la VPC. Conéctese a Amazon RDS con Oracle SQL Developer o SQL \$1Plus mediante las credenciales de inicio de sesión, cree un usuario de AWS DMS y proporcione los privilegios necesarios al usuario de AWS DMS para modificar la base de datos. | Desarrollador | 

### Configure el grupo de seguridad de la instancia de origen EC2
<a name="configure-the-security-group-of-the-source-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe si la base de datos de Oracle está en funcionamiento. | Utilice Secure Shell (SSH) para conectarse a la EC2 instancia e intente conectarse a la base de datos de Oracle mediante SQL \$1Plus. | Desarrollador | 
| Modifique el grupo de seguridad. | Modifique el grupo de seguridad de la EC2 instancia para abrir los puertos correspondientes, de modo que pueda conectarse desde su máquina local y la instancia de replicación de AWS DMS. | Desarrollador | 

### Configure AWS DMS
<a name="set-up-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de replicación de AWS DMS. | En AWS DMS, cree una instancia de replicación en la misma VPC que su instancia de base de datos Amazon RDS para Oracle. Especifique el nombre y la descripción de la instancia de replicación, elija la clase de instancia y la versión del motor de replicación (utilice la predeterminada), elija la VPC en la que creó la instancia de base de datos de Amazon RDS, establezca la configuración de multi-AZ en caso necesario, asigne almacenamiento, especifique la zona de disponibilidad y configure ajustes adicionales. Como alternativa, puede usar la CloudFormation plantilla de AWS (DMS.yaml) del archivo adjunto para implementar este paso. | Administrador de base de datos | 
| Conéctese a los puntos de conexión de las bases de datos de origen y destino. | Cree los puntos de conexión de la base de datos de origen y destino especificando el identificador del punto de conexión, el motor, el servidor, el puerto, las credenciales de inicio de sesión y los atributos de conexión adicionales. Para el servidor de origen, utilice el DNS público de la EC2 instancia que aloja la base de datos de Oracle. Para el servidor de destino, utilice el punto de conexión de Amazon RDS para Oracle. Realice una prueba para comprobar que las conexiones de origen y destino funcionan. Como alternativa, puede usar la CloudFormation plantilla de AWS (DMS.yaml) del archivo adjunto para implementar este paso. | Administrador de base de datos | 
| Cree una tarea de AWS DMS. | Cree una tarea de AWS DMS para migrar los datos del punto de conexión de origen al punto de conexión de destino, para configurar la replicación entre el punto de conexión de origen y destino, o ambos. Al crear la tarea de AWS DMS, especifique la instancia de replicación, el punto de conexión de origen, el punto de conexión de destino, el tipo de migración (solo datos, solo replicación o ambos), el mapeo de tablas y el filtro. Ejecute la tarea de AWS DMS, supervise la tarea, compruebe las estadísticas de la tabla y compruebe los registros en Amazon CloudWatch. Como alternativa, puede usar la CloudFormation plantilla de AWS (DMS.yaml) del archivo adjunto para implementar este paso. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-related-resources"></a>
+ [Creación de una instancia de base de datos de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateOracleInstance.html)
+ [Conexión a una instancia de base de datos que ejecuta el motor de base de datos de Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToOracleInstance.html)
+ [Documentación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Tutoriales de AWS DMS Step-by-Step](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ [Migración de bases de datos de Oracle a la nube de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)

## Conexiones
<a name="attachments-4db0c731-0897-4eb8-a06f-b648c3d94b2c"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/4db0c731-0897-4eb8-a06f-b648c3d94b2c/attachments/attachment.zip)

# Migre una base de datos Oracle local a Amazon OpenSearch Service mediante Logstash
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash"></a>

*Aditya Goteti, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-summary"></a>

Este patrón describe cómo mover datos de una base de datos Oracle local a Amazon OpenSearch Service mediante Logstash. Incluye consideraciones arquitectónicas y algunos conjuntos de habilidades necesarias y recomendaciones. Los datos pueden proceder de una sola tabla o de varias tablas en las que será necesario realizar una búsqueda de texto completo. 

OpenSearch El servicio se puede configurar dentro de una nube privada virtual (VPC) o se puede colocar públicamente con restricciones basadas en IP. Este patrón describe un escenario en el que el OpenSearch servicio se configura dentro de una VPC. Logstash se utiliza para recopilar los datos de la base de datos de Oracle, analizarlos en formato JSON y, a continuación, introducir los datos en Service. OpenSearch  

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Java 8 (requerido por Logstash 6.4.3)
+ Conectividad entre los servidores de bases de datos locales y las instancias de Amazon Elastic Compute Cloud (Amazon EC2) en una VPC, establecida mediante la red privada virtual de AWS (AWS VPN)
+ Una consulta para recuperar los datos necesarios para enviarlos a OpenSearch Service desde la base de datos
+ Controladores de Oracle Java Database Connectivity (JDBC)

**Limitaciones**
+ Logstash no puede identificar los registros que se han eliminado definitivamente de la base de datos 

**Versiones de producto**
+ Oracle Database 12c
+ OpenSearch Servicio 6.3
+ Logstash 6.4.3

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Oracle en las instalaciones
+ AWS VPN en las instalaciones

**Pila de tecnología de destino**
+ VPC
+ EC2 instancia
+ OpenSearch Servicio 
+ Logstash
+ NAT Gateway (para actualizar el sistema operativo en las EC2 instancias e instalar Java 8, Logstash y complementos)

**Arquitectura de migración de datos**

![\[Cómo mover datos de una base de datos Oracle local a Amazon OpenSearch Service mediante Logstash.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/09f6d2de-de2f-4ed6-af93-34b71b75a263/images/df6a61fb-09fb-49d4-a7e8-b04e88c003df.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-tools"></a>
+ Logstash 6.4.3
+ Complemento de entrada JDBC ([descarga y más información](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html))
+ [Complemento de salida de Logstash (\$1es) logstash-output-amazon](https://github.com/awslabs/logstash-output-amazon_es)
+ Controladores JDBC de Oracle

## Epics
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identificar el tamaño de la base de datos de origen. | El tamaño de los datos de origen es uno de los parámetros que se utilizan para determinar el número de particiones que se van a configurar en un índice. | Administrador de base de datos, Desarrollador de base de datos | 
| Analizar los tipos de datos de cada columna y los datos correspondientes. | OpenSearch El servicio mapea dinámicamente el tipo de datos cuando encuentra en el documento un campo que no se había visto anteriormente. Si hay algún tipo o formato de datos específico (por ejemplo, campos de fecha) que deba declararse de forma explícita, identifique los campos y defina la asignación de esos campos durante la creación del índice. | Propietario de la aplicación, desarrollador, desarrollador de bases de datos | 
| Determinar si hay columnas con claves principales o únicas. | Para evitar la duplicación de registros en Amazon OpenSearch Service durante las actualizaciones o inserciones, debes configurar el `document_id` ajuste en la sección de resultados del `amazon_es` complemento (por ejemplo, `document_id => "%{customer_id}"` dónde `customer_id` está la clave principal). | Propietario de la aplicación, desarrollador | 
| Analizar el número y la frecuencia de los nuevos registros que se agregan; comprobar la frecuencia con la que se eliminan los registros. | Esta tarea es necesaria para comprender la tasa de crecimiento de los datos de origen. Si los datos se leen de forma intensiva y las inserciones son poco frecuentes, puede tener un índice único. Si se insertan nuevos registros con frecuencia y no hay eliminaciones, el tamaño de la partición puede superar fácilmente el tamaño máximo recomendado de 50 GB. En este caso, se puede crear un índice de forma dinámica configurando los patrones de índice en Logstash y en el código al que se puede acceder mediante un alias. | Propietario de la aplicación, desarrollador | 
| Determinar cuántas réplicas se necesitan. |  | Propietario de la aplicación, desarrollador | 
| Determinar la cantidad de particiones que se van a configurar en el índice. |  | Propietario de la aplicación, desarrollador | 
| Identifique los tipos de instancias para los nodos maestros dedicados, los nodos de datos y la EC2 instancia. | Para obtener más información, consulte la sección [Recursos relacionados](#migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources). | Propietario de la aplicación, desarrollador | 
| Determinar el número de nodos maestros dedicados y nodos de datos necesarios. | Para obtener más información, consulte la sección [Recursos relacionados](#migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources). |  | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lanza una EC2 instancia. | Lance una EC2 instancia dentro de la VPC a la que está conectada la VPN de AWS. | Constructos de Amazon VPC, VPN de AWS | 
| Instale Logstash en la instancia. EC2  |  | Desarrollador | 
| Instalar los complementos de Logstash. | Instalar los complementos de Logstash necesarios `jdbc-input` y` logstash-output-amazon_es`. | Desarrollador | 
| Configurar Logstash. | Crear el almacén de claves de Logstash para almacenar información confidencial, como las claves de AWS Secrets Manager y las credenciales de las bases de datos, y, a continuación, colocar las referencias en un archivo de configuración de Logstash. | Desarrollador | 
| Configurar la cola de mensajes fallidos y la cola persistente. | De forma predeterminada, cuando Logstash detecta un evento que no puede procesar porque los datos contienen un error de mapeo o algún otro problema, la canalización de Logstash bloquea o descarta el evento fallido. Para protegerse de la pérdida de datos en esta situación, puede configurar Logstash para que escriba los eventos fallidos en una cola de mensajes fallidos en lugar de descartarlos. Para evitar la pérdida de datos durante una interrupción anómala, Logstash tiene una característica de cola persistente que almacenará la cola de mensajes en el disco. Las colas persistentes proporcionan la durabilidad de los datos en Logstash. | Desarrollador | 
| Crea el dominio OpenSearch de Amazon Service. | Cree el dominio de Amazon OpenSearch Service con una política de acceso que no requiera firmar las solicitudes con las credenciales de AWS Identity and Access Management (IAM). El dominio OpenSearch de Amazon Service debe crearse en la misma VPC. También debe seleccionar los tipos de instancias y establecer el número de nodos dedicados y maestros en función de su análisis. | Desarrollador | 
| Configura los registros de Amazon OpenSearch Service necesarios. | Para obtener más información, consulta la [documentación del OpenSearch servicio](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html). |  | 
| Cree el índice. |  | Desarrollador | 
| Iniciar Logstash. | Ejecutar Logstash como un servicio en segundo plano. Logstash ejecuta la consulta SQL configurada, extrae los datos, los convierte al formato JSON y los envía a Service. OpenSearch Para la carga inicial, no configure el programador en el archivo de configuración de Logstash. | Desarrollador | 
| Consulte los documentos. | Compruebe el número de documentos del índice y si todos los documentos están presentes en la base de datos de origen. Durante la carga inicial, se añaden al índice y se utilizan para detener Logstash. Cambie la configuración de Logstash para agregar un programador que se ejecute en un intervalo fijo según los requisitos del cliente y reinicie Logstash. Logstash seleccionará solo los registros que se hayan actualizado o agregado después de la última ejecución, y la marca temporal de la última ejecución se almacenará en el archivo que está configurado con la propiedad `last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run"` en el archivo de configuración de Logstash. | Desarrollador | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources"></a>
+ [Alarmas recomendadas CloudWatch ](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html) 
+ [Nodos maestros OpenSearch de Amazon Service dedicados](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains-dedicatedmasternodes.html) 
+ [Dimensionamiento de los dominios de Amazon OpenSearch Service](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/sizing-domains.html) 
+ [Documentación de Logstash](https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html) 
+ [Complemento de entrada JDBC](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html)
+ [Complemento de salida Logstash](https://github.com/awslabs/logstash-output-amazon_es)
+ [Sitio web OpenSearch de Amazon Service](https://aws.amazon.com/elasticsearch-service/) 

# Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle"></a>

*Baji Shaik y Pavan Pusuluri, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-summary"></a>

Este patrón describe los pasos para migrar bases de datos de Oracle en las instalaciones a Amazon Relational Database Service (Amazon RDS) para Oracle. Como parte del proceso de migración, debe crear un plan de migración y tener en cuenta los factores importantes de la infraestructura de la base de datos de destino en función de la base de datos de origen. Puede elegir una de las dos opciones de migración según los requisitos empresariales y el caso de uso:
+ AWS Database Migration Service (AWS DMS): puede usar AWS DMS para migrar bases de datos a la nube de AWS de forma rápida y segura. Su base de datos de origen permanece totalmente operativa durante la migración, lo que minimiza el tiempo de inactividad de las aplicaciones que dependen de ella. Puede reducir el tiempo de migración mediante AWS DMS para crear una tarea que capture los cambios continuos después de completar una migración inicial a carga completa mediante un proceso denominado [captura de datos de cambios (CDC)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html). 
+ Herramientas nativas de Oracle: puede migrar bases de datos mediante herramientas nativas de Oracle, como Oracle y [Data Pump Export](https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL200) y [Data Pump Import](https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm#SUTIL300) con [Oracle GoldenGate](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/introduction-oracle-goldengate.htm#GGCON-GUID-EF513E68-4237-4CB3-98B3-2E203A68CBD4) for CDC. También puede utilizar herramientas nativas de Oracle, como la [utilidad de exportación](https://docs.oracle.com/cd/E11882_01/server.112/e22490/original_export.htm#SUTIL3634) original y la [utilidad de importación](https://docs.oracle.com/cd/E11882_01/server.112/e22490/original_import.htm#SUTIL001) original, para reducir el tiempo de carga total.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de Oracle en las instalaciones
+ Una instancia de base de datos (DB) Oracle de Amazon RDS

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB

**Versiones de producto**
+ Oracle, versiones 11g (versiones 11.2.0.3.v1 y posteriores) y hasta la 12.2 y la 18c. Para obtener la lista más reciente de versiones y ediciones compatibles, consulte [Amazon RDS para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) en la documentación de AWS. Para ver las versiones de Oracle compatibles con AWS DMS, consulte [Uso de una base de datos de Oracle como origen de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) en la documentación de AWS DMS.

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-architecture"></a>

**Pila de tecnología de origen**
+ Bases de datos de Oracle en las instalaciones

**Pila de tecnología de destino**
+ Amazon RDS para Oracle

**Arquitectura de origen y destino**

En el siguiente diagrama se muestra cómo migrar una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante AWS DMS.

![\[Flujo de trabajo para la migración de bases de datos de Oracle a Amazon RDS para Oracle mediante AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/25912997-0ac0-4303-9ce5-0621a7e12406/images/20f94a5c-1095-4182-b964-c379414c9a36.png)


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

1. Cree o utilice un usuario de base de datos existente, conceda los [permisos de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Self-Managed) necesarios para ese usuario, active el [modo ARCHIVELOG](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode) y, a continuación, configure el [registro adicional](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

1. Configure la puerta de enlace de Internet entre la red en las instalaciones y la red de AWS.

1. Configure los [puntos de conexión de origen y destino](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html) para AWS DMS.

1. Configure las [tareas de replicación de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html) para migrar los datos de la base de datos de origen a la base de datos de destino.

1. Complete las actividades posteriores a la migración en la base de datos de destino.

En el siguiente diagrama se muestra cómo migrar una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante herramientas nativas de Oracle.

![\[Flujo de trabajo para la migración de bases de datos de Oracle a Amazon RDS para Oracle mediante herramientas de Oracle.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/25912997-0ac0-4303-9ce5-0621a7e12406/images/af8e0e1a-d4c8-4d99-9780-3e093ad9a257.png)


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

1. Cree o utilice un usuario de base de datos existente y otorgue los permisos necesarios para realizar una copia de seguridad de la base de datos de Oracle mediante las utilidades Export (`exp`) e Import (`imp`) de Oracle.

1. Configure la puerta de enlace de Internet entre la red en las instalaciones y la red de AWS.

1. Configure el cliente de Oracle en el host [bastión](https://www.oracle.com/security/cloud-security/bastion/) para que tome la base de datos de copias de seguridad.

1. Cargue la copia de seguridad de la base de datos en un bucket de Amazon Simple Storage Service (Amazon S3).

1. Restaure la copia de seguridad de la base de datos de Amazon S3 en una base de datos de Amazon RDS para Oracle.

1. Configure Oracle GoldenGate para CDC.

1. Complete las actividades posteriores a la migración en la base de datos de destino.

## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-tools"></a>
+ [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.
+ Las herramientas nativas de Oracle lo ayudan a llevar a cabo una migración homogénea. Puede utilizar [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) para migrar datos entre las bases de datos de origen y destino. Este patrón utiliza Oracle Data Pump para realizar la carga completa desde la base de datos de origen a la base de datos de destino.
+ [Oracle](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/introduction-oracle-goldengate.htm#GGCON-GUID-EF513E68-4237-4CB3-98B3-2E203A68CBD4) le GoldenGate ayuda a realizar la replicación lógica entre dos o más bases de datos. Este patrón se utiliza GoldenGate para replicar los cambios delta después de la carga inicial mediante Oracle Data Pump.

## Epics
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree documentos del proyecto y registre los detalles de la base de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | Administrador de base de datos | 
| Identifique los requisitos de almacenamiento. | Identifique y documente sus requisitos de almacenamiento, incluidos los siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html)En el caso de los [volúmenes SSD de uso general (gp2)](https://aws.amazon.com/ebs/volume-types/), se obtienen tres IOPS por cada 1 GB de almacenamiento. Para asignar el almacenamiento, calcule el número total de IOPS de lectura y escritura en la base de datos de origen. | DBA, SysAdmin | 
| Elija el tipo de instancia adecuado en función de los requisitos de procesamiento. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | SysAdmin | 
| Identifique los requisitos de seguridad de acceso a la red. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | DBA, SysAdmin | 
| Identificar la estrategia de migración de aplicaciones. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | DBA, propietario de la SysAdmin aplicación | 
| Identifique los riesgos de migración. | Evalúe la base de datos y documente los riesgos y mitigaciones específicos de la migración. Por ejemplo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una VPC. | [Cree una nueva Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/gsg_create_vpc.html) para la instancia de base de datos de destino. | SysAdmin | 
| Cree grupos de seguridad. | [Cree un grupo de seguridad](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group) en la nueva VPC para permitir las conexiones entrantes a la instancia de base de datos. | SysAdmin | 
| Crear una instancia de base de datos de Amazon RDS para Oracle. | [Cree la instancia de base de datos de destino](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html) con la nueva VPC y el nuevo grupo de seguridad y, a continuación, inicie la instancia. | SysAdmin | 

### Opción 1: uso de herramientas nativas de Oracle o de terceros para migrar los datos
<a name="option-1---use-native-oracle-or-third-party-tools-to-migrate-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare la base de datos de origen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | DBA, SysAdmin | 
| Prepare la base de datos de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | DBA, SysAdmin | 

### Opción 2: uso de AWS DMS para migrar datos
<a name="option-2---use-aws-dms-to-migrate-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | Administrador de base de datos | 
| Migre los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | Administrador de base de datos | 

### Realizar la transición a la base de datos de destino
<a name="cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de aplicaciones a la nueva infraestructura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | DBA, propietario de la SysAdmin aplicación | 
| Implemente su plan de reversión. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.html) | Administrador de base de datos, propietario de la aplicación | 

### Cerrar el proyecto de migración
<a name="close-out-the-migration-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpiar recursos. | Cierre o elimine los recursos temporales de AWS, como la instancia de replicación de AWS DMS y el bucket de S3. | DBA, SysAdmin | 
| Revise los documentos del proyecto. | Revise los documentos y objetivos de planificación de la migración y, a continuación, confirme que ha completado todos los pasos de migración necesarios. | DBA, propietario de la SysAdmin aplicación | 
| Recopile métricas. | Registre las métricas clave de la migración, como el tiempo que se tardó en completar la migración, el porcentaje de tareas manuales en comparación con las tareas basadas en herramientas, el ahorro de costos y otras métricas relevantes. | DBA, propietario de la SysAdmin aplicación | 
| Cerrar el proyecto. | Cierre el proyecto de migración y obtenga comentarios sobre el esfuerzo. | DBA, propietario de la SysAdmin aplicación | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-resources"></a>

**Referencias**
+ [Migrating Oracle databases to the AWS Cloud](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html) (Recomendaciones de AWS)
+ [AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/) (documentación de AWS DMS)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/) (documentación de Amazon RDS)

**Tutoriales y videos**
+ [Introducción a AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/getting-started/) (documentación de AWS DMS)
+ [Recursos de Amazon RDS](https://aws.amazon.com/rds/getting-started/) (documentación de Amazon RDS)
+ [AWS Database Migration Service (DMS) (YouTube)](https://www.youtube.com/watch?v=zb4GcjEdl8U)

# Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump"></a>

*Mohan Annam y Brian Motzer, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-summary"></a>

Este patrón describe cómo migrar una base de datos de Oracle de un centro de datos en las instalaciones a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle mediante Oracle Data Pump. 

El patrón implica crear un archivo de volcado de datos a partir de la base de datos de origen, almacenar el archivo en un bucket de Amazon Simple Storage Service (Amazon S3) y, a continuación, restaurar los datos en una instancia de base de datos de Amazon RDS para Oracle. Este patrón resulta útil cuando se encuentra con limitaciones al utilizar AWS Database Migration Service (AWS DMS) para la migración. 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Los permisos necesarios para crear roles en AWS Identity and Access Management (IAM) y para la carga multiparte a Amazon S3
+ Los permisos necesarios para exportar datos desde la base de datos de origen
+ 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)

**Versiones de producto**
+ Oracle Data Pump solo está disponible para Oracle Database 10g, versión 1 (10.1) y versiones posteriores.

## Arquitectura
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-architecture"></a>

**Pila de tecnología de origen**
+ Bases de datos de Oracle en las instalaciones

**Pila de tecnología de destino**
+ Amazon RDS para Oracle
+ Cliente SQL (desarrollador de Oracle SQL)
+ Un bucket de S3

**Arquitectura de origen y destino**

![\[Carga multiparte de Amazon S3 desde una base de datos de Oracle en las instalaciones a Amazon RDS mediante Oracle Data Pump.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/d8d6e00f-753e-4ecc-80e5-e60e279a699b/images/1bb6095a-0a95-4469-be0e-7b7bd59b35ae.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-tools"></a>

**Servicios de AWS**
+ [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. En este patrón, la IAM se utiliza para crear los roles y políticas necesarios para migrar datos de Amazon S3 a Amazon RDS para Oracle.
+ [Amazon Relational Database Service (Amazon RDS) para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) le ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle 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.

**Otras herramientas**
+ [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. En este patrón, Oracle Data Pump se utiliza para exportar el archivo de volcado de datos (.dmp) al servidor de Oracle e importarlo a Amazon RDS para Oracle. Para obtener más información, consulte [Importación de datos a Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html#Oracle.Procedural.Importing.DataPump.S3) en la documentación de Amazon RDS.
+ [Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html) es un entorno de desarrollo integrado que simplifica el desarrollo y la administración de bases de datos de Oracle, tanto en implementaciones tradicionales como en implementaciones basadas en la nube. Interactúa con la base de datos de Oracle en las instalaciones y con Amazon RDS para Oracle para ejecutar los comandos SQL necesarios para exportar e importar datos.

## Epics
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-epics"></a>

### Creación de un bucket de S3
<a name="create-an-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear el bucket. | Para crear el bucket de S3, siga las instrucciones que figuran en la [Documentación de AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). | Administrador de sistemas de AWS | 

### Crear el rol de IAM y asignar políticas
<a name="create-the-iam-role-and-assign-policies"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar los permisos de IAM. | Para configurar los permisos, siga las instrucciones que figuran en la [Documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html#oracle-s3-integration.preparing). | Administrador de sistemas de AWS | 

### Crear la instancia de base de datos de Amazon RDS para Oracle y asociar el rol de integración de Amazon S3
<a name="create-the-target-amazon-rds-for-oracle-db-instance-and-associate-the-amazon-s3-integration-role"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear la instancia de la base de datos de destino de Amazon RDS para Oracle. | Para crear la instancia de Amazon RDS para Oracle, siga las instrucciones que figuran en la [Documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html). | Administrador de sistemas de AWS | 
| Asociar el rol con la instancia de base de datos. | Para asociar el rol a la instancia, siga las instrucciones que figuran en la [Documentación de AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html#oracle-s3-integration.preparing.instance). | Administrador de base de datos | 

### Crear el usuario de la base de datos en la base de datos de destino
<a name="create-the-database-user-on-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el usuario. | Conectarse a la base de datos de destino de Amazon RDS para Oracle desde Oracle SQL Developer o SQL\$1Plus y ejecutar el siguiente comando SQL para crear el usuario al que importar el esquema.<pre>create user SAMPLE_SCHEMA identified by <PASSWORD>;<br />grant create session, resource to <USER NAME>;<br />alter user <USER NAME> quota 100M on users;</pre> | Administrador de base de datos | 

### Crear el archivo de exportación a partir de la base de datos de Oracle de origen
<a name="create-the-export-file-from-the-source-oracle-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un archivo de volcado de datos. | Para crear un archivo de volcado con el nombre `sample.dmp` indicado en el directorio `DATA_PUMP_DIR` para exportar al usuario `SAMPLE_SCHEMA`, utilice el siguiente script.<pre>DECLARE<br />    hdnl NUMBER;<br />BEGIN<br />    hdnl := dbms_datapump.open(operation => 'EXPORT', <br />                                job_mode => 'SCHEMA', <br />                                job_name => NULL);<br /><br />    dbms_datapump.add_file( handle => hdnl, <br />                            filename => 'sample.dmp', <br />                            directory => 'DATA_PUMP_DIR', <br />                            filetype => dbms_datapump.ku$_file_type_dump_file);<br /><br />    dbms_datapump.add_file(handle => hdnl, <br />                            filename => 'export.log', <br />                            directory => 'DATA_PUMP_DIR', <br />                            filetype => dbms_datapump.ku$_file_type_log_file);<br /><br />    dbms_datapump.metadata_filter(hdnl, 'SCHEMA_EXPR', 'IN (''SAMPLE_SCHEMA'')');  <br /><br />    dbms_datapump.start_job(hdnl);<br />END;<br />/</pre>Revise los detalles de la exportación revisando el archivo `export.log` en su directorio `DATA_PUMP_DIR` local.  | Administrador de base de datos | 

### Cargue el archivo de volcado en el bucket de S3
<a name="upload-the-dump-file-to-the-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargar el archivo de volcado de datos desde el origen hasta el bucket de S3. | Ejecute el siguiente comando utilizando AWS CLI.<pre>aws s3 cp sample.dmp s3://<bucket_created_epic_1>/</pre> | Administrador de base de datos | 

### Descargar el archivo de exportación del bucket de S3 en la instancia de RDS
<a name="download-the-export-file-from-the-s3-bucket-to-the-rds-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargar el archivo de volcado de datos en Amazon RDS | Para copiar el archivo de volcado `sample.dmp` desde el bucket de S3 hasta la base de datos de Amazon RDS para Oracle, ejecute el siguiente comando SQL. En este ejemplo, el archivo `sample.dmp` se descarga del bucket de S3 `my-s3-integration1` al directorio de Oracle `DATA_PUMP_DIR`. Asegúrese de tener suficiente espacio en el disco asignado a la instancia de RDS para alojar tanto la base de datos como el archivo de exportación.<pre>-- If you want to download all the files in the S3 bucket remove the p_s3_prefix line.<br /><br />SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(<br />      p_bucket_name    =>  'my-s3-integration',    <br />      p_s3_prefix => 'sample.dmp',<br />      p_directory_name =>  'DATA_PUMP_DIR') <br />   AS TASK_ID FROM DUAL;</pre>El comando anterior genera un ID de tarea. Para revisar el estado de la descarga mediante la revisión de los datos en el ID de tarea, ejecute el siguiente comando.<pre>SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));<br /><br /></pre>Para ver los archivos en el directorio `DATA_PUMP_DIR`, ejecute el comando siguiente en el directorio.<pre>SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp<br />FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;</pre> | Administrador de sistemas de AWS | 

### Importar el archivo de volcado a la base de datos de destino
<a name="import-the-dump-file-into-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Restaurar el esquema y los datos en Amazon RDS. | Para importar el archivo de volcado al esquema de la base de datos `sample_schema`, ejecute el siguiente comando SQL desde SQL Developer o SQL\$1Plus.<pre>DECLARE<br />hdnl NUMBER;<br />BEGIN<br /><br />hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);<br /><br />DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);<br /><br />DBMS_DATAPUMP.ADD_FILE( handle    => hdnl, filename  => 'import.log', directory => 'DATA_PUMP_DIR', filetype  => dbms_datapump.ku$_file_type_log_file);<br /><br />DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''SAMPLE_SCHEMA'')');<br /><br />DBMS_DATAPUMP.START_JOB(hdnl);<br /><br />END;<br />/</pre>Para ver el archivo de registro de la importación, ejecute el siguiente comando.<pre>SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','import.log'));</pre> | Administrador de base de datos | 

### Eliminar el archivo de volcado del directorio DATA\$1PUMP\$1DIR
<a name="remove-the-dump-file-from-the-data_pump_dir-directory"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Enumerar y limpiar los archivos de exportación. | Para enumerar y eliminar los archivos de exportación en el directorio `DATA_PUMP_DIR`, ejecute los siguientes comandos.<pre>-- List the files<br />SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;</pre><pre>-- Remove the files<br />EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample.dmp');<br />EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','import.log');</pre> | Administrador de sistemas de AWS | 

## Recursos relacionados
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-resources"></a>
+ [Integración de Amazon S3](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html#oracle-s3-integration.preparing)
+ [Crear una instancia de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateDBInstance.html)
+ [Importación de datos a Oracle en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html#Oracle.Procedural.Importing.DataPump.S3) 
+ [Documentación de Amazon S3](https://docs.aws.amazon.com/s3/index.html)
+ [documentación de IAM](https://docs.aws.amazon.com/iam/index.html)
+ [Documentación de Amazon RDS](https://docs.aws.amazon.com/rds/index.html)
+ [Documentación de Oracle Data Pump](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html)
+ [Oracle SQL Developer](https://www.oracle.com/database/sqldeveloper/)

# Migre de PostgreSQL en EC2 Amazon a Amazon RDS para PostgreSQL mediante pglogical
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical"></a>

*Rajesh Madiwale, Amazon Web Services*

## Resumen
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-summary"></a>

**Este patrón describe los pasos para migrar una base de datos PostgreSQL (versión 9.5 y posteriores) de Amazon Elastic Compute Cloud (Amazon) a Amazon Relational Database Service ( EC2Amazon RDS) para PostgreSQL mediante la extensión pglogical de PostgreSQL.** Amazon RDS ahora admite la extensión pglogical en la extensión para PostgreSQL versión 10.

## Requisitos previos y limitaciones
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-prereqs"></a>

**Requisitos previos**
+ Elija el tipo correcto de instancia de Amazon RDS. Para obtener más información, consulte [Tipos de instancia Amazon RDS](https://aws.amazon.com/rds/instance-types/). 
+ Asegúrese de que las versiones de origen y destino de PostgreSQL sean las mismas.   
+ Instale e integre la [extensión **pglogical** con PostgreSQL](https://github.com/2ndQuadrant/pglogical) en Amazon. EC2 

**Versiones de producto**
+ PostgreSQL versión 10 y posteriores en Amazon RDS, con las funciones compatibles con Amazon RDS (consulte [PostgreSQL en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts) en la documentación de AWS). Este patrón se probó migrando PostgreSQL 9.5 a la versión 10 de PostgreSQL en Amazon RDS, pero también se aplica a versiones posteriores de PostgreSQL en Amazon RDS. 

## Arquitectura
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-architecture"></a>

**Arquitectura de migración de datos**

![\[Arquitectura de migración de datos para PostgreSQL en Amazon RDS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/29af3931-48de-499f-9c4b-e10a98e4bba5/images/5f5b906f-dc1a-49a5-ae3f-3e10ae854784.png)


## Tools (Herramientas)
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-tools"></a>
+ extensión [https://github.com/2ndQuadrant/pglogical](https://github.com/2ndQuadrant/pglogical)
+ Utilidades nativas de PostgreSQL: [https://www.postgresql.org/docs/9.5/app-pgdump.html](https://www.postgresql.org/docs/9.5/app-pgdump.html) y [https://www.postgresql.org/docs/9.6/app-pgrestore.html](https://www.postgresql.org/docs/9.6/app-pgrestore.html)

## Epics
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-epics"></a>

### Migración de datos mediante la extensión pglogical
<a name="migrate-data-by-using-the-pglogical-extension"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una instancia de base de datos PostgreSQL en Amazon RDS. | Configurar una instancia de base de datos de Amazon RDS. Para obtener instrucciones, consulte la [documentación de Amazon RDS para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.PostgreSQL.html). | Administrador de base de datos | 
| Obtenga un volcado de esquema de la base de datos PostgreSQL de origen y restaúrelo en la base de datos PostgreSQL de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.html) | Administrador de base de datos | 
| Habilita la decodificación lógica. | En el grupo de parámetros de base de datos de Amazon RDS, defina el parámetro estático `rds.logical_replication` como 1. Para obtener instrucciones, consulte la [Documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalDecoding). | Administrador de base de datos | 
| Cree la extensión pglogical en las bases de datos de origen y destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.html) | Administrador de base de datos | 
| Cree un publicador en la base de datos PostgreSQL de origen. | Para crear un publicador, ejecute:<pre>psql -d dbname -p 5432 <<EOF<br />SELECT pglogical.create_node( node_name := 'provider1', dsn := 'host=<ec2-endpoint> port=5432 dbname=source-dbname user=source-dbuser' );<br />EOF</pre> | Administrador de base de datos | 
| Cree un conjunto de réplicas, añada tablas y secuencias. | Para crear un conjunto de réplicas en la base de datos PostgreSQL de origen y añadir tablas y secuencias al conjunto de réplicas, ejecute:<pre>psql -d dbname -p 5432 <<EOF<br />SELECT pglogical.replication_set_add_all_tables('default', '{public}'::text[],synchronize_data := true);<br />EOF</pre> | Administrador de base de datos | 
| Cree un suscriptor. | Para crear un suscriptor en la base de datos PostgreSQL de destino, ejecute:<pre>psql -h <rds-endpoint> -d target-dbname -U target-dbuser  <<EOF<br />SELECT pglogical.create_node(<br />    node_name := 'subscriber1',<br />    dsn := 'host=<rds-endpoint> port=5432 dbname=target-dbname password=postgres user=target-dbuser'<br />);<br />EOF</pre> | Administrador de base de datos | 
| Cree una suscripción. | Para crear una suscripción en la base de datos PostgreSQL de destino, ejecute:<pre>psql -h <rds-endpoint> -d target -U postgres  <<EOF<br />SELECT pglogical.create_subscription(<br /> subscription_name := 'subscription1',<br /> replication_sets := array['default'],<br />    provider_dsn := 'host=<ec2-endpoint> port=5432 dbname=<source-dbname> password=<password> user=source-dbuser'<br />);</pre> | Administrador de base de datos | 

### Validación de sus datos
<a name="validate-your-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe las bases de datos de origen y destino. | Compruebe las bases de datos de origen y destino para confirmar que los datos se están replicando correctamente. Puede realizar una validación básica utilizando las tablas `select count(1)` de origen y destino. | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-resources"></a>
+ [Amazon RDS](https://aws.amazon.com/rds/)
+ [Replicación lógica para PostgreSQL en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication) (documentación de Amazon RDS)
+ [pglogical (repositorio)](https://github.com/2ndQuadrant/pglogical) GitHub 
+ [Limitaciones de pglogical](https://github.com/2ndQuadrant/pglogical#limitations-and-restrictions) (archivo README del repositorio) GitHub 
+ [Migración de PostgreSQL de un entorno local o de Amazon EC2 a Amazon RDS mediante la replicación lógica](https://aws.amazon.com/blogs/database/migrating-postgresql-from-on-premises-or-amazon-ec2-to-amazon-rds-using-logical-replication/) (blog de AWS Database)

# Migración de una base de datos PostgreSQL en las instalaciones a Aurora PostgreSQL
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql"></a>

*Baji Shaik y Jitender Kumar, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-summary"></a>

La edición Amazon Aurora compatible con PostgreSQL que combina el rendimiento y la disponibilidad de las bases de datos comerciales de gama alta con la simplicidad y la rentabilidad de las bases de datos de código abierto. Aurora ofrece estos beneficios al escalar el almacenamiento en tres zonas de disponibilidad en la misma región de AWS y admite hasta 15 instancias de réplica de lectura para escalar horizontalmente las cargas de trabajo de lectura y proporcionar alta disponibilidad en una sola región. Al utilizar una base de datos global Aurora, puede replicar las bases de datos PostgreSQL en hasta cinco regiones para el acceso remoto de lectura y la recuperación de desastres en caso de que se produzca un error en una región. Este patrón describe los pasos para migrar una base de datos de origen de PostgreSQL en las instalaciones a una base de datos de Aurora compatible con PostgreSQL. El patrón incluye dos opciones de migración: usar AWS Data Migration Service (AWS DMS) o usar herramientas nativas de PostgreSQL (como [pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html), [pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html) y [psql](https://www.postgresql.org/docs/current/app-psql.html)) o herramientas de terceros. 

Los pasos descritos en este patrón también se aplican a las bases de datos PostgreSQL de destino en instancias de Amazon Relational Database Service (Amazon RDS) y Amazon Elastic Compute Cloud (Amazon). EC2

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Base de datos de origen de PostgreSQL en un centro de datos en las instalaciones.
+ [Una instancia de base de datos Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html) o una [instancia de base de datos de Amazon RDS para PostgreSQL](https://aws.amazon.com/getting-started/hands-on/create-connect-postgresql-db/).

**Limitaciones**
+ Los límites de tamaño de la base de datos son 64 TB para Amazon RDS para PostgreSQL y 128 TB para Aurora compatible con PostgreSQL.
+ Si utiliza la opción de migración a AWS DMS, consulte las [Limitaciones del uso de una base de datos PostgreSQL como fuente de DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Limitations).

**Versiones de producto**
+ Para obtener información sobre el soporte de las versiones principal y secundaria de PostgreSQL en Amazon RDS, consulte [Actualizaciones de Amazon RDS para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html) en la documentación de Amazon RDS.
+ Para obtener información sobre la compatibilidad con PostgreSQL en Aurora, consulte [Amazon Aurora PostgreSQL updates](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) en la documentación de Aurora.
+ Si utiliza la opción de migración a AWS DMS, consulte las [versiones de PostgreSQL compatibles](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html) en la documentación de AWS DMS.

## Arquitectura
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos PostgreSQL en las instalaciones

**Pila de tecnología de destino**
+ Instancia de base de datos de Aurora compatible con PostgreSQL

**Arquitectura de origen**

![\[Arquitectura de origen para la base de datos PostgreSQL en las instalaciones\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/a8621ad3-781b-45a9-86a8-d0b0ec5c79ea.png)


**Arquitectura de destino**

![\[Arquitectura de destino para la base de datos PostgreSQL en Amazon Aurora\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/fc2ec0cb-7b9b-4cc0-b70c-40e47c2f4c45.png)


**Arquitectura de migración de datos**

*Uso de AWS DMS*

![\[Migración de una base de datos PostgreSQL en las instalaciones a Aurora mediante AWS DMS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/5336adb4-e9eb-47d0-a5b5-d149261b1638.png)


*Uso de herramientas nativas de PostgreSQL*

![\[Migración de una base de datos PostgreSQL en las instalaciones a Aurora mediante pg_dump y pg_restore\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/3c6fb533-45ff-443e-bfb1-97e60cbdd583.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) le ayuda a migrar los almacenes de datos a la nube de AWS o entre combinaciones de configuraciones en las instalaciones y en la nube. Este servicio admite diferentes bases de datos de origen y destino. Para obtener información sobre cómo validar las versiones y ediciones de las bases de datos de origen y destino de PostgreSQL compatibles para su uso con AWS DMS, consulte [Using a PostgreSQL database as an AWS DMS source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html). Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características.
+ Entre las herramientas nativas de PostgreSQL, se incluyen [pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html), [pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html) y [psql](https://www.postgresql.org/docs/current/app-psql.html).

## Epics
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-epics"></a>

### Analice la migración
<a name="analyze-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide las versiones de las bases de datos de origen y de destino. | Si utiliza AWS DMS, asegúrese de que esté utilizando una [versión compatible de PostgreSQL](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html).  | Administrador de base de datos | 
| Identifique el tipo de almacenamiento y los requisitos de capacidad. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos, administrador de sistemas | 
| Elija el tipo de instancia, la capacidad, las características de almacenamiento y las características de red adecuadas. | Determine los requisitos de procesamiento de la instancia de base de datos de destino. Revise los problemas de rendimiento conocidos que puedan necesitar más atención. Tenga en cuenta los siguientes factores para determinar el tipo de instancia adecuado:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html)Para obtener más información, consulte [Clases de instancia de base de datos de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html) en la documentación de Aurora. | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino. | Determine los grupos de seguridad adecuados que permitirían a la aplicación comunicarse con la base de datos. | Administrador de base de datos, administrador de sistemas | 
| Identificar la estrategia de migración de aplicaciones. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una VPC. | Cree una nueva nube privada virtual (VPC) para la instancia de base de datos de destino. | Administrador de sistemas | 
| Cree grupos de seguridad. | Cree un grupo de seguridad dentro de la VPC (como se determinó en la epopeya anterior) para permitir las conexiones entrantes a la instancia de base de datos.  | Administrador de sistemas | 
| Configure e inicie el clúster de base de datos Aurora. | Cree la instancia de base de datos de destino con la nueva VPC y el nuevo grupo de seguridad, e inicie la instancia. | Administrador de sistemas | 

### Migración de datos: opción 1 (con AWS DMS)
<a name="migrate-data-option-1-using-aws-dms"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Complete los pasos previos a la migración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos | 
| Complete los pasos de migración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos | 
| Valide los datos. | Para asegurarse de que los datos se migraron con precisión del origen al destino, siga los [pasos de validación de datos](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html) de la documentación de AWS DMS. | Administrador de base de datos | 

### Migración de datos: opción 2 (con pg\$1dump y pg\$1restore)
<a name="migrate-data-option-2-using-pg_dump-and-pg_restore"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare la base de datos de origen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html)Para obtener más información, consulte la documentación de [pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html) y el [tutorial](https://docs.aws.amazon.com/dms/latest/sbs/chap-manageddatabases.postgresql-rds-postgresql-full-load-pd_dump.html) en la documentación de AWS DMS. | Administrador de base de datos | 
| Prepare la base de datos de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html)Para obtener más información, consulte la documentación de [pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html) y el [tutorial](https://docs.aws.amazon.com/dms/latest/sbs/chap-manageddatabases.postgresql-rds-postgresql-full-load-pd_dump.html) en la documentación de AWS DMS. | Administrador de base de datos | 
| Valide los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. | Implemente la estrategia de migración de aplicaciones que creó en la primera epopeya. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Realizar la transición a la base de datos de destino
<a name="cut-over-to-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Si necesita revertir la migración, haga lo siguiente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | Administrador de base de datos, propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre los recursos. | Cerrar los recursos temporales de AWS. | Administrador de base de datos, administrador de sistemas | 
| Valide los documentos. | Revise y valide los documentos del proyecto. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopile métricas. | Recopile métricas sobre el tiempo de migración, el porcentaje de ahorro de costos manuales en comparación con los de herramientas, etc. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cierre el proyecto. | Cierre el proyecto y envíe sus comentarios. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-resources"></a>

**Referencias**
+ [AWS Data Migration Service](https://aws.amazon.com/dms/)
+ [VPCs y Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.html)
+ [Precios de Amazon Aurora](https://aws.amazon.com/rds/aurora/pricing/)
+ [Using a PostgreSQL database as an AWS DMS source](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html)
+ [How to create an AWS DMS replication instance](https://aws.amazon.com/premiumsupport/knowledge-center/create-aws-dms-replication-instance/)
+ [How to create source and target endpoints using AWS DMS](https://aws.amazon.com/premiumsupport/knowledge-center/create-source-target-endpoints-aws-dms/)

**Recursos adicionales**
+ [Introducción a AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [ step-by-stepTutoriales sobre la migración de datos](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ [Recursos de Amazon Aurora](https://aws.amazon.com/rds/aurora/getting-started/)

# Migre una base de datos local de Microsoft SQL Server a Microsoft SQL Server en Amazon EC2 con Linux
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux"></a>

*Tirumala Dasari, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-summary"></a>

Este patrón describe cómo migrar de una base de datos local de Microsoft SQL Server que se ejecuta en Microsoft Windows a Microsoft SQL Server en una instancia Linux de Amazon Elastic Compute Cloud (Amazon EC2) mediante utilidades de copia de seguridad y restauración.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ AMI de Amazon EC2 Linux (Amazon Machine Image) con Microsoft SQL Server
+ AWS Direct Connect entre Windows local y Microsoft SQL Server en la instancia de Linux EC2 

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Microsoft SQL Server en las instalaciones

**Pila de tecnología de destino**
+  EC2 Instancia de Linux con una base de datos de Microsoft SQL Server

**Arquitectura de migración de base de datos**

![\[Diagrama de arquitectura para migrar una base de datos de SQL Server local a una EC2 instancia de Linux.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f331ad15-2d41-4087-a6d1-60e3443e2acf/images/f50a779a-ce5d-44b1-8d37-dedd6400a12c.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-tools"></a>
+ **WinSCP**: esta herramienta permite a los usuarios de Windows compartir archivos fácilmente con los usuarios de Linux.
+ **Sqlcmd**: esta utilidad de línea de comandos le permite enviar expresiones o lotes de T-SQL a instancias locales y remotas de SQL Server. La utilidad es extremadamente útil para tareas repetitivas de bases de datos, como el procesamiento por lotes o las pruebas unitarias.

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-epics"></a>

### Prepare la instancia de EC2 Linux con SQL Server
<a name="prepare-the-ec2-linux-instance-with-sql-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione una AMI que proporcione el sistema operativo Linux e incluya Microsoft SQL Server. |  | Sysadmin | 
| Configure la AMI para crear una EC2 instancia. |  | Sysadmin | 
| Cree reglas de entrada y de salida para los grupos de seguridad. |  | Sysadmin | 
| Configure la EC2 instancia de Linux para una base de datos de Microsoft SQL Server. |  | Administrador de base de datos | 
| Cree usuarios y proporcione permisos como en la base de datos de origen. |  | Appowner, Administrador de base de datos | 
| Instale las herramientas de SQL Server y la utilidad sqlcmd en la instancia de Linux. EC2  |  | Administrador de base de datos | 

### Haga una copia de seguridad de la base de datos y mueva el archivo de copia de seguridad a la instancia de Linux EC2
<a name="back-up-the-database-and-move-backup-file-to-linux-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice una copia de seguridad de la base de datos de SQL Server en las instalaciones. |  | Administrador de base de datos | 
| Instale WinSCP en Microsoft SQL Server. |  | Administrador de base de datos | 
| Mueva el archivo de respaldo a la EC2 instancia de Linux que ejecuta Microsoft SQL Server. |  | Administrador de base de datos | 

### Restaure la base de datos en una EC2 instancia de Linux que ejecute SQL Server
<a name="restore-the-database-on-linux-ec2-instance-running-sql-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Restaure la base de datos desde el archivo de copia de seguridad de la base de datos mediante la utilidad sqlcmd. |  | Administrador de base de datos | 
| Valide los objetos y datos de la base de datos. |  | Desarrollador, ingeniero de pruebas | 

### Cambie de una instancia de Windows SQL Server a una EC2 instancia de Windows SQL Server en Linux
<a name="cut-over-from-windows-sql-server-to-windows-sql-server-on-linux-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide los objetos y datos de la base de datos. |  | Desarrollador, ingeniero de pruebas | 
| Pase de la base de datos local de Microsoft SQL Server a la EC2 instancia de Linux que ejecuta Microsoft SQL Server. |  | Administrador de base de datos | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-resources"></a>
+ [Cómo configurar SQL Server 2017 en Amazon Linux y Ubuntu AMIs](https://aws.amazon.com/blogs/database/configuring-sql-server-2017-on-amazon-linux-2-and-ubuntu-amis/) 
+ [Instalación de herramientas SQL en una instancia de Linux](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools?view=sql-server-2017#RHEL) 
+ [Backup y restauración desde una base de datos de Microsoft SQL Server local a Microsoft SQL Server en una instancia de Linux EC2 ](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-migrate-restore-database?view=sql-server-2017#create-a-backup-on-windows) 

# Migración de bases de datos en las instalaciones de Microsoft SQL Server a Amazon RDS para SQL Server mediante servidores vinculados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers"></a>

*Kevin Yung, Viqash Adwani y Vishal Singh, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-summary"></a>

Los servidores vinculados permiten a Microsoft SQL Server ejecutar expresiones SQL en otras instancias de servidores de bases de datos. Este patrón describe cómo puede migrar su base de datos en las instalaciones de Microsoft SQL Server a Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server a fin de reducir los costos y aumentar la disponibilidad. En la actualidad, Amazon RDS para Microsoft SQL Server no admite conexiones fuera de una red de Amazon Virtual Private Cloud (Amazon VPC). 

Puede utilizar este patrón para lograr los siguientes objetivos:
+ Migrar Microsoft SQL Server a Amazon RDS para Microsoft SQL Server sin interrumpir las capacidades del servidor vinculado.
+ Priorizar y migrar Microsoft SQL Server vinculado en diferentes oleadas.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Compruebe si [Microsoft SQL Server en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html) admite las características que necesita. 
+ Asegúrese de que puede utilizar [Amazon RDS para Microsoft SQL Server con las intercalaciones predeterminadas o las intercalaciones configuradas en los niveles de la base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.Collation.html). 

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos en las instalaciones (Microsoft SQL Server)

 **Pila de tecnología de destino**
+ Amazon RDS para SQL Server

**Arquitectura de estado de origen**

![\[Diagram showing data replication between two data centers with primary and secondary SQL servers.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/95234758-cb8b-46e5-afd2-3d4aaf6ed668/images/776b453a-7fa0-43fd-b1ca-fb9e5cc21820.png)


 

 

 

 

 

 

 

 

 

 

 

 

**Arquitectura de estado de destino**

En el estado de destino, se migra Microsoft SQL Server a Amazon RDS para Microsoft SQL Server mediante servidores vinculados. Esta arquitectura utiliza un Equilibrador de carga de red para enviar por proxy el tráfico de Amazon RDS para Microsoft SQL Server a los servidores en las instalaciones que ejecutan Microsoft SQL Server. El siguiente diagrama muestra la capacidad de proxy inverso del Equilibrador de carga de red.

![\[Nube de AWS architecture with RDS SQL Server instances in two availability zones and on-premises databases.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/95234758-cb8b-46e5-afd2-3d4aaf6ed668/images/6bdbdfbf-b048-4fbd-acef-0aeb826edb50.png)


 

## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-tools"></a>
+ AWS CloudFormation
+ Equilibrador de carga de red 
+ Amazon RDS for SQL Server en varias zonas de disponibilidad (múltiplesAZs)
+ AWS Database Migration Service (AWS DMS) 

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-epics"></a>

### Crear una VPC de zona de aterrizaje
<a name="create-a-landing-zone-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la asignación del CIDR. |  | AWS SysAdmin | 
| Cree una nube privada virtual (VPC). |  | AWS SysAdmin | 
| Cree las redes de la VPC. |  | AWS SysAdmin | 
| Cree las listas de control de acceso a la subred (ACLs). |  | AWS SysAdmin | 
| Cree las rutas de enrutamiento de subred. |  | AWS SysAdmin | 
| Cree una conexión con AWS Direct Connect o una red privada virtual (VPN) de AWS. |  | AWS SysAdmin | 

### Migración de una base de datos a Amazon RDS
<a name="migrate-the-database-to-amazon-rds"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de base de datos de Amazon RDS para Microsoft SQL Server. |  | AWS SysAdmin | 
| Cree una instancia de replicación de AWS DMS. |  | AWS SysAdmin | 
| Cree puntos de conexión de bases de datos de origen y de destino en AWS DMS. |  | AWS SysAdmin | 
| Cree la tarea de migración y active la replicación continua después de una carga completa. |  | AWS SysAdmin | 
| Solicite un cambio de firewall para permitir que Amazon RDS para Microsoft SQL Server acceda a las bases de datos de SQL Server en las instalaciones. |  | AWS SysAdmin | 
| Crear un equilibrador de carga de red. |  | AWS SysAdmin | 
| Cree un grupo de destino que se dirija a los servidores de bases de datos de su centro de datos | Le recomendamos que utilice nombres de host en la configuración de destino para incorporar los eventos de conmutación por error del centro de datos (DC). | AWS SysAdmin | 
| Ejecute la expresión SQL para la configuración del servidor vinculado. | Ejecute las expresiones SQL para añadir un servidor vinculado mediante la herramienta de administración de Microsoft SQL en la instancia de base de datos Amazon RDS para Microsoft SQL Server. En la expresión SQL, configure @datasrc para que utilice el nombre de host de Equilibrador de carga de red. Añada credenciales de inicio de sesión de servidor vinculado mediante la herramienta de administración de Microsoft SQL en la instancia de base de datos Amazon RDS para Microsoft SQL Server. | AWS SysAdmin | 
| Pruebe y valide las funciones de SQL Server. |  | AWS SysAdmin | 
| Cree una transición. |  | AWS SysAdmin | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-related-resources"></a>
+ [Tareas de administración frecuentes para Microsoft SQL Server en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General)
+ [Intercalaciones y conjuntos de caracteres para Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.Collation.html) 
+ [Documentación del Equilibrador de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+ [Implementación de servidores vinculados con Amazon RDS para Microsoft SQL Server (entrada del blog)](https://aws.amazon.com/blogs/database/implement-linked-servers-with-amazon-rds-for-microsoft-sql-server/)

# Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon RDS para SQL Server mediante métodos nativos de copia de seguridad y restauración
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods"></a>

*Tirumala Dasari, David Queiroz y Vishal Singh, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-summary"></a>

Este patrón describe cómo migrar una base de datos de Microsoft SQL Server en las instalaciones a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para SQL Server (migración homogénea). El proceso de migración se basa en los métodos nativos de copia de seguridad y restauración de SQL Server. Utiliza SQL Server Management Studio (SSMS) para crear un archivo de copia de seguridad de la base de datos y un bucket de Amazon Simple Storage Service (Amazon S3) para almacenar el archivo de copia de seguridad antes de restaurarlo en Amazon RDS para SQL Server.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Políticas de rol de AWS Identity and Access Management (IAM) para el acceso al bucket de S3 y a la instancia de base de datos de Amazon RDS para SQL Server.

**Limitaciones**
+ El proceso descrito en este patrón migra solo la base de datos. Los inicios de sesión de SQL o los usuarios de bases de datos, incluidos los trabajos de SQL Server Agent, no se migran porque requieren pasos adicionales.

**Versiones de producto**
+ SQL Server 2012-2017. Para ver la lista actualizada de versiones compatibles, consulte [MySQL en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport) en la documentación de AWS.

## Arquitectura
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos de Microsoft SQL Server en las instalaciones

**Pila de tecnología de destino**
+ Instancia de base de datos de Amazon RDS para SQL Server

**Arquitectura** **de migración de datos**

![\[Arquitectura para migrar una base de datos de SQL Server en las instalaciones a una instancia de base de datos de Amazon RDS para SQL Server.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/c2dcd6ab-deb1-4d5e-b3c5-3bf48c02ca4e/images/29f90473-6dd4-4574-bfbd-5c6a0481c40e.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-tools"></a>
+ Microsoft SQL Server Management Studio (SSMS) es un entorno integrado para administrar infraestructuras de SQL Server. Proporciona una interfaz de usuario y un grupo de herramientas con editores de scripts enriquecidos que interactúan con SQL Server.

## Epics
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-epics"></a>

### Cree una instancia de base de datos de Amazon RDS para SQL Server
<a name="create-an-amazon-rds-for-sql-server-db-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione SQL Server como motor de base de datos en Amazon RDS para SQL Server. |  | Administrador de base de datos | 
| Seleccione SQL Server Express Edition. |  | Administrador de base de datos | 
| Especifique los detalles de la base de datos. | Para obtener más información acerca de cómo crear una instancia de base de datos, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html). | Administrador de base de datos, propietario de la aplicación | 

### Cree un archivo de copia de seguridad a partir de la base de datos de SQL Server en las instalaciones
<a name="create-a-backup-file-from-the-on-premises-sql-server-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Conéctese a la base de datos de SQL Server en las instalaciones mediante SSMS. |  | Administrador de base de datos | 
| Cree una copia de seguridad de la base de datos. | Para obtener instrucciones, consulte la [documentación de SSMS](https://learn.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms). | Administrador de base de datos, propietario de la aplicación | 

### Cargue el archivo de copia de seguridad en Amazon S3
<a name="upload-the-backup-file-to-amazon-s3"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de Amazon S3. | Para obtener más información, consulte la [documentación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). | Administrador de base de datos | 
| Cargue el archivo de copia de seguridad en el bucket de S3. | Para obtener más información, consulte la [documentación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html). | SysOps administrador | 

### Restaure la base de datos en Amazon RDS para SQL Server
<a name="restore-the-database-in-amazon-rds-for-sql-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Añada el grupo de opciones a Amazon RDS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.html)Para obtener más información, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html). | SysOps administrador | 
| Restaure la base de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.html) | Administrador de base de datos | 

### Valide la base de datos de destino
<a name="validate-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide los objetos y los datos. | Valide los objetos y los datos entre la base de datos de origen y Amazon RDS para SQL Server.Esta tarea solo migra la base de datos. Los inicios de sesión y los trabajos no se migrarán. | Administrador de base de datos, propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Redirija el tráfico de la aplicación. | Tras la validación, redirija el tráfico de la aplicación a la instancia de base de datos Amazon RDS para SQL Server. | Administrador de base de datos, propietario de la aplicación | 

## Recursos relacionados
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-resources"></a>
+ [Documentación de Amazon S3](https://docs.aws.amazon.com/s3/) 
+ [Documentación de Amazon RDS para SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html) 
+ [Opciones para el motor de base de datos de Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.html) 

# Migración de una base de datos de Microsoft SQL Server a Aurora MySQL mediante AWS DMS y AWS SCT
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct"></a>

*Mark Szalkiewicz y Pavan Pusuluri, Amazon Web Services*

## Resumen
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-summary"></a>

Este patrón describe cómo migrar una base de datos de Microsoft SQL Server que se encuentra en las instalaciones o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) a Amazon Aurora MySQL. Este patrón utiliza AWS Database Migration Service (AWS DMS) y Herramienta de conversión de esquemas de AWS (AWS SCT) para la migración de datos y la conversión de esquemas. 

## Requisitos previos y limitaciones
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-prerequisites-and-limitations"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen de Microsoft SQL Server en un centro de datos local o en una instancia EC2 
+ Controladores de conectividad de bases de datos Java (JDBC) para conectores SCT de AWS, instalados en una máquina local o en una instancia en la EC2 que esté instalado AWS SCT 

 

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB

**Versiones de producto**
+ Versiones de Microsoft SQL Server 2008, 2008R2, 2012, 2014, 2016 y 2017 para las ediciones Enterprise, Standard, Workgroup y Developer. Las ediciones Web y Express no son compatibles con AWS DMS. Para ver la lista actualizada de versiones compatibles, consulte [Using a Microsoft SQL Server Database as a Source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html) (Usar una base de datos de Microsoft SQL Server como fuente de AWS DMS). Le recomendamos utilizar la versión más reciente de AWS DMS para obtener el soporte más completo de versiones y características. Para obtener información sobre las versiones de Microsoft SQL Server compatibles con AWS SCT, consulte la [documentación de AWS SCT.](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ Versiones de MySQL 5.5, 5.6 y 5.7. Para ver la lista actualizada de versiones compatibles, consulte [Using a MySQL-Compatible Database as a Target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) (Usar una base de datos compatible con MySQL como destino para AWS DMS).

## Arquitectura
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-architecture"></a>

**Pila de tecnología de origen**

Uno de los siguientes: 
+ Base de datos de Microsoft SQL Server en las instalaciones
+ Una base de datos de Microsoft SQL Server en una EC2 instancia

**Pila de tecnología de destino**
+ Aurora MySQL

**Arquitectura de migración de datos**
+ Desde una base de datos de Microsoft SQL Server que se ejecute en la nube de AWS 

![\[Nube de AWS architecture showing VPC with private subnet containing SQL Server and Aurora MySQL databases.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e2de4507-82a8-4bd6-b25b-1e830b197b9f/images/c675ada4-e92c-4ddb-b49f-69668f532504.png)

+ Una base de datos de Microsoft SQL Server que se ejecute en un centro de datos en las instalaciones

![\[Nube de AWS architecture diagram showing on-premises to cloud migration using AWS SCT, DMS, and Aurora MySQL.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e2de4507-82a8-4bd6-b25b-1e830b197b9f/images/b6ce0199-fc56-4bf2-a8cc-67de161e3cf0.png)


## Tools (Herramientas)
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-tools"></a>
+ **AWS DMS**: [AWS Data Migration Service](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) (AWS DMS) le permite migrar datos hacia y desde bases de datos comerciales y de código abierto muy utilizadas, incluidas Oracle, SQL Server, MySQL y PostgreSQL. Puede utilizar AWS DMS para migrar datos a la nube de AWS, entre instancias en las instalaciones (a través de una configuración de nube de AWS) o entre combinaciones de configuraciones en las instalaciones y en la nube.
+ **AWS SCT**: [La Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) gestiona las migraciones de bases de datos heterogéneas al convertir automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino.

## Epics
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la versión y el motor de la base de datos de origen y de destino. |  | Administrador de base de datos | 
| Cree un grupo de seguridad saliente para las bases de datos de origen y destino. |  | SysAdmin | 
| Cree y configure una EC2 instancia para AWS SCT, si es necesario. |  | Administrador de base de datos | 
| Descargue la versión más reciente de AWS SCT y los controladores asociados. |  | Administrador de base de datos | 
| Agregue y valide los usuarios y permisos de los requisitos previos en la base de datos de origen. |  | Administrador de base de datos | 
| Cree un proyecto de AWS SCT para la carga de trabajo y conéctese a la base de datos de origen. |  | Administrador de base de datos | 
| Genere un informe de evaluación y evalúe la viabilidad. |  | Administrador de base de datos | 

### Prepare la base de datos de destino
<a name="prepare-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una instancia de base de datos de Amazon RDS de destino con Amazon Aurora como motor de base de datos. |  | Administrador de base de datos | 
| Extraiga la lista de usuarios, roles y permisos del origen. |  | Administrador de base de datos | 
| Asigne los usuarios existentes de la base de datos a los nuevos usuarios de la base de datos. |  | Propietario de la aplicación | 
| Cree usuarios en la base de datos de destino. |  | Administrador de base de datos | 
| Aplique los roles del paso anterior a la base de datos de destino. |  | Administrador de base de datos | 
| Revise las opciones, los parámetros, los archivos de red y los enlaces de la base de datos de origen y, a continuación, evalúe su aplicabilidad a la base de datos de destino. |  | Administrador de base de datos | 
| Aplique cualquier configuración pertinente al destino. |  | Administrador de base de datos | 

### Transferir objetos
<a name="transfer-objects"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la conectividad de AWS SCT con la base de datos de destino. |  | Administrador de base de datos | 
| Convierta el esquema con AWS SCT. | AWS SCT convierte automáticamente el esquema de la base de datos de origen y la mayor parte del código personalizado a un formato compatible con la base de datos de destino. Cualquier código que la herramienta no pueda convertir automáticamente está claramente marcado para que pueda convertirlo usted mismo. | Administrador de base de datos | 
| Revise el informe SQL generado y guarde los errores y advertencias. |  | Administrador de base de datos | 
| Aplique los cambios de esquema automatizados al destino o guárdelos como un archivo .sql. |  | Administrador de base de datos | 
| Valide que AWS SCT haya creado los objetos en el destino.  |  | Administrador de base de datos | 
| Reescriba, rechace o rediseñe manualmente cualquier elemento que no se haya podido convertir automáticamente. |  | Administrador de base de datos | 
| Aplique los permisos de rol y de usuario generados y revise cualquier excepción. |  | Administrador de base de datos | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Determine el método de migración. |  | Administrador de base de datos | 
| Cree una instancia de replicación desde la consola de AWS DMS. | Para obtener más información sobre el uso de AWS DMS, consulte los enlaces de la sección “Recursos relacionados”. | Administrador de base de datos | 
| Cree los puntos de conexión de origen y de destino. |  | Administrador de base de datos | 
| Cree una tarea de replicación. |  | Administrador de base de datos | 
| Inicie la tarea de replicación y supervise los registros. |  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice AWS SCT para analizar y convertir los elementos de SQL del código de la aplicación. | Al convertir su esquema de base de datos de un motor a otro, también deberá actualizar el código SQL de las aplicaciones para interactuar con el nuevo motor de base de datos en lugar del antiguo. Puede ver, analizar, editar y guardar el código SQL convertido. Para obtener más información sobre el uso de AWS SCT, consulte los enlaces de la sección “Recursos relacionados”. | Propietario de la aplicación | 
| Cree los nuevos servidores de aplicaciones en AWS. |  | Propietario de la aplicación | 
| Migre el código de la aplicación a los nuevos servidores. |  | Propietario de la aplicación | 
| Configure el servidor de aplicaciones para los controladores y la base de datos de destino. |  | Propietario de la aplicación | 
| Corrija cualquier código específico del motor de base de datos de origen de la aplicación. |  | Propietario de la aplicación | 
| Optimice el código de la aplicación para el motor de destino. |  | Propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Aplique al destino los nuevos usuarios, los permisos y los cambios de código. |  | Administrador de base de datos | 
| Bloquee la aplicación para cualquier cambio. |  | Propietario de la aplicación | 
| Valide que todos los cambios se hayan propagado a la base de datos de destino. |  | Administrador de base de datos | 
| Apunte el nuevo servidor de la aplicación hacia la base de datos de destino. |  | Propietario de la aplicación | 
| Vuelva a comprobar todo. |  | Propietario de la aplicación | 
| Realice la puesta en marcha. |  | Propietario de la aplicación | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre los recursos temporales de AWS (la instancia de replicación de AWS DMS y la EC2 instancia utilizada para AWS SCT). |  | Administrador de base de datos, propietario de la aplicación | 
| Actualice los comentarios sobre el proceso de AWS DMS para los equipos internos. |  | Administrador de base de datos, propietario de la aplicación | 
| Revise el proceso de AWS DMS y mejore la plantilla si es necesario. |  | Administrador de base de datos, propietario de la aplicación | 
| Revise y valide los documentos del proyecto. |  | Administrador de base de datos, propietario de la aplicación | 
| Recopile métricas sobre el tiempo de migración, el porcentaje de ahorro de costos manuales en comparación con los de herramientas, etc. |  | Administrador de base de datos, propietario de la aplicación | 
| Cierre el proyecto y envíe sus comentarios. |  | Administrador de base de datos, propietario de la aplicación | 

## Recursos relacionados
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-related-resources"></a>

**Referencias**
+ [Guía del usuario de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Guía del usuario de AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)  
+ [Precios de Amazon Aurora](https://aws.amazon.com/rds/aurora/pricing/) 

**Tutoriales y videos**
+ [Getting Started with AWS Database Migration Service (AWS DMS)](https://aws.amazon.com/dms/getting-started/) (Introducción a AWS Database Migration Service (AWS DMS))
+ [Introducción a la Herramienta de conversión de esquemas de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Recursos de Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [Tutoriales de AWS DMS Step-by-Step](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) 

# Migración de una base de datos de MariaDB en las instalaciones hasta Amazon RDS para MariaDB mediante herramientas nativas
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools"></a>

*Shyam Sunder Rakhecha, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-summary"></a>

Este patrón proporciona una guía para migrar una base de datos de MariaDB en las instalaciones a Amazon Relational Database Service (Amazon RDS) para MariaDB mediante herramientas nativas. Si tiene instaladas las herramientas de MySQL, puede utilizar **mysql **y **mysqldump**. Si tiene instaladas todas las herramientas de MariaDB, puede utilizar **mariadb** y **mariadb-dump**. Las herramientas MySQL y MariaDB tienen el mismo origen, pero hay pequeñas diferencias en la versión 10.6 de MariaDB y las posteriores.

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una base de datos de origen MariaDB en un centro de datos en las instalaciones

**Limitaciones**
+ Límite de tamaño de la base de datos: 64 TB

**Versiones de producto**
+ MariaDB, versiones 10.0-10.6 (para ver la lista actualizada de versiones compatibles, consulte [MariaDB en Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt) en la documentación de AWS)

## Arquitectura
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-architecture"></a>

**Pila de tecnología de origen**
+ Base de datos MariaDB en un centro de datos en las instalaciones

**Pila de tecnología de destino**
+ Instancia de base de datos Amazon RDS para MariaDB

**Arquitectura de destino**

![\[Diagrama de arquitectura con instancias de base de datos de RDS principales y en espera en diferentes zonas de disponibilidad.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7be644e0-da42-4515-87b7-04da7a054adb/images/eca8eb55-579a-42e2-96ce-9b14b097b4c9.png)


**Arquitectura de migración de datos**

![\[Diagrama de arquitectura de migración de una base de datos de MariaDB en las instalaciones a Amazon RDS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/7be644e0-da42-4515-87b7-04da7a054adb/images/daba40e2-a2b1-44f8-8e69-31458206a823.png)


## Tools (Herramientas)
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-tools"></a>
+ Herramientas nativas de MySQL: **mysql** y **mysqldump**
+ Herramientas nativas de MariaDB: **mariadb** y **mariadb-dump**

## Epics
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Validar versiones y motores de las bases de datos de origen y destino. |  | Administrador de base de datos | 
| Identifique los requisitos de hardware de la instancia del servidor de destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento). |  | Administrador de base de datos, administrador de sistemas | 
| Elija el tipo de instancia adecuado en función de la capacidad, las características de almacenamiento y las características de red. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar los requisitos de seguridad del acceso a la red para las bases de datos de origen y destino. |  | Administrador de base de datos, administrador de sistemas | 
| Identificar la estrategia de migración de aplicaciones. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). |  | Administrador de sistemas | 
| Cree grupos de seguridad. |  | Administrador de sistemas | 
| Configurar e iniciar una instancia de base de datos de Amazon RDS que ejecute MariaDB. |  | Administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilizar herramientas nativas para migrar objetos y datos de las bases de datos. | En la base de datos de origen, utilice **mysqldump **o** mariadb-dump** para crear un archivo de salida que contenga objetos y datos de la base de datos. En la base de datos de destino, utilice **mysql **o **mariadb **para restaurar los datos. | Administrador de base de datos | 
| Valide los datos. | Compruebe las bases de datos de origen y destino para confirmar que la migración de datos se ha realizado correctamente. | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seguir la estrategia de migración de aplicaciones. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación a la nueva infraestructura. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. |  | Administrador de sistemas | 
| Revise y valide los documentos del proyecto. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopilar métricas sobre tiempo de migración, ahorros de costos conseguidos con las herramientas, etc. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Cerrar el proyecto y enviar comentarios. |  | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-resources"></a>

**Referencias de Amazon RDS**
+ [Amazon RDS para MariaDB](https://aws.amazon.com/rds/mariadb/)
+ [Amazon Virtual Private Cloud VPCs y Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)
+ [Implementaciones Multi-AZ de Amazon RDS](https://aws.amazon.com/rds/details/multi-az/)
+ [Precios de Amazon RDS](https://aws.amazon.com/rds/pricing/)

**Referencias de MySQL y MariaDB**
+ [mariadb-dump/mysqldump](https://mariadb.com/kb/en/mariadb-dumpmysqldump/) 
+ [mysql Command-line Client](https://mariadb.com/kb/en/mysql-command-line-client/) 

**Tutoriales y videos**
+ [Introducción a Amazon RDS](https://aws.amazon.com/rds/getting-started/)

# Migración de una base de datos de MySQL en las instalaciones a Aurora MySQL
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql"></a>

*Igor Obradovic, Amazon Web Services*

## Resumen
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-summary"></a>

En este patrón se explica cómo migrar una base de datos MySQL de origen en las instalaciones a la edición de Amazon Aurora compatible con MySQL. **Describe dos opciones de migración: usar AWS Database Migration Service (AWS DMS) o usar herramientas nativas de MySQL, como **mysqldbcopy y mysqldump**.** 

## Requisitos previos y limitaciones
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Base de datos de origen MySQL en un centro de datos en las instalaciones

**Limitaciones**
+ Límite de tamaño de la base de datos: 128 TB

**Versiones de producto**
+ La versión 8.0 de MySQL (Aurora MySQL, versión 3) está disponible con el soporte estándar. 
+ La versión 5.7 de MySQL (Aurora MySQL, versión 2) está disponible con soporte extendido, por un costo adicional.

Para obtener la lista más reciente de versiones compatibles, consulte [las versiones de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.release-calendars.html) en la AWS documentación. Si está utilizando AWS DMS, consulte también Uso de [una base de datos compatible con MySQL como destino para](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) las versiones de AWS DMS MySQL compatibles con. AWS DMS

## Arquitectura
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-architecture"></a>

**Pila de tecnología de origen**
+ Una base de datos MySQL en las instalaciones

**Pila de tecnología de destino**
+ Amazon Aurora MySQL-Compatible Edition 

**Arquitectura de destino**

Los datos de Aurora se almacenan en un volumen de clúster, que es un volumen virtual único que utiliza unidades de estado sólido (SSDs). Un volumen de clúster se compone de copias de los datos repartidas entre tres zonas de disponibilidad de una sola región de AWS. Como los datos se replican automáticamente entre zonas de disponibilidad, tienen una larga duración y se reduce el riesgo de pérdida de datos.

Aurora divide automáticamente el volumen de base de datos en segmentos de 10 GB repartidos en varios discos. Cada fragmento de 10 GB del volumen de base de datos se replica de seis maneras entre tres zonas de disponibilidad. En el siguiente diagrama se muestra la relación entre el volumen del clúster, la instancia de base de datos de escritor y las instancias de base de datos de lector en un clúster de bases de datos de Aurora, así como la separación del almacenamiento y la capacidad de computación. Para obtener más información sobre esta arquitectura, consulte la [documentación de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html) y [FAQ](https://aws.amazon.com/rds/aurora/faqs/#product-faqs).

![\[Instancias de base de datos Aurora MySQL y volumen de almacenamiento compartido en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/22729803-e4ff-45a2-ab5b-8ba2445e5e21/images/0d7d8ebd-e0f2-4bcf-b296-8bdfb2f12b64.png)


**Arquitectura de migración de datos**

*Uso de AWS DMS:*

El siguiente diagrama ilustra la migración de una base de datos MySQL local a un clúster compatible con Aurora MySQL en, mediante. Nube de AWS AWS DMS

![\[Migración de una base de datos MySQL en las instalaciones a Aurora MySQL mediante AWS DMS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/22729803-e4ff-45a2-ab5b-8ba2445e5e21/images/e5d72ebd-d157-45d7-8844-d1011f1646c0.png)


*Uso de herramientas MySQL nativas:*

****El siguiente diagrama ilustra la migración de una base de datos MySQL local a un clúster compatible con Aurora MySQL en el, Nube de AWS mediante herramientas nativas de MySQL, como mysqldbcopy y mysqldump.****

![\[Migración de una base de datos MySQL en las instalaciones a Aurora MySQL mediante mysqldbcopy y mysqldump.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/22729803-e4ff-45a2-ab5b-8ba2445e5e21/images/26258752-24f6-4241-a49f-59c15e946314.png)


 

## Tools (Herramientas)
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-tools"></a>
+ [AWS Database Migration ServiceAWS DMS(](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)) admite varios motores de bases de datos de origen y destino. Para obtener información sobre las bases de datos de origen y destino de MySQL compatibles con AWS DMS, consulte [Migración de bases de datos compatibles con MySQL](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MySQL.html) a. AWS Le recomendamos que utilice la última versión de AWS DMS para obtener una compatibilidad más completa con las versiones y funciones.
+ [mysqldbcopy](https://manpages.ubuntu.com/manpages/focal/man1/mysqldbcopy.1.html) es una utilidad de MySQL que copia una base de datos MySQL que se encuentra en un solo servidor o en varios servidores.
+ [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) es una utilidad de MySQL que crea un archivo de volcado desde una base de datos MySQL con fines de copia de seguridad o migración.

## Epics
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-epics"></a>

### Planificación de la migración
<a name="plan-the-migration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la versión y el motor. | Valide la versión y el motor de las bases de datos de origen y de destino. | Administrador de base de datos | 
| Identifique los requisitos de hardware. | Identifique los requisitos de hardware de la instancia del servidor de destino. | Administrador de base de datos, administrador de sistemas | 
| Identifique los requisitos de almacenamiento. | Identifique los requisitos de almacenamiento (como el tipo y la capacidad de almacenamiento). | Administrador de base de datos, administrador de sistemas | 
| Seleccione el tipo de instancia. | Elija el tipo de instancia adecuado en función de los requisitos de computación, almacenamiento y red. | Administrador de base de datos, administrador de sistemas | 
| Determine los requisitos de seguridad de acceso a la red. | Identifique los requisitos de seguridad de acceso a la red para las bases de datos de origen y destino. | Administrador de base de datos, administrador de sistemas | 
| Determine la estrategia. | Identificar la estrategia de migración de aplicaciones. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una nube privada virtual (VPC). | Para obtener instrucciones, consulte [Create a VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) en la documentación de Amazon Virtual Private Cloud (Amazon VPC). | Administrador de sistemas | 
| Cree grupos de seguridad. | Para obtener instrucciones, consulte [Create a security group for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html) en la documentación de Amazon VPC. | Administrador de sistemas | 
| Configure e inicie un clúster de base de datos compatible con Aurora MySQL en su Cuenta de AWS. | Para obtener instrucciones, consulte [Creación de un clúster de base de datos de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html) en la documentación de Aurora. | Administrador de sistemas | 

### Migración de datos: opción 1
<a name="migrate-data---option-1"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice las herramientas nativas de MySQL o herramientas de terceros para migrar los objetos y datos de la base de datos. | Para obtener instrucciones, consulte la documentación de herramientas de MySQL como [mysqldbcopy](https://manpages.ubuntu.com/manpages/focal/man1/mysqldbcopy.1.html) y [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html). | Administrador de base de datos | 

### Migración de datos: opción 2
<a name="migrate-data---option-2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Migre datos con AWS DMS. | Para obtener instrucciones, consulte [Uso de una base de datos compatible con MySQL como fuente y Uso de una base](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html) [de datos compatible con MySQL como](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) destino en la documentación. AWS DMS  | Administrador de base de datos | 

### Migración de la aplicación
<a name="migrate-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Siga la estrategia. | Seguir la estrategia de migración de aplicaciones. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cambie los clientes de la aplicación. | Cambie los clientes de la aplicación para que se conecten al nuevo punto de conexión del clúster de Aurora. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cierre los recursos. | Cierre los recursos temporales. AWS  | Administrador de base de datos, administrador de sistemas | 
| Revise la documentación. | Revise y valide los documentos del proyecto. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Recopile métricas. | Reúna métricas sobre el tiempo de migración, el porcentaje de pasos manuales frente al uso de la herramienta, el ahorro de costos, etc. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 
| Complete el proyecto de migración. | Cerrar el proyecto y enviar comentarios. | Administrador de base de datos, propietario de la aplicación, administrador de sistemas | 

## Recursos relacionados
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-resources"></a>

**Referencias**
+ [Migrating data to Amazon Aurora MySQL DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.html)
+ [AWS DMS sitio web](https://aws.amazon.com/dms/)
+ [AWS DMS documentación](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Precios de Amazon Aurora](https://aws.amazon.com/rds/aurora/pricing/)
+ [Creación de un clúster de base de datos Aurora MySQL y conexión a él](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.Aurora.html)
+ [Amazon VPC y Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)
+ [Documentación de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)

**Tutoriales y videos**
+ [Cómo empezar con AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Introducción a Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.html)

# Migre bases de datos MySQL locales a Aurora MySQL mediante Percona, XtraBackup Amazon EFS y Amazon S3
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3"></a>

*Rohan Jamadagni, Udayasimha Theepireddy y Sajith Menon, Amazon Web Services*

## Resumen
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-summary"></a>

Este patrón describe cómo migrar bases de datos MySQL locales de gran tamaño de manera eficiente a Amazon Aurora MySQL mediante XtraBackup Percona. Percona XtraBackup es una utilidad de copia de seguridad de código abierto y sin bloqueo para servidores basados en MySQL. El patrón muestra cómo utilizar Amazon Elastic File System (Amazon EFS) para reducir el tiempo de carga de la copia de seguridad en Amazon Simple Storage Service (Amazon S3) y restaurar la copia de seguridad en Amazon Aurora MySQL. El patrón también proporciona detalles sobre cómo realizar copias de seguridad incrementales de Percona para minimizar la cantidad de registros binarios que se aplicarán a la base de datos Aurora MySQL de destino.  

## Requisitos previos y limitaciones
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Permisos para crear roles y políticas de AWS Identity and Access Management (IAM).
+ Conectividad de red entre la base de datos MySQL en las instalaciones y la nube privada virtual (VPC) en AWS

**Limitaciones**
+ Los servidores de origen deben ser sistemas basados en Linux que puedan instalar un cliente de Network File System (NFS) (nfs-utils/nfs-common).
+ El bucket de S3 utilizado para cargar los archivos de copia de seguridad solo admite el cifrado del servidor (SSE-S3/SSE-KMS).
+ Amazon S3 limita el tamaño de los archivos de copia de seguridad a 5 TB. Si el archivo de copia de seguridad supera los 5 TB, puede dividirlo en varios archivos más pequeños.
+ El número de archivos de origen cargados en un bucket de S3 se limita a un millón de archivos.
+ El patrón solo admite la copia de seguridad completa y la copia de seguridad incremental de Percona XtraBackup . No admite copias de seguridad parciales que utilicen `--tables`, `--tables-exclude`, `--tables-file`, `--databases`, `--databases-exclude` o `--databases-file`.
+ Aurora no restaura los usuarios, las funciones, los procedimientos almacenados ni la información de zona horaria de la base de datos MySQL de origen.

**Versiones de producto**
+ La base de datos de origen debe ser MySQL versión 5.5, 5.6 o 5.7.
+ Para MySQL 5.7, debe usar Percona XtraBackup 2.4.
+ Para MySQL 5.6 y 5.6, debe usar Percona XtraBackup 2.3 o 2.4.

## Arquitectura
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-architecture"></a>

**Pila de tecnología de origen**
+ Sistema operativo basado en Linux
+ Servidor de MySQL
+ Percona XtraBackup

**Pila de tecnología de destino**
+ Amazon Aurora
+ Amazon S3
+ Amazon EFS

**Arquitectura de destino**

![\[Arquitectura para migrar bases de datos MySQL de gran tamaño a Amazon Aurora MySQL mediante Percona XtraBackup.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bf327776-bafd-484d-9ae2-a6f5c8af6edd/images/7a410539-1511-4106-90e2-8c0c8e95f92b.png)


## Tools (Herramientas)
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-tools"></a>

*Servicios de AWS*
+ [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html) es un motor de base de datos relacional completamente administrado que simplifica y hace rentable configurar, usar y escalar las implementaciones de MySQL. Aurora MySQL es un sustituto directo de MySQL.
+ [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.
+ [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**
+ [Percona XtraBackup](https://www.percona.com/doc/percona-xtrabackup/2.4/index.html) es una utilidad de código abierto que realiza copias de seguridad en streaming, comprimidas e incrementales de bases de datos MySQL sin interrumpir ni bloquear sus bases de datos.

## Epics
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-epics"></a>

### Crear un sistema de archivos de Amazon EFS
<a name="create-an-amazon-efs-file-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un grupo de seguridad para asociarlo a los objetivos de montaje de Amazon EFS. | Cree un grupo de seguridad en la VPC que esté configurado con un adjunto de VPN a la base de datos en las instalaciones a través de AWS Transit Gateway. Para obtener más información sobre los comandos y los pasos descritos en este y otros artículos, consulte la sección «Recursos relacionados» al final de este patrón. |  DevOps/database Administrador de AWS | 
| Edite las reglas del grupo de seguridad. | Agregue una regla de entrada utilizando el tipo NFS, el puerto 2049 y el rango de IP del servidor de base de datos en las instalaciones como fuente. De forma predeterminada, la regla de salida permite salir a todo el tráfico. Si no es así, añada una regla de salida para abrir una conexión para el puerto NFS. Añada dos reglas de entrada más: el puerto 2049 (fuente: ID de grupo de seguridad del mismo grupo de seguridad) y el puerto 22 (fuente: rango de IP desde el que se conectará a una EC2 instancia). |  DevOps/database Administrador de AWS | 
| Cree un sistema de archivos. | En los objetivos de montaje, use la VPC y el grupo de seguridad que creó en la historia anterior. Elija el modo de procesamiento y el rendimiento en función de I/O los requisitos de la base de datos local. De manera opcional, habilite el cifrado en reposo. |  DevOps/database Administrador de AWS | 

### Monte el sistema de archivos.
<a name="mount-the-file-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un rol de perfil de instancia de IAM para asociarlo a una EC2 instancia. | Cree un rol de IAM que tenga permisos para cargar y acceder a objetos en Amazon S3. Elija el bucket de S3 donde se almacenará la copia de seguridad como recurso de políticas. | AWS DevOps | 
| Crea una EC2 instancia. | Lance una EC2 instancia basada en Linux y asocie el rol de perfil de instancia de IAM que creó en el paso anterior y el grupo de seguridad que creó anteriormente. | AWS DevOps | 
| Instale el cliente NFS. | Instale el cliente NFS en el servidor de base de datos local y en la EC2 instancia. Para obtener instrucciones, consulte la sección «Información adicional». | DevOps | 
| Monte el sistema de archivos de Amazon EFS. | Monte el sistema de archivos Amazon EFS en las instalaciones y en la EC2 instancia. En cada servidor, cree un directorio para almacenar la copia de seguridad y monte el sistema de archivos mediante el punto de conexión de destino de montaje. Para obtener ejemplos, consulte la sección «Información adicional». | DevOps | 

### Crear una copia de seguridad de la base de datos de origen MySQL
<a name="make-a-backup-of-the-mysql-source-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale Percona XtraBackup. | Instale Percona XtraBackup 2.3 o 2.4 (según la versión de la base de datos MySQL) en el servidor de bases de datos local. Para obtener los enlaces de instalación, consulte la sección «Recursos relacionados». | Administrador de base de datos | 
| Cuente los esquemas y las tablas de la base de datos de origen. | Recopile y anote el número de esquemas y objetos de la base de datos MySQL de origen. Utilizará estos recuentos para validar la base de datos Aurora MySQL después de la migración. | Administrador de base de datos | 
| (Opcional) Anote la secuencia de registro binario más reciente de la base de datos de origen. | Realice este paso si desea establecer la replicación de registros binarios entre la base de datos de origen y Aurora MySQL para minimizar el tiempo de inactividad. log-bin debe estar habilitado y server\$1id debe ser único. Anote la secuencia de registros binarios actual de la base de datos de origen, justo antes de iniciar una copia de seguridad. Realice este paso justo antes de la copia de seguridad completa si planea usar solo una copia de seguridad completa. Si planea realizar copias de seguridad incrementales después de una copia de seguridad completa, lleve a cabo este paso justo antes de la última copia de seguridad incremental que restaurará en la instancia de base de datos Aurora MySQL. | Administrador de base de datos | 
| Inicie una copia de seguridad completa de la base de datos MySQL de origen. | Realice una copia de seguridad completa de la base de datos fuente de MySQL con Percona XtraBackup. Para ver ejemplos de comandos para copias de seguridad completas e incrementales, consulte la sección «Información adicional». | Administrador de base de datos | 
| (Opcional) Realice copias de seguridad incrementales con XtraBackup Percona. | Las copias de seguridad incrementales se pueden utilizar para reducir la cantidad de registros binarios que debe aplicar para sincronizar la base de datos de origen con Aurora MySQL. Las bases de datos de gran tamaño y con muchas transacciones pueden generar una gran cantidad de registros binarios durante las copias de seguridad. Al realizar copias de seguridad incrementales y almacenarlas en un sistema de archivos Amazon EFS compartido, puede reducir considerablemente el tiempo de copia de seguridad y carga de la base de datos. Para obtener más información, consulte la sección «Información adicional». Siga realizando copias de seguridad incrementales hasta que esté listo para iniciar el proceso de migración a Aurora. | Administrador de base de datos | 
| Prepare copias de seguridad. | En este paso, los registros transaccionales se aplican a la copia de seguridad para las transacciones que estaban en curso durante la copia de seguridad. Siga aplicando registros transaccionales (--apply-log-only) a cada copia de seguridad incremental para fusionar las copias de seguridad, excepto la última copia de seguridad. Para obtener más ejemplos, consulte la sección «Información adicional». Tras este paso, la copia de seguridad completa y combinada estará en \$1/<efs\$1mount\$1name>/fullbackup. | Administrador de base de datos | 
| Comprima y divida la copia de seguridad final combinada. | Después de preparar la copia de seguridad final combinada, utilice los comandos tar, zip y split para crear archivos comprimidos más pequeños de la copia de seguridad. Para obtener más ejemplos, consulte la sección «Información adicional». | Administrador de base de datos | 

### Restauración de la copia de seguridad en un clúster de base de datos de Aurora MySQL
<a name="restore-the-backup-to-an-aurora-mysql-db-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargue la copia de seguridad en Amazon S3. | El sistema de archivos Amazon EFS en el que se almacenan los archivos de copia de seguridad está montado tanto en la base de datos local como en una EC2 instancia, de modo que los archivos de copia de seguridad estén fácilmente disponibles para la EC2 instancia. <bucket\$1name>Conéctese a la EC2 instancia mediante Secure Shell (SSH) y cargue los archivos de respaldo comprimidos en un bucket de S3 nuevo o existente; por ejemplo: aws s3 sync \$1/ <efs\$1mount\$1name>/fullbackup s3:///fullbackup. Para obtener más información, consulte los enlaces de la sección «Recursos relacionados». | AWS DevOps | 
| Crear un rol de servicio para que Aurora pueda acceder a Amazon S3 | Cree un rol de IAM con la confianza «rds.amazonaws.com» y una política que permita a Aurora acceder al bucket de S3 donde se almacenan los archivos de copia de seguridad. Los permisos necesarios son ListBucket GetObject, y GetObjectVersion. | AWS DevOps | 
| Cree la configuración de red para Aurora. | Cree un grupo de subredes de base de datos de clúster con al menos dos zonas de disponibilidad y una configuración de tabla de enrutamiento de subred que permita la conectividad saliente a la base de datos de origen. Cree un grupo de seguridad que permita las conexiones salientes a la base de datos en las instalaciones y permita a los administradores conectarse al clúster de base de datos Aurora. Para obtener más información, consulte los enlaces de la sección «Recursos relacionados». |  DevOps/database Administrador de AWS | 
| Restauración de la copia de seguridad en un clúster de base de datos de Aurora MySQL. | Restaure sus datos desde la copia de seguridad que cargó en Amazon S3. Especifique la versión MySQL de la base de datos de origen, proporcione el nombre del bucket de S3 y el prefijo de la ruta de la carpeta donde cargó el archivo de copia de seguridad (por ejemplo, «fullbackup» para los ejemplos de la sección «Información adicional») y proporcione el rol de IAM que creó para autorizar a Aurora a acceder a Amazon S3. |  DevOps/database Administrador de AWS | 
| Valide la base de datos de Aurora MySQL. | Valide el recuento de esquemas y objetos del clúster de base de datos Aurora restaurado con respecto al recuento obtenido de la base de datos de origen. | Administrador de base de datos | 
| Configure la replicación de binlog.  | Utilice la secuencia de registro binario que indicó anteriormente antes de realizar la última copia de seguridad que se restauró en el clúster de base de datos Aurora. Cree un usuario de replicación en la base de datos de origen y siga las instrucciones de la sección «Información adicional» para proporcionar los privilegios adecuados, habilitar la replicación en Aurora y confirmar que la replicación está sincronizada. |  DevOps/database Administrador de AWS | 

## Recursos relacionados
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-resources"></a>

**Creación de un sistema de archivos de Amazon EFS**
+ [Creación de un grupo de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups) (documentación de Amazon VPC)
+ [Adjuntos de VPN de puerta de enlace de tránsito](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpn-attachments.html) (documentación de Amazon VPC)
+ [Escalar el rendimiento de la VPN con AWS Transit Gateway](https://aws.amazon.com/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/) (blog sobre redes y entrega de contenido)
+ [Creación de un sistema de archivos de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step1-efs) (documentación de Amazon EFS)
+ [Creación de objetivos de montaje](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html) (documentación de Amazon EFS)
+ [Cifrado de datos en reposo](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html) (documentación de Amazon EFS)

**Montaje de sistemas de archivos**
+ [Funciones de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) ( EC2 documentación de Amazon)
+ [Lanzamiento de una instancia de Amazon EC2 Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance) ( EC2 documentación de Amazon)
+ [Instalación del cliente NFS](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step4-install-nfs) (documentación de Amazon EFS)
+ [Montaje del sistema de archivos Amazon EFS en el cliente en las instalaciones](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step3-connect) (documentación de Amazon EFS)
+ [Montaje de sistemas de archivos EFS](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) (documentación de Amazon EFS)

**Creación de un copia de seguridad completa de la base de datos MySQL de origen**
+ [Instalación de Percona XtraBackup 2.3 (documentación](https://www.percona.com/doc/percona-xtrabackup/2.3/installation.html) de Percona XtraBackup )
+ [Instalación de Percona XtraBackup 2.4](https://www.percona.com/doc/percona-xtrabackup/2.4/installation.html) (documentación de Percona) XtraBackup  
+ [Cómo establecer la configuración maestra de replicación](https://dev.mysql.com/doc/refman/5.7/en/replication-howto-masterbaseconfig.html) (documentación de MySQL)
+ [Migración de datos desde una base de datos MySQL externa a un clúster de base de datos de Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html) (documentación de Aurora)
+ [Respaldo incremental (documentación de](https://www.percona.com/doc/percona-xtrabackup/2.4/backup_scenarios/incremental_backup.html) Percona XtraBackup )

**Restauración de la copia de seguridad en Amazon Aurora MySQL**
+ [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#create-bucket-intro) (documentación de Amazon S3)
+ [Conexión a la instancia de Linux mediante SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html) (documentación de Amazon EC2)
+ [Configuración de la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) (documentación de la CLI de AWS)
+ [comando sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) (referencia de comandos de la CLI de AWS)
+ [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) (documentación de Aurora
+ [Requisitos previos del clúster de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html#Aurora.CreateInstance.Prerequisites) (documentación de Aurora)
+ [Uso de los grupos de subredes de base de datos](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Subnets) (documentación de Aurora)
+ [Creación de un grupo de seguridad de VPC para una instancia de base de datos privada](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Tutorials.WebServerDB.CreateVPC.html#CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupDB) (documentación de Aurora)
+ [Restauración de un clúster de base de datos de Aurora MySQL desde un bucket de S3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html#AuroraMySQL.Migrating.ExtMySQL.S3.Restore) (documentación de Aurora)
+ [Configuración de la replicación con MySQL o con otro clúster de base de datos de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.html#AuroraMySQL.Replication.MySQL.SettingUp) (documentación de Aurora)
+ [Procedimiento mysql.rds\$1set\$1external\$1master](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_set_external_master.html) (referencia de SQL para MySQL en Amazon RDS)
+ [Procedimiento mysql.rds\$1start\$1replication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_start_replication.html) (referencia de SQL sobre MySQL en Amazon RDS)

**Referencias adicionales**
+ [Migración de datos desde una base de datos MySQL externa a un clúster de base de datos de Amazon Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html) (documentación de Aurora)
+ [Descargas del servidor MySQL](https://downloads.mysql.com/archives/community/) (sitio web de Oracle)

**Tutoriales y videos**
+  [Migración de datos de MySQL a un clúster de base de datos Aurora MySQL mediante Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/migrate-mysql-aurora-innobackup/) (Centro de conocimientos de AWS)
+  [Configuración y montaje de Amazon EFS](https://www.youtube.com/watch?v=NR8rVsSn_dY) (video)

## Información adicional
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-additional"></a>

**Instalación de un cliente NFS**
+ Si utiliza Red Hat o un sistema operativo Linux similar, utilice el comando:  

```
$ sudo yum -y install nfs-utils
```
+ Si utiliza Ubuntu o un sistema operativo Linux similar, utilice el comando: 

```
$ sudo apt-get -y install nfs-common
```

Para obtener más información, consulte el [tutorial](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step4-install-nfs) en la documentación de Amazon EFS.

**Montaje de un sistema de archivos de Amazon EFS**

Utilice el comando:

```
mkdir ~/<efs_mount_name>
$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/ ~/<efs_mount_name>
```

Para obtener más información, consulte el [tutorial](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step3-connect) y [Montaje de un sistema de archivos](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) en la documentación de Amazon EFS.

**Hacer copias de seguridad de la base de datos fuente MySQL**

*Copias de seguridad completas*

Use un comando como el siguiente, que toma la copia de seguridad, la comprime y la divide en fragmentos más pequeños de 1 GB cada uno:

```
xtrabackup --backup --user=dbuser --password=<password> --binlog-info=AUTO --stream=tar --target-dir=~/<efs_mount_name>/fullbackup | gzip - | split -d --bytes=1024MB - ~/<efs_mount_name>/fullbackup/backup.tar.gz &
```

Si planea realizar copias de seguridad incrementales posteriores después de la copia de seguridad completa, no comprima ni divida la copia de seguridad. En su lugar, use un comando similar al siguiente:

```
xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/fullbackup/
```

*Copias de seguridad incrementales*

Utilice la ruta de copia de seguridad completa para el parámetro `--incremental-basedir`; por ejemplo:

```
xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/incremental/backupdate --incremental-basedir=~/<efs_mount_name>/fullbackup
```

donde *basedir* es la ruta a la copia de seguridad completa y al archivo xtrabackup\$1checkpoints.

Para obtener más información sobre la creación de copias de seguridad, consulte [Migración de datos desde una base de datos MySQL externa a un clúster de base de datos de MySQL de Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html) en la documentación de Aurora.

**Preparación de copias de seguridad**

Para preparar una copia de seguridad completa:

```
xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup
```

Para preparar una copia de seguridad incremental:

```
xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06062020
```

Para preparar la copia de seguridad final:

```
xtrabackup --prepare --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06072020
```

Para obtener más información, consulte las [copias de seguridad incrementales](https://www.percona.com/doc/percona-xtrabackup/2.4/backup_scenarios/incremental_backup.html) en la documentación de Percona XtraBackup .

**Comprimir y dividir la copia de seguridad combinada**

Para comprimir la copia de seguridad combinada en \$1/<efs\$1mount\$1name>/fullbackup:

```
tar -zcvf <backupfilename.tar.gz> ~/<efs_mount_name>/fullbackup
```

Para dividir la copia de seguridad:

```
split -d -b1024M --verbose  <backupfilename.tar.gz> <backupfilename.tar.gz>
```

**Configure la replicación de binlog**

Para crear un usuario de replicación en la base de datos de origen y proporcionar los privilegios adecuados:

```
CREATE USER 'repl_user'@'' IDENTIFIED BY ''; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'';
```

Para habilitar la replicación en Aurora mediante la conexión al clúster de base de datos Aurora, habilite los registros binarios en el grupo de parámetros del clúster de base de datos. Configure `binlog_format = mixed` (se prefiere el modo mixto). Este cambio requiere que reinicies la instancia para aplicar la actualización.

```
CALL mysql.rds_set_external_master ('sourcedbinstanceIP', sourcedbport, 'repl_user', '', 'binlog_file_name', binlog_file_position, 0); CALL mysql.rds_start_replication;
```

Para confirmar que la replicación está sincronizada:

```
SHOW Slave Status \G;
```

El campo **Segundos detrás del maestro** muestra qué tan lejos está Aurora de la base de datos en las instalaciones.

# Migración de aplicaciones Java locales en las instalaciones a AWS mediante AWS App2Container
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container"></a>

*Dhananjay Karanjkar, Amazon Web Services*

## Resumen
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-summary"></a>

AWS App2Container (A2C) es una herramienta de línea de comandos que le ayuda a transformar en contenedores las aplicaciones existentes que se ejecutan en máquinas virtuales sin necesidad de cambiar el código. A2C descubre aplicaciones en ejecución en un servidor, identifica las dependencias y genera artefactos relevantes para una implementación sin interrupciones en Amazon Elastic Container Service (Amazon ECS) y Amazon Elastic Kubernetes Service (Amazon EKS).

Este patrón proporciona los pasos para migrar de forma remota las aplicaciones Java en las instalaciones implementadas en un servidor de aplicaciones a AWS Fargate o Amazon EKS mediante App2Container a través de la máquina de trabajo. 

La máquina de trabajo se puede utilizar en los siguientes casos de uso:
+ La instalación de Docker no está permitida o no está disponible en los servidores de aplicaciones donde se ejecutan las aplicaciones Java.
+ Debe gestionar la migración de varias aplicaciones implementadas en distintos servidores físicos o virtuales.

Este patrón usa AWS CodeCommit AWS CodePipeline, y AWS CodeBuild.

## Requisitos previos y limitaciones
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-prereqs"></a>

**Requisitos previos **
+ Un servidor de aplicaciones con una aplicación Java que se ejecuta en un servidor Linux
+ Una máquina de trabajo con un sistema operativo Linux
+ Una máquina de trabajo con al menos 20 GB de espacio disponible en disco

**Limitaciones**
+ No todas las aplicaciones son compatibles. Para más información, consulte [Aplicaciones compatibles para Linux](https://docs.aws.amazon.com/app2container/latest/UserGuide/supported-applications.html).

## Arquitectura
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-architecture"></a>

**Pila de tecnología de origen**
+ Aplicaciones Java que se ejecutan en un servidor Linux

**Pila de tecnología de destino**
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS CodeDeploy
+ AWS CodePipeline
+ Amazon Elastic Container Registry
+ AWS Fargate

**Arquitectura de destino**

![\[Arquitectura para aplicaciones Java en las instalaciones en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/61ed65a0-fab2-4fc8-8531-18bfd56a25b3/images/602cde7b-ab0c-46a5-8c37-afe304adf061.png)


 

## Tools (Herramientas)
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-tools"></a>

**Herramientas**
+ [AWS App2Container (A2C)](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html) es una herramienta de la línea de comandos que le ayuda a migrar mediante lift-and-shift las aplicaciones que se ejecutan en centros de datos en las instalaciones o en máquinas virtuales, de modo que se ejecuten en contenedores administrados por Amazon ECS o Amazon EKS.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html): AWS CodeBuild es un servicio de compilación en la nube totalmente gestionado. CodeBuild compila su código fuente, ejecuta pruebas unitarias y produce artefactos que están listos para su implementación.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html): AWS CodeCommit es un servicio de control de versiones alojado por Amazon Web Services que puede utilizar para almacenar y gestionar activos (como documentos, código fuente y archivos binarios) en la nube de forma privada.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html): AWS CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para lanzar su software.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html): Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores altamente escalable y rápido que facilita la tarea de ejecutar, detener y administrar contenedores en un clúster.
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html): Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado por AWS que es seguro, escalable y fiable.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html): Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado que puede utilizar para ejecutar Kubernetes en AWS sin necesidad de instalar, operar ni mantener su propio plano de control o nodos de Kubernetes.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html): AWS Fargate es una tecnología que puede usar con Amazon ECS para ejecutar contenedores sin tener que administrar servidores o clústeres de instancias de Amazon Elastic Compute Cloud (Amazon). EC2 Con Fargate, ya no tendrá que aprovisionar, configurar ni escalar clústeres de máquinas virtuales para ejecutar los contenedores.

## Epics
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-epics"></a>

### Configuración de credenciales
<a name="set-up-credentials"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un secreto para acceder al servidor de aplicaciones. | Para acceder al servidor de aplicaciones de forma remota desde la máquina de trabajo, cree un secreto en AWS Secrets Manager. Como secreto, puede utilizar la clave privada de SSH o el certificado y la clave privada de SSH. Para obtener más información, consulte [Administrar secretos para AWS App2Container](https://docs.aws.amazon.com/app2container/latest/UserGuide/manage-secrets.html). | DevOps, desarrollador | 

### Configure la máquina de trabajo
<a name="set-up-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar el archivo tar. | Ejecute `sudo yum install -y tar`. | DevOps, Desarrollador | 
| Instale la AWS CLI. | Para instalar la interfaz de la línea de comandos de AWS (AWS CLI), ejecute `curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"`. Descomprima `awscliv2.zip`.Ejecute `sudo ./aws/install`. | DevOps, Desarrollador | 
| Instale App2Container. | Ejecute los siguientes comandos :`curl -o AWSApp2Container-installer-linux.tar.gz https://app2container-release-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz``sudo tar xvf AWSApp2Container-installer-linux.tar.gz``sudo ./install.sh` | DevOps, Desarrollador | 
| Configure los perfiles. | Para configurar el perfil predeterminado de AWS, ejecute `sudo aws configure`.Para configurar el perfil predeterminado de AWS con nombre, ejecute `sudo aws configure --profile <profile name>`. | DevOps, Desarrollador | 
| Instale Docker. | Use los siguientes comandos.`sudo yum install -y docker``sudo systemctl enable docker & sudo systemctl restart docker` |  | 
| Inicie App2Container. | Para inicializar App2Container, necesita la siguiente información:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)Ejecute `sudo app2container init`. | DevOps, Desarrollador | 

### Configure la máquina de trabajo
<a name="configure-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la máquina de trabajo para conectarse remotamente y ejecutar los comandos de App2Container en el servidor de aplicaciones. | Para configurar la máquina de trabajo, se requiere la siguiente información:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)Ejecute `sudo app2container remote configure`. | DevOps, Desarrollador | 

### Descubra, analice y extraiga aplicaciones en la máquina de trabajo
<a name="discover-analyze-and-extract-applications-on-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descubra las aplicaciones Java en las instalaciones. | Para descubrir de forma remota todas las aplicaciones en ejecución en el servidor de aplicaciones, ejecute el siguiente comando.`sudo app2container remote inventory --target <FQDN/IP of App server>`Este comando genera una lista de las aplicaciones implementadas en `inventory.json`. | Desarrollador, DevOps | 
| Analice las aplicaciones descubiertas. | Para analizar de forma remota cada aplicación mediante el identificador de aplicación obtenido en la fase de inventario, ejecute el siguiente comando.`sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>`Esto genera un archivo `analysis.json` en la ubicación del espacio de trabajo. Una vez generado este archivo, puede modificar los parámetros de contenerización en función de sus necesidades. | Desarrollador, DevOps | 
| Extraiga las aplicaciones analizadas. | Para generar un archivo de aplicaciones para la aplicación analizada, ejecute de forma remota el siguiente comando, que generará el paquete tar en la ubicación del espacio de trabajo.`sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>`Los artefactos extraídos se pueden generar en la máquina de trabajo local. | Desarrollador, DevOps | 

### Guarde en contenedores los artefactos extraídos en la máquina de trabajo
<a name="containerize-the-extracted-artifacts-on-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Coloque en contenedores los artefactos extraídos. | Guarde en contenedores los artefactos extraídos en el paso anterior ejecutando el siguiente comando.`sudo app2container containerize --input-archive <tar bundle location on worker machine>` | Desarrollador, DevOps | 
| Finalice el objetivo. | Para finalizar el objetivo, abra `deployment.json`, que se crea cuando se ejecuta el comando `containerize`. Para especificar AWS Fargate como objetivo, establezca `createEcsArtifacts` en `true`. Para establecer Amazon EKS como objetivo, establezca `createEksArtifacts` en true. | Desarrollador, DevOps | 

### Genere y aprovisione artefactos de AWS
<a name="generate-and-provision-aws-artifacts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere artefactos de implementación de AWS en la máquina de trabajo. | Para generar artefactos de implementación, ejecute el siguiente comando.`sudo app2container generate app-deployment --application-id <application id>`Esto genera la CloudFormation plantilla de `ecs-master.yml` AWS en el espacio de trabajo. | DevOps | 
| Aprovisione los artefactos. | Para aprovisionar aún más los artefactos generados, implemente la CloudFormation plantilla de AWS ejecutando el siguiente comando.`aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS` | DevOps | 
| Genere la canalización. | Modifique `pipeline.json`, que se creó en la historia anterior, en función de sus necesidades. A continuación, ejecute el comando `generate pipeline` para generar los artefactos de implementación de la canalización. | DevOps | 

## Recursos relacionados
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-resources"></a>
+ [¿Qué es App2Container?](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html)
+ [Entrada de blog sobre AWS App2Container](https://aws.amazon.com/blogs/aws/aws-app2container-a-new-containerizing-tool-for-java-and-asp-net-applications/)
+ [Conceptos básicos de configuración de la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
+ [Conceptos básicos de Docker para Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)
+ [Comandos de Docker](https://docs.docker.com/engine/reference/commandline/cli/)

# Migre sistemas de archivos compartidos en una migración AWS grande
<a name="migrate-shared-file-systems-in-an-aws-large-migration"></a>

*Amit Rudraraju, Sam Apa, Bheemeswararao Balla, Wally Lu y Sanjeev Prakasam, Amazon Web Services*

## Resumen
<a name="migrate-shared-file-systems-in-an-aws-large-migration-summary"></a>

La migración de 300 o más servidores se considera una *migración grande*. El objetivo de una gran migración es migrar las cargas de trabajo de sus centros de datos locales existentes a los centros de datos locales existentes Nube de AWS, y estos proyectos suelen centrarse en las cargas de trabajo de aplicaciones y bases de datos. Sin embargo, los sistemas de archivos compartidos requieren una atención específica y un plan de migración independiente. Este patrón describe el proceso de migración de los sistemas de archivos compartidos y proporciona las prácticas recomendadas para migrarlos correctamente como parte de un gran proyecto de migración.

Un *sistema de archivos compartidos* (SFS), también conocido como sistema de archivos de *red *o *agrupado*, es un recurso compartido de archivos que se monta en varios servidores. Se accede a los sistemas de archivos compartidos mediante protocolos como el Sistema de archivos de red (NFS), el Sistema de archivos común de Internet (CIFS) o el Bloque de mensajes del servidor (SMB).

Estos sistemas no se migran con herramientas de migración estándar, por ejemplo, AWS Application Migration Service porque no están dedicados al host que se va a migrar ni se representan como un dispositivo de bloques. Si bien la mayoría de las dependencias del host se migran de forma transparente, la coordinación y la administración de los sistemas de archivos dependientes deben gestionarse por separado.

Los sistemas de archivos compartidos se migran en las siguientes fases: descubrir, planificar, preparar, recortar y validar. Con este patrón y los libros de trabajo adjuntos, se migra el sistema de archivos compartidos a un servicio de AWS almacenamiento, como Amazon Elastic File System (Amazon EFS), Amazon FSx for NetApp ONTAP o Amazon FSx for Windows File Server. Para transferir el sistema de archivos, puede utilizar AWS DataSync una herramienta de terceros, como. NetApp SnapMirror

**nota**  
Este patrón forma parte de una serie de guías AWS prescriptivas sobre las [grandes migraciones al](https://aws.amazon.com/prescriptive-guidance/large-migrations/). Nube de AWS Este patrón incluye las mejores prácticas e instrucciones para SFSs incorporarlas a sus planes de oleaje para servidores. Si va a migrar uno o más sistemas de archivos compartidos fuera de un proyecto de migración de gran tamaño, consulte las instrucciones de transferencia de datos en la AWS documentación de [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/trnsfr-data-using-datasync.html), [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/migrate-to-fsx.html) y [Amazon FSx for NetApp ONTAP](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/migrating-fsx-ontap.html).

## Requisitos previos y limitaciones
<a name="migrate-shared-file-systems-in-an-aws-large-migration-prereqs"></a>

**Requisitos previos **

Los requisitos previos pueden variar en función de los sistemas de archivos compartidos de origen y destino y del caso de uso. Los problemas más coqmunes son los siguientes:
+ Un activo. Cuenta de AWS
+ Ha completado la búsqueda de la cartera de aplicaciones para su gran proyecto de migración y ha empezado a desarrollar planes de onda. Para obtener más información, consulta el [manual de estrategias de Portfolio para migraciones AWS grandes](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-portfolio-playbook/welcome.html).
+ Nubes privadas virtuales (VPCs) y grupos de seguridad que permiten el tráfico de entrada y salida entre el centro de datos local y su entorno. AWS [Para obtener más información, consulte [Opciones de conectividad de red a Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) y requisitos de red.AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/datasync-network.html)
+ Permisos para crear AWS CloudFormation pilas o permisos para crear Amazon EFS o FSx recursos de Amazon. Para obtener más información, consulte la [CloudFormation documentación](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html), la [documentación de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/security-iam.html) o la [ FSx documentación de Amazon](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/security-iam.html).
+ Si va AWS DataSync a realizar la migración, necesitará los siguientes permisos:
  + Permisos AWS DataSync para enviar registros a un grupo de CloudWatch registros de Amazon Logs. Para obtener más información, consulte [Permitir DataSync la carga de registros a grupos de CloudWatch registros](https://docs.aws.amazon.com/datasync/latest/userguide/monitor-datasync.html#cloudwatchlogs).
  + Permisos para acceder al grupo de CloudWatch registros. Para obtener más información, consulte [Descripción general de la administración de los permisos de acceso a los recursos de CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html).
  + Permisos para crear agentes y tareas en DataSync. Para obtener más información, consulte [Permisos de IAM necesarios para su uso AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/permissions-requirements.html).

**Limitaciones**
+ Este patrón está diseñado para migrar SFSs como parte de un gran proyecto de migración. Incluye las mejores prácticas e instrucciones para SFSs incorporarlos a sus planes de migración de aplicaciones. Si va a migrar uno o más sistemas de archivos compartidos fuera de un proyecto de migración de gran tamaño, consulte las instrucciones de transferencia de datos en la AWS documentación de [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/trnsfr-data-using-datasync.html), [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/migrate-to-fsx.html) y [Amazon FSx for NetApp ONTAP](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/migrating-fsx-ontap.html).
+ Este patrón se basa en las arquitecturas, los servicios y los patrones de migración más utilizados. Sin embargo, los grandes proyectos y estrategias de migración pueden variar de una organización a otra. Es posible que necesite personalizar esta solución o los libros de trabajo proporcionados en función de sus necesidades.

## Arquitectura
<a name="migrate-shared-file-systems-in-an-aws-large-migration-architecture"></a>

**Pila de tecnología de origen**

Una o varias de las siguientes:
+ Servidor de archivos Linux (NFS)
+ Servidor de archivos Windows (SMB)
+ NetApp arreglo de almacenamiento
+ Cabina de almacenamiento Dell EMC Isilon

**Pila de tecnología de destino**

Una o varias de las siguientes:
+ Amazon Elastic File System
+ Amazon FSx para NetApp ONTAP
+ Servidor FSx de archivos Amazon para Windows

**Arquitectura de destino**

![\[Diagrama de arquitectura del uso de AWS DataSync para migrar sistemas de archivos compartidos locales a AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/a30cf791-7a8a-4f71-8927-bc61f3b332f2/images/13232433-7d33-44c8-8998-b720f33f67b3.png)


El diagrama muestra el proceso siguiente:

1. Para establecer una conexión entre el centro de datos local y el Nube de AWS centro de datos se utiliza un elemento Servicio de AWS como AWS Direct Connect o. AWS Site-to-Site VPN

1. El DataSync agente se instala en el centro de datos local.

1. Según su plan de oleaje, se utilizan DataSync para replicar los datos del sistema de archivos compartidos de origen al recurso compartido de AWS archivos de destino.

**Fases de migración**

La siguiente imagen muestra las fases y los pasos de alto nivel para migrar un SFS en un proyecto de migración de gran tamaño.

![\[Fases de detección, planificación, preparación, recorte y validación de la migración de sistemas de archivos compartidos a AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/a30cf791-7a8a-4f71-8927-bc61f3b332f2/images/f1e0c94d-0eea-46a8-bdec-3297b34c1d43.png)


La sección [Epics](#migrate-shared-file-systems-in-an-aws-large-migration-epics) de este patrón contiene instrucciones detalladas sobre cómo completar la migración y utilizar los libros de trabajo adjuntos. A continuación, se brinda información general de alto nivel de los pasos de este enfoque por etapas.


| 
| 
| Fase | Steps | 
| --- |--- |
| Descubra | 1. Con una herramienta de detección, se recopilan datos sobre el sistema de archivos compartido, incluidos los servidores, los puntos de montaje y las direcciones IP.2. Mediante una base de datos de gestión de la configuración (CMDB) o una herramienta de migración, se recopilan detalles sobre el servidor, incluida información sobre la onda de migraciones, el entorno, el propietario de la aplicación, el nombre del servicio de gestión de servicios de TI (ITSM), la unidad organizativa y el identificador de la aplicación. | 
| Planifique | 3. Con la información recopilada sobre los servidores SFSs y los servidores, cree el plan de oleada del SFS.4. Con la información de la hoja de trabajo de creación, elija un objetivo Servicio de AWS y una herramienta de migración para cada SFS. | 
| Preparación | 5. Configure la infraestructura de destino en Amazon EFS, Amazon FSx for NetApp ONTAP o Amazon FSx for Windows File Server.6. Configure el servicio de transferencia de datos, por ejemplo, y DataSync, a continuación, inicie la sincronización de datos inicial. Cuando se complete la sincronización inicial, puede configurar las sincronizaciones recurrentes para que se ejecuten según una programación,7. Actualice el plan de ondas del SFS con información sobre el recurso compartido de archivos de destino, como la dirección IP o la ruta. | 
| Realizar la transición | 8. Detenga las aplicaciones que acceden activamente al SFS de origen.9. En el servicio de transferencia de datos, realice una sincronización de datos final.10. Cuando se complete la sincronización, compruebe que se ha realizado correctamente revisando los datos de registro en CloudWatch Registros. | 
| Valide | 11. En los servidores, cambie el punto de montaje por la nueva ruta SFS.12. Reinicie y valide las aplicaciones. | 

## Tools (Herramientas)
<a name="migrate-shared-file-systems-in-an-aws-large-migration-tools"></a>

**Servicios de AWS**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) le ayuda a centralizar los registros de todos sus sistemas y aplicaciones Servicios de AWS para que pueda supervisarlos y archivarlos de forma segura.
+ [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)es un servicio de transferencia y descubrimiento de datos en línea que le ayuda a mover archivos u datos de objetos hacia, desde y entre los servicios AWS de almacenamiento.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) lo ayuda a crear y configurar sistemas de archivos compartidos en la Nube de AWS.
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) proporciona sistemas de archivos que admiten los protocolos de conectividad estándares del sector y ofrecen alta disponibilidad y replicación en todos Regiones de AWS los niveles.

**Otras herramientas**
+ [SnapMirror](https://library.netapp.com/ecmdocs/ECMP1196991/html/GUID-BA1081BE-B2BB-4C6E-8A82-FB0F87AC514E.html)es una herramienta de replicación de NetApp datos que replica datos de volúmenes de origen o qtrees específicos a volúmenes o [qtrees](https://library.netapp.com/ecmdocs/ECMP1154894/html/GUID-8F084F85-2AB8-4622-B4F3-2D9E68559292.html) de destino, respectivamente. Puedes usar esta herramienta para migrar un sistema de archivos NetApp fuente a Amazon FSx para NetApp ONTAP.
+ [Robocopy](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy), abreviatura de *Robust File Copy*, es un directorio de línea de comandos y comandos para Windows. Puedes usar esta herramienta para migrar un sistema de archivos fuente de Windows a Amazon FSx for Windows File Server.

## Prácticas recomendadas
<a name="migrate-shared-file-systems-in-an-aws-large-migration-best-practices"></a>

**Enfoques de planificación de olas**

Al planificar las ondas para su gran proyecto de migración, tenga en cuenta la latencia y el rendimiento de las aplicaciones. Cuando el SFS y las aplicaciones dependientes funcionan en ubicaciones diferentes, como una en la nube y otra en el centro de datos en las instalaciones, esto puede aumentar la latencia y afectar al rendimiento de las aplicaciones. A continuación, se muestran las siguientes opciones al crear planes de onda:

1. **Migre el SFS y todos los servidores dependientes en la misma oleada**: este enfoque evita problemas de rendimiento y minimiza las tareas de retrabajo, como la reconfiguración de los puntos de montaje varias veces. Se recomienda cuando se requiere una latencia muy baja entre la aplicación y el SFS. Sin embargo, la planificación de ondas es compleja y, por lo general, el objetivo es eliminar las variables de las agrupaciones de dependencias, no añadirlas. Además, este enfoque no se recomienda si muchos servidores acceden al mismo SFS, ya que esto hace que la onda sea demasiado grande.

1. **Migre el SFS una vez que se haya migrado el último servidor dependiente**: por ejemplo, si varios servidores acceden a un SFS y dichos servidores tienen previsto migrar en las oleadas 4, 6 y 7, programe la migración del SFS en la oleada 7.

   Este enfoque suele ser el más lógico para migraciones grandes y se recomienda para aplicaciones sensibles a la latencia. Reduce los costos asociados a la transferencia de datos. También minimiza el período de latencia entre el SFS y las aplicaciones de nivel superior (como las de producción), ya que las aplicaciones de nivel superior suelen estar programadas para migrar en último lugar, después de las aplicaciones de desarrollo y control de calidad.

   Sin embargo, este enfoque aún requiere detección, planificación y agilidad. Es posible que tenga que migrar el SFS en una onda anterior. Confirme que las aplicaciones puedan soportar la latencia adicional durante el período de tiempo entre la primera onda dependiente y la onda que contiene el SFS. Realice una sesión de descubrimiento con los propietarios de las aplicaciones y migre la aplicación en la misma fase, es decir, la aplicación más sensible a la latencia. Si se descubren problemas de rendimiento después de migrar una aplicación dependiente, prepárese para migrar rápidamente el SFS lo más rápido posible.

1. **Migre el SFS al final de un gran proyecto de migración**: este enfoque se recomienda si la latencia no es un factor, por ejemplo, cuando se accede con poca frecuencia a los datos del SFS o no son críticos para el rendimiento de la aplicación. Este enfoque agiliza la migración y simplifica las tareas de transición.

Puede combinar estos enfoques en función de la sensibilidad a la latencia de la aplicación. Por ejemplo, puede migrar en función de la latencia SFSs utilizando los enfoques 1 o 2 y, a continuación, migrar el resto SFSs utilizando el enfoque 3.

**Elegir un servicio de sistema de archivos AWS **

AWS ofrece varios servicios en la nube para el almacenamiento de archivos. Cada uno ofrece diferentes ventajas y limitaciones en cuanto al rendimiento, la escala, la accesibilidad, la integración, la conformidad y la optimización de costos. Hay algunas opciones lógicas predeterminadas. Por ejemplo, si su sistema de archivos local actual utiliza Windows Server, Amazon FSx for Windows File Server es la opción predeterminada. O bien, si el sistema de archivos local utiliza NetApp ONTAP, Amazon FSx for NetApp ONTAP es la opción predeterminada. Sin embargo, puede elegir un servicio específico en función de los requisitos de su aplicación o para aprovechar otras ventajas operativas en la nube. Para obtener más información, consulte [Elegir el servicio de almacenamiento de AWS archivos adecuado para su implementación](https://d1.awsstatic.com/events/Summits/awsnycsummit/Choosing_the_right_AWS_file_storage_service_for_your_deployment_STG302.pdf) (presentación en AWS Summit).

**Elección de una herramienta de migración**

Amazon EFS y Amazon FSx admiten el uso de AWS DataSync para migrar sistemas de archivos compartidos a Nube de AWS. Para obtener más información sobre los sistemas y servicios de almacenamiento compatibles, las ventajas y los casos de uso, consulte [Qué es AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html). Para obtener una descripción general del proceso de uso DataSync para transferir archivos, consulte [Cómo funcionan AWS DataSync las transferencias](https://docs.aws.amazon.com/datasync/latest/userguide/how-datasync-transfer-works.html).

También hay varias herramientas de terceros disponibles, entre las que se incluyen las siguientes:
+ Si eliges Amazon FSx for NetApp ONTAP, puedes usarlo NetApp SnapMirror para migrar los archivos del centro de datos local a la nube. SnapMirror utiliza la replicación a nivel de bloques, que puede ser más rápida DataSync y reducir la duración del proceso de transferencia de datos. Para obtener más información, consulte [Migración a FSx ](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/migrating-fsx-ontap-snapmirror.html) ONTAP mediante. NetApp SnapMirror
+ Si eliges Amazon FSx for Windows File Server, puedes usar Robocopy para migrar archivos a la nube. Para obtener más información, consulte [Migración de archivos existentes a un servidor de archivos FSx de Windows mediante Robocopy](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/migrate-files-to-fsx.html).

## Epics
<a name="migrate-shared-file-systems-in-an-aws-large-migration-epics"></a>

### Descubra
<a name="discover"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare el libro de trabajo de descubrimiento del SFS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración | 
| Recopile información sobre el SFS de origen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración | 
| Recopile información sobre los servidores. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración | 

### Plan
<a name="plan"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el plan de olas del SFS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Responsable de compilación, líder de transición, ingeniero de migraciones, líder de migraciones | 
| Elija el destino Servicio de AWS y la herramienta de migración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración | 

### Preparación
<a name="prepare"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el sistema de archivos de destino. | De acuerdo con los detalles registrados en su plan de oleada, configure los sistemas de archivos de destino en el destino Cuenta de AWS, la VPC y las subredes. Para obtener instrucciones, consulte la siguiente documentación: AWS [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración, administrador de AWS | 
| Configure la herramienta de migración y transfiera los datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Administrador de AWS, administrador de la nube, ingeniero de migraciones, líder de migración | 
| Actualice el plan de onda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detener la aplicación. | Si las aplicaciones o los clientes están realizando operaciones de lectura y escritura de forma activa en el SFS de origen, deténgalos antes de realizar la sincronización de datos final. Para obtener instrucciones, consulte la documentación de la aplicación o sus procesos internos para detener las actividades de lectura y escritura. Por ejemplo, consulte [Iniciar o detener el servidor web (IIS 8) (documentación de Microsoft)](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj635851(v=ws.11)) o [Administrar los servicios del sistema con systemctl](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-systemd_configuring-basic-system-settings#managing-system-services-with-systemctl_managing-systemd) (documentación de Red Hat). | Propietario de la aplicación, desarrollador de la aplicación | 
| Realice la transferencia de datos final. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Ingeniero de migraciones, líder de migración | 
| Valide la transferencia de datos. | Si lo estás utilizando AWS DataSync, haz lo siguiente para validar que la transferencia de datos final se haya realizado correctamente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html)Si utiliza una herramienta de terceros, consulte las instrucciones de validación de la transferencia de datos en la documentación de la herramienta de migración seleccionada. | Ingeniero de migraciones, líder de migración | 

### Valide
<a name="validate"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Vuelva a montar el sistema de archivos y valide la función y el rendimiento de la aplicación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | Administrador de sistemas de AWS, propietario de la aplicación | 

## Resolución de problemas
<a name="migrate-shared-file-systems-in-an-aws-large-migration-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Los valores de celda de Microsoft Excel no se actualizan. | Copie las fórmulas de las filas de muestra arrastrando el controlador de relleno. Para obtener más información, consulte las instrucciones para [Windows](https://support.microsoft.com/en-us/office/fill-a-formula-down-into-adjacent-cells-041edfe2-05bc-40e6-b933-ef48c3f308c6) o [Mac](https://support.microsoft.com/en-au/office/copy-a-formula-by-dragging-the-fill-handle-in-excel-for-mac-dd928259-622b-473f-9a33-83aa1a63e218) (sitio web de soporte de Microsoft). | 

## Recursos relacionados
<a name="migrate-shared-file-systems-in-an-aws-large-migration-resources"></a>

**AWS documentación**
+ [AWS DataSync documentación](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)
+ [Documentación de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)
+ [ FSx Documentación de Amazon](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/index.html)
+ [Grandes migraciones al Nube de AWS](https://aws.amazon.com/prescriptive-guidance/large-migrations/)
  + [Guía para AWS grandes migraciones](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-guide/welcome.html)
  + [Guía de portafolio para grandes migraciones AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-portfolio-playbook/welcome.html)

**Solución de problemas**
+ [Solución de problemas AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync.html)
+ [Solución de problemas de Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/troubleshooting.html)
+ [Solución de problemas FSx de Amazon para Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/troubleshooting.html)
+ [Solución de problemas de Amazon FSx for NetApp ONTAP](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/troubleshooting.html)

## Conexiones
<a name="attachments-a30cf791-7a8a-4f71-8927-bc61f3b332f2"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/a30cf791-7a8a-4f71-8927-bc61f3b332f2/attachments/attachment.zip)

# Migre una base de datos Oracle a Amazon RDS for Oracle mediante adaptadores de archivos planos de GoldenGate Oracle
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters"></a>

*Dhairya Jindani y Baji Shaik, Amazon Web Services*

## Resumen
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-summary"></a>

Oracle GoldenGate es un servicio de captura y replicación de datos en tiempo real para bases de datos y entornos de TI heterogéneos. Sin embargo, este servicio no admite actualmente Amazon Relational Database Service (Amazon RDS) para Oracle. Para obtener una lista de las bases de datos compatibles, consulte [Oracle GoldenGate para bases de datos heterogéneas](https://docs.oracle.com/goldengate/c1230/gg-winux/GGHDB/12.3-what-is-oracle-goldengate-heterogeneous-databases.htm#GGHDB-GUID-08EAC588-F76C-4E37-BEBA-0DC57B98CA46) (documentación de Oracle). Este patrón describe cómo utilizar Oracle GoldenGate y los adaptadores de archivos GoldenGate planos de Oracle para generar archivos planos a partir de la base de datos Oracle de origen, que puede estar en las instalaciones o en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). A continuación, puede importar esos archivos planos a una instancia de base de datos de Amazon RDS para Oracle.

En este patrón, utiliza Oracle GoldenGate para extraer los archivos de seguimiento de la base de datos Oracle de origen. La bomba de datos copia los archivos de seguimiento en un servidor de integración, que es una EC2 instancia de Amazon. En el servidor de integración, Oracle GoldenGate utiliza el adaptador de archivos planos para generar una serie de archivos planos secuenciales basados en la captura de datos transacionales de los archivos de seguimiento. Oracle GoldenGate formatea los datos como valores separados por delimitadores o valores delimitados por longitud. A continuación, utilice Oracle SQL\$1Loader para importar los archivos planos a la instancia de base de datos Amazon RDS para Oracle de destino.

**Destinatarios previstos**

Este patrón está destinado a quienes tienen experiencia y conocimiento de los componentes fundamentales de un Oracle. GoldenGate Para obtener más información, consulte [Descripción general de la GoldenGate arquitectura de Oracle](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD115) (documentación de Oracle).

## Requisitos previos y limitaciones
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ Una GoldenGate licencia de Oracle.
+ Una licencia independiente para un GoldenGate adaptador de Oracle.
+ Una base de datos Oracle de origen, que se ejecuta de forma local o en una EC2 instancia de Amazon.
+ Una instancia de Amazon EC2 Linux que se utiliza como servidor de integración. Para [obtener más información, consulte Introducción a las instancias de Amazon EC2 Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) ( EC2 documentación de Amazon).
+ Una instancia de base de datos de Amazon RDS para Oracle. Para obtener más información, consulte [Creación de una instancia de base de datos de Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html) (documentación de Amazon RDS).

**Versiones de producto**
+ Oracle Database Enterprise Edition, versión 10g, 11g, 12c o posterior
+ Oracle, GoldenGate versión 12.2.0.1.1 o posterior

## Arquitectura
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-architecture"></a>

**Pila de tecnología de origen**

Una base de datos Oracle (local o en una EC2 instancia de Amazon)

**Pila de tecnología de destino**

Amazon RDS para Oracle

**Arquitectura de origen y destino**

![\[Migración de una base de datos de Oracle a Amazon RDS for Oracle mediante un GoldenGate adaptador de Oracle.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f34961f7-aa9a-41cb-b1ea-522e36ef2f67/images/21ef5177-e669-4591-aced-28d2f22decf2.png)


1. Oracle GoldenGate extrae las pistas de los registros de la base de datos de origen.

1. La bomba de datos extrae los rastros y los migra a un servidor de integración.

1. El adaptador de archivos GoldenGate planos de Oracle lee los registros, las definiciones de las fuentes y los parámetros de extracción.

1. Se sale de la extracción, que genera un archivo de control y archivos de datos planos.

1. Los archivos de datos sin formato se migran a una instancia de base de datos de Amazon RDS para Oracle en la Nube de AWS.

## Tools (Herramientas)
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) 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 Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) para Oracle lo ayuda a configurar, utilizar y escalar una base de datos relacional de Oracle en la Nube de AWS.

**Otros servicios**
+ [Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD110) es un servicio que le ayuda a replicar, filtrar y transformar datos de una base de datos a otra base de datos heterogénea o a otra topología de destino, como archivos planos.
+ [Los adaptadores de GoldenGate aplicaciones](https://docs.oracle.com/goldengate/gg121211/gg-adapter/GADAD/flatfile_config.htm#GADAD424) de Oracle permiten GoldenGate a Oracle producir una serie de archivos planos secuenciales y archivos de control a partir de los datos transaccionales capturados en los archivos de seguimiento de una base de datos de origen. Estos adaptadores se utilizan ampliamente para operaciones de extracción, transformación y carga (ETL) en aplicaciones de data warehouse y en aplicaciones de propiedad o heredadas. Oracle GoldenGate realiza esta captura y la aplica prácticamente en tiempo real en bases de datos, plataformas y sistemas operativos heterogéneos. Los adaptadores admiten diferentes formatos para los archivos de salida, como CSV o Apache Parquet. Puede cargar estos archivos generados para cargar los datos en diferentes bases de datos heterogéneas.

## Epics
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-epics"></a>

### Configure Oracle GoldenGate en el servidor de base de datos de origen
<a name="set-up-oracle-goldengate-on-the-source-database-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue Oracle GoldenGate. | En el servidor de base de datos de origen, descargue Oracle, GoldenGate versión 12.2.0.1.1 o posterior. Para obtener instrucciones, consulte [Descarga de Oracle GoldenGate (documentación de Oracle](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA164)). | Administrador de base de datos | 
| Instale Oracle GoldenGate. | Para obtener instrucciones, consulte [Instalación de Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA162) (documentación de Oracle). | Administrador de base de datos | 
| Configure Oracle GoldenGate. | Para obtener instrucciones, consulte [Preparación de la base de datos para Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/setup.htm#GIORA357) (documentación de Oracle). | Administrador de base de datos | 

### Configure Oracle GoldenGate en el servidor de integración
<a name="set-up-oracle-goldengate-on-the-integration-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue Oracle GoldenGate. | En el servidor de integración, descargue la GoldenGate versión 12.2.0.1.1 o posterior de Oracle. Para obtener instrucciones, consulte [Descarga de Oracle GoldenGate (documentación de Oracle](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA164)). | Administrador de base de datos | 
| Instale Oracle GoldenGate. | Cree directorios, configure el proceso de administración y cree el archivo `defgen` para un entorno heterogéneo. Para obtener instrucciones, consulte [Instalación de Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA162) (documentación de Oracle). | Administrador de base de datos | 

### Cambie la configuración de captura GoldenGate de datos de Oracle
<a name="change-the-oracle-goldengate-data-capture-configuration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepare los GoldenGate adaptadores de Oracle. | En el servidor de integración, configure el software del GoldenGate adaptador de Oracle. Haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.html) | Administrador de base de datos | 
| Configure la bomba de datos. | En el servidor de origen, configure la bomba de datos para transferir el archivo de seguimiento del servidor de origen al servidor de integración. Cree el archivo de parámetros de la bomba de datos y el directorio de archivos de senderos. Para obtener instrucciones, consulte [Configuración del adaptador de archivos planos](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-DF13488D-E0E9-497C-8AFF-70B839DE4843.htm#GADAD424) (documentación de Oracle). | Administrador de base de datos | 

### Generar y migrar los archivos planos
<a name="generate-and-migrate-the-flat-files"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere los archivos planos. | Cree el archivo de extracción y el archivo de control y, a continuación, inicie el proceso de extracción en el servidor de integración. Esto extrae los cambios de la base de datos y graba la base de datos de origen en los archivos planos. Para obtener instrucciones, consulte [Uso del adaptador de archivos planos](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-D30CC70D-B90F-4209-BEB5-9BA53EA869EF.htm#GADAD432) (documentación de Oracle). | Administrador de base de datos | 
| Cargue los archivos planos en la base de datos de destino. | Cargue los archivos planos en la instancia de base de datos de Amazon RDS para Oracle de destino. Para obtener más información, consulte [Importación mediante Oracle SQL\$1Loader](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.SQLLoader.html) (documentación de Amazon RDS). | Administrador de base de datos | 

## Resolución de problemas
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| El adaptador de archivos GoldenGate planos de Oracle genera un error. | Para obtener una descripción de los errores del adaptador, consulte [Localización de mensajes de error](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-D30CC70D-B90F-4209-BEB5-9BA53EA869EF.htm#GADAD437) (documentación de Oracle). Para obtener instrucciones de solución de problemas, consulte [Solución de problemas del adaptador de archivos planos](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-CB3D9B2C-49CC-408A-8C00-06E0C7923DD6.htm#GADAD552) (documentación de Oracle). | 

## Recursos relacionados
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-resources"></a>
+ [Instalación de Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA162) (documentación de Oracle)
+ [Configuración de Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/setup.htm#GIORA357) (documentación de Oracle)
+ [Descripción de los GoldenGate adaptadores Oracle](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-F9105B02-9836-4F98-99F8-6E9C46D42764.htm#GADAD101) (documentación de Oracle)
+ [Configuración del adaptador de archivos planos](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-DF13488D-E0E9-497C-8AFF-70B839DE4843.htm#GADAD424) (documentación de Oracle)

# Cambie las aplicaciones de Python y Perl para que admitan la migración de bases de datos de Microsoft SQL Server a una edición compatible con PostgreSQL de Amazon Aurora
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition"></a>

*Dwarika Patra y Deepesh Jayaprakash, Amazon Web Services*

## Resumen
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-summary"></a>

Este patrón describe los cambios en los repositorios de aplicaciones que pueden ser necesarios al migrar bases de datos de Microsoft SQL Server a una edición compatible con Amazon Aurora PostgreSQL. El patrón asume que estas aplicaciones están basadas en Python o en Perl, y proporciona instrucciones independientes para estos lenguajes de secuencias de comandos.

La migración de bases de datos de SQL Server a una versión compatible con Aurora PostgreSQL implica la conversión de esquemas, la conversión de objetos de base de datos, la migración de datos y la carga de datos. Debido a las diferencias entre PostgreSQL y SQL Server (en relación con los tipos de datos, los objetos de conexión, la sintaxis y la lógica), la tarea de migración más difícil consiste en realizar los cambios necesarios en la base de código para que funcione correctamente con PostgreSQL.

Para una aplicación basada en Python, los objetos y clases de conexión están dispersos por todo el sistema. Además, la base de código de Python puede usar varias bibliotecas para conectarse a la base de datos. Si la interfaz de conexión a la base de datos cambia, los objetos que ejecutan las consultas en línea de la aplicación también requieren cambios.

En el caso de una aplicación basada en Perl, los cambios se refieren a los objetos de conexión, los controladores de conexión a la base de datos, las sentencias SQL integradas estáticas y dinámicas y la forma en que la aplicación gestiona las consultas DML dinámicas y complejas y los conjuntos de resultados.

Al migrar la aplicación, también puede considerar posibles mejoras en AWS, como reemplazar el servidor FTP por el acceso a Amazon Simple Storage Service (Amazon S3).

El proceso de migración de la aplicación implica los siguientes desafíos:
+ Objetos de conexión. Si los objetos de conexión están dispersos en el código con varias bibliotecas y llamadas a funciones, es posible que tenga que encontrar una forma generalizada de cambiarlos para que sean compatibles con PostgreSQL.
+ Gestión de errores o excepciones durante la recuperación o actualización de registros. Si tiene operaciones condicionales de creación, lectura, actualización y eliminación (CRUD) en la base de datos que devuelven variables, conjuntos de resultados o marcos de datos, cualquier error o excepción puede provocar errores de aplicación con efectos en cascada. Estas deben gestionarse con cuidado, con las validaciones adecuadas y ahorrándose puntos. Uno de estos puntos de ahorro es llamar a consultas SQL integradas de gran tamaño o a objetos de bases de datos dentro de bloques `BEGIN...EXCEPTION...END`.
+ Controlar las transacciones y su validación. Esto incluye las confirmaciones y anulaciones manuales y automáticas. El controlador PostgreSQL para Perl requiere que siempre se establezca de forma explícita el atributo autocommit.
+ Manejo de consultas SQL dinámicas. Esto requiere una sólida comprensión de la lógica de consultas y pruebas iterativas para garantizar que las consultas funcionen según lo esperado.
+ Desempeño. Debe asegurarse de que los cambios en el código no reduzcan el rendimiento de la aplicación.

Este patrón explica el proceso de conversión en detalle.

## Requisitos previos y limitaciones
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-prereqs"></a>

**Requisitos previos **
+ Conocimientos prácticos de la sintaxis de Python y Perl.
+ Conocimientos básicos de SQL Server y PostgreSQL.
+ Comprensión de la arquitectura de aplicaciones existente.
+ Acceda al código de su aplicación, a la base de datos de SQL Server y a la base de datos PostgreSQL.
+ Acceda al entorno de desarrollo Windows o Linux (u otro tipo de Unix) con credenciales para desarrollar, probar y validar los cambios en las aplicaciones.
+ Para una aplicación basada en Python, las bibliotecas de Python estándar que pueda necesitar la aplicación, como **Pandas** para gestionar marcos de datos y **psycopg2** o para conexiones a bases de datos. **SQLAlchemy**
+ Para una aplicación basada en Perl, se requieren paquetes de Perl con bibliotecas o módulos dependientes. El módulo Comprehensive Perl Archive Network (CPAN) es compatible con la mayoría de los requisitos de las aplicaciones.
+ Todas las bibliotecas o módulos personalizados dependientes necesarios. 
+ Credenciales de base de datos para el acceso de lectura a SQL Server y el read/write acceso a Aurora.
+ PostgreSQL para validar y depurar los cambios en las aplicaciones con los servicios y los usuarios.
+ Acceso a herramientas de desarrollo durante la migración de aplicaciones, como Visual Studio Code, Sublime Text o **pgAdmin.**

**Limitaciones**
+ Algunas versiones, módulos, bibliotecas y paquetes de Python o Perl no son compatibles con el entorno de nube.
+ Algunas bibliotecas y marcos de terceros utilizados para SQL Server no se pueden reemplazar para admitir la migración a PostgreSQL. 
+ Las variaciones de rendimiento pueden requerir cambios en la aplicación, en las consultas de Transact-SQL (T-SQL) integradas, en las funciones de las bases de datos y en los procedimientos almacenados.
+ PostgreSQL admite nombres en minúsculas para nombres de tablas, nombres de columnas y otros objetos de bases de datos. 
+ Algunos tipos de datos, como las columnas UUID, se almacenan únicamente en minúsculas. Las aplicaciones Python y Perl deben gestionar estas diferencias entre mayúsculas y minúsculas. 
+ Las diferencias de codificación de caracteres deben gestionarse con el tipo de datos correcto para las columnas de texto correspondientes de la base de datos PostgreSQL.                                

**Versiones de producto**
+ Python 3.6 o posterior (usa la versión compatible con su sistema operativo)
+ Perl 5.8.3 o posterior (utilice la versión compatible con su sistema operativo)
+ Aurora, compatible con PostgreSQL, edición 4.2 o posterior (consulte los [detalles](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html#AuroraPostgreSQL.Updates.20180305.42))

## Arquitectura
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-architecture"></a>

**Pila de tecnología de origen**
+ Lenguaje de secuencias de comandos (programación de aplicaciones): Python 2.7 o posterior, o Perl 5.8 
+ Base de datos: Microsoft SQL Server versión 13
+ Sistema operativo: Red Hat Enterprise Linux (RHEL) 7 

**Pila de tecnología de destino**
+ Lenguaje de secuencias de comandos (programación de aplicaciones): Python 3.6 o posterior de Perl 
+ Base de datos: Compatible con Aurora PostgreSQL
+ Sistema operativo: RHEL 7 

**Arquitectura de migración**

![\[Migración de una aplicación de Perl o Python con SQL Server a una aplicación compatible con Aurora PostgreSQL\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/b64de64a-bd55-4db7-ba7b-0a2557862af1/images/b8fab3e2-ded5-4f58-86bf-3f645252e9fc.png)


## Tools (Herramientas)
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-tools"></a>

**Servicios y herramientas de AWS**
+ [La edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de bases de datos relacionales, completamente administrado, compatible con PostgreSQL y conforme a ACID, que combina la velocidad y la fiabilidad de las bases de datos comerciales de tecnología avanzada con la sencillez y la rentabilidad de las bases de datos de código abierto. Aurora PostgreSQL es un reemplazo instántaneo para PostgreSQL que simplifica y hace más rentable configurar, usar y escalar las implementaciones de PostgreSQL nuevas y existentes.
+ 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.

**Otras herramientas**
+ [Bibliotecas de conexión a bases de datos de [Python](https://www.python.org/) y PostgresSQL, como psycopg2 y [SQLAlchemy](https://www.sqlalchemy.org/)](https://pypi.org/project/psycopg2/)
+ [Perl](https://www.perl.org/) y sus [módulos de DBI](https://metacpan.org/pod/DBD::Pg)
+ [Terminal interactiva PostgreSQL](https://www.postgresql.org/docs/13/app-psql.html) (psql)

## Epics
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-epics"></a>

### Migración de su repositorio de aplicaciones a PostgreSQL: pasos de alto nivel
<a name="migrate-your-application-repository-to-postgresql-ndash-high-level-steps"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Siga estos pasos de conversión de código para migrar su aplicación a PostgreSQL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html)Las siguientes epics proporcionan instrucciones detalladas para algunas de estas tareas de conversión para aplicaciones de Python y Perl. | Desarrollador de aplicaciones | 
| Use una lista de verificación para cada paso de la migración. | Añada lo siguiente a la lista de verificación para cada paso de la migración de la aplicación, incluido el paso final:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | Desarrollador de aplicaciones | 

### Analice y actualice su aplicación: Base de código Python
<a name="analyze-and-update-your-application-ndash-python-code-base"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice su base de código Python existente.  | Su análisis debe incluir lo siguiente para facilitar el proceso de migración de la aplicación:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | Desarrollador de aplicaciones | 
| Convierta sus conexiones de bases de datos para que sean compatibles con PostgreSQL.  | La mayoría de las aplicaciones de Python utilizan la biblioteca **pyodbc **para conectarse con las bases de datos de SQL Server de la siguiente manera.<pre>import pyodbc<br />....<br />try:<br />    conn_string = "Driver=ODBC Driver 17 for SQL<br />    Server;UID={};PWD={};Server={};Database={}".format (conn_user, conn_password,<br />    conn_server, conn_database)<br />    conn = pyodbc.connect(conn_string)<br />    cur = conn.cursor()<br />    result = cur.execute(query_string)<br />    for row in result:<br />    print (row)<br />except Exception as e:<br />    print(str(e))</pre>Convierta la conexión de base de datos para que sea compatible con PostgreSQL de la siguiente manera.<pre>import pyodbc<br />import psycopg2<br />....<br />try:<br />    conn_string = ‘postgresql+psycopg2://’+<br />    conn_user+’:’+conn_password+’@’+conn_server+’/’+conn_database<br />    conn = pyodbc.connect(conn_string, connect_args={‘options’:’-csearch_path=dbo’})<br />    cur = conn.cursor()<br />    result = cur.execute(query_string)<br />    for row in result:<br />    print (row)<br />except Exception as e:<br />    print(str(e))</pre> | Desarrollador de aplicaciones | 
| Cambie las consultas SQL en línea a PostgreSQL. | Convierta sus consultas SQL en línea a un formato compatible con PostgreSQL. Por ejemplo, la siguiente consulta de SQL Server recupera una cadena de una tabla.<pre>dtype = "type1"<br />stm = ‘"SELECT TOP 1 searchcode FROM TypesTable (NOLOCK)<br />WHERE code="’ + "’" + str(dtype) + "’"<br /># For Microsoft SQL Server Database Connection<br />engine = create_engine(‘mssql+pyodbc:///?odbc_connect=%s’ % urllib.parse.quote_plus(conn_string), connect_args={‘connect_timeout’:login_timeout})<br />conn = engine_connect()<br />rs = conn.execute(stm)<br />for row in rs:<br />    print(row)</pre>Tras la conversión, la consulta SQL en línea compatible con PostgreSQL tiene el siguiente aspecto.<pre>dtype = "type1"<br />stm = ‘"SELECT searchcode FROM TypesTable<br />WHERE code="’ + "’" + str(dtype) + "’ LIMIT 1"<br /># For PostgreSQL Database Connection<br />engine = create_engine(‘postgres+psycopg2://%s’ %conn_string, connect_args={‘connect_timeout’:login_timeout})<br />conn = engine.connect()<br />rs = conn.execute(stm)<br />for row in rs:<br />    print(row)</pre> | Desarrollador de aplicaciones | 
| Gestione consultas SQL dinámicas. | El SQL dinámico puede estar presente en un script o en varios scripts de Python. Los ejemplos anteriores mostraron cómo utilizar la función de reemplazo de cadenas de Python para insertar variables con el fin de crear consultas SQL dinámicas. Un enfoque alternativo consiste en añadir variables a la cadena de consulta siempre que sea aplicable. En el ejemplo siguiente, la cadena de consulta se construye sobre la marcha en función de los valores devueltos por una función.<pre>query = ‘"SELECT id from equity e join issues i on e.permId=i.permId where e.id’"<br />query += get_id_filter(ids) + " e.id is NOT NULL</pre>Estos tipos de consultas dinámicas son muy comunes durante la migración de aplicaciones. Siga estos pasos para gestionar consultas dinámicas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | Desarrollador de aplicaciones | 
| Gestione los conjuntos de resultados, las variables y los marcos de datos. | Para Microsoft SQL Server, se utilizan métodos de Python como `fetchone()` o `fetchall()` para recuperar el conjunto de resultados de la base de datos. También puede usar `fetchmany(size)` y especificar el número de registros que se van a devolver del conjunto de resultados. Para ello, puede utilizar el objeto de conexión **pyodbc **como se muestra en el siguiente ejemplo.**pyodbc (Microsoft SQL Server)**<pre>import pyodbc <br />server = 'tcp:myserver.database.windows.net' <br />database = 'exampledb' <br />username = 'exampleusername' <br />password = 'examplepassword' <br />conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)<br />cursor = conn.cursor()<br />cursor.execute("SELECT * FROM ITEMS") <br />row = cursor.fetchone() <br />while row: <br />    print(row[0])<br />    row = cursor.fetchone()</pre>**En Aurora, para realizar tareas similares, como conectarse a PostgreSQL y obtener conjuntos de resultados, puede usar psycopg2 o. **SQLAlchemy**** Estas bibliotecas de Python proporcionan el módulo de conexión y el objeto de cursor para recorrer los registros de la base de datos PostgreSQL, como se muestra en el siguiente ejemplo.**psycopg2 (Aurora compatible con PostgreSQL)**<pre>import psycopg2<br />query = "SELECT * FROM ITEMS;"<br />//Initialize variables<br />host=dbname=user=password=port=sslmode=connect_timeout=""<br />connstring = "host='{host}' dbname='{dbname}' user='{user}' \<br />password='{password}'port='{port}'".format(host=host,dbname=dbname,\<br />user=user,password=password,port=port) <br />conn = psycopg2.connect(connstring)<br />cursor = conn.cursor()<br />cursor.execute(query)<br />column_names = [column[0] for column in cursor.description]<br />print("Column Names: ", column_names)<br />print("Column values: "<br />for row in cursor:<br />    print("itemid :", row[0])<br />    print("itemdescrption :", row[1])<br />    print("itemprice :", row[3]))</pre>**SQLAlchemy (Compatible con Aurora PostgreSQL)**<pre>from sqlalchemy import create_engine<br />from pandas import DataFrame<br />conn_string = 'postgresql://core:database@localhost:5432/exampledatabase'<br />engine = create_engine(conn_string)<br />conn = engine.connect()<br />dataid = 1001<br />result = conn.execute("SELECT * FROM ITEMS")<br />df = DataFrame(result.fetchall())<br />df.columns = result.keys()<br />df = pd.DataFrame()<br />engine.connect()<br />df = pd.read_sql_query(sql_query, engine, coerce_float=False)<br />print("df=", df)</pre> | Desarrollador de aplicaciones | 
| Pruebe la aplicación durante y después de la migración. | La prueba de la aplicación Python migrada es un proceso continuo. Como la migración incluye cambios en los objetos de conexión (**psycopg2** o **SQLAlchemy**), la gestión de errores, nuevas funciones (marcos de datos), cambios en el SQL en línea, funcionalidades de copia masiva (`bcp`en lugar de`COPY`) y cambios similares, debe probarse detenidamente durante y después de la migración de la aplicación. Consultar si:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | Desarrollador de aplicaciones | 

### Analice y actualice su aplicación: base de código Perl
<a name="analyze-and-update-your-application-ndash-perl-code-base"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analice su base de código Perl existente. | Su análisis debe incluir lo siguiente para facilitar el proceso de migración de la aplicación. Debe identificar:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | Desarrollador de aplicaciones | 
| Convierta las conexiones de la aplicación Perl y el módulo DBI para que sean compatibles con PostgreSQL. | Las aplicaciones basadas en Perl suelen utilizar el módulo DBI de Perl, que es un módulo de acceso a bases de datos estándar para el lenguaje de programación Perl. Puede usar el mismo módulo DBI con controladores diferentes para SQL Server y PostgreSQL.Para obtener más información sobre los módulos de Perl necesarios, las instalaciones y otras instrucciones, consulte la [documentación de DBD::Pg](https://metacpan.org/pod/DBD::Pg). El siguiente ejemplo se conecta a Aurora compatible con PostgreSQL en `exampletest-aurorapg-database.cluster-sampleclusture.us-east.-rds.amazonaws.com`.<pre>#!/usr/bin/perl<br />use DBI;<br />use strict;<br />my $driver = "Pg";<br />my $hostname = "exampletest-aurorapg-database-sampleclusture.us-east.rds.amazonaws.com"<br />my $dsn = "DBI:$driver: dbname = $hostname;host = 127.0.0.1;port = 5432";<br />my $username = "postgres";<br />my $password = "pass123";<br />$dbh = DBI->connect("dbi:Pg:dbname=$hostname;host=$host;port=$port;options=$options",<br />      $username,<br />      $password,<br />      {AutoCommit => 0, RaiseError => 1, PrintError => 0}<br />      );</pre> | Desarrollador de aplicaciones | 
| Cambie las consultas SQL en línea a PostgreSQL. | Es posible que su aplicación tenga consultas SQL en línea con `SELECT`, `DELETE`, `UPDATE` y sentencias similares que incluyan cláusulas de consulta que PostgreSQL no admite. Por ejemplo, consulte palabras clave como `TOP` y `NOLOCK` no se admiten en PostgreSQL. En los siguientes ejemplos, se muestra cómo se pueden gestionar `TOP`, `NOLOCK` y variables booleanas.En SQL Server:<pre>$sqlStr = $sqlStr<br />. "WHERE a.student_id in (SELECT TOP $numofRecords c_student_id   \<br />FROM active_student_record b WITH (NOLOCK) \<br />INNER JOIN student_contributor c WITH (NOLOCK) on c.contributor_id = b.c_st)</pre>Para PostgreSQL, conviértalo a:<pre>$sqlStr = $sqlStr<br />. "WHERE a.student_id in (SELECT TOP $numofRecords c_student_id  \<br />FROM active_student_record b INNER JOIN student_contributor c  \<br />on c.contributor_id = b.c_student_contr_id WHERE b_current_1 is true \<br />LIMIT $numofRecords)"</pre> | Desarrollador de aplicaciones | 
| Gestione consultas SQL dinámicas y variables de Perl. | Las consultas SQL dinámicas son sentencias SQL que se crean durante el tiempo de ejecución de la aplicación. Estas consultas se crean de forma dinámica cuando la aplicación está en ejecución, en función de determinadas condiciones, por lo que el texto completo de la consulta no se conoce hasta el tiempo de ejecución. Un ejemplo es una aplicación de análisis financiero que analiza las 10 principales acciones a diario, y estas acciones cambian todos los días. Las tablas SQL se crean en función de los mejores resultados y los valores no se conocen hasta el tiempo de ejecución.Supongamos que las consultas SQL en línea de este ejemplo se pasan a una función contenedora para obtener los resultados establecidos en una variable y, a continuación, una variable utiliza una condición para determinar si la tabla existe:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html)A continuación, se muestra un ejemplo de gestión de variables, seguido de las consultas de SQL Server y PostgreSQL para este caso de uso.<pre>my $tableexists = db_read( arg 1, $sql_qry, undef, 'writer');<br />my $table_already_exists = $tableexists->[0]{table_exists};<br />if ($table_already_exists){<br /># do some thing<br />}<br />else {<br /># do something else<br />}</pre>SQL Server:<pre>my $sql_qry = "SELECT OBJECT_ID('$backendTable', 'U') table_exists", undef, 'writer')";</pre>PostgreSQL:<pre>my $sql_qry = "SELECT TO_REGCLASS('$backendTable', 'U') table_exists", undef, 'writer')";</pre>En el siguiente ejemplo, se utiliza una variable de** **Perl en SQL en línea, que ejecuta una sentencia `SELECT` con un `JOIN` para obtener la clave principal de la tabla y la posición de la columna clave.SQL Server:<pre>my $sql_qry = "SELECT column_name', character_maxi mum_length \<br />FROM INFORMATION_SCHEMA.COLUMNS \<br />WHERE TABLE_SCHEMA='$example_schemaInfo' \<br />AND TABLE_NAME='$example_table' \<br />AND DATA_TYPE IN ('varchar','nvarchar');";</pre>PostgreSQL:<pre>my $sql_qry = "SELECT c1.column_name, c1.ordinal_position \<br />FROM information_schema.key_column_usage AS c LEFT \<br />JOIN information_schema.table_constraints AS t1 \<br />ON t1.constraint_name = c1.constraint_name \<br />WHERE t1.table_name = $example_schemaInfo'.'$example_table’ \<br />AND t1.constraint_type = 'PRIMARY KEY' ;";</pre> | Desarrollador de aplicaciones | 

### Realice cambios adicionales en su aplicación basada en Perl o Python para admitir PostgreSQL
<a name="make-additional-changes-to-your-perl-based-or-python-based-application-to-support-postgresql"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Convierta construcciones adicionales de SQL Server a PostgreSQL. | Los siguientes cambios se aplican a todas las aplicaciones, independientemente del lenguaje de programación.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | Desarrollador de aplicaciones | 

### Mejoró el desempeño
<a name="improve-performance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Aproveche los servicios de AWS para mejorar el rendimiento. | Al migrar a la nube de AWS, puede refinar el diseño de sus aplicaciones y bases de datos para aprovechar los servicios de AWS. Por ejemplo, si las consultas de su aplicación Python, que está conectada a un servidor de bases de datos compatible con Aurora PostgreSQL, tardan más que las consultas originales de Microsoft SQL Server, podría considerar la posibilidad de crear una fuente de datos históricos directamente a un bucket de Amazon Simple Storage Service (Amazon S3) desde el servidor Aurora y utilizar consultas SQL basadas en Amazon Athena para generar informes y consultas de datos analíticos para sus usuarios. cuadros de mando. | Desarrollador de aplicaciones, arquitecto de la nube | 

## Recursos relacionados
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-resources"></a>
+ [Perl](https://www.perl.org/)
+ [Módulo Perl DBI](https://metacpan.org/pod/DBI)
+ [Python](https://www.python.org/)
+ [psycopg2](https://pypi.org/project/psycopg2/)
+ [SQLAlchemy](https://www.sqlalchemy.org/)
+ [Copia masiva - PostgreSQL](https://www.postgresql.org/docs/9.2/sql-copy.html)
+ [Copia masiva - Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver15)
+ [PostgreSQL](https://www.postgresql.org/)
+ [Uso de Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)

## Información adicional
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-additional"></a>

Tanto Microsoft SQL Server como Aurora PostgreSQL son compatibles con ANSI SQL. Sin embargo, debe tener en cuenta cualquier incompatibilidad en la sintaxis, los tipos de datos de columnas, las funciones nativas específicas de las bases de datos, las inserciones masivas y la distinción entre mayúsculas y minúsculas cuando migre su aplicación de Python o Perl de SQL Server a PostgreSQL.

Las siguientes secciones brindan más información sobre posibles inconsistencias.

**Comparación de tipos de datos**

Los cambios en el tipo de datos de SQL Server a PostgreSQL pueden provocar diferencias significativas en los datos resultantes en los que funcionan las aplicaciones. Para ver una comparación de los tipos de datos, consulte la tabla del [sitio web de Sqlines](https://www.sqlines.com/sql-server-to-postgresql).

**Funciones SQL nativas o integradas**

El comportamiento de algunas funciones difiere entre las bases de datos de SQL Server y PostgreSQL. La siguiente tabla muestra una comparación.


| 
| 
| Microsoft SQL Server | Description (Descripción) | PostgreSQL | 
| --- |--- |--- |
| `CAST`  | Convierte un valor de un tipo de datos a otro tipo. | PostgreSQL `type :: operator` | 
| `GETDATE()` | Devuelve la fecha y la hora del sistema de base de datos actual, en un formato `YYYY-MM-DD hh:mm:ss.mmm`. | `CLOCK_TIMESTAMP` | 
| `DATEADD` | Añade un time/date intervalo a una fecha. | `INTERVAL` expression | 
| `CONVERT` | Convierte un valor en un formato de datos específico. | `TO_CHAR` | 
| `DATEDIFF` | Devuelve la diferencia entre dos campos de fecha. | `DATE_PART` | 
| `TOP` | Limita el número de filas de un conjunto de resultados de `SELECT`. | `LIMIT/FETCH` | 

**Bloques anónimos**

Una consulta SQL estructurada se organiza en secciones como la declaración, los ejecutables y el manejo de excepciones. En la siguiente tabla se comparan las versiones Microsoft SQL Server y PostgreSQL de un bloque anónimo simple. En el caso de bloques anónimos complejos, le recomendamos que llame una función de base de datos personalizada en su aplicación.


| 
| 
| Microsoft SQL Server | PostgreSQL | 
| --- |--- |
| <pre>my $sql_qry1=<br />my $sql_qry2 =<br />my $sqlqry = "BEGIN TRAN<br />$sql_qry1 $sql_qry2<br />if @\@error !=0 ROLLBACK<br />TRAN<br />else COMIT TRAN";</pre> | <pre>my $sql_qry1=<br />my $sql_qry2 =<br />my $sql_qry = " DO \$\$<br />BEGIN<br />$header_sql $content_sql<br />END<br />\$\$";</pre> | 

 

**Otras diferencias**
+ **Inserciones masivas de filas:** el equivalente en PostgreSQL de la [utilidad bcp de Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver15) es [COPY](https://www.postgresql.org/docs/9.2/sql-copy.html).
+ **Distinción entre mayúsculas y minúsculas:** los nombres de las columnas distinguen entre mayúsculas y minúsculas en PostgreSQL, por lo que debe convertir los nombres de las columnas de SQL Server a minúsculas o mayúsculas. Esto se convierte en un factor al extraer o comparar datos, o al colocar los nombres de las columnas en los conjuntos de resultados o las variables. El siguiente ejemplo identifica las columnas en las que los valores se pueden almacenar en mayúsculas o minúsculas.

```
my $sql_qry = "SELECT $record_id FROM $exampleTable WHERE LOWER($record_name) = \'failed transaction\'"; 
```
+ **Concatenación: **SQL Server usa `+` como operador para la concatenación de cadenas, mientras que PostgreSQL usa `||`.
+ **Validación: **debe probar y validar las consultas y funciones de SQL en línea antes de usarlas en el código de la aplicación para PostgreSQL.
+ **Inclusión de la biblioteca ORM:** también puede buscar incluir o reemplazar la biblioteca de conexiones de bases de datos existente con bibliotecas ORM de Python, como [SQLAlchemy](https://www.sqlalchemy.org/)[PynomoDB](https://pynamodb.readthedocs.io/en/latest/quickstart.html). Esto ayudará a consultar y manipular fácilmente los datos de una base de datos utilizando un paradigma orientado a objetos.

# Patrones de migración por carga de trabajo
<a name="migration-migration-patterns-by-workload-pattern-list"></a>

**Topics**
+ [IBM](migration-migration-patterns-by-workload-ibm-pattern-list.md)
+ [Microsoft](migration-migration-patterns-by-workload-microsoft-pattern-list.md)
+ [N/A](migration-migration-patterns-by-workload-notapplicable-pattern-list.md)
+ [Código abierto](migration-migration-patterns-by-workload-open-source-pattern-list.md)
+ [Oracle](migration-migration-patterns-by-workload-oracle-pattern-list.md)
+ [SAP](migration-migration-patterns-by-workload-sap-pattern-list.md)

# IBM
<a name="migration-migration-patterns-by-workload-ibm-pattern-list"></a>

**Topics**
+ [Migre una base de datos Db2 de Amazon EC2 a Aurora compatible con MySQL mediante AWS DMS](migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.md)
+ [Migre Db2 for LUW a Amazon EC2 mediante el envío de registros para reducir el tiempo de interrupción](migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.md)
+ [Migración de Db2 para LUW a Amazon EC2 con recuperación de desastres de alta disponibilidad](migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.md)
+ [Migre de IBM Db2 en Amazon EC2 a Aurora compatible con PostgreSQL mediante AWS DMS y AWS SCT](migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.md)
+ [Migre de IBM WebSphere Application Server a Apache Tomcat en Amazon EC2](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)

# Microsoft
<a name="migration-migration-patterns-by-workload-microsoft-pattern-list"></a>

**Topics**
+ [Acelere el descubrimiento y la migración de las cargas de trabajo de Microsoft a AWS](accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.md)
+ [Cambie las aplicaciones de Python y Perl para que admitan la migración de bases de datos de Microsoft SQL Server a una edición compatible con PostgreSQL de Amazon Aurora](change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.md)
+ [Cree CloudFormation plantillas de AWS para las tareas de AWS DMS con Microsoft Excel y Python](create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python.md)
+ [Exportación de una base de datos de Microsoft SQL Server a Amazon S3 mediante AWS DMS](export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms.md)
+ [Implemente SHA1 el hash para los datos de PII al migrar de SQL Server a PostgreSQL](implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.md)
+ [Incorpore y migre instancias de EC2 Windows a una cuenta de AWS Managed Services](ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.md)
+ [Migración de una cola de mensajes de Microsoft Azure Service Bus a Amazon SQS](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [Migre una base de datos de Microsoft SQL Server de Amazon EC2 a Amazon DocumentDB mediante AWS DMS](migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms.md)
+ [Migración de una base de datos de Microsoft SQL Server a Aurora MySQL mediante AWS DMS y AWS SCT](migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct.md)
+ [Migración de una aplicación .NET de Microsoft Azure App Service a AWS Elastic Beanstalk](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [Migre una base de datos local de Microsoft SQL Server a Amazon EC2](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2.md)
+ [Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon RDS para SQL Server](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server.md)
+ [Migración de bases de datos en las instalaciones de Microsoft SQL Server a Amazon RDS para SQL Server mediante servidores vinculados](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers.md)
+ [Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon RDS para SQL Server mediante métodos nativos de copia de seguridad y restauración](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.md)
+ [Migración de una base de datos de Microsoft SQL Server en las instalaciones a Amazon Redshift mediante AWS DMS](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms.md)
+ [Migración de una base de datos en las instalaciones de Microsoft SQL Server a Amazon Redshift mediante agentes de extracción de datos de AWS SCT](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.md)
+ [Migre una base de datos local de Microsoft SQL Server a Microsoft SQL Server en Amazon EC2 con Linux](migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux.md)
+ [Migración de datos de Microsoft Azure Blob a Amazon S3 mediante Rclone](migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.md)
+ [Migre aplicaciones alojadas en IIS a Amazon EC2 mediante appcmd.exe](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [Migre una base de datos local de Microsoft SQL Server a Amazon EC2 mediante Application Migration Service](migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.md)
+ [Migración de los certificados SSL de Windows a un equilibrador de carga de aplicación mediante ACM](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [Vuelva a alojar las cargas de trabajo en las instalaciones en la nube de AWS: lista de verificación de migración](rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist.md)
+ [Resolver los errores de conexión después de migrar Microsoft SQL Server a la nube de AWS](resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.md)
+ [Configure una infraestructura Multi-AZ para una FCI Always On de SQL Server mediante Amazon FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)

# N/A
<a name="migration-migration-patterns-by-workload-notapplicable-pattern-list"></a>

**Topics**
+ [Cree un proceso de aprobación para las solicitudes de firewall durante una migración de realojamiento a AWS](create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws.md)

# Código abierto
<a name="migration-migration-patterns-by-workload-open-source-pattern-list"></a>

**Topics**
+ [Crear usuarios y roles de aplicaciones en Aurora compatible con PostgreSQL](create-application-users-and-roles-in-aurora-postgresql-compatible.md)
+ [Migre Amazon RDS for Oracle a Amazon RDS for PostgreSQL con y utilizando y AWS SCT AWS DMS AWS CLI CloudFormation](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.md)
+ [Migración de una base de datos de MariaDB en las instalaciones hasta Amazon RDS para MariaDB mediante herramientas nativas](migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools.md)
+ [Migración de una base de datos MySQL en las instalaciones a Amazon RDS para MySQL](migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql.md)
+ [Migración de una base de datos de MySQL en las instalaciones a Aurora MySQL](migrate-an-on-premises-mysql-database-to-aurora-mysql.md)
+ [Migración de una base de datos PostgreSQL en las instalaciones a Aurora PostgreSQL](migrate-an-on-premises-postgresql-database-to-aurora-postgresql.md)
+ [Migrar una base de datos de Couchbase Server a Amazon EC2](migrate-couchbase-server-ec2.md)
+ [Migre de IBM WebSphere Application Server a Apache Tomcat en Amazon EC2 con Auto Scaling](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [Migre de PostgreSQL en EC2 Amazon a Amazon RDS para PostgreSQL mediante pglogical](migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.md)
+ [Migración de aplicaciones Java locales en las instalaciones a AWS mediante AWS App2Container](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [Migre bases de datos MySQL locales a Aurora MySQL mediante Percona, XtraBackup Amazon EFS y Amazon S3](migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.md)
+ [Migración de tablas externas de Oracle a Amazon Aurora compatible con PostgreSQL](migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible.md)
+ [Reinicie el AWS Replication Agent automáticamente sin deshabilitarlo SELinux después de reiniciar un servidor fuente de RHEL](restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server.md)
+ [Transportar bases de datos PostgreSQL entre dos instancias de base de datos de Amazon RDS utilizando pg\$1transport](transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.md)

# Oracle
<a name="migration-migration-patterns-by-workload-oracle-pattern-list"></a>

**Topics**
+ [Convierta VARCHAR2 (1) el tipo de datos de Oracle en un tipo de datos booleano para Amazon Aurora PostgreSQL](convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.md)
+ [Emule Oracle DR mediante una base de datos global de Aurora compatible con PostgreSQL](emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.md)
+ [Migración gradual de Amazon RDS para Oracle a Amazon RDS para PostgreSQL con Oracle SQL Developer y AWS SCT](incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.md)
+ [Cargar archivos BLOB en TEXT mediante la codificación de archivos en Aurora compatible con PostgreSQL](load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.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 de Amazon RDS for Oracle a Cuenta de AWS otra Región de AWS y AWS DMS utilícela para la replicación continua](migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication.md)
+ [Migre una base de datos Oracle local a Amazon EC2 mediante Oracle Data Pump](migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.md)
+ [Migre una base de datos Oracle local a Amazon OpenSearch Service mediante Logstash](migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para MySQL con AWS DMS y AWS SCT](migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para Oracle mediante Oracle Data Pump](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump.md)
+ [Migración de una base de datos de Oracle en las instalaciones a Amazon RDS para PostgreSQL mediante Oracle Bystander y AWS DMS](migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.md)
+ [Migre una base de datos Oracle local a Oracle on Amazon EC2](migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2.md)
+ [Migre una base de datos Oracle de Amazon EC2 a Amazon RDS para MariaDB con AWS DMS y AWS SCT](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct.md)
+ [Migre una base de datos Oracle de Amazon EC2 a Amazon RDS for Oracle mediante AWS DMS](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-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)
+ [Migración de una base de datos de Oracle a Aurora PostgreSQL con AWS DMS y AWS SCT](migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct.md)
+ [Migre una EnterpriseOne base de datos de Oracle JD Edwards a AWS mediante Oracle Data Pump y AWS DMS](migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.md)
+ [Migración de una tabla particionada de Oracle a PostgreSQL mediante AWS DMS](migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms.md)
+ [Migre una PeopleSoft base de datos de Oracle a AWS mediante AWS DMS](migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.md)
+ [Migración de datos de una base de datos de Oracle en las instalaciones a Aurora PostgreSQL](migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql.md)
+ [Migración de de Amazon RDS para Oracle a Amazon RDS para MySQL](migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql.md)
+ [Migración de Oracle 8i o 9i a Amazon RDS para PostgreSQL mediante la vista materializada y AWS DMS](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms.md)
+ [Migre de Oracle 8i o 9i a Amazon RDS para PostgreSQL mediante AWS DMS SharePlex](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms.md)
+ [Migre de Oracle Database a Amazon RDS for PostgreSQL mediante Oracle GoldenGate](migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.md)
+ [Migración de Oracle en Amazon EC2 a Amazon RDS para MySQL con AWS DMS y AWS SCT](migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [Migre de Oracle WebLogic a Apache Tomcat (ToMEE) en Amazon ECS](migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs.md)
+ [Migración de índices basados en funciones de Oracle a PostgreSQL](migrate-function-based-indexes-from-oracle-to-postgresql.md)
+ [Migración de aplicaciones heredadas de Oracle Pro\$1C a ECPG](migrate-legacy-applications-from-oracle-pro-c-to-ecpg.md)
+ [Migración de valores CLOB de Oracle a filas individuales en PostgreSQL en AWS](migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws.md)
+ [Migración de códigos de error de Oracle Database a una base de datos Amazon Aurora compatible con PostgreSQL](migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.md)
+ [Migración de las funciones nativas de Oracle a PostgreSQL mediante extensiones](migrate-oracle-native-functions-to-postgresql-using-extensions.md)
+ [Migre Oracle PeopleSoft a Amazon RDS Custom](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Migración de la funcionalidad ROWIdentificador de Oracle a PostgreSQL en AWS](migrate-oracle-rowid-functionality-to-postgresql-on-aws.md)
+ [Migración de los paquetes pragma SERIALLY\$1REUTILIZABLE de Oracle a PostgreSQL](migrate-oracle-serially-reusable-pragma-packages-into-postgresql.md)
+ [Migración de columnas generadas de forma virtual de Oracle a PostgreSQL](migrate-virtual-generated-columns-from-oracle-to-postgresql.md)
+ [Configure la funcionalidad UTL\$1FILE de Oracle en Aurora compatible con PostgreSQL](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Validar los objetos de la base de datos después de migrar de Oracle a Amazon Aurora PostgreSQL](validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql.md)

# SAP
<a name="migration-migration-patterns-by-workload-sap-pattern-list"></a>

**Topics**
+ [Migración de SAP ASE a Amazon RDS para SQL Server utilizando AWS DMS](migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms.md)
+ [Migre SAP ASE de Amazon EC2 a Amazon Aurora compatible con PostgreSQL mediante AWS SCT y AWS DMS](migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms.md)

# Más patrones
<a name="migration-more-patterns-pattern-list"></a>

**Topics**
+ [Acceda Servicios de AWS desde IBM z/OS instalando el AWS CLI](access-aws-services-from-ibm-z-os-by-installing-aws-cli.md)
+ [Evaluar el rendimiento de las consultas para migrar bases de datos de SQL Server a MongoDB Atlas en AWS](assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws.md)
+ [Automatización de la conmutación por error y la conmutación por recuperación entre regiones mediante DR Orchestrator Framework](automate-cross-region-failover-and-failback-by-using-dr-orchestrator-framework.md)
+ [Automatice las tareas de bases de datos en SQL Server Express en Amazon EC2 mediante un programador AWS Lambda de tareas](automate-database-tasks-in-sql-server-express-edition-running-on-amazon-ec2.md)
+ [Cree un visor de archivos de unidad central avanzada en la nube de AWS](build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.md)
+ [Conéctese a los planos de datos y control del Servicio de Migración de Aplicaciones a través de una red privada](connect-to-application-migration-service-data-and-control-planes-over-a-private-network.md)
+ [Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado](containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.md)
+ [Convertir consultas JSON de Oracle en SQL de bases de datos PostgreSQL](convert-json-oracle-queries-into-postgresql-database-sql.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)
+ [Copie tablas de Amazon DynamoDB entre cuentas mediante AWS Backup](copy-amazon-dynamodb-tables-across-accounts-using-aws-backup.md)
+ [Implemente un clúster de Cassandra en Amazon EC2 con estática privada IPs para evitar el reequilibrio](deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.md)
+ [Implemente aplicaciones de varias pilas mediante AWS CDK con TypeScript](deploy-multiple-stack-applications-using-aws-cdk-with-typescript.md)
+ [Implemente instancias de clústeres de conmutación por error de SQL Server en Amazon EC2 y Amazon FSx mediante Terraform](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Emule las matrices PL/SQL asociativas de Oracle en Amazon Aurora PostgreSQL y Amazon RDS for PostgreSQL](emulate-oracle-plsql-associative-arrays-in-aurora-and-rds-postgresql.md)
+ [Calcule el tamaño del motor de Amazon RDS para una base de datos de Oracle mediante informes de AWR](estimate-the-amazon-rds-engine-size-for-an-oracle-database-by-using-awr-reports.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)
+ [Gestionar bloques anónimos en instrucciones SQL dinámicas en Aurora PostgreSQL](handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql.md)
+ [Identificación automática de las imágenes de contenedor duplicadas al migrar a un repositorio de Amazon ECR](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [Configure un clúster de conmutación por error de Microsoft SQL Server en Amazon EC2 FSx mediante Windows File Server](microsoft-sql-failover-cluster-on-amazon-ec2.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)
+ [Migre sus cargas de trabajo de contenedores de Azure Red Hat OpenShift (ARO) a Red Hat OpenShift Service en AWS (ROSA)](migrate-container-workloads-from-aro-to-rosa.md)
+ [Migre de Oracle 8i o 9i a Amazon RDS para Oracle con AWS DMS SharePlex](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-oracle-using-shareplex-and-aws-dms.md)
+ [Migre el grupo de disponibilidad Always On de Microsoft SQL Server mediante AWS Application Migration Service](migrate-microsoft-sql-server-always-on-group-using-mgn.md)
+ [Migración de funciones y procedimientos de Oracle con más de 100 argumentos a PostgreSQL](migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql.md)
+ [Migración de SAP HANA a AWS mediante SAP HSR con el mismo nombre de host](migrate-sap-hana-to-aws-using-sap-hsr-with-the-same-hostname.md)
+ [Migración de SQL Server a AWS mediante grupos de disponibilidad distribuidos](migrate-sql-server-to-aws-using-distributed-availability-groups.md)
+ [Modernice e implemente aplicaciones de mainframe con Terraform AWS Transform](modernize-mainframe-app-transform-terraform.md)
+ [Modernizar las cargas de trabajo de impresión en línea de mainframe en AWS mediante Micro Focus Enterprise Server y LRS VPSX/MFI](modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Modernice la administración de la producción del mainframe AWS mediante Rocket Enterprise Server y LRS X PageCenter](modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.md)
+ [Cómo modificar los encabezados HTTP al migrar de F5 a un equilibrador de carga de aplicación en AWS](modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-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)
+ [Análisis de las dependencias de los objetos para realizar migraciones parciales de bases de datos de Oracle a PostgreSQL](multilevel-object-analysis-for-database-migration-from-oracle-to-postgresql.md)
+ [Configure una CI/CD canalización para la migración de bases de datos mediante Terraform](set-up-ci-cd-pipeline-for-db-migration-with-terraform.md)
+ [Configure la recuperación ante desastres para Oracle JD Edwards EnterpriseOne con AWS Elastic Disaster Recovery](set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.md)
+ [Simplifique la administración de certificados privados mediante AWS Private CA y AWS RAM](simplify-private-certificate-management-by-using-aws-private-ca-and-aws-ram.md)
+ [Transfiera z/OS datos de Db2 a gran escala a Amazon S3 en archivos CSV](transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.md)
+ [Transforma Easytrieve a idiomas modernos mediante el uso personalizado AWS Transform](transform-easytrieve-modern-languages.md)

# Modernización
<a name="modernization-pattern-list"></a>

**Topics**
+ [Archivar automáticamente los elementos en Amazon S3 con DynamoDB TTL](automatically-archive-items-to-amazon-s3-using-dynamodb-ttl.md)
+ [Cree una arquitectura sin servidor multiusuario en Amazon Service OpenSearch](build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.md)
+ [Implemente aplicaciones de varias pilas mediante AWS CDK con TypeScript](deploy-multiple-stack-applications-using-aws-cdk-with-typescript.md)
+ [Automatice la implementación de aplicaciones anidadas mediante SAM de AWS](automate-deployment-of-nested-applications-using-aws-sam.md)
+ [Implemente el aislamiento de inquilinos de SaaS para Amazon S3 mediante una máquina expendedora de AWS Lambda fichas](implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine.md)
+ [Implementar el patrón saga sin servidor mediante AWS Step Functions](implement-the-serverless-saga-pattern-by-using-aws-step-functions.md)
+ [Gestión de las aplicaciones de contenedores en las instalaciones mediante la configuración de Amazon ECS Anywhere con AWS CDK](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [Modernizar las aplicaciones de ASP.NET Web Forms en AWS](modernize-asp-net-web-forms-applications-on-aws.md)
+ [Incorporación de inquilinos en la arquitectura SaaS para el modelo de silo mediante C\$1 y AWS CDK](tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.md)
+ [Descomponga monolitos en microservicios mediante CQRS y abastecimiento de eventos](decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.md)
+ [Más patrones](modernization-more-patterns-pattern-list.md)

# Archivar automáticamente los elementos en Amazon S3 con DynamoDB TTL
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl"></a>

*Tabby Ward, Amazon Web Services*

## Resumen
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-summary"></a>

Este patrón proporciona los pasos para eliminar datos antiguos de una tabla de Amazon DynamoDB y archivarlos en un bucket de Amazon Simple Storage Service (Amazon S3) en Amazon Web Services (AWS) sin tener que gestionar una flota de servidores. 

Este patrón utiliza el Tiempo de vida (TTL) de Amazon DynamoDB para eliminar automáticamente los elementos antiguos y Amazon DynamoDB Streams para capturar los elementos de TTL que han vencido. A continuación, conecta DynamoDB Streams a AWS Lambda, que ejecuta el código sin aprovisionar ni administrar ningún servidor. 

Cuando se añaden nuevos elementos al flujo de DynamoDB, se inicia la función de Lambda y escribe los datos en un flujo de entrega de Amazon Data Firehose. Firehose proporciona una solución sencilla y totalmente administrada para cargar los datos como un archivo en Amazon S3.

DynamoDB se utiliza a menudo para almacenar datos de serie temporal, como datos de secuencias de clics de páginas web o datos de Internet de las cosas (IoT) procedentes de sensores y dispositivos conectados. En lugar de eliminar los elementos a los que se accede con menos frecuencia, muchos clientes prefieren archivarlos con fines de auditoría. TTL simplifica este archivado, ya que elimina automáticamente los elementos en función del atributo de marca de tiempo. 

Los elementos que TTL ha eliminado pueden identificarse en DynamoDB Streams, que captura una secuencia en orden cronológico de las modificaciones de los elementos y almacena la secuencia en un registro durante 24 horas como máximo. Una función de Lambda puede consumir estos datos y archivarlos en un bucket de Amazon S3 para reducir el costo de almacenamiento. Para reducir aún más los costes, se pueden crear [reglas de ciclo de vida de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) para hacer la transición automática de los datos (tan pronto como se creen) a las clases de [almacenamiento](https://aws.amazon.com/s3/storage-classes/) de menor coste.

## Requisitos previos y limitaciones
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ [Interfaz de la línea de comandos de AWS (AWS CLI) 1.7 o posterior](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html), instalada y configurada en macOS, Linux o Windows.
+ [Python 3.7](https://www.python.org/downloads/release/python-370/) o versiones posteriores.
+ [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html), instalado y configurado. Si Boto3 no está instalado, ejecute el comando `python -m pip install boto3` para instalarlo.

## Arquitectura
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-architecture"></a>

**Pila de tecnología**
+ Amazon DynamoDB
+ Amazon DynamoDB Streams
+ Amazon Data Firehose
+ AWS Lambda
+ Amazon S3

![\[Proceso de cuatro pasos desde DynamoDB hasta el bucket de S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9dbc833f-cf3c-4574-8f09-d0b81134fe41/images/50d9da65-5398-4a99-bc8f-58afc80e9d7b.png)


1. TTL elimina los elementos.

1. El activador de flujos de DynamoDB invoca la función de procesador de flujos Lambda.

1. La función de Lambda coloca los registros en el flujo de entrega de Firehose en formato de lote.

1. Los registros de datos se archivan en el bucket de S3.

## Tools (Herramientas)
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-tools"></a>
+ [AWS CLI:](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) la interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta unificada para administrar los servicios de AWS.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html): Amazon DynamoDB es una base de datos de documentos y valores clave que ofrece un rendimiento de milisegundos de un solo dígito a cualquier escala.
+ [Tiempo de vida (TTL) de Amazon DynamoDB:](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks-ttl.html) TTL de Amazon DynamoDB le permite definir una marca temporal por elemento para determinar cuándo ya no se necesita un elemento.
+ [Amazon DynamoDB Streams:](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Types_Amazon_DynamoDB_Streams.html) Amazon DynamoDB Streams captura una secuencia en orden cronológico de las modificaciones de los elementos en una tabla de DynamoDB y almacena esta información en un registro durante 24 horas como máximo.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html): Amazon Data Firehose es la forma más sencilla de cargar datos de streaming con fiabilidad en lagos de datos, almacenes de datos y servicios de análisis.
+ [AWS Lambda:](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) AWS Lambda ejecuta código sin necesidad de aprovisionar ni administrar servidores. Solo paga por el tiempo de computación que consume.
+ [Amazon S3:](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) 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.

**Código**

El código de este patrón está disponible en los [elementos de GitHub Archivar en S3 mediante el repositorio TTL de DynamoDB](https://github.com/aws-samples/automatically-archive-items-to-s3-using-dynamodb-ttl).

## Epics
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-epics"></a>

### Configurar una tabla de DynamoDB, un TTL y una transmisión de DynamoDB
<a name="set-up-a-dynamodb-table-ttl-and-a-dynamodb-stream"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una tabla de DynamoDB. | Utilice la CLI de AWS para crear una tabla en DynamoDB llamada `Reservation`. Seleccione una unidad de capacidad de lectura (RCU) y una unidad de capacidad de escritura (WCU) al azar, y asigne a su tabla dos atributos: `ReservationID` y `ReservationDate`. <pre>aws dynamodb create-table \<br />--table-name Reservation \<br />--attribute-definitions AttributeName=ReservationID,AttributeType=S AttributeName=ReservationDate,AttributeType=N \<br />--key-schema AttributeName=ReservationID,KeyType=HASH AttributeName=ReservationDate,KeyType=RANGE \<br />--provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=100 </pre>`ReservationDate` es una marca de tiempo epoch que se utilizará para activar el TTL. | Arquitecto de la nube, desarrollador de aplicaciones | 
| Active el TTL de DynamoDB. | Utilice la CLI de AWS para activar el TTL de DynamoDB para el atributo `ReservationDate`.<pre>aws dynamodb update-time-to-live \<br />--table-name Reservation\<br />  --time-to-live-specification Enabled=true,AttributeName=ReservationDate</pre> | Arquitecto de la nube, desarrollador de aplicaciones | 
| Active un flujo de DynamoDB. | Utilice la CLI de AWS para activar un flujo de DynamoDB para la tabla `Reservation` mediante el tipo de flujo `NEW_AND_OLD_IMAGES`. <pre>aws dynamodb update-table \<br />--table-name Reservation \<br />  --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES</pre>Este flujo contendrá registros de los elementos nuevos, los elementos actualizados, los elementos eliminados y los elementos eliminados por TTL. Los registros de los elementos que se eliminan mediante TTL incluyen un atributo de metadatos adicional para distinguirlos de los elementos que se eliminaron manualmente. El campo `userIdentity` para eliminaciones de TTL indica que el servicio DynamoDB realizó la acción de eliminación. En este patrón, solo se archivan los elementos eliminados por TTL, pero solo puede archivar los registros donde `eventName` sea `REMOVE` y `userIdentity` incluya `principalId` igual a `dynamodb.amazonaws.com`. | Arquitecto de la nube, desarrollador de aplicaciones | 

### Crear y configurar un bucket de S3
<a name="create-and-configure-an-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | Utilice la CLI de AWS para crear un bucket de S3 de destino en su región de AWS, `us-east-1` sustituyéndolo por su región y amzn-s3- demo-destination-bucket por el nombre de su bucket. <pre>aws s3api create-bucket \<br />--bucket amzn-s3-demo-destination-bucket \<br />--region us-east-1</pre>Asegúrese de que el nombre del bucket de S3 sea único a nivel mundial, ya que todas las cuentas de AWS comparten el espacio de nombres. | Arquitecto de la nube, desarrollador de aplicaciones | 
| Cree una política de ciclo de vida de 30 días para el bucket de S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automatically-archive-items-to-amazon-s3-using-dynamodb-ttl.html) | Arquitecto de la nube, desarrollador de aplicaciones | 

### Creación de un flujo de entrega de Firehose
<a name="create-a-akf-delivery-stream"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree y configure un flujo de entrega de Firehose. | Descargue y edite el ejemplo de `CreateFireHoseToS3.py` código del repositorio. GitHub  Este código está escrito en Python y muestra cómo crear un flujo de entrega de Firehose y un rol de AWS Identity and Access Management (IAM). El rol de IAM tiene una política que Firehose puede utilizar para escribir en el bucket de S3 de destino.Para ejecutar el script, utilice los siguientes comandos y argumentos de línea de comando:Argumento 1 = `<Your_S3_bucket_ARN>`, que es el nombre de recurso de Amazon (ARN) del bucket que creó con anterioridad.Argumento 2= su nombre de Firehose (este piloto utiliza `firehose_to_s3_stream`).Argumento 3 = su nombre de rol de IAM (Este piloto utiliza `firehose_to_s3`).<pre>python CreateFireHoseToS3.py <Your_S3_Bucket_ARN> firehose_to_s3_stream firehose_to_s3</pre>Si el rol de IAM especificado no existe, el script creará un rol de asunción con una política de relaciones de confianza, así como una política que conceda suficientes permisos de Amazon S3. Para ver ejemplos de estas políticas, consulte la sección *Información adicional*. | Arquitecto de la nube, desarrollador de aplicaciones | 
| Verifique el flujo de entrega de Firehose. | Describa el flujo de entrega de Firehose mediante la AWS CLI para verificar si el flujo de entrega se creó correctamente.<pre>aws firehose describe-delivery-stream --delivery-stream-name firehose_to_s3_stream </pre> | Arquitecto de la nube, desarrollador de aplicaciones | 

### Crear una función de Lambda para procesar el flujo de entrega de Firehose
<a name="create-a-lambda-function-to-process-the-akf-delivery-stream"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una política de confianza para la función de Lambda. | Cree un archivo de política de confianza con la siguiente información.<pre> {<br />     "Version": "2012-10-17",		 	 	 <br />     "Statement": [<br />      {<br />          "Effect": "Allow",<br />          "Principal": {<br />              "Service": "lambda.amazonaws.com"<br />           },<br />           "Action": "sts:AssumeRole"<br />      }<br />    ]<br />  } </pre>Esto le concederá a su función permiso para acceder a los recursos de AWS. | Arquitecto de la nube, desarrollador de aplicaciones | 
| Cree un rol de ejecución para la función de Lambda. | Para crear el rol de ejecución, ejecute el siguiente código.<pre>aws iam create-role --role-name lambda-ex --assume-role-policy-document file://TrustPolicy.json</pre> | Arquitecto de la nube, desarrollador de aplicaciones | 
| Agregue permisos al rol.  | Para agregar permisos al rol, use el comando `attach-policy-to-role`.<pre>aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole<br />aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole<br />aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/AmazonKinesisFirehoseFullAccess<br />aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/IAMFullAccess </pre> | Arquitecto de la nube, desarrollador de aplicaciones | 
| Creación de una función de Lambda. | Ejecute el siguiente comando para comprimir el archivo `LambdaStreamProcessor.py` del repositorio de código.<pre>zip function.zip LambdaStreamProcessor.py</pre>Cuando cree la función de Lambda, necesitará el ARN del rol de ejecución de Lambda. Para obtener el ARN, ejecute el siguiente código.<pre>aws iam get-role \<br />--role-name lambda-ex </pre>Para crear la función de Lambda, ejecute el siguiente código.<pre># Review the environment variables and replace them with your values.<br /><br />aws lambda create-function --function-name LambdaStreamProcessor \<br />--zip-file fileb://function.zip --handler LambdaStreamProcessor.handler --runtime python3.8 \<br />--role {Your Lamda Execution Role ARN}\<br />  --environment Variables="{firehose_name=firehose_to_s3_stream,bucket_arn = <Your_S3_bucket_ARN>,iam_role_name = firehose_to_s3, batch_size=400}"</pre> | Arquitecto de la nube, desarrollador de aplicaciones | 
| Configure el desencadenador de la función de Lambda. | Utilice la CLI de AWS para configurar el desencadenador (DynamoDB Streams), que invoca la función de Lambda. El tamaño del lote de 400 es para evitar problemas de simultaneidad de Lambda.<pre>aws lambda create-event-source-mapping --function-name LambdaStreamProcessor \<br />--batch-size 400 --starting-position LATEST \<br />--event-source-arn <Your Latest Stream ARN From DynamoDB Console></pre> | Arquitecto de la nube, desarrollador de aplicaciones | 

### Probar la funcionalidad
<a name="test-the-functionality"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Añada elementos con marcas de tiempo vencidas a la tabla de Reserva. | Para probar la funcionalidad, añada a la tabla `Reservation` los elementos con marcas de tiempo epoch vencidos. El TTL eliminará automáticamente los elementos en función de la marca de tiempo. La función de Lambda se inicia con las actividades de DynamoDB Stream y filtra el evento para identificar la actividad `REMOVE` o los elementos eliminados. A continuación, permite colocar los registros en el flujo de entrega de Firehose en formato de lote.El flujo de entrega de Firehose transfiere los elementos a un bucket de S3 de destino con el prefijo `firehosetos3example/year=current year/month=current month/ day=current day/hour=current hour/`.Para optimizar la recuperación de datos, configure Amazon S3 con `Prefix` y `ErrorOutputPrefix` que se detallan en la sección *Información adicional*. | Arquitecto de la nube  | 

### Limpiar los recursos
<a name="clean-up-the-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine todos los recursos. | Elimine todos los recursos para asegurarse de que no se le cobre por ningún servicio que no utilice.   | Arquitecto de la nube, desarrollador de aplicaciones | 

## Recursos relacionados
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-resources"></a>
+ [Administración del ciclo de vida del almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-lifecycle.html)
+ [Clases de almacenamiento de Amazon S3](https://aws.amazon.com/s3/storage-classes/)
+ [Documentación de AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)

## Información adicional
<a name="automatically-archive-items-to-amazon-s3-using-dynamodb-ttl-additional"></a>

**Creación y configuración de un flujo de entrega deFirehose: ejemplos de políticas**

*Documento de ejemplo de política de relaciones de confianza de Firehose*

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

*Ejemplos de políticas de permisos de S3*

```
s3_access = {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "",
                "Effect": "Allow",
                "Action": [
                    "s3:AbortMultipartUpload",
                    "s3:GetBucketLocation",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:ListBucketMultipartUploads",
                    "s3:PutObject"
                ],
                "Resource": [
                    "{your s3_bucket ARN}/*",
                    "{Your s3 bucket ARN}"
                ]
            }
        ]
    }
```

**Probar la funcionalidad: configuración de Amazon S3**

Se elige la configuración de Amazon S3 con el siguiente `Prefix` y `ErrorOutputPrefix` para optimizar la recuperación de datos. 

*Prefijo*

```
firehosetos3example/year=! {timestamp: yyyy}/month=! {timestamp:MM}/day=! {timestamp:dd}/hour=!{timestamp:HH}/
```

Firehose primero crea una carpeta base llamada `firehosetos3example` directamente debajo del bucket de S3. A continuación, evalúa las expresiones`!{timestamp:yyyy}`, `!{timestamp:MM}``!{timestamp:dd}`, y `!{timestamp:HH}` para indicar el año, el mes, el día y la hora con el [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)formato Java.

Por ejemplo, una marca de tiempo de llegada aproximada de 1604683577 en tiempo de época de Unix se evalúa como `year=2020`, `month=11`, `day=06` y `hour=05`. Por lo tanto, se evalúa en `firehosetos3example/year=2020/month=11/day=06/hour=05/` la ubicación de Amazon S3 en la que se entregan los registros de datos.

*ErrorOutputPrefix*

```
firehosetos3erroroutputbase/!{firehose:random-string}/!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd}/
```

Los `ErrorOutputPrefix` generan una carpeta base llamada `firehosetos3erroroutputbase` directamente debajo del bucket de S3. La expresión `!{firehose:random-string}` se evalúa como una cadena aleatoria de 11 caracteres, como `ztWxkdg3Thg`. Se podría evaluar como `firehosetos3erroroutputbase/ztWxkdg3Thg/processing-failed/2020/11/06/` la ubicación de un objeto de Amazon S3 en la que se entregan los registros fallidos.

# Cree una arquitectura sin servidor multiusuario en Amazon Service OpenSearch
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service"></a>

*Tabby Ward y Nisha Gambhir, Amazon Web Services*

## Resumen
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-summary"></a>

Amazon OpenSearch Service es un servicio gestionado que facilita la implementación, el funcionamiento y el escalado de Elasticsearch, un popular motor de búsqueda y análisis de código abierto. OpenSearch El servicio ofrece una búsqueda de texto libre, así como una recopilación y un panel de control prácticamente en tiempo real para la transmisión de datos, como registros y métricas. 

Los proveedores de software como servicio (SaaS) suelen utilizar el OpenSearch Servicio para abordar una amplia gama de casos de uso, como obtener información sobre los clientes de forma escalable y segura y, al mismo tiempo, reducir la complejidad y el tiempo de inactividad.

El uso del OpenSearch servicio en un entorno multiusuario introduce una serie de consideraciones que afectan a la partición, el aislamiento, la implementación y la administración de su solución SaaS. Los proveedores de SaaS deben considerar cómo escalar de manera efectiva sus clústeres de Elasticsearch con cargas de trabajo en constante cambio. También deben tener en cuenta cómo pueden afectar la estratificación y el ruido aledaño a su modelo de particionamiento.

Este patrón revisa los modelos empleados para representar y aislar los datos de los usuarios con constructos de Elasticsearch. Además, el patrón se centra en una arquitectura de referencia sencilla y sin servidor como ejemplo para demostrar la indexación y la búsqueda mediante OpenSearch Service en un entorno multiusuario. Implementa el modelo de particionamiento de datos de grupos, que comparte un mismo índice entre todos los usuarios y, al mismo tiempo, mantiene el aislamiento de los datos de los mismos. Este patrón utiliza los siguientes AWS servicios: Amazon API Gateway AWS Lambda, Amazon Simple Storage Service (Amazon S3) y Service. OpenSearch 

Para obtener más información sobre el modelo de grupo y otros modelos de particionamiento de datos, consulte la sección de [Información adicional](#build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-additional).

## Requisitos previos y limitaciones
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ [AWS Command Line Interface (AWS CLI) versión 2.x](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), instalada y configurada en macOS, Linux o Windows
+ [Python versión 3.9](https://www.python.org/downloads/release/python-3921/)
+ [pip3](https://pip.pypa.io/en/stable/): el código fuente de Python se proporciona como un archivo .zip para implementarlo en una función de Lambda. Si quiere usar el código localmente o personalizarlo, siga estos pasos para desarrollar y recompilar el código fuente:

  1. Genere el archivo `requirements.txt` ejecutando el siguiente comando en el mismo directorio que los scripts de Python: `pip3 freeze > requirements.txt`

  1. Instale las dependencias: `pip3 install -r requirements.txt`

**Limitaciones**
+ Este código se ejecuta en Python y, actualmente, no es compatible con otros lenguajes de programación. 
+ La aplicación de ejemplo no incluye compatibilidad AWS entre regiones ni con la recuperación ante desastres (DR). 
+ Este patrón sólo pretende servir de ejemplo. No está pensado para ser utilizado en un entorno de producción.

## Arquitectura
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-architecture"></a>

El siguiente diagrama ilustra la arquitectura de alto nivel de este patrón. La arquitectura incluye lo siguiente:
+ Lambda para indexar y consultar el contenido 
+ OpenSearch Servicio para realizar búsquedas 
+ API Gateway para proporcionar a la API interacción con el usuario
+ Amazon S3, para almacenar datos sin procesar (no indexados)
+ Amazon CloudWatch supervisará los registros
+ AWS Identity and Access Management (IAM) para crear las funciones y políticas de los inquilinos

![\[Arquitectura multiusuario sin servidor de alto nivel\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/1a8501e7-0776-4aca-aed3-28e3ada1d15d.png)


**Automatización y escala**

Para simplificar, el patrón se utiliza AWS CLI para aprovisionar la infraestructura e implementar el código de muestra. Puede crear una CloudFormation plantilla o AWS Cloud Development Kit (AWS CDK) scripts para automatizar el patrón.

## Tools (Herramientas)
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-tools"></a>

**Servicios de AWS**
+ [AWS CLI](https://aws.amazon.com/cli/)es una herramienta unificada para administrar Servicios de AWS los recursos mediante el uso de comandos en el shell de la línea de comandos.
+ [Lambda](https://aws.amazon.com/lambda/) es un servicio informático 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.
+ [API Gateway](https://aws.amazon.com/api-gateway/) es Servicio de AWS para crear, publicar, mantener, monitorear y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [Amazon S3](https://aws.amazon.com/s3/) es un servicio de almacenamiento de objetos que permite almacenar y recuperar cualquier cantidad de información en cualquier momento y desde cualquier lugar de la web.
+ OpenSearch El [servicio](https://aws.amazon.com/opensearch-service/) es un servicio totalmente gestionado que facilita la implementación, la protección y la ejecución de Elasticsearch a escala y de forma rentable.

**Código**

El archivo adjunto incluye archivos de muestra para este patrón. Entre ellos se incluyen:
+ `index_lambda_package.zip`— La función Lambda para indexar datos en OpenSearch Service mediante el modelo de grupo.
+ `search_lambda_package.zip`— La función Lambda para buscar datos en OpenSearch Service.
+ `Tenant-1-data` — Muestra de datos sin procesar (no indexados) para Usuario-1.
+ `Tenant-2-data`: muestra de datos sin procesar (no indexados) para Usuario-2.

**importante**  
Las historias de este patrón incluyen ejemplos de AWS CLI comandos formateados para Unix, Linux y macOS. Para Windows, sustituya la barra diagonal invertida (\$1) utilizada como carácter de continuación de Unix al final de cada línea por el signo de intercalación (^).

**nota**  
En AWS CLI los comandos, sustituya todos los valores entre los corchetes angulares (<>) por los valores correctos.

## Epics
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-epics"></a>

### Creación y configuración de un bucket de S3
<a name="create-and-configure-an-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | Cree un bucket de S3 en su. Región de AWS Este bucket contendrá los datos de usuarios no indexados de la aplicación de muestra. Asegúrese de que el nombre del bucket de S3 sea único a nivel mundial, ya que todos comparten el espacio de nombres. Cuentas de AWSPara crear un bucket de S3, puedes usar el comando AWS CLI [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html) de la siguiente manera:<pre>aws s3api create-bucket \<br />  --bucket <tenantrawdata> \<br />  --region <your-AWS-Region></pre>donde `tenantrawdata` es el nombre de bucket de S3. (Puede usar cualquier nombre único que siga las [pautas de nomenclatura de buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)). | Arquitecto de la nube, administrador de la nube | 

### Cree y configure un clúster de Elasticsearch
<a name="create-and-configure-an-elasticsearch-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un dominio de OpenSearch servicio. | Ejecute el AWS CLI [create-elasticsearch-domain](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/es/create-elasticsearch-domain.html)comando para crear un dominio OpenSearch de servicio:<pre>aws es create-elasticsearch-domain \<br />  --domain-name vpc-cli-example \<br />  --elasticsearch-version 7.10 \<br />  --elasticsearch-cluster-config InstanceType=t3.medium.elasticsearch,InstanceCount=1 \<br />  --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=10 \<br />  --domain-endpoint-options "{\"EnforceHTTPS\": true}" \<br />  --encryption-at-rest-options "{\"Enabled\": true}" \<br />  --node-to-node-encryption-options "{\"Enabled\": true}" \<br />  --advanced-security-options "{\"Enabled\": true, \"InternalUserDatabaseEnabled\": true, \<br />    \"MasterUserOptions\": {\"MasterUserName\": \"KibanaUser\", \<br />    \"MasterUserPassword\": \"NewKibanaPassword@123\"}}" \<br />  --vpc-options "{\"SubnetIds\": [\"<subnet-id>\"], \"SecurityGroupIds\": [\"<sg-id>\"]}" \<br />  --access-policies "{\"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \ <br />    \"Principal\": {\"AWS\": \"*\" }, \"Action\":\"es:*\", \<br />    \"Resource\": \"arn:aws:es:<region>:<account-id>:domain\/vpc-cli-example\/*\" } ] }"</pre>El número de instancias está establecido en 1, ya que el dominio se usa para realizar pruebas. Debe habilitar un control de acceso detallado mediante el parámetro `advanced-security-options`, ya que los detalles no se pueden cambiar una vez creado el dominio. Este comando crea un nombre de usuario maestro (`KibanaUser`) y una contraseña que le permitirá iniciar sesión en la consola de Kibana.Como el dominio forma parte de una nube privada virtual (VPC), debe asegurarse de poder acceder a la instancia de Elasticsearch especificando la política de acceso que va a usar.Para obtener más información, consulta Cómo [lanzar tus dominios de Amazon OpenSearch Service dentro de una VPC](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html) en la AWS documentación. | Arquitecto de la nube, administrador de la nube | 
| Instale un host bastión. | Configura una instancia Windows de Amazon Elastic Compute Cloud (Amazon EC2) como host bastión para acceder a la consola de Kibana. El grupo de seguridad de Elasticsearch debe permitir el tráfico del grupo de EC2 seguridad de Amazon. Para obtener instrucciones, consulte la entrada del blog Cómo [controlar el acceso a la red a las EC2 instancias mediante un servidor Bastion](https://aws.amazon.com/blogs/security/controlling-network-access-to-ec2-instances-using-a-bastion-server/).Cuando se haya configurado el host bastión y tenga disponible el grupo de seguridad asociado a la instancia, utilice el AWS CLI [authorize-security-group-ingress](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/authorize-security-group-ingress.html)comando para añadir permiso al grupo de seguridad de Elasticsearch a fin de permitir el puerto 443 del grupo de seguridad de Amazon EC2 (host bastión).<pre>aws ec2 authorize-security-group-ingress \<br />  --group-id <SecurityGroupIdfElasticSearch> \ <br />  --protocol tcp \<br />  --port 443 \<br />  --source-group <SecurityGroupIdfBashionHostEC2></pre> | Arquitecto de la nube, administrador de la nube | 

### Crear y configurar la función de índice de Lambda
<a name="create-and-configure-the-lam-index-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Para crear el rol de ejecución de Lambda | Ejecute el comando AWS CLI [create-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html) para conceder a la función de índice Lambda acceso a los recursos y a los recursos: Servicios de AWS <pre>aws iam create-role \<br />  --role-name index-lambda-role \<br />  --assume-role-policy-document file://lambda_assume_role.json</pre>donde `lambda_assume_role.json` es un documento JSON que concede permisos de `AssumeRole` a la función de Lambda, de la siguiente manera:<pre>{<br />     "Version": "2012-10-17",		 	 	 <br />     "Statement": [<br />         {<br />             "Effect": "Allow",<br />             "Principal": {<br />                 "Service": "lambda.amazonaws.com"<br />               },<br />             "Action": "sts:AssumeRole"<br />         }<br />     ]<br /> }</pre> | Arquitecto de la nube, administrador de la nube | 
| Adjunte políticas gestionadas al rol de Lambda. | Ejecute el AWS CLI [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)comando para adjuntar las políticas administradas al rol creado en el paso anterior. Estas dos políticas otorgan al rol permisos para crear una interfaz de red elástica y escribir CloudWatch registros en Logs.<pre>aws iam attach-role-policy \<br />  --role-name index-lambda-role \<br />  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole<br /><br />aws iam attach-role-policy \<br />  --role-name index-lambda-role \<br />  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole </pre> | Arquitecto de la nube, administrador de la nube | 
| Cree una política para dar permisos a la función de índice de Lambda de modo que pueda leer los objetos de S3. | Ejecute el comando AWS CLI [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) para dar `s3:GetObject` permiso a la función de índice de Lambda para leer los objetos del bucket de S3:<pre>aws iam create-policy \<br />  --policy-name s3-permission-policy \<br />  --policy-document file://s3-policy.json</pre>El archivo `s3-policy.json` es un documento JSON que se muestra a continuación y que concede permisos de `s3:GetObject` para permitir el acceso de lectura a los objetos de S3. Si ha usado un nombre diferente al crear el bucket de S3, proporcione el nombre de bucket correcto en sección de `Resource `:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />           "Effect": "Allow",<br />           "Action": "s3:GetObject",<br />           "Resource": "arn:aws:s3:::<tenantrawdata>/*"<br />        }<br />    ]<br />}</pre> | Arquitecto de la nube, administrador de la nube | 
| Adjunte la política de permisos de Amazon S3 al rol de ejecución de Lambda. | Ejecute el AWS CLI [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)comando para adjuntar la política de permisos de Amazon S3 que creó en el paso anterior a la función de ejecución de Lambda:<pre>aws iam attach-role-policy \<br />  --role-name index-lambda-role \<br />  --policy-arn <PolicyARN></pre>donde `PolicyARN` es el Nombre de recurso de Amazon (ARN) de la política de permisos de Amazon S3. Puede obtener este valor del resultado del comando anterior. | Arquitecto de la nube, administrador de la nube | 
| Cree la función de indexar de Lambda. | Ejecute el comando AWS CLI [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) para crear la función de índice Lambda, que accederá al servicio: OpenSearch <pre>aws lambda create-function \<br />  --function-name index-lambda-function \<br />  --zip-file fileb://index_lambda_package.zip \<br />  --handler lambda_index.lambda_handler \<br />  --runtime python3.9 \<br />  --role "arn:aws:iam::account-id:role/index-lambda-role" \<br />  --timeout 30 \<br />  --vpc-config "{\"SubnetIds\": [\"<subnet-id1\>", \"<subnet-id2>\"], \<br />    \"SecurityGroupIds\": [\"<sg-1>\"]}"</pre> | Arquitecto de la nube, administrador de la nube | 
| Permita que Amazon S3 llame a la función de índice de Lambda. | Ejecute el comando AWS CLI [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) para conceder a Amazon S3 el permiso de llamar a la función de índice Lambda:<pre>aws lambda add-permission \<br />  --function-name index-lambda-function \<br />  --statement-id s3-permissions \<br />  --action lambda:InvokeFunction \<br />  --principal s3.amazonaws.com \<br />  --source-arn "arn:aws:s3:::<tenantrawdata>" \<br />  --source-account "<account-id>" </pre> | Arquitecto de la nube, administrador de la nube | 
| Añada un desencadenante de Lambda para el evento de Amazon S3. | Ejecute el AWS CLI [put-bucket-notification-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-notification-configuration.html)comando para enviar notificaciones a la función de índice Lambda cuando se detecte el `ObjectCreated` evento de Amazon S3. La función de índice se ejecuta cada vez que se carga un objeto en el bucket de S3. <pre>aws s3api put-bucket-notification-configuration \<br />  --bucket <tenantrawdata> \<br />  --notification-configuration file://s3-trigger.json</pre>El archivo `s3-trigger.json` es un documento JSON de la carpeta actual que añade la política de recursos a la función de Lambda cuando se produce el evento `ObjectCreated` de Amazon S3. | Arquitecto de la nube, administrador de la nube | 

### Crear y configurar la función de búsqueda de Lambda
<a name="create-and-configure-the-lam-search-function"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Para crear el rol de ejecución de Lambda | Ejecute el comando AWS CLI [create-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html) para conceder a la función de búsqueda de Lambda acceso a los recursos: Servicios de AWS <pre>aws iam create-role \<br />  --role-name search-lambda-role \<br />  --assume-role-policy-document file://lambda_assume_role.json</pre>donde `lambda_assume_role.json` es un documento JSON en la carpeta actual que concede permisos de `AssumeRole` a la función de Lambda, de la siguiente manera:<pre>{<br />     "Version": "2012-10-17",		 	 	 <br />     "Statement": [<br />         {<br />             "Effect": "Allow",<br />             "Principal": {<br />                 "Service": "lambda.amazonaws.com"<br />               },<br />             "Action": "sts:AssumeRole"<br />         }<br />     ]<br /> }</pre> | Arquitecto de la nube, administrador de la nube | 
| Adjunte políticas gestionadas al rol de Lambda. | Ejecute el AWS CLI [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)comando para adjuntar las políticas administradas al rol creado en el paso anterior. Estas dos políticas otorgan al rol permisos para crear una interfaz de red elástica y escribir CloudWatch registros en Logs.<pre>aws iam attach-role-policy \<br />  --role-name search-lambda-role \<br />  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole<br /><br />aws iam attach-role-policy \<br />  --role-name search-lambda-role \<br />  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole </pre> | Arquitecto de la nube, administrador de la nube | 
| Cree la función de búsqueda de Lambda. | Ejecute el comando AWS CLI [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) para crear la función de búsqueda de Lambda, que accederá al servicio: OpenSearch <pre>aws lambda create-function \<br />  --function-name search-lambda-function \<br />  --zip-file fileb://search_lambda_package.zip \<br />  --handler lambda_search.lambda_handler \<br />  --runtime python3.9 \<br />  --role "arn:aws:iam::account-id:role/search-lambda-role" \<br />  --timeout 30 \<br />  --vpc-config "{\"SubnetIds\": [\"<subnet-id1\>", \"<subnet-id2>\"], \<br />    \"SecurityGroupIds\": [\"<sg-1>\"]}"</pre> | Arquitecto de la nube, administrador de la nube | 

### Cree y configure los roles de usuario
<a name="create-and-configure-tenant-roles"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree roles de IAM para los usuarios. | Ejecute el comando AWS CLI [create-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html) para crear dos roles arrendatarios que se utilizarán para probar la funcionalidad de búsqueda:<pre>aws iam create-role \<br />  --role-name Tenant-1-role \<br />  --assume-role-policy-document file://assume-role-policy.json</pre><pre>aws iam create-role \<br />  --role-name Tenant-2-role \<br />  --assume-role-policy-document file://assume-role-policy.json</pre>El archivo `assume-role-policy.json` es un documento JSON en la carpeta actual que concede permisos de `AssumeRole` al rol de ejecución de Lambda:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                 "AWS": "<Lambda execution role for index function>",<br />                 "AWS": "<Lambda execution role for search function>"<br />             },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre> | Arquitecto de la nube, administrador de la nube | 
| Crear una política de IAM de usuario. | Ejecuta el comando AWS CLI [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) para crear una política de inquilinos que otorgue acceso a las operaciones de Elasticsearch:<pre>aws iam create-policy \<br />  --policy-name tenant-policy \<br />  --policy-document file://policy.json</pre>El archivo `policy.json` es un documento JSON en la carpeta actual que concede permisos en Elasticsearch:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "es:ESHttpDelete",<br />                "es:ESHttpGet",<br />                "es:ESHttpHead",<br />                "es:ESHttpPost",<br />                "es:ESHttpPut",<br />                "es:ESHttpPatch"<br />            ],<br />            "Resource": [<br />                "<ARN of Elasticsearch domain created earlier>"<br />            ]<br />        }<br />    ]<br />}</pre> | Arquitecto de la nube, administrador de la nube | 
| Adjunte la política de IAM del usuario a los roles del usuario. | Ejecute el AWS CLI [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)comando para adjuntar la política de IAM de inquilinos a las dos funciones de inquilino que creó en el paso anterior:<pre>aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::account-id:policy/tenant-policy \<br />  --role-name Tenant-1-role<br /><br />aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::account-id:policy/tenant-policy \<br />  --role-name Tenant-2-role</pre>La política ARN procede de lo obtenido en el paso anterior. | Arquitecto de la nube, administrador de la nube | 
| Cree una política de IAM para conceder permisos de asunción de rol a Lambda. | Ejecute el comando AWS CLI [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) para crear una política para que Lambda asuma el rol de inquilino:<pre>aws iam create-policy \<br />  --policy-name assume-tenant-role-policy \<br />  --policy-document file://lambda_policy.json</pre>El archivo `lambda_policy.json` es un documento JSON en la carpeta actual que concede permisos a `AssumeRole`:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />       {<br />            "Effect": "Allow",<br />            "Action":  "sts:AssumeRole",<br />            "Resource": "<ARN of tenant role created earlier>"<br />       }<br />    ]<br />}</pre>En `Resource`, puede usar un carácter comodín para evitar crear una nueva política para cada usuario. | Arquitecto de la nube, administrador de la nube | 
| Cree una política de IAM para conceder permisos al rol de indexación de Lambda para acceder a Amazon S3. | Ejecute el comando AWS CLI [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) para dar permiso al rol de índice de Lambda para acceder a los objetos del bucket de S3:<pre>aws iam create-policy \<br />  --policy-name s3-permission-policy \<br />  --policy-document file://s3_lambda_policy.json</pre>El archivo `s3_lambda_policy.json` es el siguiente documento de política de JSON de la carpeta actual:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "s3:GetObject",<br />            "Resource": "arn:aws:s3:::tenantrawdata/*"<br />        }<br />    ]<br />}</pre> | Arquitecto de la nube, administrador de la nube | 
| Adjunte la política al rol de ejecución de Lambda. | Ejecute el AWS CLI [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)comando para adjuntar la política creada en el paso anterior al índice Lambda y a las funciones de ejecución de búsquedas que creó anteriormente:<pre>aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::account-id:policy/assume-tenant-role-policy \<br />  --role-name index-lambda-role<br /><br />aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::account-id:policy/assume-tenant-role-policy \<br />  --role-name search-lambda-role<br /><br />aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::account-id:policy/s3-permission-policy \<br />  --role-name index-lambda-role</pre>La política ARN procede de lo obtenido en el paso anterior. | Arquitecto de la nube, administrador de la nube | 

### Cree y configure una API de búsqueda
<a name="create-and-configure-a-search-api"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una API de REST en API Gateway. | Ejecute el AWS CLI [create-rest-api](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/apigateway/create-rest-api.html)comando para crear un recurso de API REST:<pre>aws apigateway create-rest-api \<br />  --name Test-Api \<br />  --endpoint-configuration "{ \"types\": [\"REGIONAL\"] }"</pre>En el tipo de configuración de punto de conexión, puede especificar `EDGE` en lugar de `REGIONAL` para usar ubicaciones periféricas en lugar de una Región de AWS concreta.Anote el valor del campo `id` en el resultado del comando. Esta es la ID de API que usará en los siguientes comandos. | Arquitecto de la nube, administrador de la nube | 
| Cree un recurso para la API de búsqueda. | El recurso de la API de búsqueda inicia la función de búsqueda de Lambda con el nombre de recurso `search`. (No es necesario crear una API para la función de índice de Lambda, ya que se ejecuta automáticamente cuando se cargan objetos en el bucket de S3).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.html) | Arquitecto de la nube, administrador de la nube | 
| Cree un método GET para la API de búsqueda. | Ejecuta el comando AWS CLI [put-method](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/apigateway/put-method.html) para crear un `GET ` método para la API de búsqueda:<pre>aws apigateway put-method \<br />  --rest-api-id <API-ID> \<br />  --resource-id <ID from the previous command output> \<br />  --http-method GET \<br />  --authorization-type "NONE" \<br />  --no-api-key-required</pre>Para `resource-id`, especifique la ID de lo obtenido del comando `create-resource`. | Arquitecto de la nube, administrador de la nube | 
| Cree un método de respuesta para la API de búsqueda. | Ejecuta el AWS CLI [put-method-response](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/apigateway/put-method-response.html)comando para añadir una respuesta de método para la API de búsqueda:<pre>aws apigateway put-method-response \<br />  --rest-api-id <API-ID> \<br />  --resource-id  <ID from the create-resource command output> \<br />  --http-method GET \<br />  --status-code 200 \<br />  --response-models "{\"application/json\": \"Empty\"}"</pre>En `resource-id`, especifique el ID del resultado del anterior comando `create-resource`. | Arquitecto de la nube, administrador de la nube | 
| Configure una integración de Lambda proxy para la API de búsqueda. | Ejecute el comando AWS CLI [put-integration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/apigateway/put-integration.html) para configurar una integración con la función de búsqueda de Lambda:<pre>aws apigateway put-integration \<br />  --rest-api-id <API-ID> \<br />  --resource-id  <ID from the create-resource command output> \<br />  --http-method GET \<br />  --type AWS_PROXY \<br />  --integration-http-method GET \<br />  --uri arn:aws:apigateway:region:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account-id>:function:<function-name>/invocations</pre>En `resource-id`, especifique la ID del anterior comando `create-resource`. | Arquitecto de la nube, administrador de la nube | 
| Otorgue permiso a API Gateway para llamar a la función de búsqueda de Lambda. | Ejecute el comando AWS CLI [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) para conceder permiso a API Gateway para usar la función de búsqueda:<pre>aws lambda add-permission \<br />  --function-name <function-name> \<br />  --statement-id apigateway-get \<br />  --action lambda:InvokeFunction \<br />  --principal apigateway.amazonaws.com \<br />  --source-arn "arn:aws:execute-api:<region>:<account-id>:api-id/*/GET/search</pre>Cambie la ruta `source-arn` si ha usado un nombre de recurso de API en lugar de `search`. | Arquitecto de la nube, administrador de la nube | 
| Implemente la API de búsqueda. | Ejecute el comando AWS CLI [create-deployment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/apigateway/create-deployment.html) para crear un recurso de etapa denominado: `dev`<pre>aws apigateway create-deployment \<br />  --rest-api-id <API-ID> \<br />  --stage-name dev</pre>Si actualizas la API, puedes usar el mismo AWS CLI comando para volver a implementarla en la misma etapa. | Arquitecto de la nube, administrador de la nube | 

### Crear y configurar roles de Kibana
<a name="create-and-configure-kibana-roles"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie sesión en la consola Kibana. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.html) | Arquitecto de la nube, administrador de la nube | 
| Cree y configure roles de Kibana. | Para aislar los datos y garantizar que un usuario no pueda recuperar los datos de otro, debe proteger los documentos con seguridad. Así, los usuarios podrán acceder únicamente a aquellos documentos que contienen su ID de usuario.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.html) | Arquitecto de la nube, administrador de la nube | 
| Asigne usuarios a los roles. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.html)Le recomendamos que automatice la creación de los roles de usuario y roles de Kibana en el momento de la incorporación del usuario. | Arquitecto de la nube, administrador de la nube | 
| Cree el índice de datos de usuarios. | En el panel de navegación, en **Administración**, seleccione **Herramientas de desarrollo** y, a continuación, ejecute el siguiente comando. Este comando crea el índice `tenant-data` para definir la asignación de la propiedad `TenantId`.<pre>PUT /tenant-data<br />{<br />  "mappings": {<br />    "properties": {<br />      "TenantId": { "type": "keyword"}<br />    }<br />  }<br />}</pre> | Arquitecto de la nube, administrador de la nube | 

### Cree puntos de enlace de VPC para Amazon S3 y AWS STS
<a name="create-vpc-endpoints-for-s3-and-sts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un punto de conexión de VPC para Amazon S3 . | Ejecute el AWS CLI [create-vpc-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-vpc-endpoint.html)comando para crear un punto de enlace de VPC para Amazon S3. El punto de conexión permite que la función de índice de Lambda de la VPC acceda a Amazon S3.<pre>aws ec2 create-vpc-endpoint \<br />  --vpc-id <VPC-ID> \<br />  --service-name com.amazonaws.us-east-1.s3 \<br />  --route-table-ids <route-table-ID></pre>En `vpc-id`, especifique la VPC que está usando para la función de índice de Lambda. En `service-name`, use la URL correcta del punto de conexión Amazon S3. En `route-table-ids`, especifique la tabla de enrutamiento asociada al punto de conexión de VPC. | Arquitecto de la nube, administrador de la nube | 
| Cree un punto final de VPC para. AWS STS | Ejecute el AWS CLI [create-vpc-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-vpc-endpoint.html)comando para crear un punto final de VPC para AWS Security Token Service ()AWS STS. El punto de conexión permite que las funciones de índice y búsqueda de Lambda en la VPC accedan al servicio AWS STS. Las funciones AWS STS se utilizan cuando asumen la función de IAM.<pre>aws ec2 create-vpc-endpoint \<br />  --vpc-id <VPC-ID> \<br />  --vpc-endpoint-type Interface \<br />  --service-name com.amazonaws.us-east-1.sts \<br />  --subnet-id <subnet-ID> \<br />  --security-group-id <security-group-ID></pre>Para `vpc-id`, especifique la VPC que va a utilizar para las funciones de índice y búsqueda de Lambda. En `subnet-id`, proporcione la subred en la que se debe crear este punto de conexión. En `security-group-id`, especifique el grupo de seguridad al que desea asociar este punto de conexión. (Puede ser el mismo que el grupo de seguridad que usa Lambda). | Arquitecto de la nube, administrador de la nube | 

### Pruebe el multiusuario y el aislamiento de datos
<a name="test-multi-tenancy-and-data-isolation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice los archivos de Python para las funciones de índice y búsqueda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.html)Puedes obtener el punto final de Elasticsearch desde la pestaña **Descripción general de la consola** de servicio. OpenSearch Tiene el formato `<AWS-Region>.es.amazonaws.com`. | Arquitecto de la nube, desarrollador de aplicaciones | 
| Actualizar el código de Lambda. | Use el AWS CLI [update-function-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)comando para actualizar el código Lambda con los cambios que realizó en los archivos de Python:<pre>aws lambda update-function-code \<br />  --function-name index-lambda-function \<br />  --zip-file fileb://index_lambda_package.zip<br /><br />aws lambda update-function-code \<br />  --function-name search-lambda-function \<br />  --zip-file fileb://search_lambda_package.zip</pre> | Arquitecto de la nube, desarrollador de aplicaciones | 
| Cargue los datos sin procesar en el bucket de S3. | Use el comando AWS CLI [cp](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html) para cargar los datos de los objetos Tenant-1 y Tenant-2 al `tenantrawdata` bucket (especifique el nombre del bucket S3 que creó para este propósito):<pre>aws s3 cp tenant-1-data s3://tenantrawdata<br />aws s3 cp tenant-2-data s3://tenantrawdata</pre>El bucket de S3 está configurado para ejecutar la función de índice de Lambda siempre que se carguen datos, de modo que el documento se indexe en Elasticsearch. | Arquitecto de la nube, administrador de la nube | 
| Busque datos desde la consola de Kibana. | En la consola de Kibana, ejecute la siguiente consulta:<pre>GET tenant-data/_search</pre>Esta consulta muestra todos los documentos indexados en Elasticsearch. En este caso, debería ver dos documentos separados para Inquilino-1 e Inquilino-2. | Arquitecto de la nube, administrador de la nube | 
| Pruebe la API de búsqueda desde API Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.html)Para ver una ilustración de la pantalla, consulte la sección de [Información adicional](#build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-additional). | Arquitecto de la nube, desarrollador de aplicaciones | 
| Eliminación de recursos. | Limpie todos los recursos que haya creado para evitar cargos adicionales en su cuenta. | AWS DevOps, arquitecto de nube, administrador de nube | 

## Recursos relacionados
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-resources"></a>
+ [AWS SDK para Python (Boto)](https://aws.amazon.com/sdk-for-python/)
+ [AWS Lambda documentación](https://docs.aws.amazon.com/lambda/)
+ [Documentación de API Gateway](https://docs.aws.amazon.com/apigateway/)
+ [Documentación de Amazon S3](https://docs.aws.amazon.com/s3/)
+ [Documentación OpenSearch de Amazon Service](https://docs.aws.amazon.com/elasticsearch-service/)
  + [Control de acceso detallado en Amazon Service OpenSearch ](https://docs.amazonaws.cn/en_us/elasticsearch-service/latest/developerguide/fgac.html)
  + [Creación de una aplicación de búsqueda con Amazon OpenSearch Service](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/search-example.html)
  + [Lanzamiento de tus dominios OpenSearch de Amazon Service dentro de una VPC](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html)

## Información adicional
<a name="build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service-additional"></a>

**Modelos de particionamiento de datos**

Hay tres modelos comunes de particionamiento de datos que se emplean en los sistemas multiusuario: silos, agrupados e híbridos. El modelo que elija dependerá de las necesidades de cumplimiento, ruido, operaciones y aislamiento de su entorno.

*Modelo de silo*

En el modelo de silo, los datos de cada usuario se almacenan en un área de almacenamiento distinta, por lo que los datos de los usuarios no se mezclan. Puede utilizar dos enfoques para implementar el modelo de silo con OpenSearch Service: dominio por inquilino e índice por inquilino.
+ **Dominio por inquilino**: puedes usar un dominio de OpenSearch servicio independiente (sinónimo de un clúster de Elasticsearch) por inquilino. Tener a cada usuario en su propio dominio proporciona todos los beneficios de tener los datos en un constructo independiente. Sin embargo, este enfoque presenta desafíos de gestión y agilidad. Su naturaleza distribuida dificulta la agregación y la evaluación del estado operativo y la actividad de los usuarios. Se trata de una opción costosa que requiere que cada dominio de OpenSearch servicio tenga como mínimo tres nodos principales y dos nodos de datos para las cargas de trabajo de producción.

![\[Modelo de silo de dominio por inquilino para arquitecturas de varios inquilinos sin servidor.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/c2195f82-e5ed-40bb-b76a-3b0210bf1254.png)


 
+ **Índice por inquilino**: puede colocar los datos del inquilino en índices separados dentro de un clúster de OpenSearch servicios. Con este enfoque, se usa un identificador de inquilino al crear y asignar un nombre al índice, anteponiendo el identificador de inquilino al nombre del índice. El enfoque de índice por usuario le ayuda a alcanzar sus objetivos de compartimentación sin tener que introducir un clúster completamente separado para cada usuario. Sin embargo, si aumenta el número de índices, es posible que la memoria se agote, ya que este enfoque requiere más particiones y el nodo maestro tiene que gestionar una mayor asignación y reequilibrio.

![\[Modelo de silo por inquilino para arquitecturas de varios inquilinos sin servidor\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/354a9463-25bb-422b-84de-d4875a7c8ea2.png)


 

**Modelo de aislamiento en silo**: en el modelo de silo, se emplean políticas de IAM para aislar los dominios o índices que contienen los datos de cada usuario. Estas políticas impiden que un usuario acceda a los datos de otro. Para implementar su modelo de aislamiento en silos, puede crear una política basada en recursos que controle el acceso al recurso de su usuario. Suele ser una política de acceso al dominio que especifica qué acciones puede realizar un principal en los subrecursos del dominio, incluidos los índices de Elasticsearch y. APIs Con las políticas de IAM basadas en la identidad, puede especificar las acciones *permitidas* o *denegadas en el dominio, los índices* o dentro del Servicio. APIs OpenSearch El elemento `Action` de una política de IAM describe la acción o acciones específicas permitidas y denegadas por la política. El elemento `Principal ` especifica las cuentas, usuarios o roles afectados.

El siguiente ejemplo de política otorga a Usuario-1 acceso total (según lo especificado en `es:*`) únicamente a los subrecursos del dominio `tenant-1`. El `/*` de seguimiento en el elemento `Resource` indica que esta política se aplica a los sub-recursos del dominio, no al dominio en sí. Cuando esta política esté en vigor, los usuarios no podrán crear un dominio nuevo ni modificar la configuración de un dominio existente.

```
{
   "Version": "2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::<aws-account-id>:user/Tenant-1"
         },
         "Action": "es:*",
         "Resource": "arn:aws:es:<Region>:<account-id>:domain/tenant-1/*"
      }
   ]
}
```

Para implementar el modelo de silo de índice por inquilino, tendrá que modificar este ejemplo de política para restringir aún más a Inquilino-1 al índice o índices especificados, indicando el nombre del índice. El siguiente ejemplo de política restringe a Usuario-1 al índice `tenant-index-1`. 

```
{
   "Version": "2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Tenant-1"
         },
         "Action": "es:*",
         "Resource": "arn:aws:es:<Region>:<account-id>:domain/test-domain/tenant-index-1/*"
      }
   ]
}
```

*Modelo de grupo*

En el modelo de grupo, todos los datos de los usuarios se almacenan en un índice dentro del mismo dominio. El identificador del usuario se incluye en los datos (documento) y se usa como clave de partición, de modo que puede determinar qué datos pertenecen a cada usuario. Este modelo reduce la sobrecarga de administración. Operar y administrar un índice agrupado es más fácil y eficiente que administrar varios índices. Sin embargo, dado que los datos de los usuarios están mezclados en el mismo índice, se pierde el aislamiento natural de los usuarios que proporciona el modelo de silos. Este enfoque también podría reducir el rendimiento debido al efecto de ruido aledaño.

![\[Modelo común para arquitecturas de varios inquilinos sin servidor\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/c2c3bb0f-6ccd-47a7-ab67-e7f3f8c7f289.png)


 

**Aislamiento de usuarios en el modelo de grupo**: en general, el aislamiento de usuarios es difícil de implementar en el modelo de grupo. El mecanismo de IAM usado con el modelo de silo no permite describir el aislamiento en función del identificador de usuario almacenado en el documento.

Un enfoque alternativo consiste en usar el [control de acceso detallado](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/fgac.html) (FGAC) que proporciona Open Distro para Elasticsearch. El FGAC permite controlar los permisos a nivel de índice, documento o campo. En cada solicitud, el FGAC evalúa las credenciales del usuario y autentica o deniega el acceso. Si el FGAC autentica al usuario, obtiene todos los roles mapeados a ese usuario y utiliza el conjunto completo de permisos para determinar cómo gestionar la solicitud. 

Para lograr el aislamiento requerido en el modelo agrupado, puede usar [seguridad a nivel de documento](https://opendistro.github.io/for-elasticsearch-docs/docs/security/access-control/document-level-security/), que le permite restringir un rol a un subconjunto de documentos de un índice. El siguiente ejemplo de rol restringe las consultas a Usuario-1. Al aplicar este rol a Usuario-1, puede lograr el aislamiento necesario. 

```
{
   "bool": {
     "must": {
       "match": {
         "tenantId": "Tenant-1"
       }
     }
   }
 }
```

*Modelo híbrido*

El modelo híbrido emplea una combinación de los modelos de silo y grupo en el mismo entorno para ofrecer experiencias únicas a cada nivel de usuario (como los niveles gratuito, estándar y prémium). Cada nivel sigue el mismo perfil de seguridad que se usó en el modelo de grupo.

 

![\[Modelo híbrido para arquitecturas de varios inquilinos sin servidor\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/e7def98a-38ef-435a-9881-7e95ae4d4940.png)


**Aislamiento de usuarios en el modelo híbrido**: en el modelo híbrido, se sigue el mismo perfil de seguridad que en el modelo de grupo. El uso del modelo de seguridad FGAC a nivel de documento proporciona aislamiento a los usuarios. Si bien esta estrategia simplifica la administración de clústeres y ofrece agilidad, complica otros aspectos de la arquitectura. Por ejemplo, el código requiere una complejidad adicional para determinar qué modelo está asociado a cada usuario. También deberá asegurarse de que las consultas de un solo usuario no saturen todo el dominio ni degraden la experiencia de otros usuarios. 

**Pruebas en API Gateway**

*Ventana de prueba para consulta de Usuario-1*

![\[Ventana de prueba para consulta de Inquilino-1\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/a6757d3f-977a-4ecc-90cb-83ab7f1c3588.png)


*Ventana de prueba para consulta de Usuario-2*

 

![\[Ventana de prueba para consulta de Inquilino-2\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/750196bb-03f6-4b6e-92cd-eb7141602547/images/31bfd656-33ca-4750-b6e6-da4d703c2071.png)


## Conexiones
<a name="attachments-750196bb-03f6-4b6e-92cd-eb7141602547"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/750196bb-03f6-4b6e-92cd-eb7141602547/attachments/attachment.zip)

# Implemente aplicaciones de varias pilas mediante AWS CDK con TypeScript
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript"></a>

*Dr. Rahul Sharad Gaikwad, Amazon Web Services*

## Resumen
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-summary"></a>

Este patrón proporciona un step-by-step enfoque para la implementación de aplicaciones en Amazon Web Services (AWS) mediante el AWS Cloud Development Kit (AWS CDK) con TypeScript. Por ejemplo, el patrón implementa una aplicación de análisis en tiempo real sin servidor.

El patrón crea e implementa aplicaciones de pila anidada. La CloudFormation pila de AWS principal llama a las pilas secundarias o anidadas.  Cada pila secundaria crea e implementa los recursos de AWS que se definen en la CloudFormation pila. AWS CDK Toolkit, el comando de la interfaz de línea de comandos (CLI)`cdk`, es la interfaz principal de las CloudFormation pilas.

## Requisitos previos y limitaciones
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una nube privada virtual (VPC) y subredes existentes
+ Kit de herramientas de AWS CDK instalado y configurado
+ Un usuario con permisos de administrador y un conjunto de claves de acceso.
+ Node.js
+ Interfaz de la línea de comandos de AWS (AWS CLI)

**Limitaciones**
+ Como la CDK de AWS utiliza AWS CloudFormation, las aplicaciones de la CDK de AWS están sujetas a cuotas de CloudFormation servicio. Para obtener más información, consulte [ CloudFormation Cuotas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html).

**Versiones de producto**

Este patrón se ha creado y probado usando las siguientes herramientas y versiones.
+ Kit de herramientas de AWS CDK 1.83.0
+ Node.js 14.13.0
+ npm 7.0.14

El patrón debería funcionar con cualquier versión de AWS CDK o npm. Tenga en cuenta que las versiones 13.0.0 a 13.6.0 de Node.js no son compatibles con AWS CDK.

## Arquitectura
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-architecture"></a>

**Pila de tecnología de destino**
+ Consola de AWS Amplify
+ Amazon API Gateway
+ AWS CDK
+ Amazon CloudFront
+ Amazon Cognito
+ Amazon DynamoDB
+ Amazon Data Firehose
+ Amazon Kinesis Data Streams
+ AWS Lambda
+ Amazon Simple Storage Service (Amazon S3)

**Arquitectura de destino**

En el siguiente diagrama se muestra la implementación de aplicaciones de varias pilas mediante AWS CDK con. TypeScript

![\[Arquitectura de pilas en la VPC, con una pila principal y dos pilas secundarias que contienen recursos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)


 

En el siguiente diagrama se muestra la arquitectura de la aplicación en tiempo real sin servidor de ejemplo.

![\[Arquitectura de la aplicación en la región.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)


 

## Tools (Herramientas)
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-tools"></a>

**Herramientas**
+ La [Consola de AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) es el centro de control para las implementaciones de aplicaciones web y móviles de pila completa en AWS. El alojamiento de la consola de Amplify proporciona un flujo de trabajo basado en Git para alojar aplicaciones web sin servidor de pila completa con implementación continua. La interfaz de usuario de administración es una interfaz visual para que los desarrolladores de frontend web y móvil puedan crear y administrar el backend de aplicaciones fuera de la Consola de AWS.
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) es un servicio de AWS para crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
+ El [Kit de herramientas de AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) es un kit de desarrollo en la nube de línea de comandos que le ayuda a interactuar con su aplicación AWS CDK. El comando `cdk` de la CLI es la herramienta principal para interactuar con su aplicación AWS CDK. Ejecuta su aplicación, interroga el modelo de aplicación que ha definido y produce e implementa las CloudFormation plantillas de AWS generadas por la CDK de AWS.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) es un servicio web que acelera la distribución de contenido web estático y dinámico, como .html, .css, .js y archivos de imagen. CloudFront entrega su contenido a través de una red mundial de centros de datos denominados ubicaciones perimetrales para reducir la latencia y mejorar el rendimiento.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) ofrece autenticación, autorización y administración de usuarios para sus aplicaciones móviles y web. Sus usuarios pueden iniciar sesión directamente o a través de un tercero.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido y predecible, así como una perfecta escalabilidad.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) es un servicio totalmente gestionado para entregar [datos de streaming](https://aws.amazon.com/streaming-data/) en tiempo real a destinos como Amazon S3, Amazon Redshift, OpenSearch Amazon Service, Splunk y cualquier punto de enlace HTTP personalizado o punto de enlace HTTP propiedad de proveedores de servicios externos compatibles.
+ [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) es un servicio que permite recopilar y procesar grandes flujos 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 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 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.

**Código**

Se adjunta el código de este patrón.

## Epics
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-epics"></a>

### Instalación del kit de herramientas de AWS CDK
<a name="install-aws-cdk-toolkit"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el kit de herramientas de AWS CDK. | Para instalar el kit de herramientas de AWS CDK a nivel global, ejecute el siguiente comando.`npm install -g aws-cdk` | DevOps | 
| Verificar la versión. | Para verificar la versión del kit de herramientas de AWS CDK, ejecute el siguiente comando. `cdk --version` | DevOps | 

### Configuración de las credenciales de AWS
<a name="set-up-aws-credentials"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar las credenciales. | Para configurar las credenciales, ejecute el comando `aws configure` y siga las instrucciones.<pre>$aws configure<br />AWS Access Key ID [None]: <br />AWS Secret Access Key [None]: your_secret_access_key<br />Default region name [None]:<br />Default output format [None]:</pre> | DevOps | 

### Descarga del código del proyecto
<a name="download-the-project-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargar el código del proyecto adjunto. | Para obtener más información sobre la estructura de los directorios y archivos, consulte la sección *Información adicional*. | DevOps | 

### Inicie el entorno de AWS CDK
<a name="bootstrap-the-aws-cdk-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el entorno. | Para implementar la CloudFormation plantilla de AWS en la cuenta y la región de AWS que desee usar, ejecute el siguiente comando.`cdk bootstrap <account>/<Region>`Para obtener más información, consulte la [documentación de AWS](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html). | DevOps | 

### Crear e implementar el proyecto
<a name="build-and-deploy-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compilar el proyecto. | Para compilar el código del proyecto, ejecute el comando `npm run build`. | DevOps | 
| Implementar el proyecto. | Para implementar el código del proyecto, ejecute el comando `cdk deploy`. |  | 

### Verificación de resultados
<a name="verify-outputs"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Verificar la creación de la pila. | En la consola de administración de AWS, elija **CloudFormation**. En las pilas del proyecto, verifique que se hayan creado una pila principal y dos pilas secundarias. | DevOps | 

### Pruebe la aplicación
<a name="test-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Enviar datos a Kinesis Data Streams. | Configure su cuenta de AWS para enviar datos a Kinesis Data Streams mediante Amazon Kinesis Data Generator (KDG). Para obtener más información, consulte [Amazon Kinesis Data Generator](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html). | DevOps | 
| Crear un usuario de Amazon Cognito. | [Para crear un usuario de Amazon Cognito, descargue la plantilla cognito-setup.json de la sección Crear un *usuario de Amazon Cognito de CloudFormation la página de ayuda del generador de datos de Kinesis*.](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html) Inicie la plantilla y, a continuación, introduzca su nombre de **usuario** y **contraseña** de Amazon Cognito.La pestaña **Salidas** muestra la URL de Kinesis Data Generator. | DevOps | 
| Inicio de sesión en Kinesis Data Generator | Para iniciar sesión en KDG, utilice las credenciales de Amazon Cognito que ha introducido y la URL de Kinesis Data Generator. | DevOps | 
| Probar la aplicación. | En KDG, en **Plantilla de registro**, **Plantilla 1**, pegue el código de prueba de la sección *Información adicional* y seleccione **Enviar datos**. | DevOps | 
| Probar API Gateway. | Una vez incorporados los datos, pruebe API Gateway mediante el método `GET` para recuperar los datos. | DevOps | 

## Recursos relacionados
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-resources"></a>

**Referencias**
+ [AWS Cloud Development Kit](https://aws.amazon.com/cdk/)
+ [AWS CDK en GitHub](https://github.com/aws/aws-cdk)
+ [Uso de pilas anidadas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)
+ [Ejemplo de muestra de AWS: análisis en tiempo real sin servidor](https://github.com/aws-samples/serverless-realtime-analytics)

## Información adicional
<a name="deploy-multiple-stack-applications-using-aws-cdk-with-typescript-additional"></a>

**Detalles del directorio y el archivo**

Este patrón configura las tres siguientes pilas.
+ `parent-cdk-stack.ts`: esta pila actúa como pila principal y llama a las dos aplicaciones secundarias como pilas anidadas. 
+ `real-time-analytics-poc-stack.ts`: esta pila anidada contiene la infraestructura y el código de la aplicación.
+ `real-time-analytics-web-stack.ts`: esta pila anidada contiene únicamente el código estático de la aplicación web.

*Archivos importantes y su funcionalidad*
+ `bin/real-time-analytics-poc.ts`: punto de entrada de la aplicación AWS CDK. Carga todas las pilas definidas en `lib/`.
+ `lib/real-time-analytics-poc-stack.ts`: definición de la pila de la aplicación AWS CDK (`real-time-analytics-poc`).
+ `lib/real-time-analytics-web-stack.ts`: definición de la pila de la aplicación AWS CDK (`real-time-analytics-web-stack`).
+ `lib/parent-cdk-stack.ts`: definición de la pila de la aplicación AWS CDK (`parent-cdk`).
+ `package.json`: manifiesto del módulo npm, que incluye el nombre, la versión y las dependencias de la aplicación.
+ `package-lock.json`: mantenimiento por parte de npm.
+ `cdk.json`: kit de herramientas para ejecutar la aplicación.
+ `tsconfig.json`— La TypeScript configuración del proyecto.
+ `.gitignore`: lista de archivos que Git debe excluir del control de código de origen.
+ `node_modules`: mantenimiento por parte de npm; incluye las dependencias del proyecto.

La siguiente sección de código de la pila principal llama a las aplicaciones secundarias como pilas anidadas de AWS CDK.

```
import * as cdk from '@aws-cdk/core';
import { Construct, Stack, StackProps } from '@aws-cdk/core';
import { RealTimeAnalyticsPocStack } from './real-time-analytics-poc-stack';
import { RealTimeAnalyticsWebStack } from './real-time-analytics-web-stack';


export class CdkParentStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);


    new RealTimeAnalyticsPocStack(this, 'RealTimeAnalyticsPocStack');
    new RealTimeAnalyticsWebStack(this, 'RealTimeAnalyticsWebStack');
  }
}
```

**Código para realizar pruebas**

```
session={{date.now('YYYYMMDD')}}|sequence={{date.now('x')}}|reception={{date.now('x')}}|instrument={{random.number(9)}}|l={{random.number(20)}}|price_0={{random.number({"min":10000, "max":30000})}}|price_1={{random.number({"min":10000, "max":30000})}}|price_2={{random.number({"min":10000, "max":30000})}}|price_3={{random.number({"min":10000, "max":30000})}}|price_4={{random.number({"min":10000, "max":30000})}}|price_5={{random.number({"min":10000, "max":30000})}}|price_6={{random.number({"min":10000, "max":30000})}}|price_7={{random.number({"min":10000, "max":30000})}}|price_8={{random.number({"min":10000, "max":30000})}}|
```

**Pruebas de API Gateway**

En la consola de API Gateway, pruebe API Gateway mediante el método `GET`. 

![\[La consola de API Gateway con GET se selecciona en OPCIONES.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)


 

## Conexiones
<a name="attachments-0ac29a11-1362-4084-92ed-6b85205763ca"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/0ac29a11-1362-4084-92ed-6b85205763ca/attachments/attachment.zip)

# Automatice la implementación de aplicaciones anidadas mediante SAM de AWS
<a name="automate-deployment-of-nested-applications-using-aws-sam"></a>

*Dr. Rahul Sharad Gaikwad, Ishwar Chauthaiwale, Dmitry Gulin y Tabby Ward, Amazon Web Services*

## Resumen
<a name="automate-deployment-of-nested-applications-using-aws-sam-summary"></a>

En Amazon Web Services (AWS), el AWS Serverless Application Model (AWS SAM) es un marco de código abierto que proporciona una sintaxis abreviada para expresar funciones APIs, bases de datos y mapeos de fuentes de eventos. Con solo unas pocas líneas para cada recurso, puede definir la aplicación que desee y modelarla mediante YAML. Durante la implementación, SAM transforma y expande la sintaxis de SAM en una CloudFormation sintaxis de AWS que puede usar para crear aplicaciones sin servidor con mayor rapidez.

SAM de AWS simplifica el desarrollo, la implementación y la administración de aplicaciones sin servidor en la plataforma AWS. Proporciona un marco estandarizado, una implementación más rápida, capacidades de pruebas locales, administración de recursos, una integración perfecta con las herramientas de desarrollo y una comunidad de apoyo. Estas características lo convierten en una herramienta valiosa para crear aplicaciones sin servidor de manera eficiente y eficaz.

Este patrón utiliza plantillas SAM de AWS para automatizar la implementación de aplicaciones anidadas. Una aplicación anidada es una aplicación dentro de otra aplicación. Las aplicaciones principales llaman a las aplicaciones secundarias. Se trata de componentes con acoplamiento flexible de una arquitectura sin servidor. 

Con aplicaciones anidadas, puede crear rápidamente arquitecturas sin servidor altamente sofisticadas mediante la reutilización de servicios o componentes que se crean y mantienen de forma independiente, pero que se componen con SAM de AWS y Repositorio de aplicaciones sin servidor. Las aplicaciones anidadas le ayudan a crear aplicaciones más potentes, evitar la duplicación del trabajo y garantizar la coherencia y las prácticas recomendadas en todos sus equipos y organizaciones. Para mostrar las aplicaciones anidadas, el patrón implementa un ejemplo de aplicación de carrito de [compras sin servidor de AWS](https://github.com/aws-samples/aws-sam-nested-stack-sample).

## Requisitos previos y limitaciones
<a name="automate-deployment-of-nested-applications-using-aws-sam-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una nube privada virtual (VPC) y subredes existentes
+ Un entorno de desarrollo integrado como Visual Studio Code (para obtener más información, consulte [Herramientas para crear en AWS](https://aws.amazon.com/getting-started/tools-sdks/#IDE_and_IDE_Toolkits))
+ Biblioteca de ruedas de Python instalada con pip install wheel, si aún no está instalada

**Limitaciones**
+ El número máximo de aplicaciones que se pueden anidar en una aplicación sin servidor es de 200.
+ El número máximo de parámetros que puede tener una aplicación anidada es 60.

**Versiones de producto**
+ Esta solución se basa en la versión 1.21.1 de la interfaz de la línea de comandos de SAM de AWS (CLI de SAM de AWS), pero esta arquitectura debería funcionar con versiones posteriores de la CLI de SAM de AWS.

## Arquitectura
<a name="automate-deployment-of-nested-applications-using-aws-sam-architecture"></a>

**Pila de tecnología de destino**
+ Amazon API Gateway
+ SAM de AWS
+ Amazon Cognito
+ Amazon DynamoDB
+ AWS Lambda
+ Cola de Amazon Simple Queue Service (Amazon SQS)

**Arquitectura de destino**

El siguiente diagrama muestra cómo se realizan las solicitudes de los usuarios a los servicios de compras llamando por teléfono APIs. La solicitud del usuario, incluida toda la información necesaria, se envía a Amazon API Gateway y al autorizador de Amazon Cognito, que ejecuta los mecanismos de autenticación y autorización para el. APIs

Cuando se agrega, elimina o actualiza un elemento en DynamoDB, se coloca un evento en DynamoDB Streams, que a su vez inicia una función de Lambda. Para evitar la eliminación inmediata de elementos antiguos como parte de un flujo de trabajo sincrónico, los mensajes se colocan en una cola de SQS, lo que inicia una función de trabajo para eliminarlos.

![\[Operaciones POST y PUT de API Gateway para funciones de Lambda, DynamoDB y Product Service.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5b454bae-5fd4-405d-a37d-6bafc3fcf889.png)


En esta configuración de solución, la CLI de AWS SAM sirve de interfaz para las CloudFormation pilas de AWS. Las plantillas SAM de AWS implementan automáticamente aplicaciones anidadas. La plantilla SAM principal llama a las plantillas secundarias y la CloudFormation pila principal implementa las pilas secundarias. Cada pila secundaria crea los recursos de AWS que se definen en las CloudFormation plantillas de AWS SAM.

![\[Proceso de cuatro pasos mediante la CLI de AWS SAM con una pila principal y tres secundarias CloudFormation .\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5828026e-72ad-4a3f-a5f2-bffac0f13e42.png)


1. Genere e implemente las pilas.

1. La CloudFormation pila de autenticación contiene Amazon Cognito.

1. La CloudFormation pila de productos contiene una función Lambda y Amazon API Gateway

1. La CloudFormation pila de compras contiene una función Lambda, Amazon API Gateway, la cola SQS y la base de datos Amazon DynamoDB.

## Tools (Herramientas)
<a name="automate-deployment-of-nested-applications-using-aws-sam-tools"></a>

**Herramientas**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [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.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web.
+ [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.
+ [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) es un marco de código abierto que permite crear aplicaciones sin servidor en la nube de AWS.
+ [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.

**Código**

El código de este patrón está disponible en el repositorio de [muestras de GitHub AWS SAM Nested Stack](https://github.com/aws-samples/aws-sam-nested-stack-sample).

## Epics
<a name="automate-deployment-of-nested-applications-using-aws-sam-epics"></a>

### Instalar la CLI de SAM de AWS
<a name="install-aws-sam-cli"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar la CLI de SAM de AWS. | Para instalar la CLI de SAM de AWS, siga las instrucciones de la [documentación de SAM de AWS](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html). | DevOps ingeniero | 
| Configure las credenciales de AWS. | Para configurar las credenciales de AWS para que la CLI de SAM de AWS pueda realizar llamadas a los servicios de AWS en su nombre, ejecute el comando `aws configure` y siga las instrucciones.<pre>$aws configure<br />AWS Access Key ID [None]: <your_access_key_id><br />AWS Secret Access Key [None]: your_secret_access_key<br />Default region name [None]:<br />Default output format [None]:</pre>Para obtener más información sobre cómo configurar sus credenciales, consulte [credenciales de autenticación y acceso](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html).  | DevOps ingeniero | 

### Inicie el proyecto SAM de AWS
<a name="initialize-the-aws-sam-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio de código de SAM de AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-deployment-of-nested-applications-using-aws-sam.html) | DevOps ingeniero | 
| Implemente plantillas para iniciar el proyecto. | Ejecute el comando `SAM init` para iniciar el proyecto. Cuando se le pida que elija una fuente de plantilla, elija `Custom Template Location`. | DevOps ingeniero | 

### Compile y cree el código de la plantilla SAM
<a name="compile-and-build-the-sam-template-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revise las plantillas de aplicaciones SAM de AWS. | Revise las plantillas de las aplicaciones anidadas. En este ejemplo se utilizan las siguientes plantillas de aplicaciones anidadas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-deployment-of-nested-applications-using-aws-sam.html) | DevOps ingeniero | 
| Revise la plantilla principal. | Revise la plantilla que invocará las plantillas de aplicación anidadas. En este ejemplo, la plantilla principal es `template.yml`. Todas las aplicaciones independientes están anidadas en la plantilla principal única `template.yml`. | DevOps ingeniero | 
| Compile y cree el código de la plantilla SAM de AWS.  | Ejecute el siguiente comando utilizando la CLI de SAM de AWS.<pre>sam build</pre> | DevOps ingeniero | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente las aplicaciones. | Para lanzar el código de plantilla SAM que crea las CloudFormation pilas de aplicaciones anidadas y despliega el código en el entorno de AWS, ejecute el siguiente comando.<pre>sam deploy --guided --stack-name shopping-cart-nested-stack --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND</pre>El comando aparecerá con algunas preguntas. Responda a todas las preguntas con `y`. | DevOps ingeniero | 

### Verifique la implementación
<a name="verify-the-deployment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Verifique las pilas. | Para revisar las CloudFormation pilas de AWS y los recursos de AWS que se definieron en las plantillas de AWS SAM, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/automate-deployment-of-nested-applications-using-aws-sam.html) | DevOps ingeniero | 

## Recursos relacionados
<a name="automate-deployment-of-nested-applications-using-aws-sam-resources"></a>

**Referencias**
+ [AWS Serverless Application Model (AWS SAM)](https://aws.amazon.com/serverless/sam/#:~:text=The%20AWS%20Serverless%20Application%20Model,and%20model%20it%20using%20YAML.)
+ [AWS SAM en GitHub](https://github.com/aws/serverless-application-model)
+ [Microservicio de carrito de compras sin servidor](https://github.com/aws-samples/aws-serverless-shopping-cart) (ejemplo de aplicación de AWS)

**Tutoriales y videos**
+ [Cree una aplicación sin servidor](https://youtu.be/Hv3YrP8G4ag)
+ [Charlas técnicas online de AWS: creación e implementación de aplicaciones sin servidor con SAM de AWS](https://youtu.be/1NU7vyJw9LU)

## Información adicional
<a name="automate-deployment-of-nested-applications-using-aws-sam-additional"></a>

Una vez colocado todo el código, el ejemplo tiene la siguiente estructura de directorios:
+ [sam\$1stacks](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html): esta carpeta contiene la capa `shared.py`. Una capa es un archivo que contiene bibliotecas, un tiempo de ejecución personalizado u otras dependencias. Con las capas, puede utilizar las bibliotecas en la función sin necesidad de incluirlas en el paquete de implementación.
+ *product-mock-service*— Esta carpeta contiene todos los archivos y funciones de Lambda relacionados con el producto.
+ *shopping-cart-service*— Esta carpeta contiene todas las funciones y archivos de Lambda relacionados con las compras.

# Implemente el aislamiento de inquilinos de SaaS para Amazon S3 mediante una máquina expendedora de AWS Lambda fichas
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine"></a>

*Tabby Ward, Thomas Davis y Sravan Periyathambi, Amazon Web Services*

## Resumen
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-summary"></a>

Las aplicaciones SaaS multiusuario deben implementar sistemas para garantizar que se mantenga el aislamiento de los usuarios. Cuando almacenas datos de inquilinos en el mismo AWS recurso (por ejemplo, cuando varios inquilinos almacenan datos en el mismo depósito de Amazon Simple Storage Service (Amazon S3), debes asegurarte de que no se pueda producir el acceso entre inquilinos. Las máquinas expendedoras de fichas (TVMs) son una forma de aislar los datos de los inquilinos. Estas máquinas proporcionan un mecanismo para obtener tokens y, al mismo tiempo, simplifican la complejidad inherente a la creación de dichos tokens. Los desarrolladores pueden usar una TVM sin tener un conocimiento detallado de cómo la máquina produce los tokens.

Este patrón implementa una TVM mediante el uso de. AWS Lambda La TVM genera un token con credenciales del servicio de token de seguridad (STS) temporales que limitan el acceso a los datos de un único usuario de SaaS en un bucket de S3.

TVMs, y el código que se proporciona con este patrón, se suelen utilizar con afirmaciones derivadas de los JSON Web Tokens (JWTs) para asociar las solicitudes de AWS recursos a una política orientada a los inquilinos AWS Identity and Access Management (IAM). Puede usar el código de este patrón como base para implementar una aplicación SaaS que genere credenciales STS temporales y limitadas en función de las afirmaciones proporcionadas en un token JWT.

## Requisitos previos y limitaciones
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-prereqs"></a>

**Requisitos previos **
+ Un activo. Cuenta de AWS
+ AWS Command Line Interface (AWS CLI) [versión 1.19.0 o posterior](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html), instalada y configurada en macOS, Linux o Windows. Como alternativa, puede utilizar la AWS CLI [versión 2.1 o posterior](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).

**Limitaciones**
+ Este código se ejecuta en Java y, actualmente, no es compatible con otros lenguajes de programación. 
+ La aplicación de ejemplo no incluye compatibilidad AWS entre regiones ni con la recuperación ante desastres (DR). 
+ Este patrón demuestra cómo puede proporcionar acceso limitado a los usuarios una TVM de Lambda para una aplicación SaaS. Este patrón no está diseñado para usarse en entornos de producción sin pruebas de seguridad adicionales como parte de su aplicación o caso de uso específicos.

## Arquitectura
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-architecture"></a>

**Pila de tecnología de destino**
+ AWS Lambda
+ Amazon S3
+ IAM
+ AWS Security Token Service (AWS STS)

**Arquitectura de destino**

![\[Generación de un token para obtener credenciales de STS temporales para acceder a los datos de un bucket de S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/97a34c8e-d04e-40b6-acbf-1baa176d22a9/images/14d0508a-703b-4229-85e6-c5094de7fe01.png)


 

## Tools (Herramientas)
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-tools"></a>

**Servicios de AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante comandos en el shell de la línea de comandos.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [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 Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) le ayuda a solicitar credenciales temporales con privilegios limitados para los usuarios.
+ [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.

**Código**

El código fuente de este patrón está disponible como archivo adjunto, e incluye los siguientes archivos:
+ `s3UploadSample.jar` proporciona el código fuente de una función de Lambda que carga un documento JSON en un bucket de S3.
+ `tvm-layer.zip` proporciona una biblioteca Java reutilizable que suministra un token (credenciales temporales de STS) para que la función de Lambda acceda al bucket de S3 y cargue el documento JSON.
+ `token-vending-machine-sample-app.zip` proporciona el código fuente usado para crear estos artefactos y las instrucciones de compilación.

Para usar el código de muestra, siga las instrucciones de la siguiente sección.

## Epics
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-epics"></a>

### Determine los valores de las variables
<a name="determine-variable-values"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Determine los valores de las variables. | La implementación de este patrón incluye varios nombres de variables que deben usarse de manera coherente. Determine los valores a usar para cada variable y proporcione cada valor cuando se le solicite en los siguientes pasos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine.html) | Administrador de la nube | 

### Creación de un bucket de S3
<a name="create-an-s3-bucket"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3 para la aplicación de ejemplo. | Usa el siguiente AWS CLI comando para crear un bucket de S3. Proporcione el valor de `<sample-app-bucket-name>`** **en el fragmento de código:<pre>aws s3api create-bucket --bucket <sample-app-bucket-name></pre>La aplicación de ejemplo de Lambda carga archivos JSON en este bucket. | Administrador de la nube | 

### Creación de una política y un rol de IAM TVM
<a name="create-the-iam-tvm-role-and-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un rol de TVM. | Utilice uno de los siguientes AWS CLI comandos para crear un rol de IAM. Proporcione el valor de `<sample-tvm-role-name>`** **en el comando.Para los intérprete de comandos para macOS o Linux:<pre>aws iam create-role \<br />--role-name <sample-tvm-role-name> \<br />--assume-role-policy-document '{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "sts:AssumeRole"<br />            ],<br />            "Principal": {<br />                "Service": [<br />                    "lambda.amazonaws.com"<br />                ]<br />            },<br />            "Condition": {<br />                "StringEquals": {<br />                    "aws:SourceAccount": "<AWS Account ID>"<br />                }<br />            }<br />        }<br />    ]<br />}'</pre>En la línea de comandos de Windows:<pre>aws iam create-role ^<br />--role-name <sample-tvm-role-name> ^<br />--assume-role-policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"sts:AssumeRole\"], \"Principal\": {\"Service\": [\"lambda.amazonaws.com\"]}, \"Condition\": {\"StringEquals\": {\"aws:SourceAccount\": \"<AWS Account ID>\"}}}]}"</pre>La aplicación de ejemplo de Lambda asume este rol cuando se invoca la aplicación. La capacidad de asumir el rol de aplicación con una política específica otorga al código permisos más amplios para acceder al bucket de S3. | Administrador de la nube | 
| Cree una política de rol de TVM en línea. | Utilice uno de los siguientes AWS CLI comandos para crear una política de IAM. Proporcione los valores de `<sample-tvm-role-name>`,** **`<AWS Account ID>` y `<sample-app-role-name>` en el comando.Para los intérprete de comandos para macOS o Linux:<pre>aws iam put-role-policy \<br />--role-name <sample-tvm-role-name> \<br />--policy-name assume-app-role \<br />--policy-document '{<br />    "Version": "2012-10-17",		 	 	  <br />    "Statement": [<br />        {<br />            "Effect": "Allow", <br />            "Action": "sts:AssumeRole", <br />            "Resource": "arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>"<br />        }<br />    ]}'</pre>En la línea de comandos de Windows:<pre>aws iam put-role-policy ^<br />--role-name <sample-tvm-role-name> ^<br />--policy-name assume-app-role ^<br />--policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": \"sts:AssumeRole\", \"Resource\": \"arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>\"}]}"</pre>Esta política está asociada al rol de TVM. Proporciona la capacidad de asumir el rol de aplicación que otorga permisos más amplios para acceder al bucket de S3. | Administrador de la nube | 
| Adjunte la política de Lambda gestionada. | Utilice el siguiente AWS CLI comando para adjuntar la política de `AWSLambdaBasicExecutionRole` IAM. Proporcione el valor de `<sample-tvm-role-name>` en el comando:<pre>aws iam attach-role-policy \<br />--role-name <sample-tvm-role-name> \<br />--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole</pre>En la línea de comandos de Windows:<pre>aws iam attach-role-policy ^<br />--role-name <sample-tvm-role-name> ^<br />--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole</pre>Esta política gestionada se adjunta a la función TVM para permitir que Lambda envíe registros a Amazon. CloudWatch | Administrador de la nube | 

### Cree la política y el rol de aplicación de IAM
<a name="create-the-iam-application-role-and-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear el rol de la aplicación. | Utilice uno de los siguientes AWS CLI comandos para crear un rol de IAM. Proporcione los valores de `<sample-app-role-name>`, `<AWS Account ID>` y `<sample-tvm-role-name>` en el comando.Para los intérprete de comandos para macOS o Linux:<pre>aws iam create-role \<br />--role-name <sample-app-role-name> \<br />--assume-role-policy-document '{<br />    "Version": "2012-10-17",		 	 	  <br />    "Statement": [<br />        {<br />            "Effect": <br />            "Allow",<br />            "Principal": {<br />                "AWS": "arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name>"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]}'</pre>En la línea de comandos de Windows:<pre>aws iam create-role ^<br />--role-name <sample-app-role-name> ^<br />--assume-role-policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\",\"Principal\": {\"AWS\": \"arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name>\"},\"Action\": \"sts:AssumeRole\"}]}"</pre>La aplicación de ejemplo de Lambda asume esta función con una política específica para obtener acceso basado en usuario a un bucket de S3. | Administrador de la nube | 
| Cree una política de rol de aplicación en línea. | Utilice uno de los siguientes comandos para crear una AWS CLI política de IAM. Proporcione los valores de `<sample-app-role-name>` y `<sample-app-bucket-name>`** **en el comando.Para los intérprete de comandos para macOS o Linux:<pre>aws iam put-role-policy \<br />--role-name <sample-app-role-name> \<br />--policy-name s3-bucket-access \<br />--policy-document '{<br />    "Version": "2012-10-17",		 	 	  <br />    "Statement": [<br />        {<br />            "Effect": "Allow", <br />            "Action": [<br />                "s3:PutObject", <br />                "s3:GetObject", <br />                "s3:DeleteObject"<br />            ], <br />            "Resource": "arn:aws:s3:::<sample-app-bucket-name>/*"<br />        }, <br />        {<br />            "Effect": "Allow", <br />            "Action": ["s3:ListBucket"], <br />            "Resource": "arn:aws:s3:::<sample-app-bucket-name>"<br />        }<br />    ]}'</pre>En la línea de comandos de Windows:<pre>aws iam put-role-policy ^<br />--role-name <sample-app-role-name> ^<br />--policy-name s3-bucket-access ^<br />--policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"s3:PutObject\", \"s3:GetObject\", \"s3:DeleteObject\"], \"Resource\": \"arn:aws:s3:::<sample-app-bucket-name>/*\"}, {\"Effect\": \"Allow\", \"Action\": [\"s3:ListBucket\"], \"Resource\": \"arn:aws:s3:::<sample-app-bucket-name>\"}]}"</pre>Esta política está asociada al rol de la aplicación. Proporciona un acceso amplio a los objetos del bucket de S3. Cuando la aplicación de ejemplo asume el rol, estos permisos se asignan a un usuario específico con la política de TVM generada de forma dinámica. | Administrador de la nube | 

### Cree la aplicación de muestra de Lambda con TVM
<a name="create-the-lam-sample-application-with-tvm"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue los archivos fuente compilados. | Descargue los archivos `s3UploadSample.jar` y `tvm-layer.zip`****, que se incluyen como adjuntos. El código fuente utilizado para crear estos artefactos y las instrucciones de compilación se proporcionan en `token-vending-machine-sample-app.zip`. | Administrador de la nube | 
| Cree la capa de Lambda. | Utilice el siguiente AWS CLI comando para crear una capa Lambda, que haga que Lambda pueda acceder a la TVM. Si no ejecuta este comando desde la ubicación en la que descargó ` tvm-layer.zip`, indique la ruta correcta a `tvm-layer.zip` en el parámetro `--zip-file`. <pre>aws lambda publish-layer-version \<br />--layer-name sample-token-vending-machine \<br />--compatible-runtimes java11 \<br />--zip-file fileb://tvm-layer.zip</pre>En la línea de comandos de Windows:<pre>aws lambda publish-layer-version ^<br />--layer-name sample-token-vending-machine ^<br />--compatible-runtimes java11 ^<br />--zip-file fileb://tvm-layer.zip</pre>Este comando crea una capa de Lambda que contiene la biblioteca TVM reutilizable. | Administrador de la nube, desarrollador de aplicaciones | 
| Crear la función de Lambda. | Utilice el siguiente AWS CLI comando para crear una función Lambda. Proporcione los valores de `<sample-app-function-name>`, `<AWS Account ID>`, `<AWS Region>`, `<sample-tvm-role-name>`, `<sample-app-bucket-name>` y `<sample-app-role-name>` en el comando. Si no ejecuta este comando desde la ubicación en la que descargó `s3UploadSample.jar`, indique la ruta correcta a `s3UploadSample.jar` en el parámetro `--zip-file`. <pre>aws lambda create-function \<br />--function-name <sample-app-function-name>  \<br />--timeout 30 \<br />--memory-size 256 \<br />--runtime java11 \<br />--role arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name> \<br />--handler com.amazon.aws.s3UploadSample.App \<br />--zip-file fileb://s3UploadSample.jar \<br />--layers arn:aws:lambda:<AWS Region>:<AWS Account ID>:layer:sample-token-vending-machine:1 \<br />--environment "Variables={S3_BUCKET=<sample-app-bucket-name>,<br />ROLE=arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>}"</pre>En la línea de comandos de Windows:<pre>aws lambda create-function ^<br />--function-name <sample-app-function-name>  ^<br />--timeout 30 ^<br />--memory-size 256 ^<br />--runtime java11 ^<br />--role arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name> ^<br />--handler com.amazon.aws.s3UploadSample.App ^<br />--zip-file fileb://s3UploadSample.jar ^<br />--layers arn:aws:lambda:<AWS Region>:<AWS Account ID>:layer:sample-token-vending-machine:1 ^<br />--environment "Variables={S3_BUCKET=<sample-app-bucket-name>,ROLE=arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>}"</pre>Este comando crea una función de Lambda con el código de la aplicación de ejemplo y la capa de TVM adjunta. También establece dos variables de entorno: `S3_BUCKET` y `ROLE`. La aplicación de ejemplo usa estas variables para determinar el rol que debe asumir y el bucket de S3 en el que se deben cargar los documentos JSON. | Administrador de la nube, desarrollador de aplicaciones | 

### Pruebe la aplicación de muestra y TVM
<a name="test-the-sample-application-and-tvm"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Invoque la aplicación de ejemplo de Lambda. | Utilice uno de los siguientes AWS CLI comandos para iniciar la aplicación de ejemplo de Lambda con la carga útil esperada. Proporcione los valores de `<sample-app-function-name>` y `<sample-tenant-name>` en el comando.Para intérprete de comandos macOS y Linux:<pre>aws lambda invoke \<br />--function <sample-app-function-name> \<br />--invocation-type RequestResponse \<br />--payload '{"tenant": "<sample-tenant-name>"}' \<br />--cli-binary-format raw-in-base64-out response.json</pre>En la línea de comandos de Windows:<pre>aws lambda invoke ^<br />--function <sample-app-function-name> ^<br />--invocation-type RequestResponse ^<br />--payload "{\"tenant\": \"<sample-tenant-name>\"}" ^<br />--cli-binary-format raw-in-base64-out response.json</pre>Este comando llama a la función de Lambda y devuelve el resultado en un documento `response.json`. En muchos sistemas basados en Unix, puede cambiar `response.json` a `/dev/stdout` para enviar los resultados directamente a su intérprete de comandos sin necesidad de crear otro archivo. Si cambia el valor de `<sample-tenant-name>` en las siguientes invocaciones de esta función de Lambda, se modificará la ubicación del documento JSON y los permisos proporcionados por el token. | Administrador de la nube, desarrollador de aplicaciones | 
| Acceda al bucket de S3 para ver los objetos creados. | Acceda al bucket de S3 (`<sample-app-bucket-name>`) que creó anteriormente. Este bucket contiene un prefijo de objeto de S3 con el valor de `<sample-tenant-name>`. Bajo ese prefijo, encontrará un documento JSON denominado con un UUID. Si invoca la aplicación de ejemplo varias veces, se añadirán más documentos JSON. | Administrador de la nube | 
| Vea los registros de la aplicación de muestra en CloudWatch Logs. | Vea los registros que están asociados a la función Lambda nombrada `<sample-app-function-name>` en CloudWatch Logs. Para obtener instrucciones, consulte [Envío de registros de funciones de Lambda a CloudWatch registros](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html) en la documentación de Lambda. En estos registros puede ver la política basada en usuario generada por la TVM. Esta política dirigida al inquilino otorga permisos para la aplicación de ejemplo a Amazon S3 **PutObject**,, y **GetObject**DeleteObject**ListBucket****** APIs, pero solo para el prefijo de objeto al que está asociado. `<sample-tenant-name>` En las siguientes invocaciones de la aplicación de muestra, si cambia `<sample-tenant-name>`, la TVM actualizará la política con el ámbito de aplicación para adaptarla al inquilino proporcionado en la carga útil de invocación. Esta política generada dinámicamente muestra cómo se puede mantener el acceso basado en usuario con una TVM en aplicaciones SaaS. La funcionalidad de TVM se proporciona en una capa de Lambda. Así, es posible adjuntarla a otras funciones de Lambda usadas por una aplicación sin tener que replicar el código.Para ver un ejemplo de la política generada dinámicamente, consulte la sección de [Información adicional](#implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-additional). | Administrador de la nube | 

## Recursos relacionados
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-resources"></a>
+ [Aislar a los usuarios con políticas de IAM generadas dinámicamente](https://aws.amazon.com/blogs/apn/isolating-saas-tenants-with-dynamically-generated-iam-policies/) (publicación del blog)
+ [Applying Dynamically Generated Isolation Policies in SaaS Environments](https://aws.amazon.com/blogs/apn/applying-dynamically-generated-isolation-policies-in-saas-environments/) (entrada en el blog)
+ [SaaS en AWS](https://aws.amazon.com/saas/)

## Información adicional
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-additional"></a>

En el siguiente registro se muestra la política generada de forma dinámica y creada por el código de la TVM de este patrón. En esta captura de pantalla, `<sample-app-bucket-name>` es `DOC-EXAMPLE-BUCKET` y `<sample-tenant-name>` es `test-tenant-1`. Las credenciales de STS emitidas por esta política limitada no pueden realizar ninguna acción en los objetos del bucket de S3, excepto en aquellos objetos asociados al prefijo de clave de objeto `test-tenant-1`.

![\[Registro en el que se muestra una política generada de forma dinámica y creada por el código de la TVM.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/97a34c8e-d04e-40b6-acbf-1baa176d22a9/images/d4776ebe-fb8f-41ac-b8c5-b4f97a821c8c.png)


## Conexiones
<a name="attachments-97a34c8e-d04e-40b6-acbf-1baa176d22a9"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/97a34c8e-d04e-40b6-acbf-1baa176d22a9/attachments/attachment.zip)

# Implementar el patrón saga sin servidor mediante AWS Step Functions
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions"></a>

*Tabby Ward, Joe Kern y Rohan Mehta, Amazon Web Services*

## Resumen
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-summary"></a>

En una arquitectura de microservicios, el objetivo principal es crear componentes disociados e independientes para promover la agilidad, la flexibilidad y reducir el tiempo de comercialización de sus aplicaciones. Como resultado del desacoplamiento, cada componente del microservicio tiene su propia capa de persistencia de datos. En una arquitectura distribuida, las transacciones comerciales pueden abarcar varios microservicios. Como estos microservicios no pueden utilizar una sola transacción de atomicidad, coherencia, aislamiento y durabilidad (ACID), es posible que acabe con transacciones parciales. En este caso, se necesita alguna lógica de control para deshacer las transacciones que ya se han procesado. El patrón saga distribuido se utiliza normalmente para este propósito. 

El patrón saga es un patrón de gestión de fallos que ayuda a establecer la coherencia en las aplicaciones distribuidas y coordina las transacciones entre varios microservicios para mantener la coherencia de los datos. Si se utiliza el patrón «saga», cada servicio que realiza una transacción publica un evento que desencadena que los servicios subsiguientes realicen la siguiente transacción de la cadena. Esto continúa hasta que se complete la última transacción de la cadena. Si una transacción comercial fracasa, Saga organiza una serie de transacciones compensatorias que anulan los cambios introducidos en las transacciones anteriores.

Este patrón demuestra cómo automatizar la configuración y el despliegue de una aplicación de muestra (que gestiona las reservas de viajes) con tecnologías sin servidor, como AWS Step Functions, AWS Lambda y Amazon DynamoDB. La aplicación de ejemplo también utiliza Amazon API Gateway y Amazon Simple Notification Service (Amazon SNS) para implementar un coordinador de ejecución de saga. El patrón se puede implementar con un marco de infraestructura como código (IaC), como el AWS Cloud Development Kit (AWS CDK), el AWS Serverless Application Model (AWS Serverless Application Model SAM) o Terraform.

## Requisitos previos y limitaciones
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Permisos para crear una CloudFormation pila de AWS. Para obtener más información, consulte [Controlar el acceso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) en la CloudFormation documentación.
+ El marco de IaC de su elección (AWS CDK, AWS SAM o Terraform) se configuró con su cuenta de AWS para que pueda usar la CLI del marco para implementar la aplicación.
+ NodejS, utilizado para compilar la aplicación y ejecutarla localmente. 
+ Un editor de código de su elección (como Visual Studio Code, Sublime o Atom).

**Versiones de producto**
+ [NodeJS versión 14](https://nodejs.org/en/download/)
+ [AWS CDK versión 2.37.1](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)
+ [AWS SAM versión 1.71.0](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)
+ [Terraform versión 1.3.7](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)

**Limitaciones**

El abastecimiento de eventos es una forma natural de implementar el patrón de orquestación de la saga en una arquitectura de microservicios en la que todos los componentes están acoplados de forma flexible y no se conocen directamente entre sí. Si su transacción incluye un número reducido de pasos (de tres a cinco), el patrón saga podría ser una buena opción. Sin embargo, la complejidad aumenta con el número de microservicios y el número de pasos. 

Las pruebas y la depuración pueden resultar difíciles cuando se utiliza este diseño, ya que es necesario tener todos los servicios en ejecución para poder simular el patrón de transacciones.

## Arquitectura
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-architecture"></a>

**Arquitectura de destino**

La arquitectura propuesta utiliza AWS Step Functions para crear un patrón de saga para reservar vuelos, reservar alquileres de vehículos y procesar los pagos de las vacaciones.

El siguiente diagrama de flujo de trabajo ilustra el flujo típico del sistema de reservas de viajes. El flujo de trabajo consiste en reservar un viaje en avión (» ReserveFlight «), reservar un automóvil (» ReserveCarRental «), procesar los pagos (» ProcessPayment «), confirmar las reservas de vuelos (» ConfirmFlight «) y confirmar el alquiler de vehículos (» ConfirmCarRental «), seguido de una notificación de éxito cuando se hayan completado estos pasos. Sin embargo, si el sistema detecta algún error al ejecuter alguna de estas transacciones, empezará a fallar hacia atrás. Por ejemplo, un error en el procesamiento del pago (» ProcessPayment «) desencadena un reembolso (» RefundPayment «), que luego desencadena la cancelación del coche de alquiler y del vuelo (» CancelRentalReservation "y CancelFlightReservation «), lo que finaliza toda la transacción con un mensaje de error.

Este patrón implementa funciones Lambda independientes para cada tarea que se resalta en el diagrama, así como tres tablas de DynamoDB para vuelos, alquileres de vehículos y pagos. Cada función de Lambda crea, actualiza o elimina las filas de las tablas de DynamoDB respectivas, en función de si la transacción se confirma o se revierte. El patrón utiliza Amazon SNS para enviar mensajes de texto (SMS) a los suscriptores y notificarles las transacciones fallidas o satisfactorias. 

![\[Flujo de trabajo para un sistema de reservas de viajes basado en el patrón saga.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/fec0789c-d9b1-4d80-b179-dd9a7ecbec07/images/daad3e8e-6e6b-41c2-95c1-ca79d53ead64.png)


 

**Automatización y escala**

Puede crear la configuración de esta arquitectura mediante uno de los marcos de IaC. Utilice uno de los siguientes enlaces para su iAC preferido.
+ [Implementar con AWS CDK](https://serverlessland.com/workflows/saga-pattern-cdk)
+ [Implementar con AWS SAM](https://serverlessland.com/workflows/saga-pattern-sam)
+ [Implementar con Terraform](https://serverlessland.com/workflows/saga-pattern-tf)

## Tools (Herramientas)
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-tools"></a>

**Servicios de AWS**
+ [AWS Step Functions](https://aws.amazon.com/step-functions/) es un servicio de orquestación sin servidor que le permite combinar funciones de AWS Lambda y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial. A través de la consola gráfica Step Functions, puede ver el flujo de trabajo de su aplicación como una serie de pasos basados en eventos.
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido y predecible, así como una perfecta escalabilidad. Puede utilizar DynamoDB para crear una tabla de base de datos capaz de almacenar y recuperar cualquier cantidad de datos, así como de atender cualquier nivel de tráfico de solicitudes.
+ [AWS Lambda](https://aws.amazon.com/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 API Gateway](https://aws.amazon.com/api-gateway/) es un servicio de AWS para crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns/) es un servicio administrado que proporciona la entrega de mensajes de los publicadores a los suscriptores.
+ El [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/) es un marco de desarrollo de software para definir los recursos de las aplicaciones en la nube mediante lenguajes de programación conocidos TypeScript, como Python JavaScript, Java y C\$1/.Net.
+ [AWS Serverless Application Model (AWS SAM)](https://aws.amazon.com/serverless/sam/) es un marco de código abierto que permite crear aplicaciones sin servidor. Proporciona una sintaxis abreviada para expresar funciones, bases de datos y mapeos de fuentes de APIs eventos. 

**Código**

El código de una aplicación de ejemplo que muestra el patrón saga, incluida la plantilla IaC (AWS CDK, AWS SAM o Terraform), las funciones de Lambda y las tablas de DynamoDB, se encuentra en los siguientes enlaces. Siga las instrucciones de la primera epic para instalarlos.
+ [Implementar con AWS CDK](https://serverlessland.com/workflows/saga-pattern-cdk)
+ [Implementar con AWS SAM](https://serverlessland.com/workflows/saga-pattern-sam)
+ [Implementar con Terraform](https://serverlessland.com/workflows/saga-pattern-tf)

## Epics
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-epics"></a>

### Instalar paquetes, compilar y compilar
<a name="install-packages-compile-and-build"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar los paquetes NPM. | Cree un directorio nuevo, navegue hasta ese directorio en una terminal y clone el GitHub repositorio que prefiera en la sección de *código* que aparece anteriormente en este patrón.En la carpeta raíz que contiene el archivo `package.json`, ejecute el siguiente comando para descargar e instalar todos los paquetes de Node Package Manager (NPM):<pre>npm install</pre> | Desarrollador, arquitecto de la nube | 
| Compilar scripts. | En la carpeta raíz, ejecute el siguiente comando para indicar al TypeScript transpilador que cree todos los archivos necesarios: JavaScript <pre>npm run build</pre> | Desarrollador, arquitecto de la nube | 
| Esté atento a los cambios y vuelva a compilar. | En la carpeta raíz, ejecute el siguiente comando en una ventana de terminal independiente para comprobar si hay cambios en el código y compílalo cuando lo detecte:<pre>npm run watch</pre> | Desarrollador, arquitecto de la nube | 
| Ejecute pruebas unitarias (solo AWS CDK).  | Si utiliza el CDK de AWS, en la carpeta raíz, ejecute el siguiente comando para realizar las pruebas unitarias de Jest:<pre>npm run test</pre> | Desarrollador, arquitecto de la nube | 

### Implemente recursos en la cuenta de AWS de destino
<a name="deploy-resources-to-the-target-aws-account"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la pila de demostración en AWS. | La aplicación es independiente de la región de AWS. Si utiliza un perfil, debe declarar la región de forma explícita en el perfil de la [interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) o mediante variables de [entorno de la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html).En la carpeta raíz, ejecute el siguiente comando para crear un ensamblaje de implementación e implementarlo en la cuenta y región de AWS predeterminadas.AWS CDK:<pre>cdk bootstrap<br />cdk deploy</pre>AWS SAM:<pre>sam build<br />sam deploy --guided</pre>Terraform:<pre>terraform init<br />terraform apply</pre>Este paso puede tardar varios minutos en completarse. Este comando usa las credenciales predeterminadas que se configuraron para la AWS CLI.Anote la URL de API Gateway que se muestra en la consola una vez completada la implementación. Necesitará esta información para probar el flujo de ejecución de la saga. | Desarrollador, arquitecto de la nube | 
| Compare la pila implementada con el estado actual. | En la carpeta raíz, ejecute el siguiente comando para comparar la pila implementada con el estado actual después de realizar cambios en el código fuente:AWS CDK:<pre>cdk diff</pre>AWS SAM:<pre>sam deploy</pre>Terraform:<pre>terraform plan</pre> | Desarrollador, arquitecto de la nube | 

### Pruebe el flujo de ejecución
<a name="test-the-execution-flow"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Probar el flujo de ejecución de la saga. | Navegue hasta la URL de API Gateway que indicó en el paso anterior, cuando implementó la pila. Esta URL activa el inicio de la máquina de estados. Para obtener más información sobre cómo manipular el flujo de la máquina de estados pasando diferentes parámetros de URL, consulte la sección de [Información adicional](#implement-the-serverless-saga-pattern-by-using-aws-step-functions-additional).Para ver los resultados, inicie sesión en la consola de administración de AWS y vaya a la consola de Step Functions. Aquí puede ver todos los pasos de la saga State Machine. También puede ver la tabla de DynamoDB para ver los registros insertados, actualizados o eliminados. Si actualiza la pantalla con frecuencia, puede ver cómo el estado de la transacción cambia de a`pending`. `confirmed` Puede suscribirse al tema de las redes sociales actualizando el código del archivo `stateMachine.ts` con su número de teléfono móvil para recibir mensajes SMS cuando las reservas se hayan realizado o no se hayan realizado correctamente. Para obtener más información, consulte *Amazon SNS* en la sección [Información adicional](#implement-the-serverless-saga-pattern-by-using-aws-step-functions-additional). | Desarrollador, arquitecto de la nube | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpiar recursos. | Para limpiar los recursos desplegados para esta aplicación, puede usar uno de los siguientes comandos.AWS CDK:<pre>cdk destroy</pre>AWS SAM:<pre>sam delete</pre>Terraform:<pre>terraform destroy</pre> | Desarrollador de aplicaciones, arquitecto de la nube | 

## Recursos relacionados
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-resources"></a>

**Documentos técnicos**
+ [Implementación de microservicios en AWS](https://docs.aws.amazon.com/pdfs/whitepapers/latest/microservices-on-aws/microservices-on-aws.pdf)
+ [Aplicaciones sin servidor](https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens/welcome.html)

**Documentación de servicio de AWS**
+ [Introducción a los AWS SDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)
+ [Introducción a AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started.html)
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/)
+ [Amazon DynamoDB](https://docs.aws.amazon.com/dynamodb/)
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/)
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/)
+ [Amazon SNS](https://docs.aws.amazon.com/sns/)

**Tutoriales**
+ [Talleres prácticos sobre informática sin servidor](https://aws.amazon.com/serverless-workshops/)

## Información adicional
<a name="implement-the-serverless-saga-pattern-by-using-aws-step-functions-additional"></a>

**Código**

Con fines de prueba, este patrón implementa API Gateway y una función de Lambda de prueba que activa la máquina de estados Step Functions. Con Step Functions, puede controlar la funcionalidad del sistema de reservas de viajes pasando un `run_type` parámetro para imitar los errores en «ReserveFlightReserveCarRental,»»» ProcessPaymentConfirmFlight,»» y «»ConfirmCarRental.

La `saga`función de Lambda (`sagaLambda.ts`) toma la entrada de los parámetros de consulta de la URL de la API Gateway, crea el siguiente objeto JSON y lo pasa a Step Functions para su ejecución:

```
let input = {
"trip_id": tripID, //  value taken from query parameter, default is AWS request ID
"depart_city": "Detroit",
"depart_time": "2021-07-07T06:00:00.000Z",
"arrive_city": "Frankfurt",
"arrive_time": "2021-07-09T08:00:00.000Z",
"rental": "BMW",
"rental_from": "2021-07-09T00:00:00.000Z",
"rental_to": "2021-07-17T00:00:00.000Z",
"run_type": runType // value taken from query parameter, default is "success"
};
```

Puede experimentar con diferentes flujos de la máquina de estados Step Functions pasando los siguientes parámetros de URL:
+ **Ejecución correcta**: https://\$1api gateway url\$1
+ Error en la **reserva del vuelo** ─ https://\$1api gateway url\$1? **Tipo de ejecución = failFlightsReservation**
+ **Confirma el error del vuelo** ─ https://\$1api gateway url\$1? **Tipo de ejecución = failFlightsConfirmation**
+ Error al **alquilar un coche al reservar** ─ https://\$1api gateway url\$1? **RunType = Reserva failCarRental**
+ **Confirme que el alquiler del vehículo ha fallado** ─ https://\$1api gateway url\$1? **RunType = Confirmación failCarRental**
+ **Error al procesar el pago**: https://\$1api gateway url\$1?**runType=failPayment**
+ **Pasar un identificador de viaje**: https://\$1api gateway url\$1? **tripID=** \$1de forma predeterminada, el ID de viaje será el ID de solicitud de AWS\$1

**Plantillas de iAC**

Los repositorios enlazados incluyen plantillas de IaC que puede utilizar para crear toda la aplicación de reserva de viajes de muestra.
+ [Implementar con AWS CDK](https://serverlessland.com/workflows/saga-pattern-cdk)
+ [Implementar con AWS SAM](https://serverlessland.com/workflows/saga-pattern-sam)
+ [Implementar con Terraform](https://serverlessland.com/workflows/saga-pattern-tf)

**Tablas de DynamoDB**

Estos son los modelos de datos para las tablas de vuelos, alquileres de coches y pagos.

```
Flight Data Model:
 var params = {
      TableName: process.env.TABLE_NAME,
      Item: {
        'pk' : {S: event.trip_id},
        'sk' : {S: flightReservationID},
        'trip_id' : {S: event.trip_id},
        'id': {S: flightReservationID},
        'depart_city' : {S: event.depart_city},
        'depart_time': {S: event.depart_time},
        'arrive_city': {S: event.arrive_city},
        'arrive_time': {S: event.arrive_time},
        'transaction_status': {S: 'pending'}
      }
    };

Car Rental Data Model:
var params = {
      TableName: process.env.TABLE_NAME,
      Item: {
        'pk' : {S: event.trip_id},
        'sk' : {S: carRentalReservationID},
        'trip_id' : {S: event.trip_id},
        'id': {S: carRentalReservationID},
        'rental': {S: event.rental},
        'rental_from': {S: event.rental_from},
        'rental_to': {S: event.rental_to},
        'transaction_status': {S: 'pending'}
      }
    };

Payment Data Model:
var params = {
      TableName: process.env.TABLE_NAME,
      Item: {
        'pk' : {S: event.trip_id},
        'sk' : {S: paymentID},
        'trip_id' : {S: event.trip_id},
        'id': {S: paymentID},
        'amount': {S: "750.00"}, // hard coded for simplicity as implementing any monetary transaction functionality is beyond the scope of this pattern
        'currency': {S: "USD"},
        'transaction_status': {S: "confirmed"}
      }
    };
```

**Funciones de Lambda**

Se crearán las siguientes funciones para respaldar el flujo y la ejecución de la máquina de estados en Step Functions:
+ **Reservar vuelos**: introduzca un registro en la tabla de vuelos de DynamoDB con `transaction_status` un `pending` de para reservar un vuelo.
+ **Confirmar vuelo**: actualiza el registro de la tabla de vuelos de DynamoDB para establecer `transaction_status` en `confirmed`, para confirmar el vuelo.
+ **Cancelar reserva de vuelos**: elimina el registro de la tabla de vuelos de DynamoDB para cancelar el vuelo pendiente.
+ **Reserve vehículos de alquiler**: inserta un registro en la tabla de CarRentals DynamoDB con `transaction_status` un `pending` de para reservar un alquiler de vehículos.
+ **Confirmar alquileres de vehículos**: actualiza el registro de la tabla de CarRentals DynamoDB para `transaction_status` `confirmed` establecerlo en y confirmar el alquiler de vehículos.
+ **Cancelar reserva de vehículos de alquiler:** elimina el registro de la tabla de CarRentals DynamoDB para cancelar el alquiler de vehículos pendiente.
+ **Procesar pago**: inserta un registro en la tabla de pagos de DynamoDB para el pago.
+ **Cancelar pago**: elimina el registro del pago de la tabla de pagos de DynamoDB.

**Amazon SNS**

La aplicación de ejemplo crea el tema y la suscripción siguientes para enviar mensajes SMS y notificar al cliente si las reservas se han realizado o no se han realizado correctamente. Si desea recibir mensajes de texto mientras prueba la aplicación de ejemplo, actualice la suscripción de SMS con su número de teléfono válido en el archivo de definición de la máquina de estados.

Fragmento de CDK de AWS (añada el número de teléfono en la segunda línea del siguiente código):

```
const topic = new  sns.Topic(this, 'Topic');
topic.addSubscription(new subscriptions.SmsSubscription('+11111111111'));
const snsNotificationFailure = new tasks.SnsPublish(this ,'SendingSMSFailure', {
topic:topic,
integrationPattern: sfn.IntegrationPattern.REQUEST_RESPONSE,
message: sfn.TaskInput.fromText('Your Travel Reservation Failed'),
});
 
const snsNotificationSuccess = new tasks.SnsPublish(this ,'SendingSMSSuccess', {
topic:topic,
integrationPattern: sfn.IntegrationPattern.REQUEST_RESPONSE,
message: sfn.TaskInput.fromText('Your Travel Reservation is Successful'),
});
```

Fragmento de SAM de AWS (sustituya las cadenas `+1111111111` por su número de teléfono válido):

```
  StateMachineTopic11111111111:
    Type: 'AWS::SNS::Subscription'
    Properties:
      Protocol: sms
      TopicArn:
        Ref: StateMachineTopic
      Endpoint: '+11111111111'
    Metadata:
      'aws:sam:path': SamServerlessSagaStack/StateMachine/Topic/+11111111111/Resource
```

Fragmento de Terraform (sustituya la cadena `+111111111` por su número de teléfono válido):

```
resource "aws_sns_topic_subscription" "sms-target" {
  topic_arn = aws_sns_topic.topic.arn
  protocol  = "sms"
  endpoint  = "+11111111111"
}
```

**Reservas realizadas satisfactoriamente**

En el siguiente flujo se muestra una reserva correcta con los caracteres "ReserveFlight,»ReserveCarRental,» y "" seguidos de ProcessPayment "" y ConfirmFlight "». ConfirmCarRental Se notifica al cliente que la reserva se ha realizado correctamente mediante mensajes SMS que se envían al suscriptor del tema de las redes sociales.

![\[Ejemplo de una reserva exitosa implementada por Step Functions mediante el patrón saga.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/fec0789c-d9b1-4d80-b179-dd9a7ecbec07/images/f58c894e-7721-4bc7-8f7d-29f23faa5dc1.png)


**Reservas fallidas**

Este flujo es un ejemplo de fracaso en el patrón de la saga. Si, después de reservar vuelos y alquileres de vehículos, "ProcessPayment" falla, los pasos se cancelan en orden inverso.  Se cancelan las reservas y se notifica al cliente del error mediante mensajes SMS que se envían al suscriptor del tema de las redes sociales.

![\[Ejemplo de una reserva fallida implementada por Step Functions mediante el patrón saga.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/fec0789c-d9b1-4d80-b179-dd9a7ecbec07/images/7c64d326-be27-42c3-b03f-d677efedb9a7.png)


# Gestión de las aplicaciones de contenedores en las instalaciones mediante la configuración de Amazon ECS Anywhere con AWS CDK
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk"></a>

*Dr. Rahul Sharad Gaikwad, Amazon Web Services*

## Resumen
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-summary"></a>

[Amazon ECS Anywhere](https://aws.amazon.com/ecs/anywhere/) es una extensión de Amazon Elastic Container Service (Amazon ECS). Puede usar ECS Anywhere para implementar tareas nativas de Amazon ECS en un entorno en las instalaciones o administrado por el cliente. Esta característica ayuda a reducir los costos y a mitigar la compleja orquestación y las operaciones de los contenedores locales. Puede usar ECS Anywhere para implementar y ejecutar aplicaciones de contenedor tanto en entornos en las instalaciones como en la nube. Evita que su equipo tenga que aprender varios dominios y conjuntos de habilidades, o administrar software complejo por su cuenta.

Este patrón muestra los pasos para configurar ECS Anywhere mediante pilas del AWS Cloud Development Kit ([AWS CDK](https://aws.amazon.com/cdk/)).

## Requisitos previos y limitaciones
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada. (Consulte [Instalación, actualización y desinstalación de 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). 
+ Kit de herramientas de AWS CDK, instalado y configurado. (Consulte [Kit de Herramientas CDK de AWS](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) en la documentación de AWS CDK y siga las instrucciones para instalar la versión 2 de forma global).
+ Administrador de paquetes de nodos (npm), instalado y configurado para la AWS CDK en. TypeScript (Consulte [Descargar e instalar Node.js y npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) en la documentación de npm).

**Limitaciones**
+ Para ver las limitaciones y consideraciones, consulte [Instancias externas (Amazon ECS Anywhere)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-anywhere.html#ecs-anywhere-considerations) en la documentación de Amazon ECS.

**Versiones de producto**
+ Kit de Herramientas CDK de AWS, versión 2
+ npm versión 7.20.3 o posterior
+ Node.js versión 16.6.1 o posterior

## Arquitectura
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-architecture"></a>

**Pila de tecnología de destino**
+ AWS CloudFormation
+ AWS CDK
+ Amazon ECS Anywhere
+ AWS Identity y Access Management (IAM)

**Arquitectura de destino**

El siguiente diagrama ilustra una arquitectura de sistema de alto nivel de la configuración de ECS Anywhere que utiliza la AWS CDK con TypeScript, tal como se implementa mediante este patrón.

1. Al implementar la pila de CDK de AWS, se crea una CloudFormation pila en AWS.

1. La CloudFormation pila aprovisiona un clúster de Amazon ECS y los recursos de AWS relacionados.

1. Para registrar una instancia externa en un clúster de Amazon ECS, debe instalar AWS Systems Manager Agent (SSM Agent) en su máquina virtual (VM) y registrar la VM como instancia administrada por AWS Systems Manager. 

1. También debe instalar el agente de contenedores de Amazon ECS y Docker en su máquina virtual para registrarla como instancia externa en el clúster de Amazon ECS.

1. Cuando la instancia externa está ya registrada y configurada con el clúster de Amazon ECS, puede ejecutar varios contenedores en su máquina virtual, registrada como instancia externa.

![\[Configuración de ECS Anywhere mediante AWS CDK con TypeScript.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/3ed63c00-40e7-4831-bb9d-63049c3490aa/images/ff7dc774-830d-4b9f-8262-7314afe7a033.png)


 

**Automatización y escala**

El [GitHub repositorio](https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples/) que se proporciona con este patrón utiliza la CDK de AWS como herramienta de infraestructura como código (IaC) para crear la configuración de esta arquitectura. AWS CDK le ayuda a orquestar los recursos y configurar ECS Anywhere.

## Tools (Herramientas)
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
+ 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.

**Código**

El código fuente de este patrón está disponible en el GitHub repositorio de [muestras de CDK de Amazon ECS Anywhere](https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples). Para clonar y utilizar el repositorio, siga las instrucciones de la siguiente sección.

## Epics
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-epics"></a>

### Verificar la configuración de AWS CDK
<a name="verify-aws-cdk-configuration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Verifique la versión de AWS CDK. | Compruebe la versión del kit de herramientas de AWS CDK mediante el siguiente comando:<pre>cdk --version</pre>Este patrón requiere la versión 2 de AWS CDK. Si tiene una versión anterior de AWS CDK siga las instrucciones de la [documentación de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) para actualizarla. | DevOps ingeniero | 
| Configure las credenciales de AWS. | Para configurar las credenciales, ejecute el comando `aws configure` y siga las instrucciones:<pre>$aws configure<br />AWS Access Key ID [None]: <your-access-key-ID><br />AWS Secret Access Key [None]: <your-secret-access-key><br />Default region name [None]: <your-Region-name><br />Default output format [None]:</pre> | DevOps ingeniero | 

### Inicie el entorno de AWS CDK
<a name="bootstrap-the-aws-cdk-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio de código de AWS CDK. | Clona el repositorio de GitHub código de este patrón mediante el comando:<pre>git clone https://github.com/aws-samples/amazon-ecs-anywhere-cdk-samples.git</pre> | DevOps ingeniero | 
| Arranque el entorno de . | Para implementar la CloudFormation plantilla de AWS en la cuenta y la región de AWS que desee usar, ejecute el siguiente comando:<pre>cdk bootstrap <account-number>/<Region></pre>Para obtener más información, consulte [Proceso de arranque](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) en la documentación de AWS CDK. | DevOps ingeniero | 

### Crear e implementar el proyecto
<a name="build-and-deploy-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale las dependencias de los paquetes y compile TypeScript los archivos. | Instale las dependencias del paquete y compile los TypeScript archivos ejecutando los siguientes comandos:<pre>$cd amazon-ecs-anywhere-cdk-samples<br />$npm install<br />$npm fund </pre>Estos comandos instalan todos los paquetes del repositorio de muestra. Si se muestra algún error acerca de paquetes que faltan, utilice uno de los siguientes comandos:<pre>$npm ci   </pre>—o—<pre>$npm install -g @aws-cdk/<package_name></pre>Para obtener más información, consulte [npm ci](https://docs.npmjs.com/cli/v7/commands/npm-ci) y [npm install](https://docs.npmjs.com/cli/v7/commands/npm-install) en la documentación de npm. | DevOps ingeniero | 
| Compilar el proyecto. | Ejecute el siguiente comando para compilar el código del proyecto:<pre>npm run build</pre>Para obtener más información sobre la compilación e implementación del proyecto, consulte [Su primera aplicación de AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html#:~:text=the%20third%20parameter.-,Synthesize%20an%20AWS%20CloudFormation%20template,-Synthesize%20an%20AWS) en la documentación de AWS CDK. | DevOps ingeniero | 
| Implementar el proyecto. | Para implementar el código del proyecto, ejecute el comando:<pre>cdk deploy</pre> | DevOps ingeniero | 
| Verifique la creación y el resultado de la pila. | Abra la CloudFormation consola de AWS en [https://console.aws.amazon.com/cloudformation****](https://console.aws.amazon.com/cloudformation/) y elija la `EcsAnywhereStack` pila. La pestaña **Salidas** muestra los comandos que se deben ejecutar en su máquina virtual externa. | DevOps ingeniero | 

### Configuración de una máquina en las instalaciones
<a name="set-up-an-on-premises-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure su máquina virtual mediante Vagrant. | Con fines de demostración, puede usar [HashiCorp Vagrant](https://www.vagrantup.com/) para crear una máquina virtual. Vagrant es una utilidad de código abierto para compilar y mantener entornos de desarrollo de software virtual portátiles. Cree una máquina virtual Vagrant ejecutando el comando `vagrant up` desde el directorio raíz donde se encuentra Vagrantfile. Para obtener más información, consulte la [documentación de Vagrant](https://www.vagrantup.com/docs/cli/up). | DevOps ingeniero | 
| Registre su máquina virtual como instancia externa. | 1. Inicie sesión en la máquina virtual de Vagrant mediante el comando `vagrant ssh`. Para obtener más información, consulte la [documentación de Vagrant](https://www.vagrantup.com/docs/cli/ssh).2. Cree un código de activación y una ID que usará para registrar su máquina virtual en AWS Systems Manager y activar su instancia externa. El resultado de este comando incluye valores `ActivationId` y `ActivationCode`: <pre>aws ssm create-activation --iam-role EcsAnywhereInstanceRole | tee ssm-activation.json</pre>3. Exporte el ID de activación y los valores del código:<pre>export ACTIVATION_ID=<activation-ID><br />export ACTIVATION_CODE=<activation-code></pre>4. Descargar el script de instalación en el servidor ubicado en las instalaciones o en la máquina virtual (VM):<pre>curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh" && sudo chmod +x ecs-anywhere-install.sh</pre>5. Ejecute el script de instalación en el servidor ubicado en las instalaciones o en la máquina virtual (VM).<pre>sudo ./ecs-anywhere-install.sh \<br />    --cluster test-ecs-anywhere \<br />     --activation-id $ACTIVATION_ID \<br />     --activation-code $ACTIVATION_CODE \<br />    --region <Region></pre>Para obtener más información sobre la configuración y el registro de su máquina virtual, consulte [Registrar una instancia externa en un clúster](https://docs.amazonaws.cn/en_us/AmazonECS/latest/developerguide/ecs-anywhere-registration.html) en la documentación de Amazon ECS. | DevOps ingeniero | 
| Verifique el estado de ECS Anywhere y de la máquina virtual externa. | Para verificar si su caja virtual está conectada al plano de control de Amazon ECS y en funcionamiento, utilice los siguientes comandos:<pre>aws ssm describe-instance-information<br />aws ecs list-container-instances --cluster $CLUSTER_NAME</pre> | DevOps ingeniero | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpie y elimine recursos. | Después de seguir este patrón, debe eliminar los recursos que ha creado para evitar incurrir en cargos adicionales. Para limpiar, ejecute el comando:<pre>cdk destroy</pre> | DevOps ingeniero | 

## Recursos relacionados
<a name="manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk-resources"></a>
+ [Documentación de Amazon ECS Anywhere](https://aws.amazon.com/ecs/anywhere/) 
+ [Amazon ECS Anywhere Demo](https://www.youtube.com/watch?v=-eud6yUXsJM)
+ [Muestras de talleres sobre Amazon ECS Anywhere](https://github.com/aws-samples/aws-ecs-anywhere-workshop-samples)

# Modernizar las aplicaciones de ASP.NET Web Forms en AWS
<a name="modernize-asp-net-web-forms-applications-on-aws"></a>

*Vijai Anand Ramalingam y Sreelaxmi Pai, Amazon Web Services*

## Resumen
<a name="modernize-asp-net-web-forms-applications-on-aws-summary"></a>

En este patrón se describen los pasos para modernizar una aplicación heredada y monolítica de ASP.NET Web Forms mediante su migración a ASP.NET Core en AWS.

La migración de las aplicaciones de ASP.NET Web Forms a ASP.NET Core le ayuda a aprovechar el rendimiento, el ahorro de costos y el sólido ecosistema de Linux. Sin embargo, puede suponer un esfuerzo manual considerable. En este patrón, la aplicación heredada se moderniza gradualmente mediante un enfoque gradual y, a continuación, se divide en contenedores en la nube de AWS.

Pensemos en una aplicación heredada y monolítica para un carrito de compras. Supongamos que se creó como una aplicación de ASP.NET Web Forms y consta de páginas .aspx con un archivo de código subyacente (`aspx.cs`). El proceso de modernización consta de estos pasos:

1. Divida el monolito en microservicios utilizando los patrones de descomposición adecuados. Para obtener más información, consulte la guía [Cómo descomponer monolitos en microservicios](https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-decomposing-monoliths/) en el sitio web de Recomendaciones de AWS.

1. Transfiera su aplicación heredada de ASP.NET Web Forms (.NET Framework) a ASP.NET Core en .NET 5 o posterior. En este patrón, usted utiliza el Asistente de portabilidad para .NET para analizar su aplicación ASP.NET Web Forms e identificar las incompatibilidades con ASP.NET Core. Esto reduce el esfuerzo de portabilidad manual.

1. Vuelva a desarrollar la capa de interfaz de usuario de Web Forms mediante React. Este patrón no cubre la remodelación de la interfaz de usuario. Para obtener instrucciones, consulte [Crear una nueva aplicación de React](https://reactjs.org/docs/create-a-new-react-app.html) en la documentación de React.

1. Vuelva a desarrollar el archivo de código subyacente de Web Forms (interfaz empresarial) como una API web de ASP.NET Core. Este patrón utiliza NDepend informes para ayudar a identificar los archivos y las dependencias necesarios.

1. Actualice shared/common los proyectos, como Business Logic y Data Access, de su aplicación antigua a .NET 5 o posterior mediante Porting Assistant para .NET. 

1. Añada servicios de AWS para complementar su aplicación. Por ejemplo, puede usar [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) para monitorear, almacenar y acceder a los registros de su aplicación, y [AWS Systems Manager](https://aws.amazon.com/systems-manager/) para almacenar la configuración de la aplicación.

1. Ponga en contenedores la aplicación ASP.NET Core modernizada. Este patrón crea un archivo Docker orientado a Linux en Visual Studio y usa Docker Desktop para probarlo localmente. En este paso se supone que la aplicación antigua ya se está ejecutando en una instancia local o en una instancia Windows de Amazon Elastic Compute Cloud (Amazon EC2). Para obtener más información, consulte el patrón [Ejecutar un contenedor Docker de la API web de ASP.NET Core en una instancia de Amazon EC2 Linux.](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html)

1. Implemente la aplicación principal ASP.NET modernizada en Amazon Elastic Container Service (Amazon ECS). Este patrón no cubre el paso de implementación. Para obtener instrucciones, consulte el [Taller de Amazon ECS](https://ecsworkshop.com/).

**nota**  
Este patrón no cubre los pasos de desarrollo de la interfaz de usuario, modernización de bases de datos o de implementación de contenedores.

## Requisitos previos y limitaciones
<a name="modernize-asp-net-web-forms-applications-on-aws-prereqs"></a>

**Requisitos previos **
+ [Visual Studio](https://visualstudio.microsoft.com/downloads/) o [Visual Studio Code](https://code.visualstudio.com/download), descargados e instalados.
+ Acceso a una cuenta de AWS mediante la Consola de administración de AWS y la Interfaz de la línea de comandos de AWS (AWS CLI) versión 2. (Consulte las [Instrucciones para configurar la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)).
+ El Kit de herramientas de AWS para Visual Studio (consulte las [instrucciones de configuración](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)).
+ Docker Desktop, [descargado](https://www.docker.com/products/docker-desktop) e instalado.
+ .NET SDK, [descargado](https://download.visualstudio.microsoft.com/download/pr/4263dc3b-dc67-4f11-8d46-cc0ae86a232e/66782bbd04c53651f730b2e30a873f18/dotnet-sdk-5.0.203-win-x64.exe) e instalado.
+ NDepend herramienta, [descargada e instalada](https://www.ndepend.com/download). Para instalar la NDepend extensión para Visual Studio, ejecute `NDepend.VisualStudioExtension.Installer` ([consulte las instrucciones](https://www.ndepend.com/docs/getting-started-with-ndepend#Part1)). Puede seleccionar Visual Studio 2019 o 2022, según sus necesidades. 
+ Asistente de portabilidad para .NET, [descargado](https://aws.amazon.com/porting-assistant-dotnet/) e instalado.

## Arquitectura
<a name="modernize-asp-net-web-forms-applications-on-aws-architecture"></a>

**Modernización de la aplicación de carrito de compras**

El siguiente diagrama ilustra el proceso de modernización de una aplicación heredada de carrito de compras de ASP.NET.

![\[Modernización de una aplicación de carrito de compras heredada\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36cda8e6-f2cb-4f1a-b37f-fa3045cc5ba1/images/4367e259-9bb3-4eb6-a54d-1c1e2dece7d4.png)


**Arquitectura de destino**

En el siguiente diagrama se ilustra la arquitectura de la aplicación de carrito de compras modernizada en AWS. La web de ASP.NET Core APIs se implementa en un clúster de Amazon ECS. Los servicios de registro y configuración los proporcionan Amazon CloudWatch Logs y AWS Systems Manager.

![\[Arquitectura de destino para la aplicación ASP.NET Web Forms en AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36cda8e6-f2cb-4f1a-b37f-fa3045cc5ba1/images/ed6d65ec-0dc9-43ab-ac07-1f172e089399.png)


## Tools (Herramientas)
<a name="modernize-asp-net-web-forms-applications-on-aws-tools"></a>

**Servicios de AWS**
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html): Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores altamente escalable y rápido para ejecutar, detener y administrar contenedores en un clúster. Las tareas y los servicios se pueden ejecutar en una infraestructura sin servidor administrada por AWS Fargate. Como alternativa, para tener más control sobre su infraestructura, puede ejecutar sus tareas y servicios en un clúster de EC2 instancias que administre.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html): Amazon CloudWatch Logs centraliza los registros de todos los sistemas, aplicaciones y servicios de AWS que utilice. Esto le permite consultarlos, buscar códigos de error o patrones específicos, filtrarlos en función de campos específicos o archivarlos de forma segura para análisis futuros.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html): AWS Systems Manager es un servicio que puede utilizar para ver y controlar su infraestructura en AWS. Mediante la consola de Systems Manager, puede ver los datos operativos de varios servicios de AWS y automatizar las tareas operativas en sus recursos de AWS. Systems Manager le ayuda a mantener la seguridad y la conformidad mediante el análisis de sus instancias administradas y el informe sobre las infracciones de las políticas que detecte (o la toma de medidas correctivas con respecto a estas).

**Herramientas**
+ [Visual Studio](https://visualstudio.microsoft.com/) o [Visual Studio Code](https://code.visualstudio.com/): herramientas para crear aplicaciones.NET APIs, sitios web y otros programas.
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html) – Una extensión para Visual Studio que ayuda a desarrollar, depurar e implementar aplicaciones .NET que utilizan servicios de AWS.
+ [Docker Desktop](https://www.docker.com/products/docker-desktop) – Una herramienta que simplifica la compilación e implementación de aplicaciones en contenedores.
+ [NDepend](https://www.ndepend.com/features/)— Un analizador que supervisa el código.NET para detectar dependencias, problemas de calidad y cambios en el código.
+ [Asistente de portabilidad para .NET](https://aws.amazon.com/porting-assistant-dotnet/) – Una herramienta de análisis que escanea el código.NET para identificar incompatibilidades con .NET Core y estimar el esfuerzo de migración.

## Epics
<a name="modernize-asp-net-web-forms-applications-on-aws-epics"></a>

### Transfiera su aplicación heredada a .NET 5 o a una versión posterior
<a name="port-your-legacy-application-to-net-5-or-later-version"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice su aplicación heredada de.NET Framework a .NET 5. | Puede usar el Asistente de portabilidad para .NET para convertir su aplicación heredada de ASP.NET Web Forms a .NET 5 o posterior. Siga las instrucciones de la [documentación del Asistente de portabilidad para .NET](https://docs.aws.amazon.com/portingassistant/latest/userguide/porting-assistant-getting-started.html). | Desarrollador de aplicaciones | 
| Genere informes NDepend . | Al modernizar la aplicación ASP.NET Web Forms descomponiéndola en microservicios, es posible que no necesite todos los archivos .cs de la aplicación heredada. Puede utilizarlos NDepend para generar un informe para cualquier archivo con código subyacente (.cs), a fin de obtener todas las personas que llaman y las que llaman. Este informe le ayuda a identificar y usar solo los archivos necesarios en sus microservicios.Tras la instalación NDepend (consulte la sección [Requisitos previos](#modernize-asp-net-web-forms-applications-on-aws-prereqs)), abra la solución (archivo.sln) para la aplicación antigua en Visual Studio y siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Este proceso genera un informe para el archivo con el código subyacente en el que se enumeran todas los emisores y destinatarios de llamadas. Para obtener más información sobre el gráfico de dependencias, consulte la [NDepend documentación](https://www.ndepend.com/docs/visual-studio-dependency-graph). | Desarrollador de aplicaciones | 
| Cree una nueva solución .NET 5. | Para crear una estructura nueva.NET 5 (o posterior) para su web ASP.NET Core modernizada: APIs[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Para obtener más información acerca de la creación de proyectos y soluciones, consulte la [documentación de Visual Studio](https://docs.microsoft.com/en-us/visualstudio/ide/creating-solutions-and-projects).A medida que cree la solución y compruebe su funcionalidad, es posible que identifique varios archivos adicionales para añadirlos a la solución, además de los archivos que la NDepend identificaron. | Desarrollador de aplicaciones | 

### Actualice su código de la aplicación.
<a name="update-your-application-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la web APIs con ASP.NET Core. | Supongamos que uno de los microservicios que identificó en su aplicación heredada de carrito de compras monolítico es *Productos*. Usted creó un nuevo proyecto de API web de ASP.NET Core para *Productos* en la épica anterior. En este paso, usted identificará y modernizará todos los formularios web (páginas .aspx) relacionados con los *Productos*. Supongamos que *Productos* consta de cuatro formularios web, tal y como se ha ilustrado anteriormente en la sección de [Arquitectura](#modernize-asp-net-web-forms-applications-on-aws-architecture):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Debe analizar cada formulario web, identificar todas las solicitudes que se envían a la base de datos para realizar alguna lógica y obtener respuestas. Puede implementar cada solicitud como un punto de conexión de la API web. Gracias a sus formularios web, los *productos* pueden tener los siguientes puntos de conexión posibles:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Como se mencionó anteriormente, también puede reutilizar todos los demás proyectos que haya actualizado a .NET 5, incluidos Business Logic, Data Access y los shared/common proyectos. | Desarrollador de aplicaciones | 
| Configura Amazon CloudWatch Logs. | Puedes usar [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) para monitorear, almacenar y acceder a los registros de tu aplicación. Puede registrar datos en Amazon CloudWatch Logs mediante un SDK de AWS. También puede integrar aplicaciones de.NET con CloudWatch Logs utilizando los marcos de registro de.NET más populares [NLog](https://www.nuget.org/packages/AWS.Logger.NLog/), como [Log4Net](https://www.nuget.org/packages/AWS.Logger.Log4net/) y [ASP.NET Core](https://www.nuget.org/packages/AWS.Logger.AspNetCore/).Para obtener más información sobre este paso, consulte la entrada del blog [Amazon CloudWatch Logs y.NET Logging Frameworks](https://aws.amazon.com/blogs/developer/amazon-cloudwatch-logs-and-net-logging-frameworks/). | Desarrollador de aplicaciones | 
| Configurar el almacén de parámetros de AWS Systems Manager. | Puede usar el [Almacén de parámetros de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) para almacenar la configuración de la aplicación, como las cadenas de conexión, de forma separada del código de la aplicación. El NuGet paquete [Amazon.Extensions.Configuration. SystemsManager](https://www.nuget.org/packages/Amazon.Extensions.Configuration.SystemsManager/)simplifica la forma en que su aplicación carga estos ajustes del AWS Systems Manager Parameter Store al sistema de configuración .NET Core. Para obtener más información sobre este paso, consulte la entrada del blog [Proveedor de configuración .NET Core para AWS Systems Manager](https://aws.amazon.com/blogs/developer/net-core-configuration-provider-for-aws-systems-manager/). | Desarrollador de aplicaciones | 

### Cómo añadir autenticación y autorización
<a name="add-authentication-and-authorization"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Utilice una cookie compartida para la autenticación. | La modernización de una aplicación heredada monolítica es un proceso iterativo y requiere que el monolito y su versión modernizada coexistan. Puede usar una cookie compartida para lograr una autenticación perfecta entre las dos versiones. La aplicación ASP.NET heredada sigue validando las credenciales de los usuarios y emite la cookie, mientras que la aplicación ASP.NET Core modernizada valida la cookie. Para obtener instrucciones y un código de muestra, consulte el [ GitHub proyecto de ejemplo](https://github.com/aws-samples/dotnet-share-auth-cookie-between-monolith-and-modernized-apps). | Desarrollador de aplicaciones | 

### Compilación y ejecución del contenedor de forma local
<a name="build-and-run-the-container-locally"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una imagen de Docker con Visual Studio. | En este paso, usted crea un archivo de Docker mediante la API web de Visual Studio para .NET Core.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html)Visual Studio crea un archivo de Docker para su proyecto. Para ver un archivo de muestra de Docker, consulte [Herramientas de contenedor de Visual Studio para Docker](https://docs.microsoft.com/en-us/visualstudio/containers/overview) en el sitio web de Microsoft. | Desarrollador de aplicaciones | 
| Cree y ejecute el contenedor mediante Docker Desktop. | Ahora puede compilar, crear y ejecutar el contenedor en Docker Desktop.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-asp-net-web-forms-applications-on-aws.html) | Desarrollador de aplicaciones | 

## Recursos relacionados
<a name="modernize-asp-net-web-forms-applications-on-aws-resources"></a>
+ [Ejecute un contenedor Docker de la API web de ASP.NET Core en una instancia de Amazon EC2 Linux](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) (AWS Prescriptive Guidance)
+ [Taller de Amazon ECS](https://ecsworkshop.com/)
+ [Realice blue/green implementaciones de ECS CodeDeploy mediante AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html) ( CloudFormation documentación de AWS)
+ [Cómo empezar con NDepend](https://www.ndepend.com/docs/getting-started-with-ndepend) (NDepend documentación)
+ [Asistente de portabilidad para .NET](https://aws.amazon.com/porting-assistant-dotnet/)

## Información adicional
<a name="modernize-asp-net-web-forms-applications-on-aws-additional"></a>

En las tablas siguientes se proporcionan ejemplos de proyectos de muestra para una aplicación de carrito de compras heredada y los proyectos equivalentes de una aplicación ASP.NET Core modernizada.

**Solución heredada:**


| 
| 
| Nombre del proyecto | Plantilla de proyecto | Target framework | 
| --- |--- |--- |
| Interfaz empresarial  | Biblioteca de clases  | .NET Framework  | 
| BusinessLogic  | Biblioteca de clases  | .NET Framework  | 
| WebApplication  | Aplicación web ASP.NET Framework  | .NET Framework  | 
| UnitTests  | NUnit Proyecto de prueba  | .NET Framework  | 
| Compartido ->Común  | Biblioteca de clases  | .NET Framework  | 
| Compartido ->Marco  | Biblioteca de clases  | .NET Framework  | 

**Nueva solución:**


| 
| 
| Nombre del proyecto | Plantilla de proyecto | Target framework | 
| --- |--- |--- |
| BusinessLogic  | Biblioteca de clases  | .NET 5.0  | 
| <WebAPI>  | API web ASP.NET Core  | .NET 5.0  | 
| <WebAPI>. UnitTests  | NUnit 3 Proyecto de prueba  | .NET 5.0  | 
| Compartido ->Común  | Biblioteca de clases  | .NET 5.0  | 
| Compartido ->Marco  | Biblioteca de clases  | .NET 5.0  | 

# Incorporación de inquilinos en la arquitectura SaaS para el modelo de silo mediante C\$1 y AWS CDK
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk"></a>

*Tabby Ward, Susmitha Reddy Gankidi y Vijai Anand Ramalingam, Amazon Web Services*

## Resumen
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-summary"></a>

Las aplicaciones de software como servicio (SaaS) se pueden crear con una variedad de modelos arquitectónicos diferentes. El *modelo de silo* se refiere a una arquitectura en la que los inquilinos reciben recursos específicos.

Las aplicaciones SaaS se basan en un modelo sencillo para introducir nuevos inquilinos en su entorno. Esto suele requerir la orquestación de varios componentes para aprovisionar y configurar correctamente todos los elementos necesarios para crear un nuevo inquilino. Este proceso, en la arquitectura SaaS, se denomina incorporación de inquilinos. La incorporación debe automatizarse por completo en todos los entornos de SaaS y utilizar la infraestructura como código en el proceso de incorporación.

Este patrón le guía a través de un ejemplo de creación de un inquilino y aprovisionamiento de una infraestructura básica para el inquilino en Amazon Web Services (AWS). El patrón utiliza C\$1 y el AWS Cloud Development Kit (AWS CDK).

Como este patrón crea una alarma de facturación, le recomendamos implementar la pila en la región Este de EE. UU. (Norte de Virginia) o us-east-1 de AWS. Para obtener más información, consulte la [documentación de AWS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html).

## Requisitos previos y limitaciones
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-prereqs"></a>

**Requisitos previos**** **
+ Una [cuenta de AWS](https://aws.amazon.com/account/) activa.
+ Una entidad principal de AWS Identity and Access Management (IAM) con acceso suficiente de IAM para crear recursos de AWS para este patrón. Para obtener más información, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).
+ [Instale Amazon Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) y [configure la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) para realizar la implementación de la CDK de AWS.
+ [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) descargado o instalado o [Visual Studio Code](https://code.visualstudio.com/download) descargado o instalado.
+ Configuración de [AWS Toolkit para Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html).
+ [.NET Core 3.1 o posterior](https://dotnet.microsoft.com/download/dotnet-core/3.1) (necesario para las aplicaciones de AWS CDK de C\$1)
+ [Amazon.Lambda.Tools](https://github.com/aws/aws-extensions-for-dotnet-cli#aws-lambda-amazonlambdatools) instalado.

**Limitaciones**** **
+ La CDK de AWS utiliza [AWS CloudFormation](https://aws.amazon.com/cloudformation/), por lo que las aplicaciones de la CDK de AWS están sujetas a cuotas de CloudFormation servicio. Para obtener más información, consulte [ CloudFormation Cuotas de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html). 
+ La CloudFormation pila de inquilinos se crea con un rol de CloudFormation servicio `infra-cloudformation-role` con caracteres comodín en las acciones (`sns`\$1 y`sqs*`), pero con los recursos limitados al `tenant-cluster` prefijo. Para un caso de uso de producción, evalúe esta configuración y proporcione únicamente el acceso obligatorio a este rol de servicio. La función `InfrastructureProvision` Lambda también usa un carácter comodín (`cloudformation*`) para aprovisionar la CloudFormation pila, pero con los recursos limitados al prefijo. `tenant-cluster`
+ La compilación de docker de este ejemplo de código utiliza `--platform=linux/amd64` para forzar imágenes basadas en `linux/amd64`. Esto es para garantizar que los artefactos de imagen finales sean adecuados para Lambda, que de forma predeterminada utiliza una arquitectura x86-64. Si necesita cambiar la arquitectura Lambda de destino, asegúrese de cambiar los códigos CDK de Dockerfiles y de AWS. Para obtener más información, consulte esta entrada en el blog: [Migrating AWS Lambda functions to Arm-based AWS Graviton2 processors](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-to-arm-based-aws-graviton2-processors/).
+ El proceso de eliminación de la pila no limpiará CloudWatch los registros (grupos de registros y registros) generados por la pila. Debe limpiar los registros manualmente a través de la consola de administración de AWS, la CloudWatch consola Amazon o la API.

Este patrón se configura a modo de ejemplo. Para su uso en producción, evalúe las siguientes configuraciones y realice los cambios en función de los requisitos de su empresa:
+ Para simplificar, el bucket de [AWS Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) de este ejemplo no tiene habilitado el control de versiones. Evalúe y actualice la configuración según sea necesario.
+ Para simplificar, en este ejemplo se configuran los puntos de conexión de la API de REST de [Amazon API Gateway](https://aws.amazon.com/api-gateway/) sin autenticación, autorización ni limitación. Para uso en producción, recomendamos integrar el sistema con la infraestructura de seguridad empresarial. Evalúe esta configuración y añada la configuración de seguridad necesaria según sea necesario.
+ Para este ejemplo de infraestructura de inquilinos, [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns/) y [Amazon Simple Queue Service (Amazon SQS)](https://aws.amazon.com/sqs/) solo tienen configuraciones mínimas. El [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) de cada inquilino permite que los servicios de [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) y Amazon SNS de la cuenta los consuman según la política de [claves de AWS KMS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html#compatibility-with-aws-services). La configuración es solo un marcador de posición de ejemplo. Ajuste las configuraciones según sea necesario en función de su caso de uso empresarial.
+ Toda la configuración, que incluye, entre otros, el aprovisionamiento y la eliminación de los puntos de enlace de la API y los inquilinos de backend mediante AWS CloudFormation, cubre únicamente el caso básico de la ruta feliz. Evalúe y actualice la configuración con la lógica de reintentos necesaria, la lógica adicional de gestión de errores y la lógica de seguridad en función de las necesidades de su empresa.
+ En el momento de escribir este artículo, el código de ejemplo se ha probado con up-to-date [cdk-nag](https://github.com/cdklabs/cdk-nag) para comprobar si existen políticas. Es posible que se apliquen nuevas políticas en el futuro. Es posible que estas nuevas políticas requieran que modifique manualmente la pila en función de las recomendaciones antes de poder implementarla. Revise el código existente para asegurarse de que se ajusta a los requisitos de su empresa.
+ El código se basa en la CDK de AWS para generar un sufijo al azar en lugar de depender de nombres físicos estáticos asignados a la mayoría de los recursos creados. Esta configuración sirve para garantizar que estos recursos sean únicos y no entren en conflicto con otras pilas. Para obtener más información, consulte la [documentación de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/resources.html#resources_physical_names). Ajústelo en función de los requisitos de su empresa.
+ Este código de ejemplo empaqueta artefactos .NET Lambda en imágenes basadas en Docker y se ejecuta con el [Tiempo de ejecución de imágenes de contenedor](https://docs.aws.amazon.com/lambda/latest/dg/csharp-image.html) proporcionado por Lambda. El tiempo de ejecución de la imagen del contenedor presenta ventajas como mecanismo estándar de transferencia y almacenamiento (registros de contenedores) y entornos de prueba locales más precisos (a través de la imagen del contenedor). Puede cambiar el proyecto para que utilice los [tiempos de ejecución de .NET proporcionados por Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-csharp.html) para reducir el tiempo de compilación de las imágenes de Docker, pero después tendrá que configurar los mecanismos de transferencia y almacenamiento y asegurarse de que la configuración local coincida con la configuración de Lambda. Ajuste el código para adaptarlo a los requisitos empresariales de los usuarios.

**Versiones de producto**
+ CDK de AWS, versión 2.45.0 o posterior
+ Visual Studio 2022

## Arquitectura
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-architecture"></a>

**Pila de tecnología**
+ Amazon API Gateway
+ AWS CloudFormation
+ Amazon CloudWatch
+ Amazon DynamoDB
+ AWS Identity y Access Management (IAM)
+ AWS KMS
+ AWS Lambda
+ Amazon S3
+ Amazon SNS
+ Amazon SQS

**Arquitectura**

En el siguiente diagrama se muestra el flujo de creación de la pila de inquilinos. Para obtener más información sobre los paquetes de tecnología del plano de control y del inquilino, consulte la sección de *Información adicional*.

![\[Flujo de trabajo para crear un inquilino y aprovisionar una infraestructura básica para el inquilino en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5baef800-fe39-4eb8-b11d-2c23eb3175fc/images/0b579484-b87c-4acb-8c60-8c33c18370e3.png)


**Flujo de creación de pilas de inquilinos**

1. El usuario envía una solicitud de API POST con la carga útil del nuevo inquilino (nombre del inquilino, descripción del inquilino) en JSON a una API de REST alojada en Amazon API Gateway. La API de puerta de enlace procesa la solicitud y la reenvía a la función de Lambda backend de incorporación de inquilinos. En este ejemplo, no hay autorización ni autenticación. En una configuración de producción, esta API debe integrarse con el sistema de seguridad de la infraestructura SaaS.

1. La función de incorporación de inquilinos verifica la solicitud. A continuación, intenta almacenar el registro del inquilino, que incluye el nombre del inquilino, el identificador único universal (UUID) generado y la descripción del inquilino, en la tabla de incorporación de inquilinos de Amazon DynamoDB. 

1. Una vez que DynamoDB almacena el registro, una transmisión de DynamoDB inicia la función de infraestructura de inquilinos de Lambda descendente.

1. La función de Lambda de la infraestructura de inquilino actúa en función de la transmisión de DynamoDB recibida. Si la transmisión es para el evento INSERT, la función utiliza la NewImage sección de la transmisión (registro de última actualización, campo Nombre del inquilino) CloudFormation para crear una nueva infraestructura de arrendatario utilizando la plantilla que está almacenada en el bucket de S3. La CloudFormation plantilla requiere el parámetro Tenant Name. 

1. AWS CloudFormation crea la infraestructura de inquilinos en función de la CloudFormation plantilla y los parámetros de entrada.

1. Cada configuración de infraestructura arrendataria tiene una CloudWatch alarma, una alarma de facturación y un evento de alarma.

1. El evento de alarma se convierte en un mensaje dirigido a un tema de SNS, que se cifra con la clave de AWS KMS del inquilino.

1. El tema de SNS reenvía el mensaje de alarma recibido a la cola de SQS, que está cifrada por la clave de cifrado AWS KMS del inquilino.

Se pueden integrar otros sistemas con Amazon SQS para realizar acciones basadas en los mensajes en cola. En este ejemplo, para mantener el código genérico, los mensajes entrantes permanecen en cola y es necesario eliminarlos manualmente.

**Flujo de eliminación de pilas de inquilinos**

1. El usuario envía una solicitud de DELETE API con la carga útil del nuevo inquilino (nombre del inquilino, descripción del inquilino) en JSON a la API de REST alojada por Amazon API Gateway, que procesará la solicitud y la reenviará a la función de incorporación de inquilino. En este ejemplo, no hay autorización ni autenticación. En una configuración de producción, esta API se integrará con el sistema de seguridad de la infraestructura SaaS.

1. La función de incorporación de inquilinos verificará la solicitud y, a continuación, intentará eliminar el registro del inquilino (nombre del inquilino) de la tabla de incorporación de inquilinos. 

1. Una vez que DynamoDB elimina el registro correctamente (el registro existe en la tabla y se elimina), una transmisión de DynamoDB inicia la función de infraestructura de inquilinos de Lambda descendente.

1. La función de Lambda de la infraestructura de inquilino actúa en base a la transmisión de DynamoDB recibida. Si la transmisión es para el evento REMOVE, la función utiliza la OldImage sección del registro (información del registro y campo Nombre del inquilino, antes del último cambio, que es eliminar) para iniciar la eliminación de una pila existente en función de la información de ese registro.

1. AWS CloudFormation elimina la pila de inquilinos de destino en función de la entrada.

## Tools (Herramientas)
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-tools"></a>

**Servicios de AWS**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket APIs a cualquier escala.
+ [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 infraestructura de la nube de AWS en código.
+ [Kit de herramientas de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) es un kit de desarrollo en la nube de línea de comandos que ayuda a interactuar con la aplicación AWS Cloud Development Kit (AWS CDK).
+ 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](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.
+ [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 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) 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.
+ [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 Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
+ [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 Toolkit para Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html) es un complemento para el entorno de desarrollo integrado (IDE) de Visual Studio. El Toolkit para Visual Studio permite desarrollar, depurar e implementar aplicaciones .NET que utilizan los servicios de AWS.

**Otras herramientas**
+ [Visual Studio](https://docs.microsoft.com/en-us/visualstudio/ide/whats-new-visual-studio-2022?view=vs-2022) es un entorno de desarrollo integrado (IDE) que incluye compiladores, herramientas de finalización de código, diseñadores gráficos y otras características que facilitan el desarrollo de software.

**Código**

El código de este patrón se encuentra en el repositorio de [Incorporación de inquilinos en la arquitectura SaaS para el modelo silo Ejemplo APG](https://github.com/aws-samples/tenant-onboarding-in-saas-architecture-for-silo-model-apg-example).

## Epics
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-epics"></a>

### Configure AWS CDK
<a name="set-up-aws-cdk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe la instalación de Node.js. | Para comprobar que Node.js esté instalado en su equipo local, ejecute el siguiente comando.<pre>node --version</pre> | Administrador de AWS, AWS DevOps | 
| Instale el kit de herramientas de AWS CDK. | Para instalar el kit de herramientas de AWS CDK en su equipo local, ejecute el siguiente comando.<pre>npm install -g aws-cdk</pre>Si npm no está instalado, puede instalarlo desde el [sitio Node.js](https://nodejs.org/en/download/package-manager/). | Administrador de AWS, AWS DevOps | 
| Compruebe la versión del kit de herramientas de AWS CDK. | Para comprobar que la versión del kit de herramientas de AWS CDK esté instalada correctamente en su equipo, ejecute el siguiente comando.  <pre>cdk --version</pre> | Administrador de AWS, AWS DevOps | 

### Revise el código del plano de control de incorporación del inquilino
<a name="review-the-code-for-the-tenant-onboarding-control-plane"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clonar el repositorio. | Clone el [repositorio](https://github.com/aws-samples/tenant-onboarding-in-saas-architecture-for-silo-model-apg-example) y navegue hasta la carpeta `\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example`.Abra la solución `\src\TenantOnboardingInfra.sln` en Visual Studio 2022. Abra el archivo `TenantOnboardingInfraStack.cs` y revise el código.Los siguientes recursos se crean como parte de esta pila:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html) | Administrador de AWS, AWS DevOps | 
| Revise la CloudFormation plantilla. | En la `\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\template` carpeta`infra.yaml`, abra y revise la CloudFormation plantilla. Esta plantilla se completará con el nombre del inquilino obtenido de la tabla de DynamoDB de incorporación de inquilinos.La plantilla proporciona la infraestructura específica para cada inquilino. En este ejemplo, aprovisiona la clave AWS KMS, Amazon SNS, Amazon SQS y la alarma. CloudWatch  | Desarrollador de aplicaciones, AWS DevOps | 
| Revise la función de incorporación de inquilinos. | Abra `Function.cs` y revise el código de la función de incorporación de inquilinos, que se crea con la plantilla AWS Lambda Project (.NET Core- C\$1) de Visual Studio con el esquema .NET 6 (Imagen contenedora).Abra `Dockerfile` y revise el código. `Dockerfile` es un archivo de texto que contiene instrucciones para crear la imagen del contenedor de Lambda.Tenga en cuenta que los siguientes NuGet paquetes se añaden como dependencias al `TenantOnboardingFunction` proyecto:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html) | Desarrollador de aplicaciones, AWS DevOps | 
| Revise la InfraProvisioning función Tenant. | Vaya a `\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\InfraProvisioningFunction`.Abra `Function.cs` y revise el código de la función de aprovisionamiento de la infraestructura inquilina, que se crea con la plantilla AWS Lambda Project (.NET Core- C\$1) de Visual Studio con el esquema .NET 6 (Imagen contenedora).Abra `Dockerfile` y revise el código. Tenga en cuenta que los siguientes NuGet paquetes se agregan como dependencias al `InfraProvisioningFunction` proyecto:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html) | Desarrollador de aplicaciones, AWS DevOps | 

### Implementar recursos de AWS
<a name="deploy-the-aws-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compilar la solución. | Para crear la solución, siga los pasos que se indican a continuación:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html)Asegúrese de actualizar el paquete `Amazon.CDK.Lib NuGet` a la última versión del proyecto `\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example\src\TenantOnboardingInfra` antes de crear la solución. | Desarrollador de aplicaciones | 
| Inicie el entorno de AWS CDK. | Abra la línea de comandos de Windows y vaya a la carpeta raíz de la aplicación AWS CDK donde está disponible el archivo `cdk.json` (`\tenant-onboarding-in-saas-architecture-for-silo-model-apg-example`). Ejecute el siguiente comando para el arranque.<pre>cdk bootstrap </pre>Si ha creado un perfil de AWS para las credenciales, utilice el comando con su perfil.<pre>cdk bootstrap --profile <profile name><br />  </pre> | Administrador de AWS, AWS DevOps | 
| Enumere las pilas de CDK de AWS. | Para obtener una lista de todas las pilas que se van a crear como parte de este proyecto, ejecute el siguiente comando.<pre>cdk ls<br />cdk ls --profile <profile name></pre>Si ha creado un perfil de AWS para las credenciales, utilice el comando con su perfil.<pre>cdk ls --profile <profile name></pre> | Administrador de AWS, AWS DevOps | 
| Revise qué recursos de AWS se crearán. | Para revisar todos los recursos de AWS que se crearán como parte de este proyecto, ejecute el siguiente comando.<pre>cdk diff</pre>Si ha creado un perfil de AWS para las credenciales, utilice el comando con su perfil.<pre>cdk diff --profile <profile name></pre> | Administrador de AWS, AWS DevOps | 
| Implemente todos los recursos de AWS mediante AWS CDK. | Use el siguiente comando para implementar todos los recursos de AWS.<pre>cdk deploy --all --require-approval never</pre>Si ha creado un perfil de AWS para las credenciales, utilice el comando con su perfil.<pre>cdk deploy --all --require-approval never --profile <profile name></pre>Una vez completada la implementación, copie la URL de la API de la sección de resultados de la línea de comandos, como se muestra en el siguiente ejemplo.<pre>Outputs:<br />TenantOnboardingInfraStack.TenantOnboardingAPIEndpoint42E526D7 = https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/</pre> | Administrador de AWS, AWS DevOps | 

### Verificar la funcionalidad
<a name="verify-the-functionality"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un nuevo inquilino. | Para crear el nuevo inquilino, envíe la siguiente solicitud de curl.<pre>curl -X POST <TenantOnboardingAPIEndpoint* from CDK Output>tenant -d '{"Name":"Tenant123", "Description":"Stack for Tenant123"}'</pre>Cambie el marcador de posición `<TenantOnboardingAPIEndpoint* from CDK Output>` por el valor real de AWS CDK, como se muestra en el siguiente ejemplo.<pre>curl -X POST https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/tenant -d '{"Name":"Tenant123", "Description":"test12"}'</pre>En el siguiente ejemplo, se muestra el resultado.<pre>{"message": "A new tenant added - 5/4/2022 7:11:30 AM"}</pre> | Desarrollador de aplicaciones, administrador de AWS, AWS DevOps | 
| Compruebe los detalles del inquilino recién creado en DynamoDB. | Para comprobar los detalles del inquilino recién creado en DynamoDB, siga estos pasos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html) | Desarrollador de aplicaciones, administrador de AWS, AWS DevOps | 
| Verifique la creación de la pila para el nuevo inquilino. | Compruebe que la nueva pila se haya creado correctamente y se haya aprovisionado con la infraestructura para el inquilino recién creado de acuerdo con la CloudFormation plantilla.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html) | Desarrollador de aplicaciones, administrador de AWS, AWS DevOps | 
| Elimine la pila de inquilinos. | Para eliminar la nueva pila de inquilinos, envíe la siguiente solicitud de curl.<pre>curl -X DELETE <TenantOnboardingAPIEndpoint* from CDK Output>tenant/<Tenant Name from previous step></pre>Cambie el marcador de posición `<TenantOnboardingAPIEndpoint* from CDK Output>` por el valor real de AWS CDK y cambie `<Tenant Name from previous step>` por el valor real del paso anterior de creación del inquilino, como se muestra en el siguiente ejemplo.<pre>curl -X DELETE https://j2qmp8ds21i1i.execute-api.us-west-2.amazonaws.com/prod/tenant/Tenant123</pre>En el siguiente ejemplo, se muestra el resultado.<pre>{"message": "Tenant destroyed - 5/4/2022 7:14:48 AM"}</pre> | Desarrollador de aplicaciones, AWS DevOps, administrador de AWS | 
| Verifique la eliminación de la pila para el inquilino existente. | Para comprobar que se ha eliminado la pila de inquilinos existente, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html) | Desarrollador de aplicaciones, administrador de AWS, AWS DevOps | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Destruya el entorno. | Antes de limpiar la pila, asegúrese de lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.html)Una vez finalizadas las pruebas, se puede usar AWS CDK para destruir todas las pilas y los recursos relacionados mediante la ejecución del siguiente comando.<pre>cdk destroy --all;</pre>Si ha creado un perfil de AWS para las credenciales, utilice el perfil.Confirme la solicitud de eliminación de la pila para eliminarla. | Administrador de AWS, AWS DevOps | 
| Limpia Amazon CloudWatch Logs. | El proceso de eliminación de la pila no limpiará CloudWatch los registros (grupos de registros y registros) generados por la pila. Limpie los CloudWatch recursos manualmente mediante la CloudWatch consola o la API. | Desarrollador de aplicaciones, AWS DevOps, administrador de AWS | 

## Recursos relacionados
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-resources"></a>
+ [Taller sobre AWS CDK .NET](https://cdkworkshop.com/40-dotnet.html)
+ [Utilización de AWS CDK en C\$1](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-csharp.html)
+ [Referencia de CDK .NET](https://docs.aws.amazon.com/cdk/api/v2/dotnet/api/index.html)

## Información adicional
<a name="tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk-additional"></a>

**Conjunto de tecnologías de plano de control**

El código CDK escrito en .NET se utiliza para aprovisionar la infraestructura del plano de control, que consta de los siguientes recursos:

1. **API Gateway**

   Sirve como punto de entrada de la API de REST para la pila del plano de control.

1. **Función de Lambda de incorporación de inquilinos**

   La puerta de enlace de API inicia esta función de Lambda mediante el método m.

   Una solicitud de API del método POST hace que (`tenant name`, `tenant description`) se inserte en la tabla de DynamoDB `Tenant Onboarding`.

   En este ejemplo de código, el nombre del inquilino también se usa como parte del nombre de la pila de inquilinos y de los nombres de los recursos de esa pila. Esto es para facilitar la identificación de estos recursos. El nombre de este inquilino debe ser único en la configuración para evitar conflictos o errores. La configuración detallada de la validación de entradas se explica en la documentación sobre los [roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) y en la sección de *Limitations* (Limitaciones).

   El proceso de persistencia en la tabla de DynamoDB solo tendrá éxito si el nombre del inquilino no se utiliza en ningún otro registro de la tabla.

   En este caso, el nombre del inquilino es la clave de partición de esta tabla, ya que solo la clave de partición se puede usar como expresión de condición `PutItem`.

   Si el nombre del inquilino nunca se registró antes, el registro se guardará correctamente en la tabla.

   Sin embargo, si un registro existente de la tabla ya utiliza el nombre del inquilino, la operación fallará e iniciará una excepción de DynamoDB `ConditionalCheckFailedException`. La excepción se utilizará para devolver un mensaje de error (`HTTP BadRequest`) que indique que el nombre del inquilino ya existe.

   Una solicitud de API de método `DELETE` eliminará el registro de un nombre de inquilino específico de la tabla `Tenant Onboardin`.

   La eliminación del registro de DynamoDB en este ejemplo se realizará correctamente aunque el registro no exista.

   Si el registro de destino existe y se elimina, se creará un registro de transmisión de DynamoDB. De lo contrario, no se creará ningún registro posterior.

1. **Incorporación de DynamoDB por parte del inquilino, con Amazon DynamoDB Streams habilitado**

   Esto registra la información de los metadatos del inquilino y cualquier registro que se guarde o elimine enviará un flujo descendente a la función de Lambda `Tenant Infrastructure`. 

1. **Función de Lambda de infraestructura inquilina**

   Esta función de Lambda la inicia el registro de flujo de DynamoDB del paso anterior. Si el registro corresponde a un `INSERT` evento, invoca CloudFormation a AWS para crear una nueva infraestructura de inquilinos con la CloudFormation plantilla almacenada en un bucket de S3. Si el registro es para `REMOVE`, se inicia la eliminación de una pila existente en función del campo del registro de transmisión `Tenant Name`.

1. **Bucket de S3**

   Esto sirve para almacenar la CloudFormation plantilla.

1. **Funciones de IAM para cada función de Lambda y una función de servicio para CloudFormation**

   Cada función de Lambda tiene su rol de IAM único con [permisos de privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) para realizar su tarea. Por ejemplo, la función `Tenant On-boarding` Lambda tiene read/write acceso a DynamoDB y la función `Tenant Infrastructure` Lambda solo puede leer el flujo de DynamoDB.

   Se crea un rol de CloudFormation servicio personalizado para el aprovisionamiento de la pila de inquilinos. Esta función de servicio contiene permisos adicionales para el aprovisionamiento de CloudFormation pilas (por ejemplo, la clave de AWS KMS). Esto divide las funciones entre Lambda y CloudFormation evita todos los permisos en una sola función (función de Infraestructura Lambda).

   Los permisos que permiten realizar acciones poderosas (como crear y eliminar CloudFormation pilas) están bloqueados y solo se permiten en los recursos que comienzan con. `tenantcluster-` La excepción es AWS KMS, debido a su convención de nomenclatura de recursos. El nombre del inquilino introducido por la API irá precedido de `tenantcluster-` así como otras comprobaciones de validación (alfanuméricas solo con guiones y limitadas a menos de 30 caracteres para que quepan en la mayoría de los nombres de los recursos de AWS). Esto garantiza que el nombre del inquilino no provoque una interrupción accidental de los recursos o las pilas de la infraestructura principal.

**Pila de tecnología para inquilinos**

La CloudFormation plantilla se almacena en el depósito de S3. [La plantilla proporciona la clave de AWS KMS específica del inquilino, una CloudWatch alarma, un tema de SNS, una cola de SQS y una política de SQS.](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-using-identity-based-policies.html)

Amazon SNS y Amazon SQS utilizan la clave de AWS KMS para el cifrado de datos de sus mensajes. Las prácticas de seguridad para [AwsSolutions(SNS2 y AwsSolutions) SQS2](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md) recomiendan configurar Amazon SNS y Amazon SQS con cifrado. Sin embargo, CloudWatch las alarmas no funcionan con Amazon SNS cuando se utiliza una clave gestionada por AWS, por lo que debe utilizar una clave gestionada por el cliente en este caso. Para obtener más información, consulte el [Centro de conocimientos de AWS](https://aws.amazon.com/premiumsupport/knowledge-center/cloudwatch-receive-sns-for-alarm-trigger/).

La política de SQS se utiliza en la cola de Amazon SQS para permitir que el tema de SNS creado entregue el mensaje a la cola. Sin la política SQS, se denegará el acceso. Para obtener más información, consulte la [documentación de Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/subscribe-sqs-queue-to-sns-topic.html#SendMessageToSQS.sqs.permissions).

# Descomponga monolitos en microservicios mediante CQRS y abastecimiento de eventos
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing"></a>

*Rodolfo Jr. Cerrada, Dmitry Gulin y Tabby Ward, Amazon Web Services*

## Resumen
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-summary"></a>

Este patrón combina dos patrones y emplea tanto el patrón de división de responsabilidad por consultas de comandos (CQRS) como el patrón de abastecimiento de eventos. El patrón CQRS divide las responsabilidades de los modelos de comando y consulta. El patrón de abastecimiento de eventos aprovecha la comunicación asincrónica basada en eventos para mejorar la experiencia general del usuario.

Puede usar servicios de CQRS y Amazon Web Services (AWS) para mantener y escalar cada modelo de datos de forma independiente y, al mismo tiempo, refactorizar su aplicación monolítica en una arquitectura de microservicios. Después, puede usar el patrón de abastecimiento de eventos para sincronizar los datos de la base de datos de comandos con la base de datos de consultas.

Este patrón emplea un código de ejemplo que incluye un archivo de solución (\$1.sln) que puede abrir con la versión más reciente de Visual Studio. El ejemplo contiene el código de la API Reward para mostrar el funcionamiento de CQRS y el abastecimiento de eventos en aplicaciones de AWS sin servidor y aplicaciones tradicionales o en las instalaciones.

Para obtener más información sobre CQRS y el abastecimiento de eventos, consulte la sección de [Información adicional](#decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-additional).

## Requisitos previos y limitaciones
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Amazon CloudWatch
+ Tablas de Amazon DynamoDB
+ Amazon DynamoDB Streams
+ Clave de acceso y clave secreta de AWS Identity and Access Management (IAM); para obtener más información, consulte el video de la sección de *Recursos relacionados*
+ AWS Lambda
+ Familiaridad con Visual Studio
+ Familiaridad con el kit de herramientas de AWS para Visual Studio; para obtener más información, consulte el video de *demostración del Kit de herramientas de AWS para Visual Studio* en la sección de *Recursos relacionados*

**Versiones de producto**
+ [Microsoft Visual Studio 2019 Community Edition](https://visualstudio.microsoft.com/downloads/).
+ [AWS Toolkit para Visual Studio 2019](https://aws.amazon.com/visualstudio/).
+ .NET Core 3.1. Este componente es una opción de la instalación de Visual Studio. Para incluir .NET Core durante la instalación, seleccione **desarrollo multiplataforma de NET Core**.

**Limitaciones**
+ El código de ejemplo de aplicación tradicional en las instalaciones (ASP.NET Core Web API y objetos de acceso a datos) no incluye base de datos. Sin embargo, incluye el objeto en memoria `CustomerData`, que actúa como base de datos simulada. El código proporcionado es suficiente para probar el patrón.

## Arquitectura
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-architecture"></a>

**Pila de tecnología de origen**
+ Proyecto ASP.NET Core Web API
+ Servidor web IIS
+ Objeto de acceso a datos
+ Modelo CRUD

**Arquitectura de origen**

En la arquitectura de origen, el modelo CRUD contiene interfaces de comandos y consultas en una sola aplicación. Para ver un código de ejemplo, consulte `CustomerDAO.cs` (adjunto).

![\[Conexiones entre la aplicación, la interfaz de servicio, el modelo CRUD del cliente y la base de datos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/1cd3a84c-12c7-4306-99aa-23f2c53d3cd3.png)


**Pila de tecnología de destino**
+ Amazon DynamoDB
+ Amazon DynamoDB Streams
+ AWS Lambda
+ (Opcional) Amazon API Gateway
+ (Opcional) Amazon Simple Notification Service (Amazon SNS)

**Arquitectura de destino**

En la arquitectura de destino, las interfaces de comando y consulta están separadas. La arquitectura que se muestra en el siguiente diagrama se puede ampliar con puerta de enlace API y Amazon SNS. Para obtener más información, consulte la sección [Información adicional](#decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-additional).

![\[Aplicación que se conecta con los microservicios de comandos del cliente y consultas del cliente sin servidor.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/1c665697-e3ac-4ef4-98d0-86c2cbf164c1.png)


1. Las funciones de comandos de Lambda realizan operaciones de escritura, como crear, actualizar o eliminar, en la base de datos.

1. Las funciones de consulta de Lambda realizan operaciones de lectura, como obtener o seleccionar, en la base de datos.

1. Esta función de Lambda procesa los flujos de DynamoDB de la base de datos de comandos y actualiza la base de datos de consultas con los cambios.

## Tools (Herramientas)
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-tools"></a>

**Herramientas**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html): Amazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido y predecible, así como una perfecta escalabilidad.
+ [Amazon DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html): DynamoDB Streams captura una secuencia en orden cronológico de las modificaciones de los elementos en una tabla de DynamoDB. Este servicio posteriormente almacena esta información en un registro durante un máximo de 24 horas. El cifrado en reposo cifra los datos en DynamoDB streams.
+ [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.
+ [La consola de administración de AWS](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/learn-whats-new.html): la consola de administración de AWS es una aplicación web que engloba y hace referencia a un amplio conjunto de consolas de servicios para la administración de recursos de AWS.
+ [Visual Studio 2019 Community Edition](https://visualstudio.microsoft.com/downloads/): Visual Studio 2019 es un entorno de desarrollo integrado (IDE). La Community Edition es gratuita para colaboradores de código abierto. En este patrón usará Visual Studio 2019 Community Edition para abrir, compilar y ejecutar código de ejemplo. Solo con fines de visualización, puede usar cualquier editor de texto o [Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html).
+ [AWS Toolkit para Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html): el AWS Toolkit para Visual Studio es un complemento para el IDE de Visual Studio. El AWS Toolkit para Visual Studio facilita el desarrollo, la depuración y la implementación de aplicaciones .NET que utilizan servicios de AWS.

**Código**

Se adjunta el código de ejemplo. Para obtener más instrucciones sobre cómo implementar el código de ejemplo, consulta la sección *Epics*.

## Epics
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-epics"></a>

### Abra y cree la solución
<a name="open-and-build-the-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Abra la solución. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones | 
| Cree la solución. | Abra el menú contextual (clic derecho) de la solución y elija **Compilar solución**. Esto generará y compilará todos los proyectos de la solución. La compilación debería realizarse correctamente.Visual Studio Solution Explorer mostrará la estructura de directorios.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones | 

### Cree tablas de DynamoDB
<a name="build-the-dynamodb-tables"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Proporcionar credenciales. | Si aún no tiene una clave de acceso, consulte el video de la sección de *Recursos relacionados*.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 
| Compilar el proyecto. | Para compilar el proyecto, abra el menú contextual (clic derecho) del proyecto **AwS.APG.CQRSES.Build** y seleccione **Compilar**. | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 
| Cree y rellene las tablas. | Para compilar las tablas y rellenarlas con datos iniciales, abra el menú contextual (clic derecho) del proyecto **AwS.APG.CQRSES.Build** y seleccione **Depurar**, **Iniciar nueva instancia**. | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 
| Verifique la construcción de la tabla y los datos. | Para comprobarlo, acceda al **Explorador de AWS** y expanda **Amazon DynamoDB**. Se mostrarán las tablas. Abra cada tabla para mostrar los datos de ejemplo. | Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos | 

### Ejecute pruebas locales
<a name="run-local-tests"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear el proyecto CQRS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones, ingeniero de pruebas | 
| Cree el proyecto de abastecimiento de eventos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones, ingeniero de pruebas | 
| Ejecutar las pruebas. | Para ejecutar todas las pruebas, seleccione **Ver**, **Explorador de pruebas** y, a continuación, seleccione **Ejecutar todas las pruebas a la vista**. Todas las pruebas resultarán correctas. El sistema lo indicará con un icono de marca de verificación verde.  | Desarrollador de aplicaciones, ingeniero de pruebas | 

### Publique las funciones de Lambda de CQRS en AWS
<a name="publish-the-cqrs-lambda-functions-to-aws"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Publica la primera función de Lambda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones, DevOps ingeniero | 
| Verifique la carga de la función. | (Opcional) Para comprobar que la función se ha cargado correctamente, acceda al Explorador de AWS y expanda **AWS Lambda**. Para abrir la ventana de prueba, seleccione la función de Lambda (doble clic). | Desarrollador de aplicaciones, DevOps ingeniero | 
| Pruebe la función de Lambda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html)Todos los proyectos Lambda de CQRS se encuentran en las carpetas de soluciones `CQRS AWS Serverless\CQRS\Command Microservice` y ` CQRS AWS Serverless\CQRS\Command Microservice`. Para ver el directorio de soluciones y los proyectos, consulte el **Directorio de códigos fuente** en la sección de [Información adicional](#decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-additional). | Desarrollador de aplicaciones, DevOps ingeniero | 
| Publique las funciones restantes. | Repita los pasos previos para los siguientes proyectos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones, DevOps ingeniero | 

### Configure la función de Lambda como oyente de eventos
<a name="set-up-the-lambda-function-as-an-event-listener"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Publique los controladores de eventos Customer y Reward Lambda. | Para publicar cada controlador de eventos, siga los pasos de la épica anterior.Los proyectos se encuentran en las carpetas de soluciones `CQRS AWS Serverless\Event Source\Customer Event` y `CQRS AWS Serverless\Event Source\Reward Event`. Para obtener más información, consulte *Directorio de código fuente* en la sección [Información adicional](#decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-additional). | Desarrollador de aplicaciones | 
| Adjunte el oyente de Lambda detector de eventos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html)Una vez que el oyente se haya adjuntado correctamente a la tabla de DynamoDB, se mostrará en la página del diseñador de Lambda. | Desarrollador de aplicaciones | 
| Publique y adjunte la EventSourceReward función Lambda. | Para publicar y adjuntar la función `EventSourceReward` Lambda, repita los pasos de las dos historias anteriores y selecciónela en la lista desplegable **cqrses-reward-cmd**de tablas de **DynamoDB**. | Desarrollador de aplicaciones | 

### Pruebe y valide los flujos de DynamoDB y el desencadenante de Lambda
<a name="test-and-validate-the-dynamodb-streams-and-lambda-trigger"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe la transmisión y el desencadenante de Lambda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones | 
| Valide usando la tabla de consultas de recompensas de DynamodDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones | 
| Valide mediante CloudWatch registros. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.html) | Desarrollador de aplicaciones | 
| Valide el EventSourceCustomer disparador. | Para validar el `EventSourceCustomer` disparador, repite los pasos de esta epopeya utilizando la tabla de clientes y los CloudWatch registros respectivos del `EventSourceCustomer` disparador. | Desarrollador de aplicaciones | 

## Recursos relacionados
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-resources"></a>

**Referencias**
+ [Descargas de Visual Studio 2019 Community Edition](https://visualstudio.microsoft.com/downloads/)
+ [Descargar AWS Toolkit para Visual Studio](https://aws.amazon.com/visualstudio/)
+ [Guía del usuario de AWS Toolkit para Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html)
+ [Sin servidor en AWS](https://aws.amazon.com/serverless/)
+ [Casos de uso y patrones de diseño de DynamoDB](https://aws.amazon.com/blogs/database/dynamodb-streams-use-cases-and-design-patterns/)
+ [CQRS Martin Fowler](https://martinfowler.com/bliki/CQRS.html)
+ [Aprovisionamiento de eventos Martin Fowler](https://martinfowler.com/eaaDev/EventSourcing.html)

**Videos**
+ [Demo de AWS Toolkit para Visual Studio](https://www.youtube.com/watch?v=B190tcu1ERk)
+ [¿Cómo creo una ID de clave de acceso para un nuevo usuario de IAM?](https://www.youtube.com/watch?v=665RYobRJDY)

## Información adicional
<a name="decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing-additional"></a>

**CQRS y abastecimiento de eventos**

*CQRS*

El patrón CQRS separa un único modelo de operaciones conceptual, como un modelo CRUD (creación, lectura, actualización, eliminación) único de objetos de acceso a datos, en modelos de operaciones de comando y consulta. El modelo de comandos hace referencia a cualquier operación, como crear, actualizar o eliminar, que cambia el estado. El modelo de consulta hace referencia a cualquier operación que devuelva un valor.

![\[Arquitectura con interfaz de servicio, modelo CRUD y base de datos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/3f64756d-681e-4f0e-8034-746263d857b2.png)


1. El modelo CRUD del cliente incluye las siguientes interfaces:
   + `Create Customer()`
   + `UpdateCustomer()`
   + `DeleteCustomer()`
   + `AddPoints()`
   + `RedeemPoints()`
   + `GetVIPCustomers()`
   + `GetCustomerList()`
   + `GetCustomerPoints()`

Cuando sus necesidades sean más complejas, podrá superar este enfoque de modelo único. El CQRS emplea un modelo de comandos y un modelo de consulta para separar las responsabilidades de escribir y leer los datos. De esta forma, los datos se pueden mantener y gestionar de forma independiente. Con una clara separación de responsabilidades, las mejoras de cada modelo no afectan al otro. Esta separación mejora el mantenimiento y el rendimiento, y reduce la complejidad de la aplicación a medida que crece.

![\[La aplicación se divide en modelos de comandos y consultas, y comparte una única base de datos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/12db023c-eb81-4c27-bbb9-b085b13176ae.png)


 

1. Interfaces en el modelo de comandos del cliente:
   + `Create Customer()`
   + `UpdateCustomer()`
   + `DeleteCustomer()`
   + `AddPoints()`
   + `RedeemPoints()`

1. Interfaces en el modelo de consultas del cliente:
   + `GetVIPCustomers()`
   + `GetCustomerList()`
   + `GetCustomerPoints()`
   + `GetMonthlyStatement()`

Para ver código de ejemplo, consulte el *Directorio de códigos fuente*.

A continuación, el patrón CQRS desacopla la base de datos. Esta disociación posibilita la independencia total de cada servicio, que es el ingrediente principal de la arquitectura de microservicios.

![\[Bases de datos independientes para los modelos de comandos y consultas.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/016dbfa8-3bd8-42ee-afa1-38a98986c7d5.png)


 Al usar CQRS en la nube de AWS, puede optimizar aún más cada servicio. Por ejemplo, puede establecer diferentes configuraciones informáticas, o elegir entre un microservicio sin servidor o uno basado en contenedores. Puedes sustituir el almacenamiento en caché local por Amazon. ElastiCache Si tiene una publish/subscribe mensajería local, puede sustituirla por Amazon Simple Notification Service (Amazon SNS). Además, puede aprovechar los pay-as-you-go precios y la amplia gama de servicios de AWS, que solo paga por lo que utiliza.

CQRS ofrece los siguientes beneficios:
+ Escalado independiente: la estrategia de escalado de cada modelo se puede adaptar para satisfacer los requisitos y la demanda del servicio. Al igual que en las aplicaciones de alto rendimiento, separar la lectura y la escritura permite escalar el modelo de forma independiente para satisfacer cada demanda. También puede agregar o reducir recursos de cómputo para satisfacer la demanda de escalabilidad de un modelo sin afectar al otro.
+ Mantenimiento independiente: la separación de los modelos de consulta y comando mejora la capacidad de mantenimiento de los modelos. Puede realizar cambios en el código y mejoras en un modelo sin que ello afecte al otro.
+ Seguridad: es más fácil aplicar los permisos y las políticas a modelos separados para lectura y escritura.
+ Lecturas optimizadas: puede definir un esquema optimizado para las consultas. Por ejemplo, puede definir un esquema para datos agregados y un esquema independiente para tablas de hechos.
+ Integración: CQRS se adapta bien a los modelos de programación basados en eventos.
+ Complejidad gestionada: la separación en modelos de consulta y comando es adecuada para dominios complejos.

Al utilizar CQRS, tenga en cuenta lo siguiente:
+ El patrón de CQRS se aplica solo a una parte específica de una aplicación, y no a su conjunto. La implementación en un dominio inadecuado para el patrón puede reducir la productividad, aumentar el riesgo e introducir complejidad.
+ El patrón funciona mejor en modelos de uso frecuente que presentan un desequilibrio en las operaciones de lectura y escritura.
+ En el caso de aplicaciones de lectura intensiva, como informes de gran tamaño que tardan en procesarse, CQRS le ofrece la opción de seleccionar la base de datos adecuada y crear un esquema para almacenar los datos agregados. Esto mejora el tiempo de respuesta en la lectura y visualización del informe, ya que procesa los datos del informe solo una vez y los coloca en la tabla agregada.
+ En el caso de las aplicaciones de escritura intensiva, puede configurar la base de datos para operaciones de escritura y permitir que el microservicio de comandos se escale de forma independiente cuando aumente la demanda de escritura. Para ver ejemplos, consulte los microservicios `AWS.APG.CQRSES.CommandRedeemRewardLambda` y `AWS.APG.CQRSES.CommandAddRewardLambda`.

*Aprovisionamiento de eventos*

El siguiente paso consiste en usar el abastecimiento de eventos para sincronizar la base de datos de consultas cuando se ejecuta un comando. Por ejemplo, considere los siguientes eventos:
+ Al añadir un punto de recompensa, es necesario actualizar sus puntos de recompensa totales o agregados en la base de datos de consultas.
+ El apellido del cliente se actualiza en la base de datos de comandos, y es necesario actualizar la información del cliente en la base de datos de consultas.

En un modelo CRUD tradicional, se garantiza la coherencia de los datos al bloquearlos hasta que finalice la transacción. En el abastecimiento de eventos, los datos se sincronizan publicando una serie de eventos que el suscriptor utilizará para actualizar sus datos respectivos.

El patrón de abastecimiento de eventos garantiza y registra una serie completa de acciones realizadas con los datos, y las publica a través de una secuencia de eventos. Estos eventos representan un conjunto de cambios en los datos que los suscriptores de ese evento deben procesar para mantener su registro actualizado. El suscriptor consume estos eventos y sincroniza los datos en la base de datos del suscriptor. En este caso, es la base de datos de consultas.

El siguiente diagrama muestra el abastecimiento de eventos con CQRS en AWS.

![\[Arquitectura de microservicios para CQRS y patrones de abastecimiento de eventos mediante servicios sin servidor de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/cc9bc84a-60b4-4459-9a5c-2334c69dbb4e.png)


1. Las funciones de comandos de Lambda realizan operaciones de escritura, como crear, actualizar o eliminar, en la base de datos.

1. Las funciones de consulta de Lambda realizan operaciones de lectura, como obtener o seleccionar, en la base de datos.

1. Esta función de Lambda procesa los flujos de DynamoDB de la base de datos de comandos y actualiza la base de datos de consultas con los cambios. También puede usar esta función para publicar un mensaje en Amazon SNS y que los suscriptores puedan procesar los datos.

1. (Opcional) El suscriptor del evento de Lambda procesa el mensaje publicado por Amazon SNS y actualiza la base de datos de consultas.

1. (Opcional) Amazon SNS envía una notificación por correo electrónico de la operación de escritura.

En AWS, DynamoDB Streams puede sincronizar la base de datos de consultas. DynamoDB captura una secuencia en orden cronológico de las modificaciones de los elementos en la tabla de DynamoDB en tiempo casi real y almacena la información de forma duradera en un plazo máximo de 24 horas.

La activación de DynamoDB Streams permite a la base de datos publicar una secuencia de eventos que posibilita el patrón de abastecimiento de eventos. El patrón de abastecimiento de eventos añade al suscriptor del evento. La aplicación del suscriptor del evento consume el evento y lo procesa en función de la responsabilidad del suscriptor. En el diagrama anterior, el suscriptor del evento envía los cambios a la base de datos de Query DynamoDB para mantener los datos sincronizados. El uso de Amazon SNS, el agente de mensajes y la aplicación de suscripción de eventos mantiene la arquitectura desacoplada.

El abastecimiento de eventos ofrece los siguientes beneficios:
+ Coherencia de los datos transaccionales
+ Un registro de auditoría fiable y un historial de las acciones que permite supervisar las medidas adoptadas en los datos
+ Las aplicaciones distribuidas, como los microservicios, pueden sincronizar sus datos en todo el entorno
+ Publicación fiable de los eventos siempre que cambie el estado
+ Reconstrucción o reproducción de estados anteriores
+ Entidades con acoplamiento flexible que intercambian eventos para migrar de una aplicación monolítica a microservicios
+ Reducción de los conflictos causados por actualizaciones simultáneas; el abastecimiento de eventos evita la necesidad de actualizar los objetos directamente en el almacén de datos
+ Flexibilidad y extensibilidad, ya que la tarea se desvincula del evento
+ Actualizaciones externas del sistema
+ Gestión de múltiples tareas en un solo evento

Cuando use abastecimiento de eventos, tenga en cuenta los siguientes puntos:
+ Como existe cierto retardo en la actualización de los datos entre las bases de datos de suscriptor de origen, la única forma de deshacer un cambio es añadir un evento de compensación al almacén de eventos.
+ La implementación del abastecimiento de eventos tiene cierta curva de aprendizaje, ya que su estilo de programación es diferente.

**Datos de prueba**

Use los siguientes datos de prueba para probar la función de Lambda tras una implementación correcta.

**CommandCreate Cliente**

```
{  "Id":1501,  "Firstname":"John",  "Lastname":"Done",  "CompanyName":"AnyCompany",  "Address": "USA",  "VIP":true }
```

**CommandUpdate Cliente**

```
{  "Id":1501,  "Firstname":"John",  "Lastname":"Doe",  "CompanyName":"Example Corp.",  "Address": "Seattle, USA",  "VIP":true }
```

**CommandDelete Cliente**

Introduzca la ID del cliente como dato de solicitud. Por ejemplo, si la ID de cliente es 151, introduzca 151 como dato de solicitud.

```
151
```

**QueryCustomerList**

Está en blanco. Cuando se invoca, devuelve a todos los clientes.

**CommandAddReward**

Añade 40 puntos al cliente con la ID 1 (Richard).

```
{
  "Id":10101,
  "CustomerId":1,
  "Points":40
}
```

**CommandRedeemReward**

Esto reducirá 15 puntos al cliente con la ID 1 (Richard).

```
{
  "Id":10110,
  "CustomerId":1,
  "Points":15
}
```

**QueryReward**

Introduzca la ID del cliente. Por ejemplo, introduzca 1 para Richard, 2 para Arnav y 3 para Shirley.

```
2 
```

**Directorio de códigos fuente**

Use la siguiente tabla como guía de estructura de directorios de la solución de Visual Studio. 

*Ejemplo de código de muestra de directorio CQRS en las instalaciones*

![\[Se ha ampliado el directorio de soluciones con los servicios de comando y consulta.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/4811c2c0-643b-410f-bb87-0b86ec5e194c.png)


**Modelo CRUD de cliente**

Proyecto CQRS On-Premises Code Sample\$1CRUD Model\$1AWS.APG.CQRSES.DAL

**Versión CQRS del modelo CRUD del cliente**
+ Comando del cliente: proyecto `CQRS On-Premises Code Sample\CQRS Model\Command Microservice\AWS.APG.CQRSES.Command`
+ Consulta del cliente: proyecto `CQRS On-Premises Code Sample\CQRS Model\Query Microservice\AWS.APG.CQRSES.Query`

**Microservicios de comando y consulta**

El microservicio de comandos se encuentra en la carpeta de soluciones `CQRS On-Premises Code Sample\CQRS Model\Command Microservice`:
+ El proyecto de API ASP.NET Core `AWS.APG.CQRSES.CommandMicroservice` actúa como punto de entrada desde el que los consumidores interactúan con el servicio.
+ El proyecto .NET Core `AWS.APG.CQRSES.Command` es un objeto que aloja objetos e interfaces relacionados con comandos.

El microservicio de consultas se encuentra en la carpeta de soluciones `CQRS On-Premises Code Sample\CQRS Model\Query Microservice`:
+ El proyecto de API ASP.NET Core `AWS.APG.CQRSES.QueryMicroservice` actúa como punto de entrada desde el que los consumidores interactúan con el servicio.
+ El proyecto .NET Core `AWS.APG.CQRSES.Query` es un objeto que aloja objetos e interfaces relacionados con consultas.

*Directorio de soluciones de código CQRS AWS sin servidor*

![\[Directorio de soluciones que muestra tanto los microservicios como el origen de eventos ampliado.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9f1bc700-def4-4201-bb2d-f1fa27404f15/images/23f8655c-95ad-422c-b20a-e29dc145e995.png)


 

Este código es la versión de AWS del código en las instalaciones que emplea los servicios sin servidor de AWS.

En C\$1 .NET Core, cada función de Lambda está representada por un proyecto .NET Core. En el código de ejemplo de este patrón, hay un proyecto independiente para cada interfaz en los modelos de comandos y consultas.

**Uso de los servicios de AWS por CQRS**

Puede encontrar el directorio raíz de soluciones para CQRS con servicios sin servidor de AWS en la carpeta `CQRS AWS Serverless\CQRS`. El ejemplo incluye dos modelos: Customer y Reward.

El comando de funciones de Lambda para Customer y Reward se encuentra en las carpetas `CQRS\Command Microservice\Customer` y `CQRS\Command Microservice\Reward`. Contienen los siguientes proyectos de Lambda:
+ Comando Customer: `CommandCreateLambda`, `CommandDeleteLambda` y `CommandUpdateLambda`
+ Comando Reward: `CommandAddRewardLambda` y `CommandRedeemRewardLambda`

Las funciones de Lambda de consulta para Customer y Reward se encuentra en las carpetas `CQRS\Query Microservice\Customer` y `CQRS\QueryMicroservice\Reward`. Contienen los proyectos de Lambda `QueryCustomerListLambda` and `QueryRewardLambda`.

**Proyecto de prueba de CQRS**

El proyecto de prueba se encuentra en la carpeta `CQRS\Tests`. Este proyecto contiene un script de prueba para automatizar las pruebas de las funciones de Lambda de CQRS.

**Abastecimiento de eventos mediante servicios de AWS**

Las transmisiones de DynamoDB Customer y Reward inician los siguientes controladores de eventos de Lambda para procesar y sincronizar los datos de las tablas de consultas.
+ La función de Lambda `EventSourceCustomer` se asigna al flujo de DynamoDB de la tabla Customer (`cqrses-customer-cmd`).
+ La función de Lambda `EventSourceReward` se asigna al flujo de DynamoDB de la tabla Customer (`cqrses-reward-cmd`).

## Conexiones
<a name="attachments-9f1bc700-def4-4201-bb2d-f1fa27404f15"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/9f1bc700-def4-4201-bb2d-f1fa27404f15/attachments/attachment.zip)

# Más patrones
<a name="modernization-more-patterns-pattern-list"></a>

**Topics**
+ [Acceda a aplicaciones de contenedores de forma privada en Amazon EKS mediante AWS PrivateLink y un Network Load Balancer](access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Automatice la adición o actualización de entradas de registro de Windows con AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatización de la conmutación por error y la conmutación por recuperación entre regiones mediante DR Orchestrator Framework](automate-cross-region-failover-and-failback-by-using-dr-orchestrator-framework.md)
+ [Cree e implemente automáticamente una aplicación Java en Amazon EKS mediante una CI/CD canalización](automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.md)
+ [Cree CI/CD canalizaciones y clústeres de Amazon ECS de forma automática para microservicios mediante AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Copia de seguridad y archivo de datos de mainframe en Amazon S3 mediante BMC AMI Cloud Data](back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.md)
+ [Cree un PAC de servidor empresarial Micro Focus con Amazon EC2 Auto Scaling y Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Cree una malla de datos empresarial con Amazon DataZone y AWS CDK AWS CloudFormation](build-enterprise-data-mesh-amazon-data-zone.md)
+ [Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado](containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.md)
+ [Convierta y desempaquete datos EBCDIC a ASCII en AWS mediante Python](convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.md)
+ [Convertir archivos de datos de mainframe con diseños de registros complejos mediante Micro Focus](convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.md)
+ [Cree un portal para microinterfaces mediante Angular AWS Amplify y Module Federation](create-amplify-micro-frontend-portal.md)
+ [Implementar contenedores mediante Elastic Beanstalk](deploy-containers-by-using-elastic-beanstalk.md)
+ [Emule Oracle DR mediante una base de datos global de Aurora compatible con PostgreSQL](emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.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)
+ [Identificación automática de las imágenes de contenedor duplicadas al migrar a un repositorio de Amazon ECR](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [Implementación de diagnósticos y solución de problemas de Kubernetes con tecnología de IA con la integración de K8sGPT y Amazon Bedrock](implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.md)
+ [Implemente la autenticación basada en Microsoft Entra ID en una aplicación de mainframe modernizada de AWS Blu Age](implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.md)
+ [Implementación del control de versiones de API basado en rutas mediante dominios personalizados en Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Migración gradual de Amazon RDS para Oracle a Amazon RDS para PostgreSQL con Oracle SQL Developer y AWS SCT](incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.md)
+ [Integrar el controlador universal Stonebranch con AWS Mainframe Modernization](integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.md)
+ [Administre los productos de AWS Service Catalog en varias cuentas y regiones de AWS](manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions.md)
+ [Migrar una cuenta de AWS miembro de AWS Organizations a AWS Control Tower](migrate-an-aws-member-account-from-aws-organizations-to-aws-control-tower.md)
+ [Migración y réplica de archivos VSAM a Amazon RDS o Amazon MSK mediante Connect de Precisely](migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.md)
+ [Migración de SAP ASE a Amazon RDS para SQL Server utilizando AWS DMS](migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms.md)
+ [Migración de tablas externas de Oracle a Amazon Aurora compatible con PostgreSQL](migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible.md)
+ [Modernice la aplicación de CardDemo mainframe mediante AWS Transform](modernize-carddemo-mainframe-app.md)
+ [Modernice e implemente aplicaciones de mainframe con Terraform AWS Transform](modernize-mainframe-app-transform-terraform.md)
+ [Modernice las cargas de trabajo de impresión por lotes de mainframe AWS mediante Rocket Enterprise Server y LRS VPSX/MFI](modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Modernizar las cargas de trabajo de impresión en línea de mainframe en AWS mediante Micro Focus Enterprise Server y LRS VPSX/MFI](modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Modernice la administración de la producción del mainframe AWS mediante Rocket Enterprise Server y LRS X PageCenter](modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.md)
+ [Mover los archivos de mainframe directamente a Amazon S3 mediante Transfer Family](move-mainframe-files-directly-to-amazon-s3-using-transfer-family.md)
+ [Optimice las implementaciones sin servidor con varias cuentas mediante los flujos de trabajo y Actions AWS CDK GitHub](optimize-multi-account-serverless-deployments.md)
+ [Optimice el rendimiento de su aplicación modernizada AWS Blu Age](optimize-performance-aws-blu-age-modernized-application.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)
+ [Replicar bases de datos de unidades centrales en AWS mediante Precisely Connect](replicate-mainframe-databases-to-aws-by-using-precisely-connect.md)
+ [Ejecute tareas de Amazon ECS en Amazon WorkSpaces con Amazon ECS Anywhere](run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere.md)
+ [Envíe datos de telemetría desde y AWS Lambda OpenSearch para análisis y visualización en tiempo real](send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.md)
+ [Configure la detección de CloudFormation desviaciones en una organización multirregional y multicuenta](set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.md)
+ [Estructure un proyecto de Python en una arquitectura hexagonal con AWS Lambda](structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.md)
+ [Pruebe AWS la infraestructura mediante LocalStack Terraform Tests](test-aws-infra-localstack-terraform.md)
+ [Transforma Easytrieve a idiomas modernos mediante el uso personalizado AWS Transform](transform-easytrieve-modern-languages.md)
+ [Actualice los clústeres de SAP Pacemaker de a ENSA1 ENSA2](upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.md)
+ [Uso de Amazon Q Developer como asistente de codificación para aumentar la productividad](use-q-developer-as-coding-assistant-to-increase-productivity.md)
+ [Validar Account Factory para el código Terraform (AFT) localmente](validate-account-factory-for-terraform-aft-code-locally.md)

# Unidades centrales
<a name="mainframe-pattern-list"></a>

**Topics**
+ [Acceda Servicios de AWS desde IBM z/OS instalando el AWS CLI](access-aws-services-from-ibm-z-os-by-installing-aws-cli.md)
+ [Copia de seguridad y archivo de datos de mainframe en Amazon S3 mediante BMC AMI Cloud Data](back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.md)
+ [Cree programas COBOL Db2 mediante y AWS Mainframe Modernization AWS CodeBuild](build-cobol-db2-programs-mainframe-modernization-codebuild.md)
+ [Cree un PAC de servidor empresarial Micro Focus con Amazon EC2 Auto Scaling y Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Cree un visor de archivos de unidad central avanzada en la nube de AWS](build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.md)
+ [Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado](containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.md)
+ [Convierta y desempaquete datos EBCDIC a ASCII en AWS mediante Python](convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.md)
+ [Convierta archivos de mainframe del formato EBCDIC al formato ASCII delimitado por caracteres en Amazon S3 mediante AWS Lambda](convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda.md)
+ [Convertir archivos de datos de mainframe con diseños de registros complejos mediante Micro Focus](convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.md)
+ [Implementar un entorno para aplicaciones de Blu Age en contenedores mediante Terraform](deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.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)
+ [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)
+ [Implemente la autenticación basada en Microsoft Entra ID en una aplicación de mainframe modernizada de AWS Blu Age](implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.md)
+ [Integrar el controlador universal Stonebranch con AWS Mainframe Modernization](integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.md)
+ [Migración y réplica de archivos VSAM a Amazon RDS o Amazon MSK mediante Connect de Precisely](migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.md)
+ [Modernice la aplicación de CardDemo mainframe mediante AWS Transform](modernize-carddemo-mainframe-app.md)
+ [Modernice e implemente aplicaciones de mainframe con Terraform AWS Transform](modernize-mainframe-app-transform-terraform.md)
+ [Modernice la administración de la producción del mainframe AWS mediante Rocket Enterprise Server y LRS X PageCenter](modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.md)
+ [Modernice las cargas de trabajo de impresión por lotes de mainframe AWS mediante Rocket Enterprise Server y LRS VPSX/MFI](modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Modernización del mainframe: DevOps adelante AWS con Rocket Software Enterprise Suite](mainframe-modernization-devops-on-aws-with-micro-focus.md)
+ [Modernizar las cargas de trabajo de impresión en línea de mainframe en AWS mediante Micro Focus Enterprise Server y LRS VPSX/MFI](modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Mover los archivos de mainframe directamente a Amazon S3 mediante Transfer Family](move-mainframe-files-directly-to-amazon-s3-using-transfer-family.md)
+ [Optimice el rendimiento de su aplicación modernizada AWS Blu Age](optimize-performance-aws-blu-age-modernized-application.md)
+ [Proteja y optimice el acceso de los usuarios a una base de datos de federación DB2 en AWS mediante contextos de confianza](secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts.md)
+ [Transfiera z/OS datos de Db2 a gran escala a Amazon S3 en archivos CSV](transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.md)
+ [Transforma Easytrieve a idiomas modernos mediante el uso personalizado AWS Transform](transform-easytrieve-modern-languages.md)
+ [Más patrones](mainframe-more-patterns-pattern-list.md)

# Acceda Servicios de AWS desde IBM z/OS instalando el AWS CLI
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli"></a>

*Souma Ghosh, Paulo Vitor Pereira y Phil de Valence, Amazon Web Services*

## Resumen
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-summary"></a>

The [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) es una herramienta de código abierto para gestionar varios AWS servicios mediante comandos en una consola de línea de comandos. Con una configuración mínima, puede ejecutar comandos desde sesiones de línea de comandos, como el símbolo del sistema, la terminal y el intérprete de comandos bash para implementar una funcionalidad equivalente a la proporcionada por Consola de administración de AWS basada en el navegador.

Todas las funciones de administración, gestión y acceso de la AWS infraestructura como servicio (IaaS) Consola de administración de AWS están disponibles en la AWS API y. AWS CLI Puede instalarlas AWS CLI en un z/OS mainframe de IBM para acceder, gestionar e interactuar directamente con ellas Servicios de AWS desde z/OS. AWS CLI Esto permite a los usuarios y las aplicaciones realizar diversas tareas, como:
+ Transferencia de archivos o conjuntos de datos entre z/OS un almacenamiento de objetos del Amazon Simple Storage Service (Amazon S3) y visualización del contenido de los buckets
+ Iniciar y detener diferentes AWS recursos; por ejemplo, iniciar un trabajo por lotes en un entorno AWS Mainframe Modernization 
+ Llamar a una AWS Lambda función para implementar una lógica empresarial común
+ Integración con inteligencia artificial y machine learning (IA y ML) y servicios de análisis

Este patrón describe cómo instalar, configurar y usar la función AWS CLI en z/OS. You can install it globally, so it's available to all z/OS los usuarios o a nivel de usuario. El patrón también detalla cómo usarlo AWS CLI en una sesión de línea de comandos interactiva desde z/OS Unix System Services (USS) o como un trabajo por lotes.

## Requisitos previos y limitaciones
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-prereqs"></a>

**Requisitos previos **
+ **Comunicación de red de a z/OS AWS**

  De forma predeterminada, AWS CLI envía las solicitudes Servicios de AWS mediante HTTPS en el puerto TCP 443. Para usarlo AWS CLI correctamente, debe poder realizar conexiones salientes en el puerto TCP 443. Puede usar cualquiera de los siguientes comandos z/OS USS (es posible que algunos de ellos no estén instalados en su entorno) para probar la conectividad de la red desde z/OS hasta AWS:

  ```
  ping amazonaws.com
  dig amazonaws.com
  traceroute amazonaws.com
  curl -k https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html
  ```
+ **AWS credenciales**

  Para poder comunicarse con Nube de AWS los servicios de z/OS, es AWS CLI necesario configurar algunas credenciales con privilegios para acceder al destino. Cuenta de AWS Para los comandos programáticos AWS, puede utilizar las teclas de acceso, que consisten en un identificador de clave de acceso y una clave de acceso secreta. Si no tiene claves de acceso, puede crearlas desde la Consola de administración de AWS. Como práctica recomendada, no utilice las claves de acceso del usuario Cuenta de AWS raíz para ninguna tarea a menos que se requiera el usuario raíz. En su lugar, [cree un nuevo usuario administrador de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin) y [prepárese para los permisos con privilegios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#LeastPrivilege)** **para configurar el usuario con claves de acceso. Tras crear el usuario, puede [crear un ID de clave de acceso y una clave de acceso secreta](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) para este usuario.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)
+ **IBM Python para z/OS**

   AWS CLI Requiere Python 3.8 o posterior. IBM ha permitido que Python se ejecute z/OS con [IBM Open Enterprise Python for z/OS](https://www.ibm.com/products/open-enterprise-python-zos). IBM Open Enterprise Python está disponible de forma gratuita a través de Shopz SMP/E, o puede descargar el archivo PAX desde el [sitio web de IBM](https://www.ibm.com/account/reg/signup?formid=urx-49465). Para obtener instrucciones, consulte la [documentación de instalación y configuración](https://www.ibm.com/docs/en/python-zos) de IBM Open Enterprise Python para z/OS.

**Limitaciones**
+ Las instrucciones de instalación que se proporcionan en este patrón se aplican únicamente a la **versión 1 de la AWS CLI **. La última versión de AWS CLI es la versión 2. Sin embargo, este patrón usa la versión anterior porque los métodos de instalación son diferentes para la versión 2 y los ejecutables binarios disponibles para la versión 2 no son compatibles con el z/OS sistema.

**Versiones de producto**
+ AWS CLI versión 1
+ Python 3.8 o posterior

## Arquitectura
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-architecture"></a>

**Pila de tecnología**
+ Mainframe que ejecuta z/OS
+ Servicios de sistemas z/OS UNIX para mainframe (USS)
+ Mainframe Open MVS (OMVS): z/OS interfaz de comandos del entorno shell de UNIX
+ Disco de mainframe, como un dispositivo de almacenamiento de acceso directo (DASD)
+ AWS CLI

**Arquitectura de destino**

El siguiente diagrama muestra un AWS CLI despliegue en IBM z/OS. Puede invocarla AWS CLI desde una sesión de usuario interactiva, como una sesión de SSH o una sesión de telnet. También puede invocarlo desde un trabajo por lotes mediante el lenguaje de control de tareas (JCL) o desde cualquier programa que pueda llamar a un comando de shell de Unix. z/OS 

![\[AWS CLI en un z/OS mainframe de IBM que accede a los servicios de AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4e3188d8-287f-4ced-8c29-80a01cbbdf50/images/c3883500-bd00-4c56-982a-26d5e0b8b093.png)


 AWS CLI Se comunica con los Servicio de AWS puntos finales a través de una TCP/IP red. Esta conexión de red puede realizarse a través de Internet o mediante una AWS Direct Connect conexión privada desde el centro de datos del cliente a los centros de Nube de AWS datos. La comunicación se autentica con AWS credenciales y se cifra. 

**Automatización y escala**

Puede explorar las capacidades de AWS CLI y desarrollar scripts Servicio de AWS de shell USS para gestionar sus AWS recursos desde z/OS. También puede ejecutar AWS CLI comandos y scripts de shell desde el entorno z/OS por lotes, y puede automatizar los trabajos por lotes para que se ejecuten según un cronograma específico mediante la integración con los programadores de mainframe. AWS CLI Los comandos o scripts se pueden codificar dentro de los parámetros (PARMs) y los procedimientos (PROCs), y se pueden escalar siguiendo el enfoque estándar de llamar al PARM o al PROC desde diferentes trabajos por lotes con diferentes parámetros.

## Tools (Herramientas)
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante los comandos de tu consola de línea de comandos.

## Prácticas recomendadas
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-best-practices"></a>
+ Por motivos de seguridad, restrinja los permisos de acceso al directorio USS donde se almacenan los detalles de las claves de AWS acceso. Permita el acceso únicamente a los usuarios o programas que usen la AWS CLI.
+ No utilice las claves de acceso del usuario Cuenta de AWS root para ninguna tarea. Por el contrario, [cree un nuevo usuario administrador de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-set-up.html#create-an-admin) con las claves de acceso correspondientes y que sea para usted.


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

## Epics
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-epics"></a>

### Instale AWS CLI la versión 1 en z/OS USS
<a name="install-cli-version-1-on-z-os-uss"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale Python 3.8 o posterior. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Administrador de mainframe z/OS  | 
| Configure las variables de entorno de USS. | Agregue variables de entorno al perfil. Puede añadirlas al archivo `/u/cliuser/.profile` de un usuario individual (`cliuser`) o al archivo `/etc/profile` de todos los usuarios.Este patrón asume que Python se ha instalado en el directorio `/u/awscli/python`. Si el directorio de instalación es diferente, actualice el código en consecuencia.<pre># Python configuration<br />export BPXKAUTOCVT='ON'<br />export CEERUNOPTS='FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'<br />export TAGREDIR_ERR=txt<br />export TAGREDIR_IN=txt<br />export TAGREDIR_OUT=txt<br /><br /># AWS CLI configuration<br />export PATH=/u/cliuser/python/bin:$PATH<br />export PYTHONPATH=/u/cliuser/python:$PYTHONPATH</pre> | Administrador de mainframe z/OS  | 
| Pruebe la instalación de Python. | Ejecute el comando **python**:<pre>python --version</pre>El resultado debe confirmar que Python 3.8 o posterior está instalado correctamente. | Administrador de mainframe z/OS  | 
| Verifique o instale **pip**. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Administrador de mainframe z/OS  | 
| Instale la AWS CLI versión 1. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Administrador de mainframe z/OS  | 

### Configure el AWS CLI acceso desde z/OS
<a name="configure-cli-access-from-z-os"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure las claves de AWS acceso, la región predeterminada y la salida. | La [AWS CLI documentación](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html) describe diferentes opciones para configurar el AWS acceso. Puede elegir una configuración de acuerdo con los estándares de su organización. En este ejemplo, se utiliza la configuración de credenciales a corto plazo.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Administrador de AWS, administrador de mainframe, z/OS desarrollador de mainframe z/OS  | 
| Pruebe el. AWS CLI | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) |  z/OS Administrador de mainframe, desarrollador de mainframe z/OS  | 

### Opción 1: transferencia de datos de USS a Amazon S3 de forma interactiva desde una sesión de USS
<a name="option-1-transfer-data-from-uss-to-s3-interactively-from-a-uss-session"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue y transfiera el archivo CSV de muestra. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Desarrollador de aplicaciones, desarrollador de mainframe z/OS  | 
| Cree un bucket de S3 y cargue el archivo CSV. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Desarrollador de aplicaciones, desarrollador de mainframe z/OS  | 
| Consulte el bucket de S3 y el archivo cargado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)Para más información sobre la carga de objetos, consulte [Introducción a Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html) en la documentación de Amazon S3. | AWS general | 
| Ejecute una consulta SQL en una tabla de Amazon Athena. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html)El resultado de la consulta SQL mostrará el contenido del archivo CSV. | AWS general, desarrollador de aplicaciones | 

### Opción 2: transferencia de datos de USS a Amazon S3 mediante JCL por lotes
<a name="option-2-transfer-data-from-uss-to-s3-by-using-batch-jcl"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargue el archivo de muestra. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Desarrollador de mainframes z/OS  | 
| Cree JCL por lotes. | Codifique JCL del lote de la siguiente manera para crear el bucket de S3 de destino, cargar el conjunto de datos y enumerar el contenido del depósito. Asegúrese de reemplazar el nombre del directorio, los nombres de los archivos y el nombre del bucket por sus propios valores.<pre>//AWSCLICP JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1), <br />// NOTIFY=&SYSUID,TIME=1440 <br />//*---------------------------------------------------------<br />//* Sample job for AWS CLI <br />//*--------------------------------------------------------- <br />//USSCMD EXEC PGM=BPXBATCH<br />//STDERR  DD SYSOUT=*<br />//STDOUT  DD SYSOUT=*<br />//STDENV  DD *<br /> export PATH=/u/cliuser/python/bin:$PATH<br />//STDPARM DD *<br />SH<br /> export _BPXK_AUTOCVT=ON;<br /> aws s3 mb s3://DOC-EXAMPLE-BUCKET2;<br /> cp "//'USER.DATA.FIXED'" /tmp/tmpfile;<br /> aws s3 cp /tmp/tmpfile s3://DOC-EXAMPLE-BUCKET2/USER.DATA.FIXED; <br /> rm /tmp/tmpfile;<br /> aws s3 ls s3://DOC-EXAMPLE-BUCKET2;<br />/*</pre> | Desarrollador de mainframe z/OS  | 
| Envíe el trabajo de JCL por lotes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | Desarrollador de mainframe z/OS  | 
| Vea el conjunto de datos cargado en el bucket de S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/access-aws-services-from-ibm-z-os-by-installing-aws-cli.html) | AWS general | 

## Recursos relacionados
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-resources"></a>
+ [AWS CLI documentación de la versión 1](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html)
+ [AWS Mainframe Modernization Referencia de los comandos de la CLI](https://docs.aws.amazon.com/cli/latest/reference/m2/)
+ [AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/)

## Información adicional
<a name="access-aws-services-from-ibm-z-os-by-installing-aws-cli-additional"></a>

**USER.DATA.FIXED en la opción 3.4 del ISPF (utilidad de lista de conjuntos de datos)**

![\[Visualización del contenido del conjunto de datos en z/OS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4e3188d8-287f-4ced-8c29-80a01cbbdf50/images/96c25145-3d4d-4007-99f6-5eeb9e88642d.png)


**SYSOUT del trabajo por lotes enviado**

![\[Salida estándar del registro de trabajos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4e3188d8-287f-4ced-8c29-80a01cbbdf50/images/03fffbd2-7d2b-43b2-bf14-736b3d150e38.png)


## Conexiones
<a name="attachments-4e3188d8-287f-4ced-8c29-80a01cbbdf50"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/4e3188d8-287f-4ced-8c29-80a01cbbdf50/attachments/attachment.zip)

# Copia de seguridad y archivo de datos de mainframe en Amazon S3 mediante BMC AMI Cloud Data
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data"></a>

*Santosh Kumar Singh, Gilberto Biondo y Maggie Li, Amazon Web Services*

*Mikhael Liberman, Model9 Mainframe Software*

## Resumen
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-summary"></a>

Este patrón muestra cómo hacer copias de seguridad y archivar los datos del mainframe directamente en Amazon Simple Storage Service (Amazon S3) y, a continuación, recuperar y restaurar esos datos en el mainframe mediante BMC AMI Cloud Data (antes conocido como Model9 Manager). Si busca una forma de modernizar su solución de copia de seguridad y archivado como parte de su proceso de modernización del mainframe o de cumplir con los requisitos de conformidad, este patrón puede ayudarle a cumplir esos objetivos.

Por lo general, las organizaciones que ejecutan aplicaciones empresariales principales en mainframes utilizan una biblioteca de cintas virtuales (VTL) para hacer copias de seguridad de los almacenes de datos, como archivos y registros. Este método puede resultar caro porque consume MIPS facturables y no se puede acceder a los datos almacenados en cintas fuera del ordenador central. Para evitar estos problemas, puede utilizar BMC AMI Cloud Data para transferir de forma rápida y rentable los datos operativos e históricos del mainframe directamente a Amazon S3. Puede utilizar AMI Cloud Data de BMC para realizar copias de seguridad y archivar datos y, TCP/IP al AWS mismo tiempo, aprovechar los motores del procesador de información integrado (zIIP) de IBM z para reducir los costes, el paralelismo y los tiempos de transferencia.

## Requisitos previos y limitaciones
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ BMC AMI Cloud Data con una clave de licencia válida
+ Conectividad TCP/IP entre el mainframe y AWS
+ Una función AWS Identity and Access Management (IAM) para acceder a un bucket de S3 read/write 
+ Se ha establecido el acceso al producto de seguridad de mainframe (RACF) para ejecutar los procesos de BMC AMI Cloud
+ Un z/OS agente AMI Cloud de BMC (Java versión 8 de 64 bits SR5 FP16 o posterior) que tenga puertos de red disponibles, reglas de firewall que permitan el acceso a los depósitos de S3 y un sistema de archivos dedicado z/FS 
+ [Requisitos](https://docs.bmc.com/docs/cdacv27/management-server-requirements-1245343255.html) cumplidos para el servidor de administración BMC AMI Cloud

**Limitaciones**
+ BMC AMI Cloud Data almacena sus datos operativos en una base de datos PostgreSQL que se ejecuta como un contenedor de Docker en la misma instancia de Amazon Elastic Compute Cloud ( EC2Amazon) que el servidor de administración. Actualmente, Amazon Relational Database Service (Amazon RDS) no admite actualmente como backend para BMC AMI Cloud Data. Para obtener más información sobre las últimas actualizaciones de los productos, consulte [Novedades](https://docs.bmc.com/docs/cdacv27/what-s-new-1245343246.html) en la documentación de BMC.
+ Este patrón solo realiza copias de seguridad y z/OS archiva los datos del mainframe. BMC AMI Cloud Data solo realiza copias de seguridad y archiva los archivos del mainframe.
+ Este patrón no convierte los datos a formatos abiertos estándar, como JSON o CSV. Utilice un servicio de transformación adicional como [BMC AMI Cloud Analytics](https://www.bmc.com/it-solutions/bmc-ami-cloud-analytics.html) (anteriormente conocido como Model9 Gravity) para convertir los datos a formatos abiertos estándar. Las aplicaciones nativas en la nube y las herramientas de análisis de datos pueden acceder a los datos una vez que estos se hayan escrito en la nube.

**Versiones de producto**
+ BMC AMI Cloud Data, versión 2.x

## Arquitectura
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-architecture"></a>

**Pila de tecnología de origen**
+ Mainframe que ejecuta z/OS
+ Archivos de mainframe, como conjuntos de datos y archivos de z/OS UNIX System Services (USS)
+ Disco de mainframe, como un dispositivo de almacenamiento de acceso directo (DASD)
+ Cinta de mainframe (biblioteca de cintas físicas o virtuales)

**Pila de tecnología de destino**
+ Amazon S3
+  EC2 Instancia de Amazon en una nube privada virtual (VPC)
+ AWS Direct Connect
+ Amazon Elastic File System (Amazon EFS)

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura de referencia en la que los agentes de software BMC AMI Cloud Data de un mainframe controlan los procesos de archivado y respaldo de datos heredados que almacenan los datos en Amazon S3.

![\[Agentes de software BMC AMI Cloud Data en un mainframe que impulsan los procesos de copia de seguridad y archivado de datos heredados\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/bde3b029-184e-4eb0-933b-f8caf6cc40ab/images/a24cd6c1-b131-49ea-8238-f3aea5ab8134.png)


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

1. Los agentes de software AMI Cloud Data de BMC se ejecutan en particiones lógicas de mainframe ()LPARs. Los agentes de software leen y escriben datos del mainframe desde el DASD o graban directamente en Amazon S3 a través de TCP/IP.

1. AWS Direct Connect configura una conexión física y aislada entre la red local y. AWS Para mejorar la seguridad, ejecute una site-to-site VPN sobre ella Direct Connect para cifrar los datos en tránsito.

1. El bucket de S3 almacena los archivos del mainframe como datos de almacenamiento de objetos y los agentes de BMC AMI Cloud Data se comunican directamente con los buckets de S3. Los certificados se utilizan para el cifrado HTTPS de todas las comunicaciones entre el agente y Amazon S3. El cifrado de datos de Amazon S3 se utiliza para cifrar y proteger los datos en reposo.

1. Los servidores de administración de datos AMI Cloud de BMC se ejecutan como contenedores Docker en las EC2 instancias. Las instancias se comunican con los agentes que se ejecutan en el mainframe LPARs y en los buckets S3.

1. Amazon EFS se monta en EC2 instancias activas y pasivas para compartir el almacenamiento del Network File System (NFS). Esto garantiza que los metadatos relacionados con una política creada en el servidor de administración no se pierdan en caso de una conmutación por error. En caso de una conmutación por error por parte del servidor activo, puede acceder al servidor pasivo sin pérdida de datos. Si el servidor pasivo devuelve un error, también podrá acceder al servidor activo sin perder ningún dato.

## Tools (Herramientas)
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) 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 File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) permite crear y configurar sistemas de archivos compartidos 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 lo ayuda a almacenar, proteger y recuperar casi cualquier cantidad de datos.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa 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.
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)conecta su red interna a una AWS Direct Connect ubicación a través de un cable Ethernet de fibra óptica estándar. Con esta conexión, puede crear interfaces virtuales directamente con los AWS servicios públicos y, al mismo tiempo, omitir a los proveedores de servicios de Internet en su ruta de red.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

**Herramientas de BMC**
+ El [servidor de administración BMC AMI Cloud](https://docs.bmc.com/docs/cdacv27/bmc-ami-cloud-overview-1245343249.html) es una aplicación GUI que se ejecuta como un contenedor Docker en una Amazon Machine Image (AMI) de Amazon Linux para Amazon. EC2 El servidor de administración proporciona la funcionalidad necesaria para gestionar las actividades de BMC AMI Cloud, como la elaboración de informes, la creación y administración de políticas, la ejecución de archivos y la realización de copias de seguridad, recuperaciones y restauraciones.
+ El [agente de BMC AMI Cloud](https://docs.bmc.com/docs/cdacv27/bmc-ami-cloud-overview-1245343249.html) se ejecuta en un LPAR de mainframe en las instalaciones que lee y escribe archivos directamente en el almacenamiento de objetos mediante TCP/IP. Una tarea iniciada se ejecuta en un LPAR de mainframe y es responsable de leer y escribir los datos de copia de seguridad y archivar en Amazon S3 y desde este.
+ La [interfaz de línea de comandos (M9CLI) de BMC AMI Cloud Mainframe](https://docs.bmc.com/docs/cdacv27/command-line-interface-cli-reference-1245343519.html) le proporciona un conjunto de comandos para realizar acciones de BMC AMI Cloud directamente desde TSO/E o en operaciones por lotes, sin depender del servidor de administración.

## Epics
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-epics"></a>

### Creación de un bucket de S3 y una política de IAM
<a name="create-an-s3-bucket-and-iam-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | [Cree un bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) para almacenar los archivos y volúmenes de los que desee realizar copias de seguridad y archivar desde su entorno de mainframe. | AWS general | 
| Cree una política de IAM. | Todos los servidores de administración y agentes de BMC AMI Cloud requieren acceso al bucket de S3 que creó en el paso anterior.Para conceder el acceso necesario, cree la siguiente política de IAM:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "Listfolder",<br />            "Action": [<br />                "s3:ListBucket",<br />                "s3:GetBucketLocation",<br />                "s3:ListBucketVersions"<br />            ],<br />            "Effect": "Allow",<br />            "Resource": [<br />                "arn:aws:s3:::<Bucket Name>"<br />            ]<br />        },<br />        {<br />            "Sid": "Objectaccess",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",<br />                "s3:GetObjectAcl",<br />                "s3:GetObject",<br />                "s3:DeleteObjectVersion",<br />                "s3:DeleteObject",<br />                "s3:PutObjectAcl",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<Bucket Name>/*"<br />            ]<br />        }<br />    ]<br />}</pre> | AWS general | 

### Obtenga la licencia del software BMC AMI Cloud y descárguelo
<a name="get-the-bmc-ami-cloud-software-license-and-download-the-software"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga una licencia de software de BMC AMI Cloud. | Para obtener una clave de licencia de software, póngase en contacto con el [equipo de BMC AMI Cloud](https://www.bmc.com/it-solutions/bmc-ami-cloud.html?vd=model9-io). El resultado del z/OS `D M=CPU` comando es necesario para generar una licencia. | Responsable de compilación | 
| Descarga de la clave de licencia y el software BMC AMI Cloud | Puede obtener los archivos de instalación y la clave de licencia si sigue las instrucciones de la [documentación de BMC](https://docs.bmc.com/docs/cdacv27/preparing-to-install-the-bmc-ami-cloud-agent-1245343285.html). | Administrador de la infraestructura de mainframe | 

### Instalación del agente de software BMC AMI Cloud en el mainframe
<a name="install-the-bmc-ami-cloud-software-agent-on-the-mainframe"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalación del agente de software BMC AMI Cloud | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | Administrador de la infraestructura de mainframe | 

### Configurar un servidor de administración AMI Cloud de BMC en una instancia EC2
<a name="set-up-a-bmc-ami-cloud-management-server-on-an-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree instancias de Amazon EC2 Linux 2. | Lance dos instancias de Amazon EC2 Linux 2 en distintas zonas de disponibilidad siguiendo las instrucciones del [paso 1: lanzar una instancia](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance) de la EC2 documentación de Amazon.Su instancia debe cumplir los siguientes requisitos de hardware y software recomendados:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)Para obtener más información, consulte la [Documentación de BMC](https://docs.bmc.com/docs/cdacv27/preparing-to-install-the-management-server-on-linux-1245343268.html). | Arquitecto de la nube, administrador de la nube | 
| Crear un sistema de archivos de Amazon EFS. | Cree un sistema de archivos Amazon EFS siguiendo las instrucciones del [Paso 1: Cree su sistema de archivos Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/gs-step-two-create-efs-resources.html) en la documentación de Amazon EFS.Al crear el sistema de archivos, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | Administrador de la nube, arquitecto de la nube | 
| Instale Docker y configure el servidor de administración. | **Conéctese a sus EC2 instancias:**Conéctate a tus EC2 instancias siguiendo las instrucciones de [Connect to your Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) en la EC2 documentación de Amazon.**Configura tus EC2 instancias:**Para cada EC2 instancia, haz lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | Arquitecto de la nube, administrador de la nube | 
| Instale el software del servidor de administración. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)Para solucionar problemas, vaya a los registros almacenados en la carpeta `/data/model9/logs/`** **. Para obtener más información, consulte la [Documentación de BMC](https://docs.bmc.com/docs/cdacv27/performing-the-management-server-installation-on-linux-1245343272.html). | Arquitecto de la nube, administrador de la nube | 

### Incorporación de un agente y defina una política de copia de seguridad o archivado en el servidor de administración de BMC AMI Cloud
<a name="add-an-agent-and-define-a-backup-or-archive-policy-on-the-bmc-ami-cloud-management-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Añada un nuevo agente. | Antes de añadir un nuevo agente, confirme lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)Debe crear un agente en el servidor de administración antes de definir cualquier política de copia de seguridad y archivado. Para crear el agente, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)Una vez creado el agente, puede ver el estado **Conectado** en comparación con el agente de almacenamiento de objetos y el agente de mainframe en una nueva ventana que aparece en la tabla. | Desarrollador o administrador de almacenamiento de mainframe | 
| Cree una política de copia de seguridad o archivado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | Desarrollador o administrador de almacenamiento de mainframe | 

### Ejecute la política de copia de seguridad o archivado desde el servidor de administración
<a name="run-the-backup-or-archive-policy-from-the-management-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute la política de copia de seguridad o archivado. | Ejecute la política de copia de seguridad o archivado de datos que creó anteriormente desde el servidor de administración de forma manual o automática (según una programación). Para ejecutar la política manualmente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | Desarrollador o administrador de almacenamiento de mainframe | 
| Restaure la copia de seguridad o la política de archivos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html) | Desarrollador o administrador de almacenamiento de mainframe | 

### Ejecute la política de copia de seguridad o archivado desde el mainframe
<a name="run-the-backup-or-archive-policy-from-the-mainframe"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute la política de copia de seguridad o de archivo mediante M9CLI. | Utilice la M9CLI para realizar procesos de copia de seguridad y restauración desde TSO/E, REXX o incluso JCLs sin configurar reglas en el servidor de administración AMI Cloud de BMC.**Uso de TSO/E:**Si usa TSO/E, asegúrese de que `M9CLI REXX` esté concatenado a `TSO`. Para hacer una copia de seguridad de un conjunto de datos mediante TSO/E, utilice el comando `TSO M9CLI BACKDSN <DSNAME>`.Para obtener más información sobre los comandos M9CLI, consulte la [referencia de CLI](https://docs.bmc.com/docs/cdacv27/command-line-interface-cli-reference-1245343519.html) en la documentación de BMC.**Uso JCLs de:**Para ejecutar la política de copia de seguridad y archivado mediante JCLs, ejecute el `M9CLI` comando.**Uso de operaciones por lotes:**En el siguiente ejemplo se muestra cómo archivar un conjunto de datos mediante la ejecución del comando `M9CLI` por lotes:<pre>//JOBNAME JOB …<br />//M9CLI EXEC PGM=IKJEFT01<br />//STEPLIB DD DISP=SHR,DSN=<MODEL9 LOADLIB><br />//SYSEXEC DD DISP=SHR,DSN=<MODEL9 EXEC LIB><br />//SYSTSPRT DD SYSOUT=*<br />//SYSPRINT DD SYSOUT=*<br />//SYSTSIN DD TSO M9CLI ARCHIVE <br /> M9CLI ARCHIVE <DSNNAME OR DSN PATTERN>   <br />/</pre> | Desarrollador o administrador de almacenamiento de mainframe | 
| Ejecute la política de copia de seguridad o de archivo en el lote JCL. | BMC AMI Cloud proporciona un ejemplo de rutina JCL llamada **M9SAPIJ**. Puede personalizar **M9SAPIJ** para que ejecute una política específica creada en el servidor de administración con un JCL. Este trabajo también puede formar parte de un programador de lotes para ejecutar automáticamente los procesos de copia de seguridad y restauración.El trabajo por lotes espera los siguientes valores obligatorios:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data.html)También puede cambiar otros valores según las instrucciones del trabajo de ejemplo. | Desarrollador o administrador de almacenamiento de mainframe | 

## Recursos relacionados
<a name="back-up-and-archive-mainframe-data-to-amazon-s3-using-bmc-ami-cloud-data-resources"></a>
+ [Modernización del mainframe con AWS](https://aws.amazon.com/mainframe/) (documentación de AWS)
+ [How Cloud Backup for Mainframes Cuts Costs with Model9 and AWS](https://aws.amazon.com/blogs/apn/how-cloud-backup-for-mainframes-cuts-costs-with-model9-and-aws/) (blog AWS Partner Network)
+ [How to Enable Mainframe Data Analytics on AWS Using Model9](https://aws.amazon.com/blogs/apn/how-to-enable-mainframe-data-analytics-on-aws-using-model9/) (blog AWS Partner Network)
+ [Recomendaciones de resiliencia de AWS Direct Connect](https://aws.amazon.com/directconnect/resiliency-recommendation/?nc=sn&loc=4&dn=2) (documentación de AWS)
+ [Documentación de BMC AMI Cloud](https://docs.bmc.com/docs/cdacv27/getting-started-1245343248.html) (sitio web de BMC)

# Cree programas COBOL Db2 mediante y AWS Mainframe Modernization AWS CodeBuild
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild"></a>

*Luis Gustavo Dantas y Eduardo Zimelewicz, Amazon Web Services*

## Resumen
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-summary"></a>

**nota**  
AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funcionalidades similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Este patrón explica cómo crear un AWS CodeBuild proyecto sencillo para precompilar y vincular programas de COBOL Db2 mediante las herramientas Replatform. AWS Mainframe Modernization Esto permite el despliegue y la ejecución de estos programas en el entorno de ejecución de Replatform. AWS Mainframe Modernization 

COBOL, un lenguaje de programación orientado a los negocios, potencia muchas aplicaciones críticas debido a su fiabilidad y legibilidad. IBM Db2, un sistema de gestión de bases de datos relacionales, gestiona grandes volúmenes de datos de manera eficiente y se integra con los programas COBOL a través de SQL. COBOL y Db2 forman juntos la columna vertebral de las operaciones de misión crítica en sectores como las finanzas y el gobierno, a pesar de la aparición de nuevas tecnologías.

La migración de los componentes COBOL y Db2 del entorno de mainframe a otras plataformas plantea desafíos como la compatibilidad de las plataformas, la complejidad de la integración, la migración de datos y la optimización del rendimiento. El traslado de estos componentes críticos requiere una planificación cuidadosa, experiencia técnica y recursos para garantizar una migración fluida y, al mismo tiempo, mantener la fiabilidad y la funcionalidad.

El AWS Mainframe Modernization servicio proporciona herramientas y recursos para cambiar la plataforma de las aplicaciones y bases de datos de mainframe para que se ejecuten en la AWS infraestructura, como las instancias de Amazon Elastic Compute Cloud EC2 (Amazon). Esto implica trasladar las cargas de trabajo del mainframe a la nube sin tener que hacer cambios importantes en el código.

El proceso de compilación previo y enlace de Db2 es esencial para optimizar el rendimiento y la fiabilidad de las aplicaciones de bases de datos. La compilación previa transforma las instrucciones de SQL incrustadas en código ejecutable, lo que reduce la sobrecarga del tiempo de ejecución y mejora la eficiencia. El proceso de enlace vincula el código compilado previamente con las estructuras de la base de datos, lo que facilita las rutas de acceso y la optimización de las consultas. Este proceso garantiza la integridad de los datos, mejora la capacidad de respuesta de las aplicaciones y protege contra las vulnerabilidades de seguridad. Las aplicaciones compiladas previamente y enlazadas correctamente minimizan el consumo de recursos, mejoran la escalabilidad y mitigan los riesgos de los ataques de inyección de código SQL.

## Requisitos previos y limitaciones
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-prereqs"></a>

**Requisitos previos**
+ Acceso a una Cuenta de AWS consola de nivel administrativo.
+ Un sistema de base de datos IBM Db2, como IBM Db2 for z/OS o Db2 para Linux, Unix y Windows (LUW).
+ El software IBM Data Server Client, está disponible para su descarga en el [sitio web de IBM](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers). Para obtener más información, consulte los [tipos de IBM Data Server Client y Data Server Driver](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients).
+ Un programa COBOL Db2 para compilar y vincular. Como alternativa, este patrón proporciona un programa de ejemplo básico que puede utilizar.
+ Una nube privada virtual (VPC) conectada a una AWS red privada. Para más información sobre la creación de VPC, consulte la [documentación de Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html).
+ Un repositorio de control de código fuente, como GitHub o GitLab.

**Limitaciones**
+ Para conocer AWS CodeBuild las cuotas, consulte [Cuotas para AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html).
+ Algunas Servicios de AWS no están disponibles en todas Regiones de AWS. Para conocer la disponibilidad de las regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-architecture"></a>

**Pila de tecnología de origen**

La pila de orígenes incluye:
+ Programas COBOL que utilizan una base de datos Db2 para almacenar datos
+ Compilador IBM COBOL y Db2 para precompilador z/OS 
+ Otras partes de la configuración del mainframe, como el sistema de archivos, el administrador de transacciones y el spool

**Pila de tecnología de destino**

El enfoque de este patrón funciona con dos opciones: mover datos de Db2 for a Db2 para LUW o z/OS permanecer en Db2 para z/OS. La arquitectura de destino incluye:
+ Programas COBOL que utilizan una base de datos Db2 para almacenar datos
+ AWS Mainframe Modernization Cambie la plataforma de las herramientas de compilación
+ AWS CodeBuild como infraestructura para crear la aplicación
+ Otros Nube de AWS recursos, como Amazon Linux

**Arquitectura de destino**

![\[Arquitectura para crear programas COBOL Db2 en AWS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/5895fa34-f05b-4cc3-a59f-a596f9116c66/images/0dda414a-21a7-41d1-b86b-7ff3b1c6fbda.png)


En el siguiente diagrama se ilustra lo siguiente:

1. El usuario carga su código en un repositorio de control de código fuente, como GitHub o GitLab.

1. AWS CodePipeline nota el cambio y obtiene el código del repositorio.

1. CodePipeline inicia AWS CodeBuild y envía el código.

1. CodeBuild sigue las instrucciones de la `buildspec.yml` plantilla (que se proporcionan en la sección de [información adicional](#build-cobol-db2-programs-mainframe-modernization-codebuild-additional)) para:

   1. Obtener IBM Data Server Client de un bucket de Amazon Simple Storage Service (Amazon S3).

   1. Instalar y configurar IBM Data Server Client.

   1. Recupere las credenciales de Db2 de AWS Secrets Manager.

   1. Conexión al servidor Db2.

   1. Precompilar, compilar y vincular el programa COBOL.

   1. Guarde los productos terminados en un depósito de S3 AWS CodeDeploy para su uso.

1. CodePipeline comienza CodeDeploy.

1. CodeDeploy coordina sus agentes, que ya están instalados en los entornos de ejecución. Los agentes obtienen la aplicación de Amazon S3 y la instalan según las instrucciones que se indican en `appspec.yml`.

Para simplificar las cosas y centrarlas en la compilación, las instrucciones de este patrón abarcan los pasos 1 a 4, pero no incluyen la implementación del programa COBOL Db2.

**Automatización y escala**

Para mayor simplicidad, este patrón describe cómo aprovisionar los recursos de forma manual. Sin embargo, existen numerosas opciones de automatización disponibles, como CloudFormation AWS Cloud Development Kit (AWS CDK), y HashiCorp Terraform, que automatizan estas tareas. Para obtener más información, consulte la documentación de [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) y [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html).

## Tools (Herramientas)
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-tools"></a>

**Servicios de AWS**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatiza las implementaciones en instancias, AWS Lambda funciones EC2 o servicios de Amazon Elastic Container Service (Amazon ECS) o en instancias locales.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) permite diseñar y configurar rápidamente las diferentes etapas de un proceso de lanzamiento de software y automatizar los pasos necesarios para lanzar los cambios en el software de manera continua.
+ [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)proporciona herramientas y recursos que le ayudan a planificar e implementar la migración y la modernización de los mainframes a AWS entornos de tiempo de ejecución gestionados.

**Otras herramientas**
+ **Imagen de Amazon ECR para las herramientas de AWS Mainframe Modernization Replatform**. Para compilar una aplicación COBOL, tendrá que empezar CodeBuild con una imagen de Amazon Elastic Container Registry (Amazon ECR) que contenga las herramientas de Replatform: AWS Mainframe Modernization 

  `673918848628.dkr.ecr.<your-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`

  Para obtener más información sobre la imagen de ECR disponible, consulte el [tutorial](https://docs.aws.amazon.com/m2/latest/userguide/tutorial-build-mf.html) de la *Guía del usuario de AWS Mainframe Modernization *.
+ El software [IBM Data Server Client](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients) es esencial para precompilar y vincular los programas COBOL Db2. CodeBuild Actúa como puente entre el compilador COBOL y Db2.

## Prácticas recomendadas
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-best-practices"></a>
+ No todos los programas COBOL utilizan Db2 como capa de persistencia de datos. Asegúrese de que las directivas de compilación para acceder a Db2 se apliquen únicamente a los programas COBOL diseñados específicamente para interactuar con Db2. Implemente una lógica para distinguir entre los programas COBOL Db2 y los programas COBOL que no utilizan Db2.
+ Se recomienda evitar compilar programas que no hayan sido modificados. Implemente un proceso para identificar qué programas deben compilarse.

## Epics
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-epics"></a>

### Creación de la infraestructura en la nube
<a name="create-the-cloud-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3 para alojar IBM Data Server Client y los artefactos de canalización. | Debe configurar un bucket de S3 para (a) cargar IBM Data Server Client, (b) almacenar el código del repositorio y (c) almacenar los resultados del proceso de creación.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Para ver más maneras de crear un bucket de S3, consulte [la documentación de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). | AWS general | 
| Cargue IBM Data Server Client en el bucket de S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS general | 
| Cree un AWS Secrets Manager secreto para sus credenciales de Db2. | Para crear un secreto para almacenar sus DB2 credenciales de forma segura:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Para más información sobre la creación de secretos, consulte la [documentación de Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). | AWS general | 
| Compruebe que Db2 sea accesible desde la subred de la VPC. | AWS CodeBuild necesita una conexión al servidor Db2 para que el cliente del servidor de datos pueda realizar operaciones de precompilación y enlace. Asegúrese de que CodeBuild puede acceder al servidor Db2 a través de una conexión segura.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | Administrador de red, AWS general | 

### Creación de los artefactos de la aplicación
<a name="create-the-application-artifacts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el activo COBOL Db2. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | Desarrollador de aplicaciones | 
| Creación del archivo `buildspec.yml`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| Conecta tu repositorio a CodePipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Necesitará el nombre del recurso de Amazon (ARN) para la conexión cuando cree la política AWS Identity and Access Management (IAM) para un paso CodePipeline posterior. | AWS DevOps | 

### Configuración de permisos
<a name="configure-permissions"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una política de IAM para CodeBuild. | El CodeBuild proyecto requiere acceso a algunos recursos, como Secrets Manager y Amazon S3.Para configurar los permisos necesarios:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Para obtener más información sobre la creación de políticas de IAM, consulte la [documentación de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html). | AWS general | 
| Cree un rol de IAM para CodeBuild. | Para que las políticas de seguridad estén disponibles CodeBuild, debe configurar un rol de IAM.Para crear el rol:1. En el panel de navegación de la [consola de IAM](https://console.aws.amazon.com/iam), seleccione **Roles**, **Crear rol**.3. En **Tipo de entidad de confianza**, mantenga la selección predeterminada de **Servicio de AWS**.4. **En Caso de uso**, seleccione el CodeBuild servicio y, a continuación, elija **Siguiente**.4. En la lista de políticas de IAM disponibles, busque la política para la que creó y CodeBuild, a continuación, seleccione **Siguiente** para asociarla al rol.5. Especifique un nombre para el rol y elija **Crear rol** para guardarlo para consultarlo en el futuro CodeBuild.Para obtener más información sobre la creación de un rol de IAM para un Servicio de AWS, consulte la documentación de [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). | AWS general | 
| Cree una política de IAM para. CodePipeline | La AWS CodePipeline canalización requiere acceso a algunos recursos, incluidos su repositorio de código y Amazon S3.Repita los pasos indicados anteriormente CodeBuild para crear una política de IAM CodePipeline (en el paso 2, elija en **CodePipeline**lugar de **CodeBuild**). | AWS DevOps | 
| Cree un rol de IAM para CodePipeline. | Para que las políticas de seguridad estén disponibles CodePipeline, debe configurar un rol de IAM.Para crear el rol:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 

### Compilación y enlace del programa COBOL Db2
<a name="compile-and-bind-the-cobol-db2-program"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una CodePipeline canalización y un CodeBuild proyecto. | Para crear una CodePipeline canalización y el CodeBuild proyecto que compila y enlaza el programa COBOL Db2:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| Revise la salida. | Compruebe el éxito de la compilación revisando los registros de CodePipeline compilación. | AWS DevOps | 
| Compruebe los resultados en Db2. | Compruebe la versión del paquete en la tabla SYSPLAN.<pre>select CAST(NAME AS VARCHAR(10)) as name, VALIDATE, LAST_BIND_TIME, LASTUSED, CAST(PKGVERSION AS VARCHAR(10)) as PKGVERSION from SYSIBM.SYSPLAN where NAME = 'CDB2SMP' order by LAST_BIND_TIME desc<br /></pre>La versión debe coincidir con el ID de CodeBuild compilación, que se muestra `CDB2SMP` en nuestro ejemplo:<pre>NAME       VALIDATE LAST_BIND_TIME             LASTUSED   PKGVERSION<br />---------- -------- -------------------------- ---------- ----------<br />CDB2SMP    B        2024-05-18-11.53.11.503738 01/01/0001 19</pre> |  | 

## Resolución de problemas
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Ocasionalmente, la AWS consola cambia de región cuando te mueves de un servicio a otro. | Asegúrese de verificar lo seleccionado Región de AWS cada vez que cambie de un servicio a otro.El Región de AWS selector está en la esquina superior derecha de la ventana de la consola. | 
| Puede resultar difícil identificar los problemas de conectividad de Db2 desde. CodeBuild | Para solucionar problemas de conectividad, añada el siguiente comando de DB2 conexión al `buildspec.yml` archivo. Esta adición lo ayudará a depurar y resolver los problemas de conectividad.<pre>db2 connect to $DB_NAME user $DB2USER using $DB2PASS</pre> | 
| En ocasiones, el panel de roles de la consola de IAM no muestra inmediatamente la política de IAM que ha creado. | Si se produce un retraso, actualice la pantalla para mostrar la información más reciente. | 

## Recursos relacionados
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-resources"></a>

**Documentación de IBM**
+ [Tipos de controladores y IBM Data Server Client](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)
+ [Descarga de tipos de controladores y IBM Data Server Client](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)

**AWS documentación**
+ [Guía del usuario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ [AWS CodeBuild Guía del usuario](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)
+ [AWS Mainframe Modernization Guía del usuario](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)
+ [AWS Secrets Manager Guía del usuario](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS CodePipeline Guía del usuario](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CodeDeploy Guía del usuario** **](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-codedeploy.html)

## Información adicional
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-additional"></a>

**CodeBuild política**

Sustituya los marcadores de posición `<RegionID>`, `<AccountID>`, `<SubnetARN>`, `<BucketARN>` y `<DB2CredSecretARN>` por sus propios valores.

```
{"Version": "2012-10-17",		 	 	 
    "Statement": [
        {"Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*" },
        {"Action": ["ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", 
                    "ecr:BatchCheckLayerAvailability"],
         "Effect": "Allow", 
         "Resource": "arn:aws:ecr:*:673918848628:repository/m2-enterprise-build-tools"},
        {"Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::aws-m2-repo-*/*"},
        {"Action": ["logs:PutLogEvents", "logs:CreateLogStream", "logs:CreateLogGroup"],
         "Effect": "Allow", "Resource": "arn:aws:logs:<RegionId>:<AccountId>:*"},
        {"Action": ["ec2:DescribeVpcs", "ec2:DescribeSubnets", 
                    "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", 
                    "ec2:DescribeDhcpOptions", "ec2:DeleteNetworkInterface", 
                    "ec2:CreateNetworkInterface"],
         "Effect": "Allow", "Resource": "*"},
        {"Action": "ec2:CreateNetworkInterfacePermission", 
         "Effect": "Allow", "Resource": ["<SubnetARN>"]},
        {"Action": "s3:*", "Effect": "Allow", "Resource": ["<BucketARN>/*","<BucketARN>"]},
        {"Action": "secretsmanager:GetSecretValue", 
         "Effect": "Allow", "Resource": "<DB2CredSecretARN>"}
    ]
}
```

**CodePipeline política**

Sustituya los marcadores de posición `<BucketARN>` y `<ConnectionARN>` por sus propios valores.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {"Action": ["s3:List*", "s3:GetObjectVersion", "s3:GetObject", "s3:GetBucketVersioning" ], 
        "Effect": "Allow",
        "Resource": ["<BucketARN>/*", "<BucketARN>"]},
        {"Action": ["codebuild:StartBuild", "codebuild:BatchGetBuilds"], 
         "Effect": "Allow", "Resource": "*"},
        {"Action": ["codestar-connections:UseConnection"],
         "Effect": "Allow", "Resource": "<ConnectionARN>"}
        ]
}
```

**`buildspec.yml`**

Sustituya el marcador de posición `<your-bucket-name>` con el nombre real de su bucket de S3.

```
version: 0.2
phases:
  pre_build:
    commands:
      - /var/microfocuslicensing/bin/mfcesd -no > /var/microfocuslicensing/logs/mfcesd_startup.log 2>&1 &
      - |
        mkdir $CODEBUILD_SRC_DIR/db2client
        aws s3 cp s3://<your-bucket-name>/v11.5.8_linuxx64_client.tar.gz $CODEBUILD_SRC_DIR/db2client/ >> /dev/null 2>&1
        tar -xf $CODEBUILD_SRC_DIR/db2client/v11.5.8_linuxx64_client.tar.gz -C $CODEBUILD_SRC_DIR/db2client/
        cd $CODEBUILD_SRC_DIR/db2client/
        ./client/db2_install -f sysreq -y -b /opt/ibm/db2/V11.5 >> /dev/null 2>&1        
        useradd db2cli
        /opt/ibm/db2/V11.5/instance/db2icrt -s client -u db2cli db2cli
        DB2CRED=$(aws secretsmanager get-secret-value --secret-id dev-db2-cred | jq -r '.SecretString | fromjson')
        read -r DB2USER DB2PASS DB_NODE DB_HOST DB_PORT DB_NAME DB_QUAL <<<$(echo $DB2CRED | jq -r '.username, .password, .db2node, .db2host, .db2port, .db2name, .qualifier')
        . /home/db2cli/sqllib/db2profile
        db2 catalog tcpip node $DB_NODE remote $DB_HOST server $DB_PORT
        db2 catalog db $DB_NAME as $DB_NAME at node $DB_NODE authentication server
  build:
    commands:
      - |
        revision=$CODEBUILD_SRC_DIR/loadlib
        mkdir -p $revision; cd $revision
        . /opt/microfocus/EnterpriseDeveloper/bin/cobsetenv
        cob -zU $CODEBUILD_SRC_DIR/CDB2SMP.cbl -C "DB2(DB==${DB_NAME} PASS==${DB2USER}.${DB2PASS} VERSION==${CODEBUILD_BUILD_NUMBER} COLLECTION==DB2AWSDB"
artifacts:
  files:
    - "**/*"
  base-directory: $revision
```

# Cree un PAC de servidor empresarial Micro Focus con Amazon EC2 Auto Scaling y Systems Manager
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager"></a>

*Kevin Yung y Krithika Palani Selvam, Amazon Web Services*

*Peter Woods, ninguno*

*Abraham Rondon, Micro Focus*

## Resumen
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-summary"></a>

Este patrón introduce una arquitectura escalable para aplicaciones de mainframe que utilizan [Micro Focus Enterprise Server en Scale-Out Performance and Availability Cluster (PAC)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-F6E1BBB7-AEC2-45B1-9E36-1D86B84D2B85.html) y un grupo de EC2 Auto Scaling de Amazon Elastic Compute Cloud (Amazon) en Amazon Web Services ().AWS La solución está totalmente automatizada con AWS Systems Manager los ganchos de ciclo de vida EC2 de Amazon Auto Scaling. Al usar este patrón, puede configurar sus aplicaciones de mainframe en línea y por lotes para lograr una alta resiliencia escalando vertical y horizontalmente de forma automática en función de sus demandas de capacidad. 

**nota**  
Este patrón se probó con la versión 6.0 de Micro Focus Enterprise Server. Para la versión 8, consulte [Configurar Micro Focus Runtime (en Amazon EC2)](https://docs.aws.amazon.com/m2/latest/userguide/mf-runtime-setup.html).

## Requisitos previos y limitaciones
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Software y licencia de Micro Focus Enterprise Server. Para obtener más información, contacte con el departamento de [ventas de Micro Focus](https://www.microfocus.com/en-us/contact/contactme).
+ Comprender el concepto de reconstrucción y entrega de una aplicación de mainframe a ejecutar en Micro Focus Enterprise Server. Para obtener información general, consulte [Hoja de datos de Micro Focus Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf).
+ Comprender los conceptos de clúster de rendimiento y disponibilidad escalable horizontalmente de Micro Focus Enterprise Server. Para más información, consulte la [documentación de Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-F6E1BBB7-AEC2-45B1-9E36-1D86B84D2B85.html).
+ Comprensión del concepto general de aplicación de mainframe DevOps con integración continua (CI). Para ver un patrón de orientación AWS prescriptiva desarrollado por AWS Micro Focus, consulte [Modernización de mainframe: puesta DevOps en marcha AWS con](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/mainframe-modernization-devops-on-aws-with-micro-focus.html) Micro Focus.

**nota**  
Este patrón se probó con la versión 6 de Micro Focus Enterprise Server. Para la versión 8, consulte [Configurar Micro Focus Runtime (en Amazon EC2)](https://docs.aws.amazon.com/m2/latest/userguide/mf-runtime-setup.html).

**Limitaciones**
+ Para obtener una lista de las plataformas compatibles con Micro Focus Enterprise Server, consulte la [hoja de datos de Micro Focus Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf).
+ Los scripts y las pruebas utilizados en este patrón se basan en Amazon EC2 Windows Server 2019; no se probaron otras versiones y sistemas operativos de Windows Server para este patrón.
+ El patrón se basa en Micro Focus Enterprise Server 6.0 para Windows; no se han probado versiones anteriores o posteriores para desarrollar este patrón.

**Versiones de producto**
+ Micro Focus Enterprise Server 6.0
+ Windows Server 2019

## Arquitectura
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-architecture"></a>

En un entorno de mainframe convencional, debe aprovisionar el hardware para alojar las aplicaciones y los datos corporativos. Para hacer frente a los picos de demanda estacionales, mensuales, trimestrales o incluso imprevistos o sin precedentes, los usuarios de mainframe deben *escalar horizontalmente* sus capacidades adquiriendo capacidad de almacenamiento y procesamiento adicionales. El aumento de la cantidad de recursos de almacenamiento y capacidad de cómputo mejora el rendimiento general, pero el escalado no es lineal.

Este no es el caso cuando comienza a adoptar un modelo de consumo bajo demanda en AWS mediante los servidores Amazon EC2 Auto Scaling y Micro Focus Enterprise. En las siguientes secciones se explica en detalle cómo crear una arquitectura de aplicaciones de mainframe escalable y totalmente automatizada mediante el clúster de rendimiento y disponibilidad escalable (PAC) de Micro Focus Enterprise Server con un grupo de Amazon EC2 Auto Scaling. 

**Arquitectura de escalado automático de Micro Focus Enterprise Server**

En primer lugar, es importante conocer los conceptos básicos de Micro Focus Enterprise Server. Este entorno proporciona un entorno de implementación x86 compatible con mainframe para aplicaciones que tradicionalmente se ejecutaban en el mainframe de IBM. Ofrece ejecuciones en línea y por lotes, así como un entorno de transacciones compatible con:
+ IBM COBOL
+ IBM PL/I
+ Trabajos por lotes en IBM JCL
+ Transacciones de IBM CICS e IMS TM
+ Servicios web
+ Utilidades de procesamiento por lotes comunes, incluida SORT

Micro Focus Enterprise Server permite la ejecución de aplicaciones de mainframe con cambios mínimos. Las cargas de trabajo de mainframe existentes se pueden trasladar a plataformas x86 y modernizarse para aprovechar las extensiones nativas en la nube de AWS y así expandirse rápidamente a nuevos mercados o geografías. 

El [patrón AWS Prescriptive Guidance Modernization: DevOps on AWS with Micro](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/mainframe-modernization-devops-on-aws-with-micro-focus.html) Focus introdujo la arquitectura para acelerar el desarrollo y las pruebas de aplicaciones de mainframe en AWS mediante Micro Focus Enterprise Developer y Enterprise Test Server con AWS y AWS CodePipeline . CodeBuild Este patrón se centra en la implementación de aplicaciones de mainframe en el entorno de producción de AWS para lograr una alta disponibilidad y resiliencia.

En un entorno de producción de mainframe, es posible que haya configurado IBM Parallel Sysplex en el mainframe para lograr un alto rendimiento y una alta disponibilidad. Para crear una arquitectura escalable similar a Sysplex, Micro Focus introdujo el clúster de rendimiento y disponibilidad (PAC) en Enterprise Server. PACs admiten la implementación de aplicaciones de mainframe en múltiples regiones de Enterprise Server administradas como una sola imagen y escaladas en instancias de Amazon EC2 . PACs también permiten un rendimiento predecible de las aplicaciones y del sistema bajo demanda. 

En un PAC, varias instancias de Enterprise Server funcionan juntas como una sola entidad lógica. Por lo tanto, el fallo de una instancia de Enterprise Server no interrumpirá la continuidad del negocio, ya que la capacidad se comparte con otras regiones, mientras que las nuevas instancias se inician automáticamente con la funcionalidad estándar del sector, como un grupo de Amazon EC2 Auto Scaling. Esto elimina los puntos únicos de fallo y mejora la resiliencia ante problemas de hardware, red y aplicaciones. Las instancias de Enterprise Server ampliadas se pueden operar y administrar mediante la administración web común de servidores empresariales (ESCWA) APIs, lo que simplifica el mantenimiento operativo y la facilidad de servicio de los servidores empresariales. 

**nota**  
Micro Focus recomienda que el [clúster de rendimiento y disponibilidad (PAC)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-C06DC883-8A67-44DB-8553-8F0DD2062DAB.html) esté formado por, al menos, tres regiones de Enterprise Server. Así, la disponibilidad no se verá comprometida en caso de que una región de Enterprise Server falle o requiera mantenimiento.

La configuración del PAC requiere un servicio de administración de base de datos relacional (RDBMS) compatible para administrar la base de datos regional, una base de datos interregional y las bases de datos de almacenes de datos opcionales. Es necesario usar una base de datos de almacén de datos para gestionar los archivos de Virtual Storage Access Method (VSAM). La compatibilidad con el gestor de archivos de base de datos de Micro Focus mejora la disponibilidad y la escalabilidad. Entre las opciones admitidas se incluyen las siguientes: RDBMSs 
+ Microsoft SQL Server 2009 o posterior
+ PostgreSQL 10.x, incluida la edición compatible con PostgreSQL de Amazon Aurora
+ DB2 10.4 y versiones posteriores

Para obtener más información sobre los requisitos de RDBMS y PAC compatibles, consulte [Micro Focus Enterprise Server: requisitos previos](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-486C5A4B-E3CD-4B17-81F3-32F9DE970EA5.html) y [Micro Focus Enterprise Server: configuración de PAC recomendada](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-7038DB6F-E89F-4B5F-BCAA-BD1456F6CCA3.html).

El siguiente diagrama muestra una configuración de arquitectura de AWS típica para un PAC de Micro Focus. 

![\[Una arquitectura de tres zonas de disponibilidad con cinco pasos que se describen en una tabla después del diagrama.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/64e3c22b-1058-4ab8-855f-18bbbed5dc13/images/df291568-a442-454f-80bf-49e4ffff4f6d.png)


 


| 
| 
|  | **component** | **Descripción** | 
| --- |--- |--- |
| 1 | Grupo de escalado automático de instancias de Enterprise Server | Configure un grupo de escalado automático implementado con las instancias de Enterprise Server en un PAC. Las CloudWatch alarmas de Amazon pueden aumentar o activar el número de instancias mediante CloudWatch métricas. | 
| 2 | Grupo de escalado automático de instancias ESCWA de Enterprise Server  | Configure un grupo de escalado automático implementado con Enterprise Server Common Web Administration (ESCWA). La CESPAO se encarga de la gestión de clústeres. APIs   Los servidores de ESCWA actúan como plano de control para añadir o eliminar Enterprise Server e iniciar o detener las regiones de Enterprise Server en el PAC durante los eventos de escalado automático de la instancia de Enterprise Server.   Como la instancia de ESCWA se usa únicamente para la gestión del PAC, su patrón de tráfico es predecible. y su escalado. automático (el requisito de capacidad deseado se puede establecer en 1).  | 
| 3 | Instancia de Amazon Aurora en una configuración Multi-AZ | Configure un sistema de administración de base de datos relacional (RDBMS) para alojar los archivos de datos de los usuarios y del sistema y compartirlos entre las instancias de Enterprise Server. | 
| 4 | Instancia y réplica de Amazon ElastiCache (Redis OSS) | Configure una instancia principal ElastiCache (Redis OSS) y al menos una réplica para alojar los datos de los usuarios y actuar como un repositorio escalable (SOR) para las instancias de Enterprise Server. Puede configurar uno o más [repositorios escalables horizontalmente](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-3840E10F-80AA-4109-AF2C-894237D3AD00.html) para almacenar tipos específicos de datos de usuario.   Enterprise Server emplea una base de datos NoSQL de Redis como SOR, [requisito fundamental para mantener la integridad del PAC](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-176B97CA-4F9F-4CE1-952F-C3F4FB0ADD25.html). | 
| 5 | Equilibrador de carga de red | Configure un equilibrador de carga que proporcione un nombre de host para que las aplicaciones se conecten a los servicios proporcionados por las instancias de Enterprise Server (por ejemplo, acceder a la aplicación a través de un emulador 3270). | 

Estos componentes conforman el requisito mínimo para un clúster PAC de Micro Focus Enterprise Server. La siguiente sección trata sobre la automatización de la administración de clústeres.

**Uso de Automatización de AWS Systems Manager para escalar**

Una vez implementado el clúster PAC en AWS, el PAC se administra a través de Enterprise Server Common Web Administration (ESCWA) APIs. 

Para automatizar las tareas de administración de clústeres durante los eventos de escalado automático, puede utilizar los manuales de automatización de Systems Manager y Amazon EC2 Auto Scaling with Amazon EventBridge. La arquitectura de estas automatizaciones se muestra en el siguiente diagrama.

![\[AWS architecture diagram showing EventBridge, Administrador de sistemas, and EC2 Auto Scaling integration.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/64e3c22b-1058-4ab8-855f-18bbbed5dc13/images/6f9e4035-fafd-4aee-a6cc-d5e95d6514c2.png)


 


| 
| 
|  | **Componente** | **Descripción** | 
| --- |--- |--- |
| 1 | Enlace de ciclo de vida de escalado automático | Configura enlaces de ciclo de vida de escalado automático y envía notificaciones a Amazon EventBridge cuando se lancen nuevas instancias y las instancias existentes finalicen en el grupo de escalado automático. | 
| 2 | Amazon EventBridge | Configure una EventBridge regla de Amazon para enrutar los eventos de escalado automático a los objetivos del runbook de Systems Manager Automation. | 
| 3 | Manuales de procedimientos de Automation | Configure los manuales de automatización de Systems Manager para ejecutar PowerShell scripts de Windows e invoque a la CESPAO APIs para administrar el PAC. Para ver más ejemplos, consulte la sección *Información adicional*. | 
| 4 | Instancia ESCWA de Enterprise Server en un grupo de escalado automático | Configurar una instancia ESCWA de Enterprise Server en un grupo de escalado automático. La instancia de la CESPAO permite APIs gestionar el PAC.  | 

## Tools (Herramientas)
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-tools"></a>
+ [Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-A2F23243-962B-440A-A071-480082DF47E7.html): Micro Focus Enterprise Server proporciona el entorno de ejecución para aplicaciones creadas con cualquier variante de entorno de desarrollo integrado (IDE) de Enterprise Developer.
+ [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html): Amazon EC2 Auto Scaling le ayuda a garantizar que dispone del número correcto de EC2 instancias de Amazon disponibles para gestionar la carga de su aplicación. Puede crear colecciones de EC2 instancias, denominadas grupos de Auto Scaling, y especificar un número mínimo y máximo de instancias.
+ [Amazon ElastiCache (Redis OSS)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html): Amazon ElastiCache es un servicio web para configurar, administrar y escalar un almacén de datos en memoria distribuido o un entorno de caché en la nube. Proporciona una capacidad de almacenamiento en caché de alto rendimiento, escalable y rentable.
+ [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html): Amazon Relational Database Service (Amazon RDS) es un servicio web que facilita la configuración, el funcionamiento y el escalado de una base de datos relacional en la nube de AWS. Proporciona una capacidad rentable y de tamaño ajustable para una base de datos relacional y se ocupa de las tareas comunes de administración de bases de datos. 
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html): AWS Systems Manager es un servicio que puede utilizar para ver y controlar su infraestructura en AWS. Mediante la consola de Systems Manager, puede ver los datos operativos de varios servicios de AWS y automatizar las tareas operativas en sus recursos de AWS. Systems Manager le ayuda a mantener la seguridad y la conformidad mediante el análisis de sus instancias administradas y el informe sobre las infracciones de las políticas que detecte o la toma de medidas correctivas con respecto a estas.

## Epics
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-epics"></a>

### Crear una instancia de Amazon Aurora
<a name="create-an-amazon-aurora-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una CloudFormation plantilla de AWS para una instancia de Amazon Aurora. | Utilice el [fragmento de código de ejemplo de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RDS.html) para crear una CloudFormation plantilla que cree una instancia de Amazon Aurora compatible con PostgreSQL Edition. | Arquitecto de la nube | 
| Implemente una CloudFormation pila para crear la instancia de Amazon Aurora. | Use la CloudFormation plantilla para crear una instancia compatible con Aurora PostgreSQL que tenga habilitada la replicación Multi-AZ para las cargas de trabajo de producción. | Arquitecto de la nube | 
| Configure los ajustes de conexión a la base de datos para Enterprise Server. | Siga las instrucciones de la [documentación de Micro Focus](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-40748F62-84B3-4B7B-8E96-5484ADEDFB5F.html) para preparar las cadenas de conexión y la configuración de la base de datos para Micro Focus Enterprise Server. |  DevOps Ingeniero de datos, ingeniero | 

### Crear un ElastiCache clúster de Amazon para la instancia de Redis
<a name="create-an-elclong-cluster-for-the-redis-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea una CloudFormation plantilla para el ElastiCache clúster de Amazon para la instancia de Redis. | Utilice el [fragmento de código de ejemplo de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html) para crear una CloudFormation plantilla que cree un ElastiCache clúster de Amazon para la instancia de Redis. | Arquitecto de la nube | 
| Implemente la CloudFormation pila para crear un ElastiCache clúster de Amazon para la instancia de Redis. | Cree el ElastiCache clúster de Amazon para la instancia de Redis que tiene habilitada la replicación Multi-AZ para las cargas de trabajo de producción. | Arquitecto de la nube | 
| Configure los ajustes de conexión de Enterprise Server PSOR. | Siga las instrucciones de la [documentación de Micro Focus](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2A420ADD-4CA6-472D-819F-371C037C0653.html) para preparar la configuración de la conexión del repositorio Scale-Out PAC (PSOR) para Micro Focus Enterprise Server PAC. | DevOps ingeniero | 

### Cree un grupo de escalado automático de ESCWA para Micro Focus Enterprise Server
<a name="create-a-micro-focus-enterprise-server-escwa-automatic-scaling-group"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una AMI de Micro Focus Enterprise Server. | Cree una instancia de Amazon EC2 Windows Server e instale el binario de Micro Focus Enterprise Server en la EC2 instancia. Cree una Amazon Machine Image (AMI) de la EC2 instancia. Para más información, consulte la [documentación de instalación de Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-FACEF60F-BAE3-446C-B2B4-4379A5DF6D9F.html). | Arquitecto de la nube | 
| Cree una CloudFormation plantilla para Enterprise Server ESCWA.  | Use el [fragmento de código de ejemplo de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScaling.html) para crear una plantilla de una pila personalizada de Enterprise Server ESCWA en un grupo de escalado automático. | Arquitecto de la nube | 
| Implemente la CloudFormation pila para crear un grupo de EC2 escalado de Amazon para Enterprise Server ESCWA. | Utilice la CloudFormation plantilla para implementar el grupo de escalado automático con la AMI de la CESPAO de Micro Focus Enterprise Server creada en la historia anterior. | Arquitecto de la nube | 

### Cree de un manual de procedimientos de Automatización de AWS Systems Manager
<a name="create-an-aws-systems-manager-automation-runbook"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una CloudFormation plantilla para un manual de automatización de Systems Manager. | Utilice los fragmentos de código de ejemplo de la sección de *información adicional* para crear una CloudFormation plantilla que cree un manual de automatización de Systems Manager para automatizar la creación de PAC, la ampliación de Enterprise Server y la ampliación horizontal de Enterprise Server. | Arquitecto de la nube | 
| Implemente la CloudFormation pila que contiene el manual de ejecución de Systems Manager Automation. | Utilice la CloudFormation plantilla para implementar una pila que contenga el manual de automatización para la creación de PAC, el escalado de Enterprise Server y el escalado de Enterprise Server. | Arquitecto de la nube | 

### Cree un grupo de escalado automático para Micro Focus Enterprise Server
<a name="create-an-automatic-scaling-group-for-micro-focus-enterprise-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una CloudFormation plantilla para configurar un grupo de escalado automático para Micro Focus Enterprise Server. | Utilice el [fragmento de código de ejemplo de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScaling.html) para crear una CloudFormation plantilla que cree un grupo de escalado automático. Esta plantilla reutilizará la misma AMI que se creó para la instancia de Micro Focus Enterprise Server ESCWA. A continuación, utilice un [fragmento de código de ejemplo de AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html) para crear el evento del ciclo de vida de escalado automático y configure Amazon EventBridge para filtrar los eventos de escalado horizontal y horizontal en la misma plantilla. CloudFormation  | Arquitecto de la nube | 
| Implemente la CloudFormation pila para el grupo de escalado automático de los servidores empresariales Micro Focus. | Implemente la CloudFormation pila que contiene el grupo de escalado automático para los servidores Micro Focus Enterprise. | Arquitecto de la nube | 

## Recursos relacionados
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-resources"></a>
+ [Clúster de rendimiento y disponibilidad (PAC) de Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-613F5E2D-2FBC-47AE-9327-48CA4FF84C5B.html) 
+ [Ganchos del ciclo de vida de Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)
+ [Ejecutar automatizaciones con activadores mediante EventBridge](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-cwe-target.html)

## Información adicional
<a name="build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager-additional"></a>

Los siguientes escenarios deben automatizarse para reducir o escalar horizontalmente los clústeres de PAC.

**Automatización para iniciar o recrear un PAC**

Al inicio de un clúster de PAC, Enterprise Server requiere que la CESPAO lo invoque APIs para crear una configuración de PAC. Esta acción inicia y agrega regiones de Enterprise Server al PAC. Para crear o volver a crear un PAC, siga estos pasos: 

1. Configure un [repositorio escalable horizontalmente de PAC (PSOR)](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2A420ADD-4CA6-472D-819F-371C037C0653.html) en ESCWA con un nombre determinado.

   ```
   POST /server/v1/config/groups/sors
   ```

1. Cree un PAC con un nombre determinado y adjúntele el PSOR.

   ```
   POST /server/v1/config/groups/pacs
   ```

1. Configure la base de datos regional y la base de datos interregional si es la primera vez que configura un PAC.
**nota**  
En este paso se usan consultas SQL y la herramienta **dbhfhadmin** de la línea de comandos de Micro Focus Enterprise Suite para crear la base de datos e importar los datos iniciales.

1. Instale la definición de PAC en las regiones de Enterprise Server.

   ```
   POST /server/v1/config/mfds 
   POST /native/v1/config/groups/pacs/${pac_uid}/install
   ```

1. Inicie las regiones de Enterprise Server en el PAC.

   ```
   POST /native/v1/regions/${host_ip}/${port}/${region_name}/start
   ```

Los pasos anteriores se pueden implementar mediante un script de Windows PowerShell . 

En los pasos siguientes se explica cómo crear una automatización para crear un PAC mediante la reutilización del PowerShell script de Windows.

1. Crea una plantilla de EC2 lanzamiento de Amazon que descargue o cree el PowerShell script de Windows como parte del proceso de arranque. Por ejemplo, puede utilizar los datos EC2 del usuario para descargar el script desde un bucket de Amazon Simple Storage Service (Amazon S3).

1. Cree un runbook de AWS Systems Manager Automation para invocar el script de Windows PowerShell .

1. Asocie el manual de procedimientos a la instancia de ESCWA mediante la etiqueta de instancia.

1. Cree un grupo de escalado automático ESCWA utilizando la plantilla de lanzamiento. 

Puede usar el siguiente CloudFormation fragmento de AWS de ejemplo para crear el runbook de automatización.

* CloudFormation Fragmento de ejemplo de un manual de automatización de Systems Manager utilizado para la creación de un PAC*

```
  PACInitDocument:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Command
       Content:
         schemaVersion: '2.2'
         description: Operation Runbook to create Enterprise Server PAC
         mainSteps:
         - action: aws:runPowerShellScript
           name: CreatePAC
           inputs:
             onFailure: Abort
             timeoutSeconds: "1200"
             runCommand:
             - | 
               C:\Scripts\PAC-Init.ps1
  PacInitAutomation:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Automation
       Content:
         description: Prepare Micro Focus PAC Cluster via ESCWA Server
         schemaVersion: '0.3'
         assumeRole: !GetAtt SsmAssumeRole.Arn
         mainSteps:
           - name: RunPACInitDocument
             action: aws:runCommand
             timeoutSeconds: 300
             onFailure: Abort
             inputs:
               DocumentName: !Ref PACInitDocument
               Targets:
                 - Key: tag:Enterprise Server - ESCWA
                   Values:
                     - "true"
   PacInitDocumentAssociation:
     Type: AWS::SSM::Association
     Properties:
       DocumentVersion: "$LATEST"
       Name: !Ref PACInitDocument
       Targets:
         - Key: tag:Enterprise Server - ESCWA
           Values:
             - "true"
```

Para obtener más información, consulte [Micro Focus Enterprise Server: Configuración de un PAC](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2B15EBA5-84AF-47C3-9F8E-EE57EB17245F.html).

**Automatización para escalado horizontal con una nueva instancia de Enterprise Server**

Cuando una instancia de Enterprise Server se escala horizontalmente, su región de Enterprise Server debe añadirse al PAC. En los siguientes pasos se explica cómo invocar a la CESPAO APIs y añadir la región de Enterprise Server al PAC. 

1. Instale la definición de PAC en las regiones de Enterprise Server.

   ```
   POST '/server/v1/config/mfds'
   POST /native/v1/config/groups/pacs/${pac_uid}/install
   ```

1. Inicie en caliente la región en el PAC.

   ```
   POST /native/v1/regions/${host_ip}/${port}/${region_name}/start
   ```

1. Agregue la instancia de Enterprise Server al equilibrador de carga asociando el grupo de escalado automático al equilibrador de carga.

Los pasos anteriores se pueden implementar mediante un script de Windows PowerShell . Para obtener más información, consulte [Micro Focus Enterprise Server: Configuración de un PAC](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-2B15EBA5-84AF-47C3-9F8E-EE57EB17245F.html).

Los siguientes pasos se pueden utilizar para crear una automatización basada en eventos que permita añadir una instancia de Enterprise Server recién lanzada a un PAC reutilizando el PowerShell script de Windows. 

1. Cree una plantilla de EC2 lanzamiento de Amazon para una instancia de Enterprise Server que aprovisione una región de Enterprise Server durante su arranque. Por ejemplo, puede usar el comando mfds de Micro Focus Enterprise Server para importar una configuración regional. Para obtener más detalles y ver las opciones disponibles para este comando, consulte la [referencia de Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/HRADRHCOMM06.html).

1. Cree un grupo de escalado automático de Enterprise Server que emplee la plantilla de lanzamiento creada en el paso anterior.

1. Cree un manual de automatización de Systems Manager para invocar el script de Windows PowerShell . 

1. Asocie el manual de procedimientos a la instancia de ESCWA mediante la etiqueta de instancia.

1. Cree una EventBridge regla de Amazon para filtrar el evento EC2 Instance Launch Successful para el grupo de escalado automático de Enterprise Server y cree el objetivo para usar el manual de automatización.

Puede usar el siguiente CloudFormation fragmento de ejemplo para crear el manual de automatización y la regla. EventBridge 

* CloudFormation Fragmento de ejemplo de Systems Manager utilizado para escalar instancias de Enterprise Server*

```
  ScaleOutDocument:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Command
       Content:
         schemaVersion: '2.2'
         description: Operation Runbook to Adding MFDS Server into an existing PAC 
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"
           InstanceId:
             type: String
             default: "Not-Available"
         mainSteps:
         - action: aws:runPowerShellScript
           name: Add_MFDS
           inputs:
             onFailure: Abort
             timeoutSeconds: "300"
             runCommand:
             - |
               $ip = "{{InstanceIpAddress}}"
               if ( ${ip} -eq "Not-Available" ) {
                 $ip = aws ec2 describe-instances --instance-id {{InstanceId}} --output text --query "Reservations[0].Instances[0].PrivateIpAddress"
               }            
               C:\Scripts\Scale-Out.ps1 -host_ip ${ip} -port {{MfdsPort}}
 
   PacScaleOutAutomation:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Automation
       Content:
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"
           InstanceId:
             type: String
             default: "Not-Available"
         description: Scale Out 1 New Server in Micro Focus PAC Cluster via ESCWA Server
         schemaVersion: '0.3'
         assumeRole: !GetAtt SsmAssumeRole.Arn
         mainSteps:
           - name: RunScaleOutCommand
             action: aws:runCommand
             timeoutSeconds: 300
             onFailure: Abort
             inputs:
               DocumentName: !Ref ScaleOutDocument
               Parameters:
                 InstanceIpAddress: "{{InstanceIpAddress}}"
                 InstanceId: "{{InstanceId}}"
                 MfdsPort: "{{MfdsPort}}"
               Targets:
                 - Key: tag:Enterprise Server - ESCWA
                   Values:
                     - "true"
```

**Automatización para reducir horizontalmente una instancia de Enterprise Server**

Al igual que con la ampliación *horizontal*, cuando se amplía una instancia de Enterprise Server, se inicia la acción de finalización del ciclo de vida EC2 de la instancia, y se necesitan las siguientes llamadas al proceso y a la API para eliminar una instancia de Micro Focus Enterprise Server del PAC. 

1. Detenga la región de la instancia de Enterprise Server que está finalizando.

   ```
   POST "/native/v1/regions/${host_ip}/${port}/${region_name}/stop"
   ```

1. Elimine la instancia de Enterprise Server del PAC.

   ```
   DELETE "/server/v1/config/mfds/${uid}"
   ```

1. Envíe una señal para continuar con la finalización de la instancia de Enterprise Server.

Los pasos anteriores se pueden implementar en un script de Windows. PowerShell Para obtener más información sobre este proceso, consulte el [documento de Micro Focus Enterprise Server: Administración de un PAC](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-E864E2E9-EB49-43BF-9AAD-7FE334749441.html).

En los siguientes pasos se explica cómo crear una automatización basada en eventos para cerrar una instancia de Enterprise Server desde un PAC mediante la reutilización del script de Windows. PowerShell  

1. Cree un manual de automatización de Systems Manager para invocar el script de Windows PowerShell .

1. Asocie el manual de procedimientos a la instancia de ESCWA mediante la etiqueta de instancia.

1. Cree un enlace automático para el ciclo de vida de un grupo de escalado, por EC2 ejemplo, la terminación.

1. Cree una EventBridge regla de Amazon para filtrar el evento de acción del ciclo EC2 de vida de finalización de la instancia para el grupo de escalado automático de Enterprise Server y cree el objetivo para usar el manual de automatización. 

Puede utilizar la siguiente CloudFormation plantilla de ejemplo para crear un manual, un enlace de ciclo de vida y una EventBridge regla de Systems Manager Automation.

* CloudFormation Fragmento de ejemplo de un manual de automatización de Systems Manager utilizado para escalar en una instancia de Enterprise Server*

```
  ScaleInDocument:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Command
       Content:
         schemaVersion: '2.2'
         description: Operation Runbook to Remove MFDS Server from PAC 
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"
           InstanceId:
             type: String
             default: "Not-Available"
         mainSteps:
         - action: aws:runPowerShellScript
           name: Remove_MFDS
           inputs:
             onFailure: Abort
             runCommand:
             - |
               $ip = "{{InstanceIpAddress}}"
               if ( ${ip} -eq "Not-Available" ) {
                 $ip = aws ec2 describe-instances --instance-id {{InstanceId}} --output text --query "Reservations[0].Instances[0].PrivateIpAddress"
               }            
               C:\Scripts\Scale-In.ps1 -host_ip ${ip} -port {{MfdsPort}}
 
   PacScaleInAutomation:
     Type: AWS::SSM::Document
     Properties:
       DocumentType: Automation
       Content:
         parameters:
           MfdsPort:
             type: String
           InstanceIpAddress:
             type: String
             default: "Not-Available"            
           InstanceId:
             type: String
             default: "Not-Available"                
         description: Scale In 1 New Server in Micro Focus PAC Cluster via ESCWA Server
         schemaVersion: '0.3'
         assumeRole: !GetAtt SsmAssumeRole.Arn
         mainSteps:
           - name: RunScaleInCommand
             action: aws:runCommand
             timeoutSeconds: "600"
             onFailure: Abort
             inputs:
               DocumentName: !Ref ScaleInDocument
               Parameters:
                 InstanceIpAddress: "{{InstanceIpAddress}}"
                 MfdsPort: "{{MfdsPort}}"
                 InstanceId: "{{InstanceId}}"
               Targets:
                 - Key: tag:Enterprise Server - ESCWA
                   Values:
                     - "true"
           - name: TerminateTheInstance
             action: aws:executeAwsApi
             inputs:
               Service: autoscaling
               Api: CompleteLifecycleAction
               AutoScalingGroupName: !Ref AutoScalingGroup
               InstanceId: "{{ InstanceId }}"
               LifecycleActionResult: CONTINUE
               LifecycleHookName: !Ref ScaleInLifeCycleHook
```

**Automatización para un activador de escalado EC2 automático de Amazon**

El proceso de configuración de una política de escalado para instancias de Enterprise Server requiere comprender el comportamiento de la aplicación. En la mayoría de los casos, puede establecer políticas de escalado de seguimiento de objetivos. Por ejemplo, puedes usar el uso promedio de la CPU como CloudWatch métrica de Amazon para configurar la política de escalado automático. Para obtener más información, consulte [Políticas de escalado de seguimiento de Target para Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html). Para aplicaciones con patrones de tráfico regulares, considere la posibilidad de usar una política de escalado predictivo. Para obtener más información, consulte [Escalado predictivo para Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html). 

# Cree un visor de archivos de unidad central avanzada en la nube de AWS
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud"></a>

*Boopathy GOPALSAMY y Jeremiah O'Connor, Amazon Web Services*

## Resumen
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-summary"></a>

Este patrón proporciona ejemplos de código y pasos para ayudarlo a crear una herramienta avanzada para buscar y revisar los archivos de formato fijo de su unidad central mediante los servicios sin servidor de AWS. El patrón proporciona un ejemplo de cómo convertir un archivo de entrada de mainframe en un documento de Amazon OpenSearch Service para navegar y buscar. La herramienta de visualización de archivos puede ayudarle a lograr lo siguiente:
+ Conservar la misma estructura y diseño de archivos de unidad central para mantener la coherencia en su entorno de migración de AWS objetivo (por ejemplo, puede mantener el mismo diseño para los archivos en una aplicación por lotes que transmite archivos a terceros)
+ Acelerar el desarrollo y las pruebas durante la migración de su unidad central
+ Dar soporte a las actividades de mantenimiento después de la migración

## Requisitos previos y limitaciones
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una nube privada virtual (VPC) con una subred a la que pueda acceder la plataforma antigua
+ 
**nota**  
Un archivo de entrada y su correspondiente cuaderno de texto en lenguaje común orientado a los negocios (COBOL) (: Para ver ejemplos de archivos de entrada y cuadernos de texto COBOL, consulte en el repositorio. [gfs-mainframe-solutions](https://github.com/aws-samples/gfs-mainframe-patterns.git) GitHub Para obtener más información sobre los cuadernos de COBOL, consulte la Guía de programación [empresarial de COBOL para z/OS ](https://publibfp.boulder.ibm.com/epubs/pdf/igy6pg30.pdf) 6.3 en el sitio web de IBM.)

**Limitaciones**
+ El análisis de los copybook está limitado a no más de dos niveles anidados (SE PRODUCE)

## Arquitectura
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-architecture"></a>

**Pila de tecnología de origen**
+ Archivos de entrada en formato [FB (bloqueado fijo)](https://www.ibm.com/docs/en/zos-basic-skills?topic=set-data-record-formats)
+ Diseño de copybook de COBOL

**Pila de tecnología de destino**
+ Amazon Athena
+  OpenSearch Servicio Amazon
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Lambda
+ AWS Step Functions

**Arquitectura de destino**

El siguiente diagrama muestra el proceso de analizar y convertir un archivo de entrada del ordenador central en un documento de OpenSearch servicio para su navegación y búsqueda.

![\[Proceso para analizar y convertir el archivo de entrada del ordenador central en un servicio. OpenSearch\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/cce68438-bcf2-48c1-b86b-01242235ec76.png)


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

1. Un usuario administrador o una aplicación envía los archivos de entrada a un bucket de S3 y los copybook de COBOL a otro bucket de S3.

1. 
**nota**  
El bucket de S3 con los archivos de entrada invoca una función de Lambda que inicia un flujo de trabajo de Step Functions sin servidor. : El uso de un activador de eventos de S3 y una función de Lambda para impulsar el flujo de trabajo de Step Functions en este patrón es opcional. Los ejemplos de GitHub código de este patrón no incluyen el uso de estos servicios, pero puede usarlos según sus necesidades.

1. El flujo de trabajo de Step Functions coordina todos los procesos por lotes de las siguientes funciones de Lambda:
   + La función `s3copybookparser.py` analiza el diseño del copybook y extrae los atributos de los campos, los tipos de datos y las compensaciones (necesarios para el procesamiento de los datos de entrada).
   + La función `s3toathena.py` crea un diseño de tabla de Athena. Athena analiza los datos de entrada que procesa la función `s3toathena.py` y los convierte en un archivo CSV.
   + La `s3toelasticsearch.py` función ingiere el archivo de resultados del bucket de S3 y lo envía a OpenSearch Service.

1. Los usuarios acceden a los OpenSearch paneles con OpenSearch Service para recuperar los datos en varios formatos de tablas y columnas y, a continuación, ejecutar consultas con los datos indexados.

## Tools (Herramientas)
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-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 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. En este patrón, se utiliza Lambda para implementar la lógica principal, como analizar archivos, convertir datos y cargar datos en OpenSearch Service para un acceso interactivo a los archivos.
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) es un servicio gestionado que le ayuda a implementar, operar y escalar clústeres de OpenSearch servicios en la nube de AWS. En este patrón, utiliza OpenSearch Service para indexar los archivos convertidos y proporcionar capacidades de búsqueda interactiva a los usuarios.
+ [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 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 Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) es un servicio de orquestación sin servidor que le ayuda a combinar funciones de Lambda y otros servicios de AWS para crear aplicaciones esenciales desde el punto de vista empresarial. En este patrón, se utilizan Step Functions para orquestar las funciones de Lambda.

**Otras herramientas**
+ [GitHub](https://github.com/)es un servicio de alojamiento de código que proporciona herramientas de colaboración y control de versiones.
+ [Python](https://www.python.org/) es un lenguaje de programación de alto nivel.

**Código**

El código de este patrón está disponible en el GitHub [gfs-mainframe-patterns](https://github.com/aws-samples/gfs-mainframe-patterns.git)repositorio.

## Epics
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el bucket de S3. | [Cree un bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) para almacenar los copybooks, los archivos de entrada y los archivos de salida. Recomendamos la siguiente estructura de carpetas para su bucket de S3:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 
| Cree la función s3copybookparser. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 
| Cree la función s3toathena. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 
| Cree la función s3toelasticsearch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 
| Cree el clúster OpenSearch de servicios. | **Cree el clúster**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)**Conceder acceso al rol de IAM**Para proporcionar un acceso detallado al rol de IAM de la función de Lambda (`arn:aws:iam::**:role/service-role/s3toelasticsearch-role-**`), haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 
| Cree Step Functions para la orquestación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 

### Implemente y ejecute
<a name="deploy-and-run"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cargue los archivos de entrada y los copybooks en un bucket de S3;. | Descargue los archivos de ejemplo de la carpeta de ejemplos del [GitHub ](https://github.com/aws-samples/gfs-mainframe-patterns.git)repositorio y cárguelos en el bucket de S3 que creó anteriormente.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 
| Invoque los Step Functions. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)<pre>{<br />  "s3_copybook_bucket_name": "<BUCKET NAME>",<br />  "s3_copybook_bucket_key": "<COPYBOOK PATH>",<br />  "s3_source_bucket_name": "<BUCKET NAME",<br />  "s3_source_bucket_key": "INPUT FILE PATH"<br />}</pre>Por ejemplo:<pre>{<br />  "s3_copybook_bucket_name": "fileaidtest",<br />  "s3_copybook_bucket_key": "copybook/acctix.cpy",<br />  "s3_source_bucket_name": "fileaidtest",<br />  "s3_source_bucket_key": "input/acctindex"<br />}</pre> | AWS general | 
| Valide la ejecución del flujo de trabajo en Step Functions. | En la [consola de Step Functions](https://console.aws.amazon.com/states/home), revise la ejecución del flujo de trabajo en el **inspector de gráficos**. Los estados de ejecución están codificados por colores para representar el estado de ejecución. Por ejemplo, el azul indica **In progress (En curso)**, el verde indica **Succeeded (Correcto)** y el rojo indica **Failed (Con error)**. También puede revisar la tabla de la sección **Historial de eventos de ejecución** para obtener información más detallada sobre los eventos de ejecución.Para ver un ejemplo de la ejecución de un flujo de trabajo gráfico, consulte el *gráfico de Step Functions* en la sección *Información adicional* de este patrón. | AWS general | 
| Valida los registros de entrega en Amazon CloudWatch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)Para ver un ejemplo de registros de entregas correctos, consulta *los registros de CloudWatch entrega* en la sección de *información adicional* de este patrón. | AWS general | 
| Valide el archivo formateado en los OpenSearch paneles de control y realice las operaciones con los archivos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | AWS general | 

## Recursos relacionados
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-resources"></a>

**Referencias**
+ [Ejemplo de copybook de COBOL](https://www.ibm.com/docs/en/record-generator/3.0?topic=SSMQ4D_3.0.0/documentation/cobol_rcg_examplecopybook.html) (documentación de IBM)
+ [Ayuda de archivo BMC Compuware](https://www.bmc.com/it-solutions/bmc-compuware-file-aid.html) (documentación de BMC)

**Tutoriales**
+ [Tutorial: uso de un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) (documentación de AWS Lambda)
+ [¿Cómo creo un flujo de trabajo sin servidor con AWS Step Functions y AWS Lambda?](https://aws.amazon.com/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/) (documentación de AWS)
+ [Uso de OpenSearch paneles con Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html) (documentación de AWS)

## Información adicional
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-additional"></a>

**Gráfico de Step Functions**

En el siguiente ejemplo se muestra un gráfico de Step Functions. El gráfico muestra el estado de ejecución de las funciones de Lambda utilizadas en este patrón.

![\[El gráfico de Step Functions muestra el estado de ejecución de las funciones de Lambda utilizadas en este patrón.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/11093e5d-2f9e-4bbf-8abc-f3b2980dd550.png)


**CloudWatch registros de entrega**

El siguiente ejemplo muestra los registros de entrega correctos para la ejecución de la ejecución `s3toelasticsearch`.


| 
| 
| 2022-08-10T15:53:33.033-05:00 | Número de documentos en trámite: 100 |  | 
| --- |--- |--- |
|  | 2022-08-10T15:53:33.171-05:00 | [INFO] 2022-08-10T 20:53:33 .171 Z a1b2c3d4-5678-90ab-cdef- post:443/\$1bulk [estado: 200 solicitud: 0.100 s] EXAMPLE11111 https://search-essearch-3h4uqclifeqaj2vg4mphe7ffle.us-east-2.es.amazonaws.com | 
|  | 2022-08-10T15:53:33.172-05:00 | Escritura masiva correcta: 100 documentos | 

# Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age"></a>

*Richard Milner-Watts, Amazon Web Services*

## Resumen
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-summary"></a>

Este patrón proporciona un ejemplo de entorno de contenedores para ejecutar cargas de trabajo de mainframe que se han modernizado con la herramienta [Blu Age](https://www.bluage.com/). Blu Age convierte las cargas de trabajo de mainframe heredadas en código Java moderno. Este patrón proporciona un envoltorio alrededor de la aplicación de Java para que pueda ejecutarla mediante servicios de orquestación de contenedores como [Amazon Elastic Container Service (Amazon ECS)](https://aws.amazon.com/ecs/) o [Amazon Elastic Kubernetes Service (Amazon EKS)](https://aws.amazon.com/eks/).

Para obtener más información sobre la modernización de sus cargas de trabajo mediante el uso de Blu Age y los servicios de AWS, consulte estas publicaciones en las recomendaciones de AWS:
+ [Ejecución de cargas de trabajo de mainframe modernizadas de Blu Age en una infraestructura de AWS sin servidor](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)
+ [Implementar un entorno para aplicaciones de Blu Age en contenedores mediante Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html)

Si necesita ayuda para utilizar Blu Age para modernizar las cargas de trabajo de sus mainframes, póngase en contacto con el equipo de Blu Age seleccionando la opción **Contactar con nuestros expertos** en el [sitio web de Blu Age](https://www.bluage.com/). Si necesita ayuda para migrar sus cargas de trabajo modernizadas a AWS, integrarlas con los servicios de AWS y pasarlas a producción, póngase en contacto con su administrador de cuentas de AWS o rellene el [formulario de AWS Professional Services](https://pages.awscloud.com/AWS-Professional-Services.html).

## Requisitos previos y limitaciones
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-prereqs"></a>

**Requisitos previos **
+ Una aplicación Java modernizada creada por Blu Age. Para fines de prueba, este patrón proporciona un ejemplo de aplicación Java que puede utilizar como prueba de concepto.
+ Un entorno de [Docker](https://aws.amazon.com/docker/) que puede utilizar para crear el contenedor.

**Limitaciones**

Según la plataforma de orquestación de contenedores que utilice, es posible que los recursos que se puedan poner a disposición del contenedor (como la CPU, la RAM y el almacenamiento) estén limitados. Por ejemplo, si utiliza Amazon ECS con AWS Fargate, consulte la [documentación de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) para conocer los límites y las consideraciones.

## Arquitectura
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-architecture"></a>

**Pila de tecnología de origen**
+ Blu Age
+ Java

**Pila de tecnología de destino**
+ Docker

**Arquitectura de destino**

En el siguiente diagrama, se muestra la arquitectura de la aplicación Blu Age dentro de un contenedor de Docker.

![\[Aplicación Blu Age en un contenedor de Docker\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/c1747094-357b-4222-b4eb-b1336d810f83/images/0554332d-eff5-49ca-9789-da39b5a10045.png)


1. El punto de entrada al contenedor es el script contenedor. Este script bash es responsable de preparar el entorno de tiempo de ejecución para la aplicación Blu Age y de procesar los resultados.

1. Las variables de entorno del contenedor se utilizan a fin de configurar variables en el script del contenedor, como los nombres de bucket de Amazon Simple Storage Service (Amazon S3) y las credenciales de la base de datos. Las variables de entorno las proporcionan AWS Secrets Manager o Parameter Store, una funcionalidad de AWS Systems Manager. Si utiliza Amazon ECS como servicio de orquestación de contenedores, también puede codificar las variables de entorno en la definición de tareas de Amazon ECS.

1. El script contenedor se encarga de introducir todos los archivos de entrada del bucket de S3 en el contenedor antes de ejecutar la aplicación Blu Age. La interfaz de la línea de comandos de AWS (AWS CLI) se instala en el contenedor. Esto proporciona un mecanismo de acceso a los objetos que se almacenan en Amazon S3 a través del punto de conexión de la nube privada virtual (VPC) de la puerta de enlace.

1. Es posible que el archivo Java Archive (JAR) de la aplicación Blu Age necesite comunicarse con otras orígenes de datos, como Amazon Aurora.

1. Una vez finalizado, el script contenedor entrega los archivos de salida resultantes a un bucket de S3 para su posterior procesamiento (por ejemplo, por parte de Amazon CloudWatch Logging Services). El patrón también permite enviar archivos de registro comprimidos a Amazon S3, si utiliza una alternativa al CloudWatch registro estándar.

## Tools (Herramientas)
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.

**Herramientas**
+ [Docker](https://aws.amazon.com/docker/) es una plataforma de software para crear, probar e implementar aplicaciones. Docker agrupa el software en unidades estandarizadas denominadas [contenedores](https://aws.amazon.com/containers/), que contienen todo lo que el software necesita para ejecutarse, incluidas las bibliotecas, las herramientas del sistema, el código y el tiempo de ejecución. Puede usar Docker a fin de implementar y escalar aplicaciones en cualquier entorno.
+ [Bash](https://www.gnu.org/software/bash/manual/) es una interfaz de lenguaje de comandos (shell) para el sistema operativo GNU.
+ [Java](https://www.java.com/) es el lenguaje de programación y el entorno de desarrollo utilizados en este patrón.
+ [Blu Age](https://www.bluage.com/) es una herramienta de AWS Mainframe Modernization que convierte las cargas de trabajo de mainframe heredadas, incluidos el código de las aplicaciones, las dependencias y la infraestructura, en cargas de trabajo modernas para la nube.

**Repositorio de código**

El código de este patrón está disponible en el [repositorio de contenedores de muestras de GitHub Blu Age](https://github.com/aws-samples/aws-blu-age-sample-container).

## Prácticas recomendadas
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-best-practices"></a>
+ Externalice las variables para alterar el comportamiento de su aplicación mediante variables de entorno. Estas variables permiten que la solución de orquestación de contenedores modifique el entorno de tiempo de ejecución sin tener que volver a construir el contenedor. Este patrón incluye ejemplos de variables de entorno que pueden ser útiles para las aplicaciones de Blu Age.
+ Valide cualquier dependencia de la aplicación antes de ejecutar la aplicación Blu Age. Por ejemplo, compruebe que la base de datos esté disponible y que las credenciales sean válidas. Escriba las pruebas en el script contenedor para comprobar las dependencias y, si no se cumplen, no las consiga antes de tiempo.
+ Utilice el registro detallado dentro del script contenedor. Interactuar directamente con un contenedor en ejecución puede resultar difícil, dependiendo de la plataforma de orquestación y del tiempo que lleve el trabajo. Asegúrese de que los resultados útiles estén escritos para ayudar a `STDOUT` a diagnosticar cualquier problema. Por ejemplo, el resultado puede incluir el contenido del directorio de trabajo de la aplicación antes y después de ejecutarla.

## Epics
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-epics"></a>

### Obtenga un archivo JAR de la aplicación Blu Age
<a name="obtain-a-blu-age-application-jar-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Opción 1: trabajar con Blu Age a fin de obtener el archivo JAR de su aplicación. | El contenedor de este patrón requiere una aplicación Blu Age. Como alternativa, puede usar la aplicación Java de ejemplo que viene con este patrón para un prototipo.Trabaje con el equipo de Blu Age para obtener un archivo JAR para su aplicación que pueda incluir en el contenedor. Si el archivo JAR no está disponible, consulte la siguiente tarea para usar la aplicación de ejemplo en su lugar. | Arquitecto de la nube | 
| Opción 2: Cree o utilice el archivo JAR de la aplicación de muestra suministrado. | Este patrón proporciona un archivo JAR de muestra prediseñado. Este archivo genera las variables de entorno de la aplicación a `STDOUT` antes de dormir durante 30 segundos y salir.Este archivo recibe un nombre `bluAgeSample.jar` y se encuentra en la [carpeta docker](https://github.com/aws-samples/aws-blu-age-sample-container/tree/main/docker) del GitHub repositorio.[Si desea modificar el código y crear su propia versión del archivo JAR, utilice el código fuente que se encuentra en. /java\$1 sample/src/sample \$1java\$1app.java](https://github.com/aws-samples/aws-blu-age-sample-container/tree/main/java_sample/src) en el repositorio. GitHub Puede usar el script de compilación en [./java\$1sample/build.sh](https://github.com/aws-samples/aws-blu-age-sample-container/tree/main/java_sample) para compilar el código fuente de Java y crear un nuevo archivo JAR. | Desarrollador de aplicaciones | 

### Construya el contenedor de Blue Age
<a name="build-the-blu-age-container"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clona el repositorio. GitHub  | Clone el repositorio de código de muestra mediante el comando:<pre>git clone https://github.com/aws-samples/aws-blu-age-sample-container</pre> | AWS DevOps | 
| Utilice Docker para crear el contenedor. | Utilice Docker para crear el contenedor antes de enviarlo a un registro de Docker, como Amazon ECR:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html) | AWS DevOps | 
| Pruebe el contenedor Blu Age. | (Opcional) Si es necesario, pruebe el contenedor en las instalaciones mediante el comando:<pre>docker run -it <tag> /bin/bash</pre> | AWS DevOps | 
| Autenticar en su repositorio de Docker. | Si planea usar Amazon ECR, siga las instrucciones de la [documentación de Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html) para instalar y configurar la AWS CLI y autenticar la CLI de Docker en su registro predeterminado.Le recomendamos que utilice el [get-login-password comando](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ecr/get-login-password.html) para la autenticación.  La [consola de Amazon ECR](https://console.aws.amazon.com/ecr/) proporciona una versión rellenada previamente de este comando si utiliza el botón **Ver comandos de extracción**. Para obtener más información, consulte la [documentación de Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-console.html).<pre>aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account>.dkr.ecr.<region>.amazonaws.com</pre>Si no piensa utilizar Amazon ECR, siga las instrucciones que se proporcionan para su sistema de registro de contenedores. | AWS DevOps | 
| Cree un repositorio de contenedores. | Cree un repositorio en Amazon ECR. Para obtener instrucciones, consulte el patrón [Implementar un entorno para aplicaciones de Blu Age en contenedores mediante Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html).Si utiliza otro sistema de registro de contenedores, siga las instrucciones que se proporcionan para ese sistema. | AWS DevOps | 
| Etiquete su contenedor y colóquelo en el repositorio de destino. | Si utiliza Amazon ECR:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)Para obtener más información, consulte [Insertar una imagen de Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) en la *Guía del usuario de Amazon ECR*. | AWS DevOps | 

## Recursos relacionados
<a name="containerize-mainframe-workloads-that-have-been-modernized-by-blu-age-resources"></a>

**Recursos de AWS**
+ [Repositorio de contenedores de muestras de AWS Blu Age](https://github.com/aws-samples/aws-blu-age-sample-container)
+ [Ejecución de cargas de trabajo de mainframe modernizadas de Blu Age en una infraestructura de AWS sin servidor](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)
+ [Implementar un entorno para aplicaciones de Blu Age en contenedores mediante Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html)
+ [Uso de Amazon ECR con la AWS CLI](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html) (*Guía del usuario de Amazon ECR*)
+ [Autenticación de registro privado](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) (*Guía del usuario de Amazon ECR*)
+ [Documentación de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)
+ [Documentación de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)

**Recursos adicionales**
+ [Sitio web de Blu Age](https://www.bluage.com/)
+ [Sitio web de Docker](https://docker.com/)

# Convierta y desempaquete datos EBCDIC a ASCII en AWS mediante Python
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python"></a>

*Luis Gustavo Dantas, Amazon Web Services*

## Resumen
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-summary"></a>

Dado que los mainframe suelen alojar datos empresariales críticos, la modernización de estos datos es una de las tareas más importantes a la hora de migrar datos a la nube de Amazon Web Services (AWS) o a otro entorno de American Standard Code for Information Interchange (ASCII). En los mainframe, los datos suelen codificarse en un formato ampliado de código de intercambio decimal codificado en binario (EBCDIC). La exportación de bases de datos, los métodos de acceso al almacenamiento virtual (VSAM) o los archivos planos suelen producir archivos EBCDIC binarios empaquetados, que son más complejos de migrar. La solución de migración de bases de datos más usada es la captura de datos de cambios (CDC), que, en la mayoría de los casos, convierte automáticamente la codificación de los datos. Sin embargo, es posible que los mecanismos de CDC no estén disponibles para estas bases de datos, VSAM o archivos planos. En el caso de estos archivos, es necesario adoptar un enfoque alternativo para modernizar los datos.

Este patrón describe cómo modernizar los datos EBCDIC convirtiéndolos a formato ASCII. Tras la conversión, puede cargar los datos en bases de datos distribuidas o hacer que las aplicaciones en la nube procesen los datos directamente. El patrón utiliza el script de conversión y los archivos de muestra del [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub repositorio.

## Requisitos previos y limitaciones
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Un archivo de entrada EBCDIC y su correspondiente cuaderno en lenguaje común orientado a negocios (COBOL). En el repositorio se incluyen un archivo EBCDIC de muestra y un cuaderno de notas COBOL. [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub Para obtener más información sobre los cuadernos de COBOL, consulte la Guía de programación de [Enterprise COBOL for z/OS 6.4](https://publibfp.dhe.ibm.com/epubs/pdf/igy6pg40.pdf) en el sitio web de IBM.

**Limitaciones**
+ No es compatible con diseños de archivo definidos en COBOL. Deben estar disponibles por separado.

**Versiones de producto**
+ Python, versión 3.8 o posterior

## Arquitectura
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-architecture"></a>

**Pila de tecnología de origen**
+ Datos EBCDIC en un mainframe
+ Cuaderno COBOL

**Pila de tecnología de destino**
+ Instancia de Amazon Elastic Compute Cloud (Amazon EC2) en una nube privada virtual (VPC)
+ Amazon Elastic Block Store (Amazon EBS)
+ Python y sus paquetes necesarios, JavaScript Object Notation (JSON), sys y datetime
+ Archivo plano ASCII listo para ser leído por una aplicación moderna o cargado en una tabla de base de datos relacional

**Arquitectura de destino**

![\[Datos EBCDIC convertidos a ASCII en una EC2 instancia mediante scripts de Python y un cuaderno COBOL\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f5907bfe-7dff-4cd0-8523-57015ad48c4b/images/4f97b1dd-3f20-4966-a291-22180680ea99.png)


El diagrama de arquitectura muestra el proceso de conversión de un archivo EBCDIC en un archivo ASCII en una instancia: EC2 

1. Con el script **parse\$1copybook\$1to\$1json.py**, el cuaderno COBOL se convierte en un archivo JSON.

1. Con el archivo JSON y el script **extract\$1ebcdic\$1to\$1ascii.py**, los datos EBCDIC se convierten en un archivo ASCII.

**Automatizar y escalar**

Una vez que disponga de los recursos necesarios para las primeras conversiones manuales de archivos, puede automatizar la conversión de archivos. Este patrón no incluye instrucciones para la automatización. La conversión se puede automatizar de varias formas. A continuación, se muestra un posible enfoque:

1. Encapsular la interfaz de la línea de comandos de AWS (AWS CLI) y los comandos de script de Python en un script de intérprete de comandos.

1. Cree una función de AWS Lambda que envíe de forma asíncrona el trabajo del script de shell a una instancia. EC2 Para obtener más información, consulte [Programar trabajos de SSH con AWS Lambda](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/).

1. Crear un desencadenante de Amazon Simple Storage Service (Amazon S3) que invoque la función de Lambda cada vez que se cargue un archivo heredado. Para obtener más información, consulte [Utilizar un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html).

## Tools (Herramientas)
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-tools"></a>

**Servicios de AWS**
+ [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 Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) proporciona volúmenes de almacenamiento a nivel de bloques para utilizarlos con instancias de Amazon Elastic Compute Cloud (Amazon). EC2
+ 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 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.

**Otras herramientas**
+ [GitHub](https://github.com/)es un servicio de alojamiento de código que proporciona herramientas de colaboración y control de versiones.
+ [Python](https://www.python.org/) es un lenguaje de programación de alto nivel.

**Repositorio de código**

El código de este patrón está disponible en el [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities) GitHub repositorio.

## Epics
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-epics"></a>

### Prepara la EC2 instancia
<a name="prepare-the-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Lanza una EC2 instancia. | La EC2 instancia debe tener acceso saliente a Internet. Esto permite que la instancia acceda al código fuente de Python disponible en GitHub. Para crear una instancia:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS general | 
| Instala Git | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS general, Linux | 
| Instalación de Python. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS general, Linux | 
| Clona el GitHub repositorio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html) | AWS general, GitHub | 

### Cree el archivo ASCII a partir de los datos del EBCDIC
<a name="create-the-ascii-file-from-the-ebcdic-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Convierta el cuaderno COBOL en el archivo de diseño JSON. | En la carpeta `mainframe-data-utilities`, ejecute el script **parse\$1copybook\$1to\$1json.py**. Este módulo de automatización lee el diseño del archivo de un cuaderno COBOL y crea un archivo JSON. Este archivo JSON contiene la información necesaria para interpretar y extraer los datos del archivo fuente. Se crearán los metadatos de JSON a partir del cuaderno COBOL. El siguiente comando convierte el cuaderno COBOL en un archivo JSON.<pre>python3 parse_copybook_to_json.py \<br />-copybook LegacyReference/COBPACK2.cpy \<br />-output sample-data/cobpack2-list.json \<br />-dict sample-data/cobpack2-dict.json \<br />-ebcdic sample-data/COBPACK.OUTFILE.txt \<br />-ascii sample-data/COBPACK.ASCII.txt \<br />-print 10000</pre>El script imprime los argumentos recibidos.<pre>-----------------------------------------------------------------------<br />Copybook file...............| LegacyReference/COBPACK2.cpy<br />Parsed copybook (JSON List).| sample-data/cobpack2-list.json<br />JSON Dict (documentation)...| sample-data/cobpack2-dict.json<br />ASCII file..................| sample-data/COBPACK.ASCII.txt<br />EBCDIC file.................| sample-data/COBPACK.OUTFILE.txt<br />Print each..................| 10000<br />-----------------------------------------------------------------------</pre>Para obtener más información sobre los argumentos, consulte el [archivo README](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) del GitHub repositorio. | AWS general, Linux | 
| Inspeccione el archivo de diseño JSON. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)<pre> "input": "extract-ebcdic-to-ascii/COBPACK.OUTFILE.txt",<br /> "output": "extract-ebcdic-to-ascii/COBPACK.ASCII.txt",<br /> "max": 0,<br /> "skip": 0,<br /> "print": 10000,<br /> "lrecl": 150,<br /> "rem-low-values": true,<br /> "separator": "|",<br /> "transf": [<br /> {<br /> "type": "ch",<br /> "bytes": 19,<br /> "name": "OUTFILE-TEXT"<br /> } </pre>Los atributos más importantes del archivo de diseño JSON son:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)Para obtener más información sobre el archivo de diseño JSON, consulta el [archivo README](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) del GitHub repositorio. | AWS general, JSON | 
| Cree el archivo ASCII.  | Ejecute el script **extract\$1ebcdic\$1to\$1ascii.py**, que se incluye en el repositorio clonado GitHub . Este script lee el archivo EBCDIC y escribe un archivo ASCII convertido y legible.<pre>python3 extract_ebcdic_to_ascii.py -local-json sample-data/cobpack2-list.json</pre>A medida que el script procesa los datos del EBCDIC, imprime un mensaje por cada lote de 10 000 registros. Consulte el siguiente ejemplo.<pre>------------------------------------------------------------------<br />2023-05-15 21:21:46.322253 | Local Json file   | -local-json | sample-data/cobpack2-list.json<br />2023-05-15 21:21:47.034556 | Records processed | 10000<br />2023-05-15 21:21:47.736434 | Records processed | 20000<br />2023-05-15 21:21:48.441696 | Records processed | 30000<br />2023-05-15 21:21:49.173781 | Records processed | 40000<br />2023-05-15 21:21:49.874779 | Records processed | 50000<br />2023-05-15 21:21:50.705873 | Records processed | 60000<br />2023-05-15 21:21:51.609335 | Records processed | 70000<br />2023-05-15 21:21:52.292989 | Records processed | 80000<br />2023-05-15 21:21:52.938366 | Records processed | 89280<br />2023-05-15 21:21:52.938448 Seconds 6.616232</pre>Para obtener información sobre cómo cambiar la frecuencia de impresión, consulte el [archivo README](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) del GitHub repositorio. | AWS general | 
| Examinar el archivo ASCII. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)Si ha usado el archivo EBCDIC proporcionado como ejemplo, el primer registro del archivo ASCII será este.<pre>00000000: 2d30 3030 3030 3030 3030 3130 3030 3030  -000000000100000<br />00000010: 3030 307c 3030 3030 3030 3030 3031 3030  000|000000000100<br />00000020: 3030 3030 3030 7c2d 3030 3030 3030 3030  000000|-00000000<br />00000030: 3031 3030 3030 3030 3030 7c30 7c30 7c31  0100000000|0|0|1<br />00000040: 3030 3030 3030 3030 7c2d 3130 3030 3030  00000000|-100000<br />00000050: 3030 307c 3130 3030 3030 3030 307c 2d31  000|100000000|-1<br />00000060: 3030 3030 3030 3030 7c30 3030 3030 7c30  00000000|00000|0<br />00000070: 3030 3030 7c31 3030 3030 3030 3030 7c2d  0000|100000000|-<br />00000080: 3130 3030 3030 3030 307c 3030 3030 3030  100000000|000000<br />00000090: 3030 3030 3130 3030 3030 3030 307c 2d30  0000100000000|-0<br />000000a0: 3030 3030 3030 3030 3031 3030 3030 3030  0000000001000000<br />000000b0: 3030 7c41 7c41 7c0a                      00|A|A|.</pre> | AWS general, Linux | 
| Evalúe el archivo EBCDIC. | En la EC2 consola de Amazon, introduce el siguiente comando. Esto abre el primer registro del archivo EBCDIC.<pre>head sample-data/COBPACK.OUTFILE.txt -c 150 | xxd</pre>Si ha usado el archivo EBCDIC de ejemplo, el resultado es el siguiente.<pre> 00000000: 60f0 f0f0 f0f0 f0f0 f0f0 f1f0 f0f0 f0f0 `...............<br /> 00000010: f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f1f0 f0f0 ................<br /> 00000020: f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f0f0 f1f0 ................<br /> 00000030: f0f0 f0f0 f0f0 d000 0000 0005 f5e1 00fa ................<br /> 00000040: 0a1f 0000 0000 0005 f5e1 00ff ffff fffa ................<br /> 00000050: 0a1f 0000 000f 0000 0c10 0000 000f 1000 ................<br /> 00000060: 0000 0d00 0000 0000 1000 0000 0f00 0000 ................<br /> 00000070: 0000 1000 0000 0dc1 c100 0000 0000 0000 ................<br /> 00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................<br /> 00000090: 0000 0000 0000 ......</pre>Para evaluar la equivalencia entre los archivos de origen y de destino, es necesario un conocimiento exhaustivo de EBCDIC. Por ejemplo, el primer carácter del archivo EBCDIC de muestra es un guion (`-`). En la notación hexadecimal del archivo EBCDIC, este carácter se representa mediante `60`, y en la notación hexadecimal del archivo ASCII, este carácter se representa mediante `2D`. Para obtener una tabla EBCDIC-to-ASCII de conversión, consulte [EBCDIC a ASCII](https://www.ibm.com/docs/en/iis/11.3?topic=tables-ebcdic-ascii) en el sitio web de IBM. | AWS general, Linux, EBCDIC | 

## Recursos relacionados
<a name="convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python-resources"></a>

**Referencias**
+ [El conjunto de caracteres EBCDIC](https://www.ibm.com/docs/en/zos-basic-skills?topic=mainframe-ebcdic-character-set) (documentación de IBM)
+ [EBCDIC a ASCII](https://www.ibm.com/docs/en/iis/11.3?topic=tables-ebcdic-ascii) (documentación de IBM)
+ [COBOL](https://www.ibm.com/docs/en/i/7.1?topic=languages-cobol) (documentación de IBM)
+ [Conceptos básicos de JCL](https://www.ibm.com/docs/en/zos-basic-skills?topic=collection-basic-jcl-concepts) (documentación de IBM)
+ [Conéctate a tu instancia de Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) ( EC2 documentación de Amazon)

**Tutoriales**
+ [Programar trabajos de SSH con AWS Lambda](https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/) (publicación del blog de AWS)
+ [Uso de un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) (documentación de AWS Lambda)

# Convierta archivos de mainframe del formato EBCDIC al formato ASCII delimitado por caracteres en Amazon S3 mediante AWS Lambda
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda"></a>

*Luis Gustavo Dantas, Amazon Web Services*

## Resumen
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-summary"></a>

Este patrón le muestra cómo lanzar una AWS Lambda función que convierte automáticamente los archivos EBCDIC (Extended Binary Coded Decimal Interchange Code) de mainframe en archivos del Código Estándar Estadounidense para el Intercambio de Información (ASCII) delimitados por caracteres. La función de Lambda se ejecuta después de cargar los archivos ASCII en un bucket de Amazon Simple Storage Service (Amazon S3). Tras la conversión de archivos, puede leer los archivos ASCII en cargas de trabajo basadas en x86 o cargarlos en bases de datos modernas.

El enfoque de conversión de archivos que se muestra en este patrón puede ayudarle a superar los desafíos que supone trabajar con archivos EBCDIC en entornos modernos. Los archivos codificados en EBCDIC suelen contener datos representados en formato binario o decimal empaquetado, y los campos tienen una longitud fija. Estas características crean obstáculos porque las cargas de trabajo modernas basadas en x86 o los entornos distribuidos suelen trabajar con datos codificados en ASCII y no pueden procesar archivos EBCDIC.

## Requisitos previos y limitaciones
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Un bucket de Amazon S3
+ Un usuario AWS Identity and Access Management (IAM) con permisos administrativos
+ AWS CloudShell
+ [Python 3.8.0](https://www.python.org/downloads/release/python-380/) o posterior
+ Archivo plano codificado en EBCDIC y su estructura de datos correspondiente en un cuaderno de texto común en un lenguaje empresarial común (COBOL)

**nota**  
Este patrón utiliza un archivo EBCDIC de muestra ([CLIENT.EBCDIC.txt](https://github.com/aws-samples/mainframe-data-utilities/blob/main/sample-data/CLIENT.EBCDIC.txt)) y su cuaderno de texto COBOL correspondiente ([COBKS05.cpy](https://github.com/aws-samples/mainframe-data-utilities/blob/main/LegacyReference/COBKS05.cpy)). Ambos archivos están disponibles en el GitHub [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities)repositorio.

**Limitaciones**
+ Los cuadernos de COBOL suelen contener múltiples definiciones de diseño. El [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities)proyecto puede analizar este tipo de cuaderno, pero no puede deducir qué diseño considerar en la conversión de datos. Esto se debe a que los cuadernos no tienen esta lógica (que permanece en los programas COBOL). Por lo tanto, debe configurar manualmente las reglas para seleccionar los diseños después de analizar el cuaderno.
+ Este patrón está sujeto a las cuotas de [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html).

## Arquitectura
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-architecture"></a>

**Pila de tecnología de origen**
+ IBM z/OS, IBM i y otros sistemas EBCDIC
+ Archivos secuenciales con datos codificados en EBCDIC (como descargas de IBM Db2)
+ Cuaderno COBOL

**Pila de tecnología de destino**
+ Amazon S3
+ Notificaciones de eventos de Amazon S3
+ IAM
+ Función de Lambda
+ Python 3.8 o posterior
+ Utilidades de datos de unidad central
+ Metadatos JSON
+ Archivos ASCII delimitados por caracteres

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura para convertir archivos EBCDIC de mainframe en archivos ASCII.

![\[Arquitectura para convertir archivos EBCDIC de mainframe en archivos ASCII\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/97ab4129-2639-4733-86cb-962d91526df4/images/3ca7ca44-373a-434f-8c40-09e7c2abf5ec.png)


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

1. El usuario ejecuta el script del analizador del cuaderno para convertir el cuaderno COBOL en un archivo JSON.

1. El usuario carga los metadatos JSON en un bucket de Amazon S3. Esto hace que los metadatos sean legibles por la función de Lambda de conversión de datos.

1. El usuario o un proceso automatizado carga el archivo EBCDIC en el bucket de Amazon S3.

1. El evento de notificación de Amazon S3 activa la función de Lambda de conversión de datos.

1. AWS verifica los permisos de lectura/escritura del bucket de Amazon S3 para la función Lambda.

1. Lambda lee el archivo del bucket de Amazon S3 y lo convierte localmente de EBCDIC a ASCII.

1. Lambda registra el estado del proceso en Amazon. CloudWatch

1. Lambda vuelve a escribir el archivo ASCII en Amazon S3.

**nota**  
El script del analizador del cuaderno se ejecuta una sola vez para realizar la conversión de metadatos al formato JSON, que posteriormente se almacena en un bucket de Amazon S3. Tras la conversión inicial, todos los archivos EBCDIC que hagan referencia al mismo archivo JSON del bucket de Amazon S3 utilizarán la configuración de metadatos existente.

## Tools (Herramientas)
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-tools"></a>

**Servicios de AWS**
+ [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 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 CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)es un shell basado en un navegador que puede utilizar para gestionar Servicios de AWS mediante AWS Command Line Interface (AWS CLI) y una gama de herramientas de desarrollo preinstaladas.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [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. Lambda ejecuta el código solo cuando es necesario y escala la capacidad de manera automática, por lo que solo pagará por el tiempo informático que utilice.

**Otras herramientas**
+ [GitHub](https://github.com/)es un servicio de alojamiento de código que proporciona herramientas de colaboración y control de versiones.
+ [Python](https://www.python.org/) es un lenguaje de programación de alto nivel.

**Código**

El código de este patrón está disponible en el GitHub [mainframe-data-utilities](https://github.com/aws-samples/mainframe-data-utilities)repositorio.

## Prácticas recomendadas
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-best-practices"></a>

Tenga en cuenta las siguientes prácticas recomendadas:
+ Establezca los permisos requeridos en el nivel de nombre de recurso de Amazon (ARN).
+ Otorgue siempre permisos con privilegios mínimos para las políticas de IAM. Para obtener más información, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-epics"></a>

### Cree variables de entorno y una carpeta de trabajo
<a name="create-environment-variables-and-a-working-folder"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear variables de entorno. | Copie las siguientes variables de entorno en un editor de texto y, a continuación, sustituya los valores `<placeholder>` del siguiente ejemplo por los valores de sus recursos:<pre>bucket=<your_bucket_name><br />account=<your_account_number><br />region=<your_region_code></pre>Creará referencias a su bucket de Amazon S3 y Región de AWS más adelante. Cuenta de AWSPara definir las variables de entorno, abra la [CloudShell consola](https://console.aws.amazon.com/cloudshell/) y, a continuación, copie y pegue las variables de entorno actualizadas en la línea de comandos.Debe repetir este paso cada vez que se reinicie la CloudShell sesión. | AWS general | 
| Cree una carpeta de trabajo. | Para simplificar el proceso de limpieza de recursos más adelante, cree una carpeta de trabajo CloudShell ejecutando el siguiente comando:<pre>mkdir workdir; cd workdir</pre>Debe cambiar el directorio al directorio de trabajo (`workdir`) cada vez que pierda la conexión con la CloudShell sesión. | AWS general | 

### Definir una política y un rol de IAM
<a name="define-an-iam-role-and-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una política de confianza para la función de Lambda. | El convertidor EBCDIC se ejecuta en una función de Lambda. La función debe tener un rol de IAM. Antes de crear el rol de IAM, debe definir un documento de política de confianza que permita a los recursos asumir esa política.Desde la carpeta de CloudShell trabajo, cree un documento de política ejecutando el siguiente comando:<pre>E2ATrustPol=$(cat <<EOF<br />{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "Service": "lambda.amazonaws.com"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}<br />EOF<br />)<br />printf "$E2ATrustPol" > E2ATrustPol.json</pre> | AWS general | 
| Crear el rol de IAM para la conversión de Lambda. | Para crear un rol de IAM, ejecute el siguiente AWS CLI comando desde la carpeta de CloudShell trabajo:<pre>aws iam create-role --role-name E2AConvLambdaRole --assume-role-policy-document file://E2ATrustPol.json</pre> | AWS general | 
| Cree el documento de política de IAM para la función de Lambda. | La función Lambda debe tener acceso de lectura y escritura al bucket de Amazon S3 y permisos de escritura para Amazon Logs. CloudWatch Para crear una política de IAM, ejecute el siguiente comando desde la carpeta de trabajo: CloudShell <pre>E2APolicy=$(cat <<EOF<br />{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "Logs",<br />            "Effect": "Allow",<br />            "Action": [<br />                "logs:PutLogEvents",<br />                "logs:CreateLogStream",<br />                "logs:CreateLogGroup"<br />            ],<br />            "Resource": [<br />                "arn:aws:logs:*:*:log-group:*",<br />                "arn:aws:logs:*:*:log-group:*:log-stream:*"<br />            ]<br />        },<br />        {<br />            "Sid": "S3",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:GetObject",<br />                "s3:PutObject",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::%s/*",<br />                "arn:aws:s3:::%s"<br />            ]<br />        }<br />    ]<br />}<br />EOF<br />)<br />printf "$E2APolicy" "$bucket" "$bucket" > E2AConvLambdaPolicy.json</pre> | AWS general | 
| Adjuntar los documentos sobre la política de IAM al rol de IAM. | Para adjuntar la política de IAM a la función de IAM, introduzca el siguiente comando desde su CloudShell carpeta de trabajo:<pre>aws iam put-role-policy --role-name E2AConvLambdaRole --policy-name E2AConvLambdaPolicy --policy-document file://E2AConvLambdaPolicy.json</pre> | AWS general | 

### Crear la función de Lambda para la conversión de EBCDIC
<a name="create-the-lam-function-for-ebcdic-conversion"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargar el código fuente de conversión a EBCDIC. | Desde la carpeta de CloudShell trabajo, ejecute el siguiente comando para descargar el código mainframe-data-utilities fuente desde la que se encuentra: GitHub<pre>git clone https://github.com/aws-samples/mainframe-data-utilities.git mdu</pre> | AWS general | 
| Crear el paquete ZIP. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para crear el paquete ZIP que crea la función Lambda para la conversión a EBCDIC:<pre>cd mdu; zip ../mdu.zip *.py; cd ..</pre> | AWS general | 
| Crear la función de Lambda. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para crear la función Lambda para la conversión a EBCDIC:<pre>aws lambda create-function \<br />--function-name E2A \<br />--runtime python3.9 \<br />--zip-file fileb://mdu.zip \<br />--handler extract_ebcdic_to_ascii.lambda_handler \<br />--role arn:aws:iam::$account:role/E2AConvLambdaRole \<br />--timeout 10 \<br />--environment "Variables={layout=$bucket/layout/}"</pre> El diseño de las variables de entorno indica a la función de Lambda dónde residen los metadatos de JSON. | AWS general | 
| Crear la política basada en recursos para la función de Lambda. | En la carpeta de CloudShell trabajo, introduzca el siguiente comando para permitir que la notificación de eventos de Amazon S3 active la función Lambda para la conversión a EBCDIC:<pre>aws lambda add-permission \<br />--function-name E2A \<br />--action lambda:InvokeFunction \<br />--principal s3.amazonaws.com \<br />--source-arn arn:aws:s3:::$bucket \<br />--source-account $account \<br />--statement-id 1</pre> | AWS general | 

### Notificaciones de eventos de Amazon S3
<a name="create-the-s3-event-notification"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el documento de configuración para la notificación de eventos de Amazon S3. | La notificación de eventos de Amazon S3 inicia la función de Lambda de conversión EBCDIC cuando los archivos se colocan en la carpeta de entrada.Desde la carpeta de CloudShell trabajo, ejecute el siguiente comando para crear el documento JSON para la notificación de eventos de Amazon S3:<pre>S3E2AEvent=$(cat <<EOF<br />{<br />"LambdaFunctionConfigurations": [<br />    {<br />      "Id": "E2A",<br />      "LambdaFunctionArn": "arn:aws:lambda:%s:%s:function:E2A",<br />      "Events": [ "s3:ObjectCreated:Put" ],<br />      "Filter": {<br />        "Key": {<br />          "FilterRules": [<br />            {<br />              "Name": "prefix",<br />              "Value": "input/"<br />            }<br />          ]<br />        }<br />      }<br />    }<br />  ]<br />}<br />EOF<br />)<br />printf "$S3E2AEvent" "$region" "$account" > S3E2AEvent.json</pre> | AWS general | 
| Crear notificaciones de eventos de Amazon S3. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para crear la notificación de eventos de Amazon S3:<pre>aws s3api put-bucket-notification-configuration --bucket $bucket --notification-configuration file://S3E2AEvent.json</pre> | AWS general | 

### Crear y cargar los metadatos JSON
<a name="create-and-upload-the-json-metadata"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Analizar el cuaderno de COBOL. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para convertir un cuaderno de COBOL de muestra en un archivo JSON (que define cómo leer y dividir correctamente el archivo de datos):<pre>python3       mdu/parse_copybook_to_json.py \<br />-copybook     mdu/LegacyReference/COBKS05.cpy \<br />-output       CLIENT.json \<br />-output-s3key CLIENT.ASCII.txt \<br />-output-s3bkt $bucket \<br />-output-type  s3 \<br />-print        25</pre> | AWS general | 
| Añada la regla de transformación. | El archivo de datos de ejemplo y su cuaderno de notas COBOL correspondiente son archivos de varios diseños. Esto significa que la conversión debe dividir los datos en función de determinadas reglas. En este caso, los bytes de las posiciones 3 y 4 de cada fila definen el diseño.Desde la carpeta de CloudShell trabajo, edite el `CLIENT.json` archivo y cambie el contenido de la siguiente `"transf-rule": [],` manera:<pre>"transf-rule": [<br />{<br />"offset": 4,<br />"size": 2,<br />"hex": "0002",<br />"transf": "transf1"<br />},<br />{<br />"offset": 4,<br />"size": 2,<br />"hex": "0000",<br />"transf": "transf2"<br />}<br />],</pre> | Información general sobre AWS, lade IBM y Cobol | 
| Cargue los metadatos JSON en el bucket de Amazon S3. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente AWS CLI comando para cargar los metadatos de JSON en su bucket de Amazon S3:<pre>aws s3 cp CLIENT.json s3://$bucket/layout/CLIENT.json</pre> | AWS general | 

### Convertir el archivo EBCDIC
<a name="convert-the-ebcdic-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Envíe el archivo EBCDIC al bucket de Amazon S3. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para enviar el archivo EBCDIC al bucket de Amazon S3:<pre>aws s3 cp mdu/sample-data/CLIENT.EBCDIC.txt s3://$bucket/input/</pre> Se recomienda configurar carpetas diferentes para los archivos de entrada (EBCDIC) y de salida (ASCII) para evitar volver a llamar a la función de conversión de Lambda cuando el archivo ASCII se cargue en el bucket de Amazon S3. | AWS general | 
| Comprobar la salida. | Desde la carpeta de CloudShell trabajo, introduce el siguiente comando para comprobar si el archivo ASCII se genera en tu bucket de Amazon S3:<pre>aws s3 ls s3://$bucket/</pre> La conversión de datos puede tardar varios segundos en realizarse. Le recomendamos que compruebe el archivo ASCII varias veces.Cuando el archivo ASCII esté disponible, introduzca el siguiente comando para mostrar el contenido del archivo convertido en el bucket de Amazon S3. Si lo necesita, podrá descargarlo o utilizarlo directamente del bucket de Amazon S3:<pre>aws s3 cp s3://$bucket/CLIENT.ASCII.txt - | head</pre>Comprobar el contenido del archivo ASCII:<pre>0|0|220|<br />1|1|HERBERT MOHAMED|1958-08-31|BACHELOR|0010000.00|<br />1|2|36|THE ROE AVENUE|<br />2|1|JAYLEN GEORGE|1969-05-29|ELEMENTARY|0020000.00|<br />2|2|365|HEATHFIELD ESPLANADE|<br />3|1|MIKAEEL WEBER|1982-02-17|MASTER|0030000.00|<br />3|2|4555|MORRISON STRAND|<br />4|1|APRIL BARRERA|1967-01-12|DOCTOR|0030000.00|<br />4|2|1311|MARMION PARK|<br />5|1|ALEEZA PLANT|1985-03-01|BACHELOR|0008000.00|</pre> | AWS general | 

### Limpiar el entorno
<a name="clean-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| (Opcional) Prepare las variables y la carpeta. | Si pierdes la conexión con CloudShell, vuelve a conectarte e introduce el siguiente comando para cambiar el directorio a la carpeta de trabajo:<pre>cd workdir</pre>Asegúrese de que las variables de entorno estén definidas:<pre>bucket=<your_bucket_name><br />account=<your_account_number><br />region=<your_region_code></pre> | AWS general | 
| Eliminar la configuración de notificación para el bucket. | Desde la carpeta de CloudShell trabajo, ejecute el siguiente comando para eliminar la configuración de notificaciones de eventos de Amazon S3:<pre>aws s3api put-bucket-notification-configuration \<br />--bucket=$bucket \<br />--notification-configuration="{}"</pre> | AWS general | 
| Elimine la función de Lambda. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para eliminar la función Lambda del convertidor EBCDIC:<pre>aws lambda delete-function \<br />--function-name E2A</pre> | AWS general | 
| Eliminar el rol y la política de IAM. | En la carpeta de CloudShell trabajo, introduzca el siguiente comando para eliminar la función y la política del conversor EBCDIC:<pre>aws iam delete-role-policy \<br />--role-name E2AConvLambdaRole \<br />--policy-name E2AConvLambdaPolicy<br /><br />aws iam delete-role \<br />--role-name E2AConvLambdaRole</pre> | AWS general | 
| Elimine los archivos generados en el bucket de Amazon S3. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para eliminar los archivos generados en el bucket de Amazon S3:<pre>aws s3 rm s3://$bucket/layout --recursive<br />aws s3 rm s3://$bucket/input --recursive<br />aws s3 rm s3://$bucket/CLIENT.ASCII.txt</pre> | AWS general | 
| Elimine la carpeta de trabajo. | Desde la carpeta de CloudShell trabajo, introduzca el siguiente comando para eliminarlos `workdir` y su contenido:<pre>cd ..; rm -Rf workdir</pre> | AWS general | 

## Recursos relacionados
<a name="convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda-resources"></a>
+ [Mainframe Data Utilities README](https://github.com/aws-samples/mainframe-data-utilities/blob/main/README.md) () GitHub
+ [El conjunto de caracteres EBCDIC](https://www.ibm.com/docs/en/zos-basic-skills?topic=mainframe-ebcdic-character-set) (documentación de IBM)
+ [EBCDIC a ASCII](https://www.ibm.com/docs/en/iis/11.7.0?topic=tables-ebcdic-ascii) (documentación de IBM)
+ [COBOL](https://www.ibm.com/docs/en/i/7.6.0?topic=languages-cobol) (documentación de IBM)
+ [Uso de un activador de Amazon S3 para invocar una función AWS Lambda Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) (documentación)

# Convertir archivos de datos de mainframe con diseños de registros complejos mediante Micro Focus
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus"></a>

*Peter West, Amazon Web Services*

## Resumen
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-summary"></a>

Nota: AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funciones similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Este patrón le muestra cómo convertir archivos de datos de mainframe con datos no textuales y diseños de registros complejos, pasando de la codificación de caracteres EBCDIC (código de intercambio decimal con código binario extendido) a la codificación de caracteres ASCII (Código estándar estadounidense para el intercambio de información) mediante un archivo de estructura de Micro Focus. Para completar la conversión de archivos, siga estos pasos:

1. Prepare un único archivo fuente que describa todos los elementos de datos y los diseños de registros de su entorno de mainframe.

1. Cree un archivo de estructura que contenga el diseño de registro de los datos mediante el editor de archivos de datos de Micro Focus como parte de las herramientas clásicas de archivos de datos o herramientas de archivos de datos de Micro Focus. El archivo de estructura identifica los datos no textuales para que pueda convertir correctamente los archivos del mainframe de EBCDIC a ASCII.

1. Pruebe el archivo de estructura mediante las herramientas clásicas de archivos de datos o las herramientas de archivos de datos.

## Requisitos previos y limitaciones
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Micro Focus Enterprise Developer para Windows, disponible a través de [AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/)

**Versiones de producto**
+ Micro Focus Enterprise Server 7.0 y versiones posteriores

## Tools (Herramientas)
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-tools"></a>
+ [Micro Focus Enterprise Developer](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-8D6B7358-AC35-4DAF-A445-607D8D97EBB2.html) proporciona el entorno de ejecución para las aplicaciones creadas con cualquier variante del entorno de desarrollo integrado (IDE) de Enterprise Developer.
+ [Las herramientas de archivos de datos clásicas](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-06115324-0FBC-4CB7-BE9D-04BCFEA5821A.html) de Micro Focus le ayudan a convertir, navegar, editar y crear archivos de datos. Las herramientas clásicas para archivos de datos incluyen el [convertidor de archivos de datos](https://www.microfocus.com/documentation/visual-cobol/vc60/VS2017/BKFHFHDFCV.html), el [editor de diseño de registros](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/BKFHFHRLMF.html) y el [editor de archivos de datos](https://www.microfocus.com/documentation/visual-cobol/vc60/VS2017/BKFHFHDFED.html).
+ [Las herramientas de archivos de datos](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-B1BCB613-6947-451C-8F71-72FB8254076A.html) de Micro Focus le ayudan a crear, editar y mover archivos de datos. Las herramientas de archivos de datos incluyen el [editor de archivos de datos](https://www.microfocus.com/documentation/visual-cobol/vc60/VS2017/BKFHFHDFED.html), las [utilidades de conversión de archivos](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/BKFHFHCONV.html) y la [utilidad de línea de comandos de estructura de archivos de datos](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GUID-E84348EB-A93A-481A-A47C-61B0E1C076E6.html).

## Epics
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-epics"></a>

### Preparación del archivo de origen
<a name="prepare-the-source-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Identificar los componentes de origen. | Identificar todos los diseños de registro posibles para el archivo, incluidas las redefiniciones que contengan datos no textuales.Si tiene diseños que contienen redefiniciones, debe reducir estos diseños a diseños únicos que describan cada posible permutación de la estructura de datos. Por lo general, los diseños de registros de un archivo de datos se pueden describir mediante los siguientes arquetipos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)Para obtener más información sobre cómo crear diseños de registros aplanados para archivos que contienen diseños de registros complejos, consulte [Realojar aplicaciones EBCDIC en entornos ASCII para migraciones de mainframe](https://docs.aws.amazon.com/prescriptive-guidance/latest/mainframe-rehost-ebcdic-ascii/introduction.html). | Desarrollador de aplicaciones | 
| Identificar las condiciones de diseño de los registros. | En el caso de los archivos con varios diseños de registro o los archivos que contienen diseños complejos con una cláusula REDEFINES, identifique los datos y las condiciones de un registro que puede usar para definir qué diseño usar durante la conversión. Le recomendamos que analice esta tarea con un experto en la materia (SME) que conozca los programas que procesan estos archivos.Por ejemplo, un archivo puede contener dos tipos de registros que contienen datos no textuales. Puede inspeccionar el código fuente y encontrar código similar al siguiente:<pre>MOVE "M" TO PART-TYPE<br /> MOVE "MAIN ASSEMBLY" TO PART-NAME<br />MOVE "S" TO PART-TYPE<br /> MOVE "SUB ASSEMBLY 1" TO PART-NAME</pre>El código ayuda a identificar lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)Puede documentar los valores que utiliza este campo para asociar los diseños de registros con los registros de datos correctos del archivo. | Desarrollador de aplicaciones | 
| Cree el archivo de origen. | Si el archivo se describe en varios archivos fuente o si el diseño de registros contiene datos no textuales que están subordinados a una cláusula REDEFINES, cree un nuevo archivo fuente que contenga los diseños de registros. No es necesario que el nuevo programa describa el archivo mediante las instrucciones SELECT y FD. El programa simplemente puede contener las descripciones de los registros en 10 niveles dentro de Working-Storage.Puede crear un archivo de origen para cada archivo de datos o crear un archivo de origen maestro que describa todos los archivos de datos. | Desarrollador de aplicaciones | 
| Compilar el código fuente. | Compile el archivo fuente para crear el diccionario de datos. Se recomienda compilar el archivo fuente mediante el juego de caracteres EBCDIC. Si utiliza la directiva IBMCOMP o las directivas ODOSLIDE, también debe utilizar estas directivas en el archivo fuente.IBMCOMP afecta al almacenamiento de bytes de los campos COMP y ODOSLIDE afecta al relleno cuando se producen estructuras variables. Si estas directivas están configuradas incorrectamente, la herramienta de conversión no leerá el registro de datos correctamente. Esto da como resultado datos incorrectos en el archivo convertido. | Desarrollador de aplicaciones | 

### (Opción A) Cree el archivo de estructura con las herramientas clásicas de archivos de datos
<a name="option-a-create-the-structure-file-using-classic-data-file-tools"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie la herramienta y cargue el diccionario. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 
| Cree el diseño de registro predeterminado. | Utilice el diseño de registro predeterminado para todos los registros que no coincidan con ningún diseño condicional.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)El diseño predeterminado aparece en el panel **Diseños** y se puede identificar mediante el icono rojo de la carpeta. | Desarrollador de aplicaciones | 
| Cree un diseño de registro condicional. | Utilice el diseño de registro condicional cuando haya más de un diseño de registro en un archivo.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 

### (Opción B) Cree el archivo de estructura mediante las herramientas de archivos de datos
<a name="option-b-create-the-structure-file-using-data-file-tools"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie la herramienta y cargue el diccionario. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 
| Cree el diseño de registro predeterminado. | Utilice el diseño de registro predeterminado para todos los registros que no coincidan con ningún diseño condicional.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html)El diseño predeterminado aparece en el panel **Diseños** y se puede identificar mediante el icono azul en forma de “D”. | Desarrollador de aplicaciones | 
| Cree un diseño de registro condicional. | Utilice el diseño de registro condicional cuando haya más de un diseño de registro en un archivo.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 

### (Opción A) Pruebe el archivo de estructura con las herramientas clásicas de archivos de datos
<a name="option-a-test-the-structure-file-using-classic-data-file-tools"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Probar un archivo de datos EBCDIC. | Confirme que puede usar el archivo de estructura para ver correctamente un archivo de datos de prueba del EBCDIC.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 

### (Opción B) Pruebe el archivo de estructura con las herramientas de archivos de datos
<a name="option-b-test-the-structure-file-using-data-file-tools"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Probar un archivo de datos EBCDIC. | Confirme que puede usar el archivo de estructura para ver correctamente un archivo de datos de prueba del EBCDIC.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 

### Pruebe la conversión de archivos de datos
<a name="test-data-file-conversion"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Probar la conversión de un archivo EBCDIC. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus.html) | Desarrollador de aplicaciones | 

## Recursos relacionados
<a name="convert-mainframe-data-files-with-complex-record-layouts-using-micro-focus-resources"></a>
+ [Micro Focus](https://www.microfocus.com/en-us/products/enterprise-suite/overview) (documentación de Micro Focus)
+ [Unidades centrales y código heredado](https://aws.amazon.com/blogs/?awsf.blog-master-category=category%23mainframe-and-legacy) (Blog de AWS)
+ [AWS Prescriptive](https://docs.aws.amazon.com/prescriptive-guidance/) Guidance (documentación de AWS)
+ [Documentación de AWS](https://docs.aws.amazon.com/index.html) (documentación de AWS)
+ [Referencia general de AWS](https://docs.aws.amazon.com/general/latest/gr/Welcome.html) (documentación de AWS)
+ [Glosario de AWS](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html) (documentación de AWS)

# Implementar un entorno para aplicaciones de Blu Age en contenedores mediante Terraform
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform"></a>

*Richard Milner-Watts, Amazon Web Services*

## Resumen
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-summary"></a>

La migración de las cargas de trabajo de mainframe heredadas a arquitecturas de nube modernas puede eliminar los costos de mantenimiento de un mainframe, costos que solo aumentan a medida que el entorno envejece. Sin embargo, la migración de los trabajos desde un mainframe puede plantear desafíos únicos. Es posible que los recursos internos no estén familiarizados con la lógica del trabajo, y el alto rendimiento de los mainframes en estas tareas especializadas puede resultar difícil de replicar en comparación con el rendimiento generalizado de los mainframes en estas tareas especializadas. CPUs Reescribir estas tareas puede ser una tarea ardua y requerir un esfuerzo considerable.

Blu Age convierte las cargas de trabajo heredadas de los mainframes en código Java moderno, que luego puede ejecutar como un contenedor.

Este patrón proporciona una muestra de arquitectura sin servidor para ejecutar una aplicación en contenedores que se ha modernizado con la herramienta Blu Age. Los archivos HashiCorp Terraform incluidos crearán una arquitectura segura para la organización de los contenedores de Blu Age, que admitirá tanto las tareas por lotes como los servicios en tiempo real.

Para obtener más información sobre la modernización de sus cargas de trabajo mediante el uso de Blu Age y los servicios de AWS, consulte estas publicaciones en las recomendaciones de AWS:
+ [Ejecución de cargas de trabajo de mainframe que se han modernizado con Blu Age en una infraestructura sin servidor de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)
+ [Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)

Si necesita ayuda para utilizar Blu Age para modernizar las cargas de trabajo de sus mainframes, póngase en contacto con el equipo de Blu Age seleccionando la opción **Contactar con nuestros expertos** en el [sitio web de Blu Age](https://www.bluage.com/). Si necesita ayuda para migrar sus cargas de trabajo modernizadas a AWS, integrarlas con los servicios de AWS y pasarlas a producción, póngase en contacto con su administrador de cuentas de AWS o rellene el [formulario de AWS Professional Services](https://pages.awscloud.com/AWS-Professional-Services.html).

## Requisitos previos y limitaciones
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-prereqs"></a>

**Requisitos previos **
+ La aplicación en contenedores de muestra de Blu Age que proporciona el patrón [Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html). La aplicación de muestra proporciona la lógica necesaria para gestionar el procesamiento de las entradas y salidas de la aplicación modernizada y se puede integrar con esta arquitectura.
+ Se requiere Terraform para implementar estos recursos.

**Limitaciones**
+ Amazon Elastic Container Service (Amazon ECS) limita los recursos de tareas que se pueden poner a disposición del contenedor. Estos recursos incluyen la CPU, la RAM y el almacenamiento. Por ejemplo, cuando se utiliza Amazon ECS con AWS Fargate, se [aplican los límites de recursos de la tarea](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html).

**Versiones de producto**

Esta solución se probó con las siguientes versiones:
+ Terraform 1.3.6
+ Proveedor 4.46.0 de AWS para Terraform

## Arquitectura
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-architecture"></a>

**Pila de tecnología de origen**
+ Blu Age
+ Terraform

**Pila de tecnología de destino**
+ Amazon Aurora compatible con PostgreSQL
+ AWS Backup
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon ECS
+ Servicio AWS Identity and Access Management (IAM)
+ AWS Key Management Server (AWS KMS)
+ AWS Secrets Manager
+ Amazon Simple Notification Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Step Functions
+ AWS Systems Manager

**Arquitectura de destino**

En el siguiente diagrama se muestra la arquitectura de la solución.

![\[La descripción sigue el diagrama.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/12825490-2622-4f0b-80c9-2c5076d50fa3/images/c0708b0a-aa36-458a-8d6c-d42e3dec7727.png)


1. La solución implementa los siguientes roles de IAM:
   + Rol de tarea por lotes
   + Rol de ejecución de tareas por lotes
   + Rol de tarea de servicio
   + Rol de ejecución de tareas del servicio
   + Rol de Step Functions
   + Rol de AWS Backup
   + Rol de monitorización mejorada RDS.

   Los roles se ajustan a los principios de acceso de privilegios mínimos.

1. Amazon ECR se utiliza para almacenar la imagen del contenedor que está orquestada por este patrón.

1. El Almacén de parámetros de AWS Systems Manager proporciona datos de configuración sobre cada entorno a la definición de tareas de Amazon ECS durante el tiempo de ejecución.

1. AWS Secrets Manager proporciona datos de configuración sobre cada entorno a la definición de tareas de Amazon ECS durante el tiempo de ejecución. AWS KMS cifró los datos.

1. Los módulos Terraform crean definiciones de tareas de Amazon ECS para todas las tareas en tiempo real y por lotes.

1. Amazon ECS ejecuta una tarea por lotes utilizando AWS Fargate como motor de computación. Se trata de una tarea de corta duración, iniciada según lo exigido por AWS Step Functions.

1. Amazon Aurora, compatible con PostgreSQL, proporciona una base de datos para admitir la aplicación modernizada. Esto reemplaza a las bases de datos de mainframe, como IBM Db2 o IBM IMS DB.

1. Amazon ECS ejecuta un servicio de larga duración para ofrecer una carga de trabajo modernizada en tiempo real. Estas aplicaciones sin estado se ejecutan de forma permanente con contenedores repartidos entre las zonas de disponibilidad.

1. Se utiliza un equilibrador de carga de red para conceder acceso a la carga de trabajo en tiempo real. El equilibrador de carga de red es compatible con protocolos anteriores, como IBM CICS. Como alternativa, puede utilizar el equilibrador de carga de aplicación con cargas de trabajo basadas en HTTP.

1. Amazon S3 proporciona almacenamiento de objetos para las entradas y salidas de los trabajos. El contenedor debe gestionar las operaciones de extracción y envío a Amazon S3 a fin de preparar el directorio de trabajo para la aplicación Blu Age.

1. El servicio AWS Step Functions se utiliza para orquestar la ejecución de las tareas de Amazon ECS para procesar las cargas de trabajo por lotes.

1. Los temas de SNS para cada carga de trabajo por lotes se utilizan para integrar la aplicación modernizada con otros sistemas, como el correo electrónico, o para iniciar acciones adicionales, como entregar los objetos de salida de Amazon S3 a FTP.

**nota**  
De forma predeterminada, la solución no tiene acceso a Internet. Este patrón supone que la nube privada virtual (VPC) se conectará a otras redes mediante un servicio como [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/). Por lo tanto, se implementan varios puntos de conexión de VPC de interfaz para permitir el acceso a los servicios de AWS que utiliza la solución. Para activar el acceso directo a Internet, puede utilizar el conmutador del módulo Terraform para reemplazar los puntos de conexión de VPC por una puerta de enlace de Internet y los recursos asociados.

**Automatizar y escalar**

El uso de recursos sin servidor en todo este patrón ayuda a garantizar que, al escalar horizontalmente, haya pocos límites en la escala de este diseño. Esto reduce los *problemas de vecino ruidoso*, como la competencia por los recursos de computación que podría surgir en el mainframe original. Las tareas por lotes se pueden programar para que se ejecuten simultáneamente según sea necesario.

Los contenedores individuales están limitados por los tamaños máximos admitidos por Fargate. Para obtener más información, consulte la sección [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html#fargate-tasks-size](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html#fargate-tasks-size) en la documentación de Amazon ECS.

Para [escalar las cargas de trabajo en tiempo real de forma horizontal](https://nathanpeck.com/amazon-ecs-scaling-best-practices/), puede añadir contenedores.

## Tools (Herramientas)
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-tools"></a>

**Servicios de AWS**
+ La [edición de Amazon Aurora compatible con PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) es un motor de base de datos relacional compatible con ACID, completamente administrado que le permite configurar, utilizar y escalar implementaciones de PostgreSQL.
+ [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) es un servicio totalmente gestionado que le ayuda a centralizar y automatizar la protección de datos Servicios de AWS tanto en la nube como en las instalaciones.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [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 Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) le permite reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
+ [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 Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) es un servicio de organización sin servidor que le ayuda a combinar AWS Lambda funciones y otras Servicios de AWS para crear aplicaciones críticas para la empresa.
+ El [Almacén de parámetros de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) proporciona un almacenamiento seguro y jerárquico para administrar los datos de configuración y los secretos.

**Otros servicios**
+ [HashiCorp Terraform](https://www.terraform.io/docs) es una herramienta de infraestructura como código (IaC) que facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube. Este patrón usa Terraform para crear la arquitectura de muestra.

**Repositorio de código**

El código fuente de este patrón está disponible en el repositorio GitHub [Blu Age Sample ECS Infrastructure (](https://github.com/aws-samples/aws-blu-age-sample-ecs-infrastructure-using-terraform#aws-blu-age-sample-ecs-infrastructure-terraform)Terraform).

## Prácticas recomendadas
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-best-practices"></a>
+ Para los entornos de prueba, use características como la opción `forceDate` para configurar la aplicación modernizada para generar resultados de prueba consistentes ejecutándola siempre durante un período de tiempo conocido.
+ Ajuste cada tarea de forma individual para consumir la cantidad óptima de recursos. Puede utilizar [Amazon CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) para obtener orientación sobre posibles cuellos de botella.

## Epics
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-epics"></a>

### Preparación del entorno para la implementación
<a name="prepare-the-environment-for-deployment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el código fuente de la solución. | [Clone el código de la solución del proyecto. GitHub ](https://github.com/aws-samples/aws-blu-age-sample-ecs-infrastructure-using-terraform) | DevOps ingeniero | 
| Impulse el entorno mediante la implementación de recursos para almacenar el estado de Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html) | DevOps ingeniero | 

### Implementar la infraestructura de soluciones
<a name="deploy-the-solution-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revise y actualice la configuración de Terraform. | En el directorio raíz, abra el archivo `main.tf,`, revise el contenido y considere la posibilidad de realizar las siguientes actualizaciones:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.html) | DevOps ingeniero | 
| Implemente el archivo Terraform. | Desde su terminal, ejecute el comando `terraform apply` para implementar todos los recursos. Revise los cambios generados por Terraform e introduzca **sí** para iniciar la compilación.Tenga en cuenta que la implementación de esta infraestructura puede tardar más de 15 minutos. | DevOps ingeniero | 

### (Opcional) Implementar una aplicación de Blu Age en contenedores válida
<a name="optional-deploy-a-valid-blu-age-containerized-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Envíe la imagen del contenedor Blu Age a Amazon ECR. | Introduzca el contenedor en el repositorio de Amazon ECR que creó en la épica anterior. Para obtener instrucciones, consulte la [documentación de Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).Anote el URI de la imagen del contenedor. | DevOps ingeniero | 
| Actualice Terraform para que haga referencia a la imagen del contenedor de Blu Age. | Actualice el archivo `main.tf`** **para que haga referencia a la imagen del contenedor que usted subió. | DevOps ingeniero | 
| Volver a implementar el archivo Terraform. | Desde su terminal, ejecute `terraform apply` para implementar todos los recursos. Revise las actualizaciones sugeridas por Terraform y, a continuación, introduzca **sí** para continuar con la implementación. | DevOps ingeniero | 

## Recursos relacionados
<a name="deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform-resources"></a>
+ [Blu Age](https://www.bluage.com/)
+ [Ejecución de cargas de trabajo de mainframe que se han modernizado con Blu Age en una infraestructura sin servidor de AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/run-bluage-modernized-mainframes/)
+ [Almacenamiento en contenedores de las cargas de trabajo de mainframe que Blu Age ha modernizado](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.html)

# Genere información sobre z/OS datos de Db2 mediante AWS Mainframe Modernization Amazon Q en Quick Sight
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight"></a>

*Shubham Roy, Roshna Razack y Santosh Kumar Singh, Amazon Web Services*

## Resumen
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-summary"></a>

Nota: AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funciones similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Si su organización aloja datos críticos para la empresa en un entorno de mainframe IBM Db2, obtener información a partir de esos datos es fundamental para impulsar el crecimiento y la innovación. Al desbloquear los datos del mainframe, puede crear inteligencia empresarial más rápida, segura y escalable para acelerar la toma de decisiones, el crecimiento y la innovación basados en los datos en la nube de Amazon Web Services (AWS).

Este patrón presenta una solución para generar información empresarial y crear narrativas compartibles a partir de datos de mainframe en IBM Db2 for tables. z/OS Los cambios en los datos del mainframe se transmiten al tema de [Amazon Managed Streaming para Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) mediante la [replicación de datos de AWS Mainframe Modernization con Precisely](https://docs.aws.amazon.com/m2/latest/userguide/precisely.html). Mediante la [ingesta de transmisión de Amazon Redshift,](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html) los datos de los temas de Amazon MSK se almacenan en tablas de almacenes de datos de [Amazon Redshift sin servidor](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-whatis.html) para su análisis en Amazon QuickSight.

Una vez que los datos estén disponibles en QuickSight, puede utilizar las peticiones en lenguaje natural con [Amazon Q en QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) para crear resúmenes de los datos, formular preguntas y generar historias basadas en datos. No tiene que escribir consultas SQL ni aprender una herramienta de inteligencia empresarial (BI).

**Contexto empresarial**

Este patrón presenta una solución para casos de uso de análisis de datos e información de datos de mainframe. Con el patrón, puede crear un panel visual para los datos de su empresa. Para demostrar la solución, este patrón utiliza una empresa de atención médica que ofrece planes médicos, dentales y oftalmológicos a sus miembros en los EE. UU. En este ejemplo, la información demográfica y del plan de los miembros se almacena en las tablas de datos de IBM Db2 for. z/OS El panel visual muestra lo siguiente:
+ Distribución de miembros por región
+ Distribución de miembros por género
+ Distribución de miembros por edad
+ Distribución de miembros por tipo de plan
+ Miembros que no han completado la inmunización preventiva

Para ver ejemplos de la distribución de los miembros por región y de los miembros que no han completado la inmunización preventiva, consulte la sección de información adicional.

Después de crear el panel, se genera una historia basada en datos que explica la información del análisis anterior. Las historias basadas en datos proporcionan recomendaciones para aumentar el número de miembros que han completado la inmunización preventiva.

## Requisitos previos y limitaciones
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS. Esta solución se creó y probó en Amazon Linux 2 en Amazon Elastic Compute Cloud (Amazon EC2).
+ Una nube privada virtual (VPC) con una subred a la que puede acceder el sistema de su mainframe.
+ Una base de datos de mainframe con datos empresariales. Para ver los datos de ejemplo que se utilizan para crear y probar esta solución, consulte la sección de *archivos adjuntos*.
+ La captura de datos de cambios (CDC) está habilitada en las z/OS tablas de Db2. Para habilitar la CDC en Db2 z/OS, consulte la [documentación de IBM](https://www.ibm.com/docs/en/daafz/7.5?topic=cdc-enabling-data-capture-changes).
+ Precisamente Connect CDC z/OS se instala en el z/OS sistema que aloja las bases de datos de origen. La z/OS imagen CDC for de Precision Connect se proporciona como un archivo zip dentro de la imagen [Amazon Machine Image AWS Mainframe Modernization (AMI) de Data Replication for IBM z/OS](https://aws.amazon.com/marketplace/pp/prodview-doe2lroefogia?applicationId=AWSMPContessa&ref_=beagle&sr=0-1). Para instalar Precily Connect CDC for z/OS en el mainframe, consulte la [documentación de instalación de Precision](https://help.precisely.com/r/AWS-Mainframe-Modernization/Latest/en-US/AWS-Mainframe-Modernization-Data-Replication-for-IBM-z/OS/Install-Precisely-Connect-CDC-z/OS).

**Limitaciones**
+ Los datos de Db2 de su mainframe deben estar en un tipo de datos compatible con Precisely Connect CDC. Para obtener una lista de los tipos de datos compatibles, consulte la [documentación de Precisely Connect CDC](https://help.precisely.com/r/AWS-Mainframe-Modernization/Latest/en-US/AWS-Mainframe-Modernization-Data-Replication-for-IBM-z/OS/Data-replication-overview/Supported-source-data-types).
+ Los datos de Amazon MSK deben estar en un tipo de datos compatible con Amazon Redshift. Para obtener una lista de los tipos de datos compatibles, consulte la [documentación de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html).
+ Amazon Redshift tiene diferentes comportamientos y límites de tamaño para los distintos tipos de datos. Para obtener más información, consulte la [documentación de Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html#materialized-view-streaming-ingestion-limitations).
+ Los datos casi en tiempo real de QuickSight dependen del intervalo de actualización establecido para la base de datos de Amazon Redshift.
+ Algunas Servicios de AWS no están disponibles en todas Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Amazon Q en QuickSight no está disponible actualmente en todas las regiones que admiten QuickSight. Para ver los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ AWS Mainframe Modernization Replicación de datos con la versión 4.1.44 de Precision
+ Python, versión 3.6 o posterior
+ Apache Kafka versión 3.5.1****

## Arquitectura
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-architecture"></a>

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura para generar información empresarial a partir de datos del mainframe mediante la [replicación de datos de AWS Mainframe Modernization con Precisely](https://aws.amazon.com/mainframe-modernization/capabilities/data-replication/) y Amazon Q en QuickSight.

![\[Proceso de siete pasos desde el z/OS mainframe hasta Amazon. QuickSight\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/cddb6d20-14ae-4276-90d8-14df435db824.png)


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

1. El agente de lectura de registro de Precisely lee los datos de los registros de Db2 y los escribe en un almacenamiento transitorio de un sistema de archivos OMVS del mainframe.

1. El agente publicador lee los registros de Db2 sin procesar del almacenamiento transitorio.

1. El daemon del controlador en las instalaciones autentica, autoriza, supervisa y administra las operaciones.

1. El Apply Agent se implementa en Amazon EC2 mediante la AMI preconfigurada. Se conecta con el agente publicador a través del daemon del controlador mediante TCP/IP. El agente de aplicación envía los datos a Amazon MSK mediante varios trabajadores para lograr un alto rendimiento.

1. Los trabajadores escriben los datos en el tema de Amazon MSK en formato JSON. Como objetivo intermedio para los mensajes replicados, Amazon MSK ofrece capacidades de conmutación por error automatizadas y de alta disponibilidad.

1. La ingesta de transmisión de Amazon Redshift proporciona una ingesta de datos de alta velocidad y baja latencia de Amazon MSK a una base de datos de Amazon Redshift sin servidor. Un procedimiento almacenado en Amazon Redshift realiza la reconciliación de los datos de cambios (insert/update/deletes) del mainframe en tablas de Amazon Redshift. Estas tablas de Amazon Redshift sirven como origen de análisis de datos para QuickSight.

1. Los usuarios acceden a los datos en QuickSight para obtener análisis e información. Puede usar Amazon Q en QuickSight para interactuar con los datos mediante peticiones en lenguaje natural.

## Tools (Herramientas)
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona una capacidad informática escalable en el Nube de AWS. Puede iniciar tantos servidores virtuales como necesite y escalarlos o reducirlos horizontalmente con rapidez.
+ [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.
+ [Amazon Managed Streaming para Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) es un servicio completamente administrado que le permite crear y ejecutar aplicaciones que utilizan Apache Kafka para procesar datos de streaming.
+ [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. Este patrón utiliza las capacidades de BI generativa de Amazon Q en QuickSight.
+ [Amazon Redshift sin servidor](https://aws.amazon.com/redshift/redshift-serverless/) es una opción sin servidor de Amazon Redshift que hace que sea más eficiente ejecutar y escalar los análisis en cuestión de segundos sin necesidad de configurar y administrar la infraestructura del almacén de datos.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) lo ayuda a reemplazar las credenciales codificadas en su código, incluidas contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.

**Otras herramientas**
+ [Precisely Connect CDC](https://support.precisely.com/products/connect-cdc-formerly-sqdata/) recopila e integra datos de sistemas heredados en plataformas de datos y en la nube.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [Mainframe\$1 DataInsights \$1change\$1data\$1reconciliation](https://github.com/aws-samples/Mainframe_DataInsights_change_data_reconcilition). El código es un procedimiento almacenado en Amazon Redshift. Este procedimiento almacenado concilia los cambios en los datos del mainframe (inserciones, actualizaciones y eliminaciones) de Amazon MSK en las tablas de Amazon Redshift. Estas tablas de Amazon Redshift sirven como origen de análisis de datos para QuickSight.

## Prácticas recomendadas
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-best-practices"></a>
+ Siga las [prácticas recomendadas](https://docs.aws.amazon.com/msk/latest/developerguide/bestpractices.html) al configurar su clúster de Amazon MSK.
+ Siga las [prácticas recomendadas de análisis de datos](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html#materialized-view-streaming-recommendations) de Amazon Redshift para mejorar el rendimiento
+ Al crear los roles AWS Identity and Access Management (IAM) para la configuración de Precially, siga el principio de privilegios mínimos y conceda los permisos mínimos necesarios para realizar una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-epics"></a>

### Configure la replicación AWS Mainframe Modernization de datos con Precision on Amazon EC2
<a name="set-up-m2long-data-replication-with-precisely-on-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure un grupo de seguridad. | Para conectarse al daemon del controlador y al clúster de Amazon MSK, [cree un grupo de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html) para la EC2 instancia. Agregue las siguientes reglas de entrada y salida:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)Anote el nombre del grupo de seguridad. Deberá hacer referencia al nombre cuando lance la EC2 instancia y configure el clúster de Amazon MSK. | DevOps ingeniero, AWS DevOps | 
| Cree una política de IAM y un rol de IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | DevOps ingeniero, administrador de sistemas de AWS | 
| Aprovisione una EC2 instancia. | Para aprovisionar una EC2 instancia para ejecutar Precily CDC y conectarse a Amazon MSK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador DevOps e ingeniero de AWS | 

### Configuración de Amazon MSK
<a name="set-up-msk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el clúster de Amazon MSK. | Para crear un clúster de Amazon MSK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)Un clúster aprovisionado típico tarda hasta 15 minutos en crearse. Una vez creado el clúster, su estado cambia de **Creando** a **Activo**. | AWS DevOps, administrador de la nube | 
| Configure la SASL/SCRAM autenticación. | Para configurar la SASL/SCRAM autenticación de un clúster de Amazon MSK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Arquitecto de la nube | 
| Cree el tema de Amazon MSK. | Para crear el tema de Amazon MSK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador de la nube | 

### Configura el motor de aplicación precisa en Amazon EC2
<a name="configure-the-precisely-apply-engine-on-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los scripts de Precisely para replicar los cambios en los datos. | Para configurar los scripts de Precisely Connect CDC para replicar los datos modificados del mainframe al tema de Amazon MSK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)Para archivos .ddl de ejemplo, consulte la sección [Información adicional](#generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-additional). | Desarrollador de aplicaciones, arquitecto de la nube | 
| Genere la clave ACL de red. | Para generar la clave de lista de control de acceso de la red (ACL de la red), haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Arquitecto de nube, AWS DevOps | 

### Preparación del entorno de origen del mainframe
<a name="prepare-the-mainframe-source-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los valores predeterminados en la pantalla del ISPF. | Para configurar los ajustes predeterminados en el Interactive System Productivity Facility (ISPF), siga las instrucciones de la [documentación de Precisely](https://help.precisely.com/r/AWS-Mainframe-Modernization/Latest/en-US/AWS-Mainframe-Modernization-Data-Replication-for-IBM-z/OS/Install-Precisely-Connect-CDC-z/OS/Start-ISPF-Panel-Interface). | Administrador del sistema de mainframe | 
| Configure el daemon del controlador. | Para configurar el daemon del controlador, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador del sistema de mainframe | 
| Configure el publicador. | Para configurar el publicador, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador del sistema de mainframe | 
| Actualice el archivo de configuración del daemon. | Para actualizar los detalles del publicador en el archivo de configuración del daemon del controlador, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador del sistema de mainframe | 
| Cree el trabajo para iniciar el daemon del controlador. | Para crear el trabajo, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador del sistema de mainframe | 
| Genere el archivo JCL del publicador de capturas. | Para generar el archivo JCL del publicador de capturas, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador del sistema de mainframe | 
| Compruebe y actualice las CDC. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Administrador del sistema de mainframe | 
| Envíe los archivos JCL. | Envíe los siguientes archivos JCL que ha configurado en los pasos anteriores:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)Tras enviar los archivos JCL, puede iniciar el motor de aplicación en Precily en la EC2 instancia. | Administrador del sistema de mainframe | 

### Ejecución y validación de las CDC
<a name="run-and-validate-cdc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie el motor de aplicación y valide la CDC. | Para iniciar el motor de aplicación en la EC2 instancia y validar el CDC, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Arquitecto de la nube, desarrollador de aplicaciones | 
| Valide los registros del tema de Amazon MSK. | Para leer el mensaje del tema de Kafka, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Desarrollador de aplicaciones, arquitecto de la nube | 

### Almacene los datos de cambios del mainframe en un almacén de datos de Amazon Redshift sin servidor
<a name="store-mainframe-change-data-in-an-rsslong-data-warehouse"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Amazon Redshift sin servidor. | Para crear un almacén de datos de Amazon Redshift sin servidor, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html)En el panel de Amazon Redshift sin servidor, compruebe que el espacio de nombres y el grupo de trabajo se crearon y están disponibles. Para este patrón de ejemplo, el proceso puede tardar entre 2 y 5 minutos. | Ingeniero de datos | 
| Configure el rol de IAM y la política de confianza necesarios para la ingesta de transmisión. | Para configurar la ingesta de transmisión de Amazon Redshift sin servidor desde Amazon MSK, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Ingeniero de datos | 
| Conecte Amazon Redshift sin servidor a Amazon MSK. | Para conectarse al tema de Amazon MSK, cree un esquema externo en Amazon Redshift sin servidor. En el editor de consultas V2 de Amazon Redshift, ejecute el siguiente comando SQL y, a continuación, sustituya `'iam_role_arn'` por el rol que creó anteriormente y `'MSK_cluster_arn` por el ARN de su clúster.<pre>CREATE EXTERNAL SCHEMA member_schema<br />FROM MSK<br />IAM_ROLE 'iam_role_arn'<br />AUTHENTICATION iam<br />URI 'MSK_cluster_arn';</pre> | Ingeniero de migraciones | 
| Cree una vista materializada. | Para consumir los datos del tema de Amazon MSK en Amazon Redshift sin servidor, cree una vista materializada. En el editor de consultas V2 de Amazon Redshift, ejecute los siguientes comandos de SQL y sustituya `<MSK_Topic_name>` por el nombre del tema de Amazon MSK.<pre>CREATE MATERIALIZED VIEW member_view<br />AUTO REFRESH YES<br />AS SELECT<br />kafka_partition, <br />kafka_offset, <br />refresh_time, <br />json_parse(kafka_value) AS Data<br />FROM member_schema.<MSK_Topic_name><br />WHERE CAN_JSON_PARSE(kafka_value); <br /></pre> | Ingeniero de migraciones | 
| Cree tablas de destino en Amazon Redshift. | Las tablas de Amazon Redshift proporcionan la entrada para QuickSight. Este patrón utiliza las tablas `member_dtls` y `member_plans`, que coinciden con las tablas de Db2 de origen del mainframe.Para crear las dos tablas en Amazon Redshift, ejecute los siguientes comandos de SQL en el editor de consultas V2 de Amazon Redshift:<pre>-- Table 1: members_dtls<br />CREATE TABLE members_dtls (<br /> memberid INT ENCODE AZ64,<br /> member_name VARCHAR(100) ENCODE ZSTD,<br /> member_type VARCHAR(50) ENCODE ZSTD,<br /> age INT ENCODE AZ64,<br /> gender CHAR(1) ENCODE BYTEDICT,<br /> email VARCHAR(100) ENCODE ZSTD,<br /> region VARCHAR(50) ENCODE ZSTD<br />) DISTSTYLE AUTO;<br /><br />-- Table 2: member_plans<br />CREATE TABLE member_plans (<br /> memberid INT ENCODE AZ64,<br /> medical_plan CHAR(1) ENCODE BYTEDICT,<br /> dental_plan CHAR(1) ENCODE BYTEDICT,<br /> vision_plan CHAR(1) ENCODE BYTEDICT,<br /> preventive_immunization VARCHAR(50) ENCODE ZSTD<br />) DISTSTYLE AUTO;</pre> | Ingeniero de migraciones | 
| Cree un procedimiento almacenado en Amazon Redshift. | Este patrón utiliza un procedimiento almacenado para sincronizar los datos de cambios (`INSERT`, `UPDATE`, `DELETE`) del mainframe de origen con la tabla de almacén de datos de Amazon Redshift de destino para su análisis en QuickSight.Para crear el procedimiento almacenado en Amazon Redshift, utilice el editor de consultas v2 para ejecutar el código del procedimiento almacenado que se encuentra en el GitHub repositorio. | Ingeniero de migraciones | 
| Lea la vista materializada de la transmisión y cárguela en las tablas de destino. | El procedimiento almacenado lee los cambios de datos de la vista materializada de transmisión y carga los cambios de datos en las tablas de destino. Para ejecutar el procedimiento almacenado, use el siguiente comando:<pre>call SP_Members_Load();</pre>Puede utilizar [Amazon EventBridge](https://aws.amazon.com/eventbridge/) para programar los trabajos en su almacén de datos de Amazon Redshift para llamar a este procedimiento almacenado en función de sus requisitos de latencia de datos. EventBridge ejecuta los trabajos a intervalos fijos. Para comprobar si la llamada anterior al procedimiento se ha completado, puede que necesite utilizar un mecanismo como una máquina de estado de [AWS Step Functions](https://aws.amazon.com/step-functions/). Para obtener más información, consulte los siguientes recursos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)Otra opción es utilizar el editor de consultas V2 de Amazon Redshift para programar la actualización. Para obtener más información, consulte [Consultas programadas con el editor de consultas v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-schedule-query.html). | Ingeniero de migraciones | 

### Conexión de QuickSight a los datos en Amazon Redshift
<a name="connect-quick-sight-to-data-in-rs"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure QuickSight. | Para configurar QuickSight, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/setting-up.html). | Ingeniero de migraciones | 
| Configure una conexión segura entre QuickSight y Amazon Redshift. | Para configurar una conexión segura entre QuickSight y Amazon Redshift, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Ingeniero de migraciones | 
| Cree un conjunto de datos para QuickSight. | Para crear un conjunto de datos para QuickSight desde Amazon Redshift, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Ingeniero de migraciones | 
| Una el conjunto de datos. | Para crear análisis en QuickSight, combine las dos tablas; para ello, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/joining-data.html#create-a-join).En el panel **Configuración de unión**, elija **Izquierda** en **Tipo de unión**. En **Cláusulas de unión**, utilice `memberid from member_plans = memberid from members_details`. | Ingeniero de migraciones | 

### Obtenga información empresarial a partir de los datos del mainframe mediante Amazon Q en QuickSight
<a name="get-business-insights-from-the-mainframe-data-by-using-qdev-in-quick-sight"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Amazon Q en QuickSight. | Para configurar la capacidad de BI generativa de Amazon Q in QuickSight, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/generative-bi-get-started.html). | Ingeniero de migraciones | 
| Analice los datos del mainframe y cree un panel visual. | Para analizar y visualizar sus datos en QuickSight, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html)Cuando termine, puede publicar el panel de control para compartirlo con otras personas de su organización. Para ver ejemplos, consulte el *panel visual del mainframe* en la sección de [información adicional](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html#generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-additional). | Ingeniero de migraciones | 

### Cree una historia basada en datos con Amazon Q en QuickSight a partir de datos del mainframe.
<a name="create-a-data-story-with-qdev-in-quick-sight-from-mainframe-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una historia basada en datos. | Cree una historia basada en datos para explicar la información del análisis anterior y genere una recomendación para aumentar la inmunización preventiva de los miembros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Ingeniero de migraciones | 
| Vea la historia basada en datos generada. | Para ver la historia basada en datos generada, selecciónela en la página de **Historias basadas en datos**. | Ingeniero de migraciones | 
| Edite una historia basada en datos generada. | Para cambiar el formato, el diseño o los elementos visuales de una historia basada en datos, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-edit.html). | Ingeniero de migraciones | 
| Comparta una historia basada en datos. | Para compartir una historia basada en datos, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-share.html). | Ingeniero de migraciones | 

## Resolución de problemas
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Se ha producido el error `Validate Connection` al crear un conjunto de datos de QuickSight a Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | 
| Al intentar iniciar el motor de aplicación en la EC2 instancia, aparece el siguiente error:`-bash: sqdeng: command not found` | Para exportar la ruta de instalación de `sqdata`, ejecute el siguiente comando:<pre>export PATH=$PATH:/usr/sbin:/opt/precisely/di/sqdata/bin</pre> | 
| Al intentar iniciar el motor de aplicación, se produce uno de los siguientes errores de conexión:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.html) | Compruebe el spool del mainframe para asegurarse de que los trabajos del daemon del controlador se estén ejecutando. | 

## Recursos relacionados
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-resources"></a>
+ [Genere información mediante AWS Mainframe Modernization Amazon Q en Quick Sight](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html?did=pg_card&trk=pg_card) (patrón)
+ [Genere información de datos con AWS Mainframe Modernization Amazon Q en Quick Sight](https://youtu.be/F8b7l79p6TM?si=gASuQtFbMVuEm7IJ) (demostración)
+ [AWS Mainframe Modernization - Replicación de datos para IBM z/OS](https://aws.amazon.com/marketplace/pp/prodview-doe2lroefogia?sr=0-4&ref_=beagle&applicationId=AWSMPContessa)
+ [Ingesta de transmisión de Amazon Redshift a una vista materializada](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-streaming-ingestion.html)

## Información adicional
<a name="generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight-additional"></a>

**Ejemplo: archivos .ddl**

*members\$1details.ddl*

```
CREATE TABLE MEMBER_DTLS (
memberid INTEGER NOT NULL,
member_name VARCHAR(50),
member_type VARCHAR(20),
age INTEGER,
gender CHAR(1),
email VARCHAR(100),
region VARCHAR(20)
);
```

*member\$1plans.ddl*

```
CREATE TABLE MEMBER_PLANS (
memberid INTEGER NOT NULL,
medical_plan CHAR(1),
dental_plan CHAR(1),
vision_plan CHAR(1),
preventive_immunization VARCHAR(20)
);
```

**Ejemplo de archivo .sqd**

Sustituya** **`<kafka topic name>` por el nombre de su tema de Amazon MSK.

*script.sqd*

```
-- Name: DB2ZTOMSK: DB2z To MSK JOBNAME DB2ZTOMSK;REPORT EVERY 1;OPTIONS CDCOP('I','U','D');-- Source Descriptions
JOBNAME DB2ZTOMSK;
REPORT EVERY 1;
OPTIONS CDCOP('I','U','D');

-- Source Descriptions 
BEGIN GROUP DB2_SOURCE; 
DESCRIPTION DB2SQL /var/precisely/di/sqdata/apply/DB2ZTOMSK/ddl/mem_details.ddl AS MEMBER_DTLS;
DESCRIPTION DB2SQL /var/precisely/di/sqdata/apply/DB2ZTOMSK/ddl/mem_plans.ddl AS MEMBER_PLANS; 
END GROUP;
-- Source Datastore 
DATASTORE cdc://<zos_host_name>/DB2ZTOMSK/DB2ZTOMSK
OF UTSCDC 
AS CDCIN 
DESCRIBED BY GROUP DB2_SOURCE ;
-- Target Datastore(s)
DATASTORE 'kafka:///<kafka topic name>/key'
OF JSON
AS TARGET
DESCRIBED BY GROUP DB2_SOURCE;
PROCESS INTO TARGET
SELECT
{
REPLICATE(TARGET)
}
FROM CDCIN;
```

**Panel visual de mainframe**

Amazon Q creó el siguiente elemento visual de datos en QuickSight para la pregunta de análisis `show member distribution by region`*.*

![\[Las regiones noreste y sudoeste tienen 8 miembros, la región sudoeste tiene 5 miembros y la región medio oeste tiene 4 miembros.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/b40a784c-c1fc-444b-b6df-8bd1f7a6abaa.png)


Amazon Q creó el siguiente elemento visual de datos en QuickSight para la pregunta `show member distribution by Region who have not completed preventive immunization, in pie chart`.

![\[La región sudeste muestra 6, la región sudoeste muestra 5 y el medio oeste muestra 4.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/8a95da3c-df4a-458b-9cfe-44e34f80a235.png)


**Salida de una historia basada en datos**

Las siguientes capturas de pantalla muestran secciones de la historia basada en datos creada por Amazon Q en QuickSight para la petición `Build a data story about Region with most numbers of members. Also show the member distribution by age, member distribution by gender. Recommend how to motivate members to complete immunization. Include 4 points of supporting data for this pattern`.

En la introducción, la historia basada en datos recomienda elegir la región con más miembros para obtener el mayor impacto de las iniciativas de inmunización.

![\[Pantalla de introducción para un análisis basado en la geografía, la demografía y la edad de la base de miembros.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/40f13957-2db4-42b7-b7a4-a0dd3dad6899.png)


La historia basada en datos proporciona un análisis del número de miembros de las cuatro regiones. Las regiones noreste, sudoeste y sureste son las que tienen más miembros.

![\[Las regiones noreste y sudoeste tienen 8 miembros, el sudeste tiene 6 miembros y el medio oeste tiene 4 miembros.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/fc6ed0a0-b79c-4397-95ac-a2fc4c87482a.png)


La historia basada en datos presenta un análisis de los miembros por edad.

![\[Gráfico que muestra que la base de miembros se inclina hacia los adultos más jóvenes y de mediana edad.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/8c56f1ec-3a2e-47a6-bbc4-3631782aa333.png)


La historia basada en datos se centra en las iniciativas de inmunización en el medio oeste.

![\[Recomendación para una campaña de divulgación personal y desafíos regionales.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/84a647e8-c7d5-4637-94f0-03a611f899b3.png)


![\[Continuación del análisis de la historia basada en datos, con los resultados y las conclusiones anticipados.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/18e72bcb-1b9a-406a-8220-83aca7743ad2/images/fc9094fc-2a20-485d-b238-e5e4ec70f1d3.png)


## Conexiones
<a name="attachments-18e72bcb-1b9a-406a-8220-83aca7743ad2"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/18e72bcb-1b9a-406a-8220-83aca7743ad2/attachments/attachment.zip)

# Genere información de datos mediante AWS Mainframe Modernization Amazon Q en Quick Sight
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight"></a>

*Shubham Roy, Roshna Razack y Santosh Kumar Singh, Amazon Web Services*

## Resumen
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-summary"></a>

Nota: AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funciones similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Si su organización aloja datos críticos para la empresa en un entorno de mainframe, obtener información a partir de esos datos es fundamental para impulsar el crecimiento y la innovación. Al desbloquear los datos del mainframe, puede crear inteligencia empresarial más rápida, segura y escalable para acelerar la toma de decisiones, el crecimiento y la innovación basados en los datos en la nube de Amazon Web Services (AWS).

Este patrón presenta una solución para generar información empresarial y crear narrativas compartibles a partir de datos de mainframe mediante la [transferencia de archivos AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer.html) con BMC y [Amazon Q en QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html). Los conjuntos de datos de mainframe se transfieren a [Amazon Simple Storage Service (Amazon S3) mediante AWS Mainframe Modernization la transferencia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) de archivos con BMC. Una AWS Lambda función formatea y prepara el archivo de datos del mainframe para cargarlo en Quick Sight.

Una vez que los datos estén disponibles en QuickSight, puede utilizar las peticiones en lenguaje natural con [Amazon Q en QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/quicksight-gen-bi.html) para crear resúmenes de los datos, formular preguntas y generar historias basadas en datos. No tiene que escribir consultas SQL ni aprender una herramienta de inteligencia empresarial (BI).

**Contexto empresarial**

Este patrón presenta una solución para casos de uso de análisis de datos e información de datos de mainframe. Con el patrón, puede crear un panel visual para los datos de su empresa. Para demostrar la solución, este patrón utiliza una empresa de atención médica que ofrece planes médicos, dentales y oftalmológicos a sus miembros en los EE. UU. En este ejemplo, la información demográfica y de planes de los miembros se almacena en las tablas de datos de mainframe. El panel visual muestra lo siguiente:
+ Distribución de miembros por región
+ Distribución de miembros por género
+ Distribución de miembros por edad
+ Distribución de miembros por tipo de plan
+ Miembros que no han completado la inmunización preventiva

Después de crear el panel, se genera una historia basada en datos que explica la información del análisis anterior. Las historias basadas en datos proporcionan recomendaciones para aumentar el número de miembros que han completado la inmunización preventiva.

## Requisitos previos y limitaciones
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Conjuntos de datos de mainframe con datos empresariales
+ Acceso a la instalación de un agente de transferencia de archivos en el mainframe

**Limitaciones**
+ El archivo de datos del mainframe debe estar en uno de los formatos de archivo compatibles con QuickSight. Para obtener una lista de los formatos de archivo compatibles, consulte [Orígenes de datos compatibles](https://docs.aws.amazon.com/quicksuite/latest/userguide/supported-data-sources.html).
+ Este patrón utiliza una función de Lambda para convertir el archivo de mainframe a un formato compatible con QuickSight.

## Arquitectura
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-architecture"></a>

El siguiente diagrama muestra una arquitectura para generar información empresarial a partir de datos de mainframe mediante la transferencia de AWS Mainframe Modernization archivos con BMC y Amazon Q en Quick Sight.

![\[Descripción del diagrama de arquitectura después del diagrama.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/6fe0f1d9-961c-4089-a746-e5b8d5fd6c1e.png)


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

1. Un conjunto de datos de mainframe que contiene datos empresariales se transfiere a Amazon S3 mediante la transferencia de AWS Mainframe Modernization archivos con BMC.

1. La función de Lambda convierte el archivo que está en el bucket de S3 de destino de transferencia de archivos en formato de valores separados por comas (CSV).

1. La función de Lambda envía el archivo convertido al bucket de S3 del conjunto de datos de origen.

1. QuickSight ingiere los datos del archivo.

1. Los usuarios acceden a los datos en QuickSight. Puede usar Amazon Q en QuickSight para interactuar con los datos mediante peticiones en lenguaje natural.

## Tools (Herramientas)
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-tools"></a>

**Servicios de AWS**
+ [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 Mainframe Modernization la [transferencia de archivos con BMC](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer.html) convierte y transfiere conjuntos de datos de mainframe a Amazon S3 para casos de uso de modernización, migración y aumento de mainframes.
+ [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) es un servicio de BI a escala de la nube que lo ayuda a visualizar, analizar y generar informes de sus datos en un único panel. Este patrón utiliza las capacidades de BI generativa de [Amazon Q en QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/working-with-quicksight-q.html).
+ [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.

## Prácticas recomendadas
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-best-practices"></a>
+ [Al crear las funciones AWS Identity and Access Management (IAM) para la transferencia de AWS Mainframe Modernization archivos con BMC y la función Lambda, siga el principio del privilegio mínimo.](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)
+ Asegúrese de que el conjunto de datos de origen tenga [tipos de datos compatibles](https://docs.aws.amazon.com/quicksight/latest/user/supported-data-types-and-values.html) con QuickSight. Si el conjunto de datos de origen contiene tipos de datos no compatibles, conviértalos en tipos de datos compatibles. Para obtener información sobre los tipos de datos de mainframe no compatibles y cómo convertirlos en tipos de datos compatibles con Amazon Q en QuickSight, consulte la sección [Recursos relacionados](#generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-resources).

## Epics
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-epics"></a>

### Configure la transferencia de AWS Mainframe Modernization archivos con BMC
<a name="set-up-m2long-file-transfer-with-bmc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el agente de transferencia de archivos. | Para instalar el agente de transferencia de AWS Mainframe Modernization archivos, siga las instrucciones de la [AWS documentación](https://docs.aws.amazon.com/m2/latest/userguide/m2-agent-installation.html). | Administrador del sistema de mainframe | 
| Cree un bucket de S3 para la transferencia de archivos de mainframe. | [Cree un depósito de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) para almacenar el archivo de salida de la transferencia de AWS Mainframe Modernization archivos con BMC. En el diagrama de arquitectura, este es el bucket de destino de la transferencia de archivos. | Ingeniero de migraciones | 
| Cree un punto de conexión de transferencia de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | Especialista en AWS Mainframe Modernization | 

### Conversión de la extensión del nombre del archivo del mainframe para integrarla con QuickSight
<a name="convert-the-mainframe-file-name-extension-for-quick-sight-integration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un bucket de S3. | [Cree un bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) para que la función de Lambda copie el archivo de mainframe convertido del bucket de origen al bucket de destino final. | Ingeniero de migraciones | 
| Creación de una función de Lambda. | Para crear una función de Lambda que cambie la extensión del archivo y copie el archivo de mainframe en el bucket de destino, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | Ingeniero de migraciones | 
| Cree un desencadenador de Amazon S3 para invocar una función de Lambda. | Para configurar un desencadenador que invoque la función de Lambda, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html)Para obtener más información, consulte [Tutorial: utilizar un desencadenador de Amazon S3 para invocar una función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html). | Líder de migración | 
| Proporcione permisos de IAM para la función de Lambda. | Se requieren permisos de IAM para que la función de Lambda acceda a los buckets de S3 del conjunto de datos de origen y destino de la transferencia de archivos. Actualice la política asociada al rol de ejecución de la función de Lambda mediante la concesión de** **permisos `s3:GetObject` y `s3:DeleteObject`** **para el bucket de S3 de destino de la transferencia de archivos y el acceso `s3:PutObject` al bucket de S3 del conjunto de datos de origen.Para obtener más información, consulte la sección [Creación de una política de permisos](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html#with-s3-example-create-policy)** ** del *Tutorial: utilizar un desencadenador de Amazon S3 para invocar una función de Lambda*. | Líder de migración | 

### Definición de una tarea de transferencia de datos de mainframe
<a name="define-a-mainframe-data-transfer-task"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una tarea de transferencia de para copiar el archivo de mainframe en el bucket de S3. | Para crear una tarea de transferencia de archivos de mainframe, siga las instrucciones de la [documentación de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer-transfer-tasks.html).Especifique la codificación de la **página de códigos fuente** como **IBM1047** y la codificación de la **página de códigos de destino** como **UTF-8**. | Ingeniero de migraciones | 
| Compruebe la tarea de transferencia. | Para comprobar que la transferencia de datos se ha realizado correctamente, siga las instrucciones de la [documentación de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/filetransfer-transfer-tasks.html#filetransfer-ts-view-console). Confirme que el archivo de mainframe esté en el bucket de S3 de destino de la transferencia de archivos. | Líder de migración | 
| Compruebe la función de copia de Lambda. | Compruebe que se haya iniciado la función de Lambda y que el archivo se haya copiado con la extensión .csv en el bucket de S3 del conjunto de datos de origen.El archivo .csv creado por la función de Lambda es el archivo de datos de entrada de QuickSight. Para ver datos de ejemplo, consulte el archivo `Sample-data-member-healthcare-APG` en la sección de [conexiones](#attachments-53572abb-06c6-4dd7-add4-8fad7e9bfa68). | Líder de migración | 

### Conexión de QuickSight a los datos del mainframe
<a name="connect-quick-sight-to-the-mainframe-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure QuickSight. | Para configurar QuickSight, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/setting-up.html). | Líder de migración | 
| Cree un conjunto de datos para QuickSight. | Para crear un conjunto de datos para QuickSight, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/create-a-data-set-s3.html). El archivo de datos de entrada es el archivo de mainframe convertido que se creó al definir la tarea de transferencia de datos de mainframe. | Líder de migración | 

### Obtenga información empresarial a partir de los datos del mainframe mediante Amazon Q en QuickSight
<a name="get-business-insights-from-the-mainframe-data-by-using-qdev-in-quick-sight"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Amazon Q en QuickSight. | Esta capacidad requiere la edición Enterprise. Para configurar Amazon Q en QuickSight, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | Líder de migración | 
| Analice los datos del mainframe y cree un panel visual. | Para analizar y visualizar sus datos en QuickSight, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html)Cuando termine, puede publicar el panel de control para compartirlo con otras personas de su organización. Para ver ejemplos, consulte el *panel visual del mainframe* en la sección de [información adicional](#generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-additional). | Ingeniero de migraciones | 

### Creación de una historia basada en datos con Amazon Q en QuickSight a partir de datos del mainframe
<a name="create-a-data-story-with-qdev-in-quick-sight-from-the-mainframe-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una historia basada en datos. | Cree una historia basada en datos para explicar la información del análisis anterior y genere una recomendación para aumentar la inmunización preventiva de los miembros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | Ingeniero de migraciones | 
| Vea la historia basada en datos generada. | Para ver la historia basada en datos que se ha generado, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-view.html). | Líder de migración | 
| Edite una historia basada en datos generada. | Para cambiar el formato, el diseño o los elementos visuales de una historia basada en datos, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-edit.html). | Líder de migración | 
| Comparta una historia basada en datos. | Para compartir una historia basada en datos, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/quicksight/latest/user/working-with-stories-share.html). | Ingeniero de migraciones | 

## Resolución de problemas
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| No se han podido detectar los archivos o conjuntos de datos del mainframe introducidos en los **criterios de búsqueda de conjuntos de datos** para **Crear una tarea de transferencia en AWS Mainframe Modernization la transferencia** de archivos con BMC. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.html) | 

## Recursos relacionados
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-resources"></a>

Para convertir tipos de datos de mainframe como [PACKED-DECIMAL (COMP-3)](https://www.ibm.com/docs/en/cobol-zos/6.3?topic=v6-packed-decimal-comp-3) o [BINARY (COMP o COMP-4)](https://www.ibm.com/docs/en/cobol-zos/6.3?topic=v6-binary-comp-comp-4) a un [tipo de datos](https://docs.aws.amazon.com/quicksight/latest/user/supported-data-types-and-values.html) compatible con QuickSight, consulte los siguientes patrones:
+ [Convierta y descomprima datos EBCDIC a ASCII mediante Python AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-and-unpack-ebcdic-data-to-ascii-on-aws-by-using-python.html)
+ [Convierta archivos de mainframe del formato EBCDIC al formato ASCII delimitado por caracteres en Amazon S3 mediante AWS Lambda](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/convert-mainframe-files-from-ebcdic-format-to-character-delimited-ascii-format-in-amazon-s3-using-aws-lambda.html)

## Información adicional
<a name="generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight-additional"></a>

**S3 .py CopyLambda**

El siguiente código de Python se generó mediante una petición con Amazon Q en un IDE:

```
#Create a lambda function triggered by S3. display the S3 bucket name and key
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
print(event)
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
print(bucket, key)
#If key starts with object_created, skip copy, print "copy skipped". Return lambda with key value.
if key.startswith('object_created'):
print("copy skipped")
return {
'statusCode': 200,
'body': key
}
# Copy the file from the source bucket to the destination bucket. Destination_bucket_name = 'm2-filetransfer-final-opt-bkt'. Destination_file_key = 'healthdata.csv'
copy_source = {'Bucket': bucket, 'Key': key}
s3.copy_object(Bucket='m2-filetransfer-final-opt-bkt', Key='healthdata.csv', CopySource=copy_source)
print("file copied")
#Delete the file from the source bucket.
s3.delete_object(Bucket=bucket, Key=key)
return {
'statusCode': 200,
'body': 'Copy Successful'
}
```

**Panel visual de mainframe**

Amazon Q creó el siguiente elemento visual de datos en QuickSight para la pregunta de análisis `show member distribution by region`*.*

![\[Gráfico que muestra el número de miembros de las regiones sudoeste, centro-oeste, noreste y sureste.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/e5c1d049-407d-42ff-bc51-28f9d2b24d4f.png)


Amazon Q creó el siguiente elemento visual de datos en QuickSight para la pregunta `show member distribution by Region who have not completed preventive immunization, in pie chart`.

![\[Pie chart showing preventive immunization incompletion by region: Southeast 40%, Southwest 33%, Midwest 27%.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/47efa1c1-54c9-47cc-b668-416090021d34.png)


**Salida de una historia basada en datos**

Las siguientes capturas de pantalla muestran secciones de la historia basada en datos creada por Amazon Q en QuickSight para la petición `Build a data story about Region with most numbers of members. Also show the member distribution by medical plan, vision plan, dental plan. Recommend how to motivate members to complete immunization. Include 4 points of supporting data.`

En la introducción, la historia basada en datos recomienda elegir la región con más miembros para obtener el mayor impacto de las iniciativas de inmunización.

![\[Página de introducción a una historia basada en datos que se centra en las tasas de finalización de la inmunización.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/4612fcc7-51fd-48a5-bc58-b6b0aa9b0ef3.png)


La historia con datos proporciona un análisis del número de miembros de las tres principales regiones y menciona al sudoeste como la región que más se centra en las iniciativas de inmunización.

![\[Pie chart showing member distribution by region, with Southwest and Northeast leading at 31% each.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/53572abb-06c6-4dd7-add4-8fad7e9bfa68/images/30d3b56b-3b92-4748-9cef-a73ff9339fee.png)


**nota**  
Cada una de las regiones del sudoeste y del noreste tiene ocho miembros. Sin embargo, el sudoeste tiene más miembros que no están completamente vacunados, por lo que tiene más posibilidades de beneficiarse de las iniciativas para aumentar las tasas de inmunización.

## Conexiones
<a name="attachments-53572abb-06c6-4dd7-add4-8fad7e9bfa68"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/53572abb-06c6-4dd7-add4-8fad7e9bfa68/attachments/attachment.zip)

# Implemente la autenticación basada en Microsoft Entra ID en una aplicación de mainframe modernizada de AWS Blu Age
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application"></a>

*Vishal Jaswani y Rimpy Tewani, Amazon Web Services*

## Resumen
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-summary"></a>

**nota**  
AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funcionalidades similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Las aplicaciones de mainframe que se modernizan mediante patrones de refactorización, como las de [AWS Mainframe Modernization Refactor con AWS Blu Age, requieren una integración cuidadosa de los mecanismos de autenticación en la nueva](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html) arquitectura de la aplicación. Esta integración suele abordarse como una actividad posterior a la modernización. La tarea puede ser compleja y, a menudo, implica la migración o la externalización de los sistemas de autenticación existentes para alinearlos con los estándares de seguridad modernos y las prácticas nativas en la nube. Los desarrolladores deben considerar cómo implementar la autenticación de manera eficaz mientras trabajan dentro de las limitaciones del tiempo de ejecución y las bibliotecas de la aplicación modernizada. Tras la modernización, AWS proporciona formas de facilitar la integración del código moderno de AWS Blu Age con sistemas de administración de identidades y accesos, como [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) y [Microsoft Entra ID](https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id) (anteriormente conocido como Azure AD).

Este patrón explica cómo implementar un mecanismo de autenticación en una aplicación modernizada cuando el proveedor de autenticación es Microsoft Entra ID, sin perder tiempo en investigaciones y pruebas. El patrón proporciona lo siguiente:
+ Bibliotecas de Angular pertinentes y probadas en campo de la Biblioteca de autenticación de Microsoft (MSAL) y otra documentación de Microsoft Entra ID que son esenciales para la implementación de la autenticación. 
+ Se requieren configuraciones en el entorno de ejecución de AWS Blu Age para habilitar Spring Security mediante la OAuth versión 2.0.
+ Una biblioteca que captura las identidades de los usuarios autenticados y las pasa al AWS Blu Age Runtime.
+ Medidas de seguridad que recomendamos implementar.
+ Sugerencias de solución de problemas frecuentes con la configuración de Microsoft Entra ID.

**nota**  
Este patrón utiliza la biblioteca de OAuth extensiones AWS Blu Age, que se proporciona a los clientes como parte de su contratación con [los servicios AWS profesionales](https://aws.amazon.com/professional-services/). Esta biblioteca no forma parte de AWS Blu Age Runtime.

## Requisitos previos y limitaciones
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-prereqs"></a>

**Requisitos previos **
+ Una aplicación modernizada que fue producida por las herramientas de refactorización y modernización de mainframes de AWS Blu Age. Este patrón se utiliza [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo)como ejemplo de una aplicación de mainframe de código abierto.
+ La biblioteca de OAuth extensiones de AWS Blu Age, proporcionada por el equipo de AWS Blu Age durante su contratación con [AWS Professional Services](https://aws.amazon.com/professional-services/).
+ Activa Cuenta de AWS para implementar y probar la aplicación modernizada.
+ Familiaridad con los archivos de configuración de AWS Blu Age y los fundamentos de Microsoft Entra ID.

**Limitaciones**
+ Este patrón abarca la autenticación OAuth 2.0 y los flujos básicos de autorización basados en tokens. Los escenarios de autorización avanzada y los mecanismos de control de acceso detallados no están dentro del alcance.
+ Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**

Este patrón se desarrolló mediante lo siguiente:
+ AWS Blu Age Runtime versión 4.1.0 (el patrón también funciona con versiones posteriores compatibles con versiones anteriores)
+ Biblioteca MSAL, versión 3.0.23
+ Java Development Kit (JDK), versión 17
+ Angular, versión 16.1

## Arquitectura
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-architecture"></a>

**Pila de tecnología de origen**

En los entornos de mainframe típicos, la autenticación se implementa a través de los perfiles de usuario. Estos perfiles identifican a los usuarios del sistema, definen quién puede iniciar sesión y especifican qué funciones pueden llevar a cabo los usuarios con los recursos del sistema. Los perfiles de usuario los administran los responsables de seguridad o los administradores de seguridad.

**Pila de tecnología de destino**
+ ID de Microsoft Entra
+ Backend modernizado basado en Java Spring Boot
+ AWS Blu Age Runtime
+ Spring Security con OAuth 2.0
+ Aplicación de una sola página de Angular (SPA)

**Arquitectura de destino**

AWS El tiempo de ejecución de Blu Age admite la autenticación OAuth basada en la versión 2.0 de forma predeterminada, por lo que el patrón utiliza ese estándar para proteger el backend APIs.

En el diagrama siguiente se ilustra el flujo del proceso.

**nota**  
En el diagrama se incluye Amazon Aurora como ejemplo de modernización de bases de datos, aunque Aurora no se incluye en los pasos de este patrón.

![\[Flujo del proceso para la autenticación basada en Entra ID para una aplicación de AWS Blu Age.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/e51f24b8-178f-4974-aae9-23a0cc8540f5/images/0fdcdb22-9e46-4b02-86b2-395cba3e2f81.png)


donde:

1. Un usuario intenta autenticarse con Microsoft Entra ID.

1. Microsoft Entra ID devuelve los tokens de actualización, acceso e ID que la aplicación utiliza en llamadas posteriores.

1. El interceptor MSAL incluye el token de acceso en el `Authorization` encabezado de una solicitud HTTPS para llamar al Blu Age Runtime. AWS 

1. La `extension-oauth` biblioteca AWS Blu Age extrae la información del usuario del encabezado mediante un archivo de configuración de AWS Blu Age Runtime (`application-main.yml`) y coloca esta información en un `SharedContext` objeto para que la lógica empresarial pueda consumirla.
**nota**  
`SharedContext`es un componente de tiempo de ejecución proporcionado por AWS Blu Age que gestiona la información de contexto y estado de la aplicación en toda la aplicación modernizada. Para obtener más información sobre los componentes y las actualizaciones de AWS Blu Age Runtime, consulta las [notas de la versión de AWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/ba-release-notes.html) en la AWS Mainframe Modernization documentación. Para obtener más información sobre el `application-main.yml` archivo, consulte [Configurar la configuración de AWS Blu Age Runtime](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html) en la AWS Mainframe Modernization documentación.

1. El AWS Blu Age Runtime comprueba si el token está presente. 

   1. Si el token está presente, se comunica con Microsoft Entra ID para comprobar su validez. 

   1. Si el token no está presente, el AWS Blu Age Runtime devuelve un error con el código de estado HTTP 403.

1. Si el token es válido, el AWS Blue Age Runtime permite que la lógica empresarial continúe. Si el token no es válido, AWS Blu Age Runtime devuelve un error con el código de estado HTTP 403.

**OAuth Flujo de trabajo 2.0**

Para ver un diagrama de alto nivel del flujo de trabajo OAuth 2.0, consulte la [documentación de Microsoft Entra](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow#protocol-details).

## Tools (Herramientas)
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools"></a>

**Servicios de AWS**

[AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)proporciona herramientas y recursos para ayudarlo a planificar e implementar la migración y la modernización de los mainframes a los entornos de tiempo de ejecución AWS gestionados. Puede utilizar las funciones de refactorización de este servicio, que proporciona AWS Blu Age, para convertir y modernizar sus aplicaciones de mainframe antiguas.

**nota**  
AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funcionalidades similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

**Repositorio de código**

La CardDemo aplicación se ha actualizado para demostrar la integración con Microsoft Entra ID. Puedes acceder al código de [este patrón desde el GitHub repositorio](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app).

**Configuración de backend**

Este patrón requiere cambios en el archivo de `application-main.yml`**** configuración para habilitar Spring Security mediante el uso de la OAuth versión 2.0 en la aplicación de fondo.  El archivo `.yml` tiene este aspecto:

```
gapwalk-application.security: enabled
gapwalk-application:
  security: 
    identity: oauth
    issuerUri: ${issuerUrl}
    claim:
      claims:
        -
          claimName: upn
          claimMapValue: username
spring:
  autoconfigure:
    exclude:
     - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration
     - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration
  security:
    oauth2:
      client:
        registration: 
          azure:
            client-id: {clientId}
            client-secret: ${clientSecret}
            provider: azure
            authorization-grant-type: authorization_code
            redirect-uri: ${redirectUri}
            scope: openid
           
        provider:
          azure:
            authorization-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/authorize
            token-uri:  ${gapwalk-application.security.issuerUri}/oauth2/v2.0/token
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
```

**AWS Biblioteca de filtros de OAuth extensiones Blu Age**

La biblioteca de OAuth extensiones de AWS Blu Age la proporciona el equipo de AWS Blu Age durante su contratación con [AWS Professional Services](https://aws.amazon.com/professional-services/).

Esta biblioteca lee la configuración `claim.claims` del archivo `application-main.yml` que se muestra en el bloque de código anterior. Esta configuración es una lista. Cada elemento de la lista proporciona dos valores: `claimName` y `claimMapValue`. `claimName` representa el nombre de una clave en un token web JSON (JWT) enviado por el frontend y `claimMapValue` es el nombre de la clave en `SharedContext`. Por ejemplo, si quieres capturar el ID de usuario en el backend, establezca `claimName` en el nombre de la clave en el JWT que contiene el valor de `userId` proporcionado por Microsoft Entra ID y establezca `claimMapValue` en el nombre de la clave para obtener el ID de usuario en el código del backend.

Por ejemplo, si establece `UserId` en `claimMapValue`, puede usar el siguiente código para extraer el ID de usuario:

```
SharedContext.get().getValue("userId", [UserId]);
```

## Prácticas recomendadas
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-best-practices"></a>

Al implementar este patrón, tenga en cuenta las siguientes consideraciones de seguridad importantes.

**importante**  
Este patrón proporciona una base para la integración de la autenticación. Le recomendamos que implemente medidas de seguridad además de las descritas en esta sección en función de los requisitos de su empresa antes de implementarla en producción.
+ **AWS seguridad de configuración.**Mueva los valores de configuración confidenciales de `application-main.yml` a AWS Secrets Manager. Por ejemplo, configure las siguientes propiedades mediante Secrets Manager:

  ```
  security:
      oauth2:
        client:
          registration: 
            azure:
              client-id: {clientId}
              client-secret: ${clientSecret}
  ```

  Para obtener más información sobre cómo usar Secrets Manager para configurar los parámetros de AWS Blu Age, consulta los [secretos de AWS Blu Age Runtime](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config-app-secrets.html) en la AWS Mainframe Modernization documentación.
+ **Protección del entorno del tiempo de ejecución.** Configure el entorno de aplicaciones modernizado con los controles AWS de seguridad adecuados:

  ```
  server: 
    tomcat: 
      remoteip: 
       protocol-header: X-Forwarded-Proto 
       remote-ip-header: X-Forwarded-For 
    forward-headers-strategy: NATIVE
  ```
+ ** CloudWatch Registro de Amazon.** Considere la posibilidad de agregar el archivo `logback-spring.xml to src/main/resources`:

  ```
  <configuration> 
   <appender name="CLOUDWATCH" class="com.amazonaws.services.logs.logback.CloudWatchAppender">  
     <logGroup>/aws/bluage/application</logGroup> 
     <logStream>${AWS_REGION}-${ENVIRONMENT}</logStream> 
     <layout> 
      <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </layout> 
   </appender> 
  
   <root level="INFO"> 
   <appender-ref ref="CLOUDWATCH"/> 
   </root> 
  </configuration>
  ```

  Para obtener información sobre cómo habilitar el rastreo con la correlación CloudWatch, consulte [Habilitar la correlación entre el rastreo y el registro](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html) en la CloudWatch documentación.
+ **Configuración y gestión de tokens.** Configure la vida útil de los tokens en Microsoft Entra ID para adaptarla a sus requisitos de seguridad. Configure los tokens de acceso para que caduquen en 1 hora y actualícelos para que caduquen en 24 horas. En la configuración de AWS Blu Age Runtime (`application-main.yml`), asegúrese de que la validación de JWT esté configurada correctamente con el URI del emisor y los valores de audiencia exactos del registro de la aplicación Entra ID.

  Cuando un token caduca y se actualiza:

  1. El interceptor de errores de la aplicación de Angular gestiona la respuesta 401 obteniendo un nuevo token a través de MSAL.

  1. El nuevo token se envía con la solicitud posterior.

  1. El OAuth filtro del AWS Blu Age Runtime valida el nuevo token y se actualiza automáticamente `SharedContext` con la información de usuario actual. Esto garantiza que la lógica empresarial siga teniendo acceso al contexto de usuario válido a través de las llamadas `SharedContext.get().getValue()`.

  Para obtener más información sobre los componentes de AWS Blu Age Runtime y sus actualizaciones, consulta las [notas de la versión de AWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/ba-release-notes.html).
+ **Seguridad del tiempo de ejecución de AWS Blu Age.** La `oauth2-ext` biblioteca proporcionada por AWS Blu Age debe colocarse en la ubicación correcta del directorio compartido (`{app-server-home}/shared/`) con los permisos de archivo adecuados. Compruebe que la biblioteca extrae correctamente la información del usuario JWTs comprobando la población de `SharedContext` objetos en sus registros.
+ **Configuración de notificaciones específicas.** En `application-main.yml`, defina las notificaciones que necesita de Microsoft Entra ID de forma explícita. Por ejemplo, para capturar el correo electrónico y los roles del usuario, especifique lo siguiente:

  ```
  gapwalk-application:
    security:
      claim:
        claims:
          - claimName: upn
            claimMapValue: username
          - claimName: roles
            claimMapValue: userRoles
          - claimName: email
            claimMapValue: userEmail
  ```
+ **Gestión de errores.** Agregue el manejo de errores para abordar los errores de autenticación en su aplicación de Angular; por ejemplo:

  ```
  @Injectable()
  export class AuthErrorInterceptor implements HttpInterceptor {
    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      return next.handle(request).pipe(
        catchError((error: HttpErrorResponse) => {
          if (error.status === 401) {
            // Handle token expiration
            this.authService.login();
          }
          if (error.status === 403) {
            // Handle unauthorized access
            this.router.navigate(['/unauthorized']);
          }
          return throwError(() => error);
        })
      );
    }
  }
  ```
+ **Configuración del tiempo de espera de la sesión.** Configure los ajustes de tiempo de espera de la sesión tanto en el AWS Blu Age Runtime como en el Microsoft Entra ID. Por ejemplo, agregue el siguiente código al archivo `application-main.yml`:

  ```
  server:
    servlet:
      session:
        timeout: 3600 # 1 hour in seconds
  ```
+ **MsalGuard.** Debe implementar la MsalGuard función en todas las rutas protegidas para evitar el acceso no autorizado. Por ejemplo:

  ```
  const routes: Routes = [
      { path: '', redirectTo: '/transaction-runner', pathMatch: 'full' },
      { path: 'transaction-runner', component: TransactionRunnerComponent, canActivate:guards },
      { path: 'user-info', component: UserInfoComponent, canActivate:guards },
      { path: 'term/:transid/:commarea', component: TermComponent, canActivate:guards },
  	{ path: 'code', component: TransactionRunnerComponent  }
  ];
  ```

  Se podrá acceder a las rutas que MsalGuard no estén protegidas sin autenticación, lo que podría exponer funciones confidenciales. Asegúrese de que todas las rutas que requieren autenticación incluyan las protecciones en su configuración.

## Epics
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-epics"></a>

### Configuración de Microsoft Entra ID
<a name="set-up-a-microsoft-entra-id"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configurar una cuenta de Microsoft Azure para crear una instancia de Entra ID. | Para ver las opciones e instrucciones, consulte el [sitio web de Microsoft Azure](https://azure.microsoft.com/en-us/free/). | Desarrollador de aplicaciones | 
| Configurar una instancia de Microsoft Entra ID en la aplicación. | Para obtener información sobre cómo agregar la autenticación de Microsoft Entra ID B2C (Azure AD B2C) a su SPA de Angular, consulte la [documentación de Microsoft](https://learn.microsoft.com/en-us/azure/active-directory-b2c/enable-authentication-angular-spa-app#add-the-authentication-components). En concreto:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | Desarrollador de aplicaciones | 

### Clona el repositorio e implementa tu código de AWS Blu Age
<a name="clone-the-repository-and-deploy-your-aws-blu-age-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clona el GitHub repositorio para obtener el código angular necesario para la autenticación. | Ejecuta el siguiente comando para clonar el [GitHub repositorio](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app) que viene con este patrón en tu directorio de trabajo actual local:<pre>git clone https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app.git</pre> | Desarrollador de aplicaciones | 
| Implemente el código modernizado de AWS Blu Age en un servidor Tomcat para implementar la autenticación. | Para configurar el entorno local que incluye Tomcat y el servidor de desarrollo Angular, siga los pasos de instalación proporcionados por el equipo de AWS Blu Age como parte de la interacción de los clientes con AWS los servicios profesionales. | Desarrollador de aplicaciones | 

### Creación de la solución de autenticación
<a name="build-the-authentication-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Habilitar la seguridad del tiempo de ejecución de AWS Blu Age para proteger los puntos de conexión de la API de REST de AWS Blu Age. | Configure el `application-main.yml` archivo que utiliza el AWS Blu Age Runtime de la siguiente manera. Para ver un ejemplo de este archivo, consulte la sección [Repositorio de código](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools), incluida anteriormente en este patrón.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | Desarrollador de aplicaciones | 
| Incorporar el código de ejemplo de su entorno local a su base de código de Angular modernizada de Blu Age. | Para obtener información sobre cómo incorporar el ejemplo en su base de código angular modernizada de AWS Blu Age, consulte la sección sobre el [repositorio de códigos](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools) que aparece anteriormente en este patrón. | Desarrollador de aplicaciones | 
| Colocar la biblioteca `oauth2-ext` en el directorio compartido. | Coloque la biblioteca `oauth2-ext` en el directorio compartido** **del servidor de aplicaciones para que su aplicación modernizada de** **AWS Blu Age pueda usarla**.**Ejecute los siguientes comandos :<pre>cd oauth2-ext/target<br />cp extension-oauth-filter-<version>.jar /{app-server-home}/shared/</pre> | Desarrollador de aplicaciones | 

### Implementación de la solución de autenticación
<a name="deploy-the-authentication-solution"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implementar la aplicación de frontend. | Ejecute los comandos siguientes para iniciar la aplicación de frontend de forma local:<pre>npm install <br />ng serve --ssl<br />npm start</pre>Al agregar la marca `--ssl` al comando `ng serve`, se garantiza que el servidor de desarrollo utilice HTTPS, que es más seguro que otros protocolos y proporciona una mejor simulación de un entorno de producción. | Desarrollador de aplicaciones | 
| Iniciar la aplicación de backend. | Inicie el servidor de Tomcat en Eclipse. | Desarrollador de aplicaciones | 

### Pruebe la aplicación
<a name="test-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Probar la funcionalidad de inicio de sesión. | Acceda a la aplicación implementada localmente en `http://localhost:4200` para comprobar que se pide a los usuarios que confirmen su identidad.Aquí se usa HTTP con fines ilustrativos. En un entorno de producción u otro entorno de acceso público, debe utilizar HTTPS por motivos de seguridad. Incluso para el desarrollo local, le recomendamos que configure HTTPS siempre que sea posible.Debería aparecer el mensaje de inicio de sesión de Microsoft y los usuarios configurados en Microsoft Entra ID deberían poder acceder a la aplicación. | Desarrollador de aplicaciones | 
| Probar el encabezado de la autorización de la solicitud. | En los siguientes pasos, se usa la [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo)aplicación como ejemplo. Los pasos de prueba para otras aplicaciones modernas variarán.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | Desarrollador de aplicaciones | 
| Probar la funcionalidad de cierre de sesión. | Elija **Salir** para cerrar sesión e intente acceder de nuevo a la aplicación. Debería ver un nuevo mensaje de inicio de sesión. | Desarrollador de aplicaciones | 

## Resolución de problemas
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| El token emitido por Microsoft Entra ID no es compatible con la seguridad de Spring Boot OAuth 2.0. | Para resolver el problema, consulta [Microsoft Entra ID OAuth Flow](https://authguidance.com/azure-ad-troubleshooting/) en el OAuth blog. | 
| Preguntas generales relacionadas con los tokens. | Para decodificar y ver el contenido de un token JWT, utilice el sitio web [https://jwt.io/](https://jwt.io/). | 

## Recursos relacionados
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-resources"></a>
+ [Para obtener información sobre cómo refactorizar tu aplicación mediante AWS Blu Age, consulta la AWS Mainframe Modernization documentación.](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html)
+ Para entender cómo funciona la OAuth versión 2.0, consulte el sitio web de la [OAuth versión 2.0](https://oauth.net/2/).
+ Para obtener información general sobre la Biblioteca de autenticación de Microsoft (MSAL), consulte la [documentación de Microsoft Entra](https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-overview).
+ Para obtener información sobre los perfiles de usuario en un sistema AS/400, consulte el [tutorial de IBM i (AS400)](https://www.go4as400.com/subsystem-jobs-user-profile-in-as400/jobs.aspx?cid=14).
+ [Para ver el OAuth flujo de autenticación 2.0 y OpenID Connect (OIDC) en la plataforma de identidad de Microsoft, consulte la documentación de Microsoft Entra.](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols)

# Integrar el controlador universal Stonebranch con AWS Mainframe Modernization
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization"></a>

*Vaidy Sankaran y Pablo Alonso Prieto, Amazon Web Services*

*Robert Lemieux y Huseyin Gomleksizoglu, Stonebranch*

## Resumen
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-summary"></a>

Nota: AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funciones similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Este patrón explica cómo integrar la [orquestación de cargas de trabajo de Stonebranch Universal Automation Center (UAC)](https://www.stonebranch.com/stonebranch-platform/universal-automation-center) con el [servicio de AWS Mainframe Modernization de Amazon Web Services (AWS)](https://aws.amazon.com/mainframe-modernization/). El servicio de AWS Mainframe Modernization migra y moderniza las aplicaciones de mainframe a la nube de AWS. Ofrece dos patrones: [Redefinición de la plataforma de AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/patterns/replatform/) con Micro Focus y la [refactorización automatizada de AWS Mainframe Modernization](https://aws.amazon.com/mainframe-modernization/patterns/refactor/?mainframe-blogs.sort-by=item.additionalFields.createdDate&mainframe-blogs.sort-order=desc) con AWS Blu Age.  

Stonebranch UAC es una plataforma de automatización y organización de TI en tiempo real. El UAC está diseñado para automatizar y organizar los trabajos, las actividades y los flujos de trabajo en los sistemas de TI híbridos, desde los entornos locales hasta los de AWS. Los clientes empresariales que utilizan sistemas de mainframe están realizando la transición a infraestructuras y aplicaciones modernizadas centradas en la nube. Las herramientas y los servicios profesionales de Stonebranch facilitan la migración de los programadores y las capacidades de automatización existentes a la nube de AWS.

Al migrar o modernizar sus programas de mainframe a la nube de AWS mediante el servicio AWS Mainframe Modernization, puede utilizar esta integración para automatizar la programación por lotes, aumentar la agilidad, mejorar el mantenimiento y reducir los costos.

Este patrón proporciona instrucciones para integrar el [programador Stonebranch](https://www.stonebranch.com/) con las aplicaciones de mainframe migradas al tiempo de ejecución de Micro Focus Enterprise del servicio de AWS Mainframe Modernization. Este patrón es para arquitectos de soluciones, desarrolladores, consultores, especialistas en migración y otras personas que trabajan en migraciones, modernizaciones, operaciones o DevOps

**Resultados específicos**

Este patrón se centra en proporcionar los siguientes resultados objetivo:
+ La capacidad de programar, automatizar y ejecutar trabajos por lotes de mainframe que se ejecutan en el servicio AWS Mainframe Modernization (tiempo de ejecución de Microfocus) de Stonebranch Universal Controller.
+ Supervise los procesos por lotes de la aplicación desde el controlador universal Stonebranch.
+ Start/Restart/Rerun/Stopprocesa por lotes de forma automática o manual desde el controlador universal Stonebranch.
+ Recupere los resultados de los procesos por lotes de AWS Mainframe Modernization.
+ Capture los CloudWatch registros de [AWS](https://aws.amazon.com/cloudwatch/) de los trabajos por lotes en Stonebranch Universal Controller.

## Requisitos previos y limitaciones
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una aplicación de demostración de Micro Focus [Bankdemo](https://d1vi4vxke6c2hu.cloudfront.net/demo/bankdemo_runtime.zip) con archivos de Job Control Language (JCL) y un proceso por lotes implementado en un entorno del servicio de AWS Mainframe Modernization (tiempo de ejecución de Micro Focus)
+ Conocimientos básicos sobre cómo crear e implementar una aplicación de mainframe que se ejecute en Micro Focus [Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf)
+ Conocimientos básicos del controlador universal Stonebranch
+ Licencia de prueba de Stonebranch (póngase en contacto con [Stonebranch)](https://www.stonebranch.com/)
+ Instancias de Amazon Elastic Compute Cloud (Amazon EC2) para Windows o Linux (por ejemplo, xlarge) con un mínimo de cuatro núcleos, 8 GB de memoria y 2 GB de espacio en disco
+ Apache Tomcat, versión 8.5.x o 9.0.x
+ Entorno de ejecución de Java (JRE) o OpenJDK versión 8 u 11
+ [Edición de Amazon Aurora compatible con MySQL](https://aws.amazon.com/rds/aurora/)
+ Bucket de [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) para repositorio de exportación
+ [Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/) para las conexiones del agente Stonebranch Universal Message Service (OMS) para una alta disponibilidad (HA)
+ Archivos de instalación de Universal Agent 7.2 de Stonebranch Universal Controller 7.2
+ [AWS Mainframe Modernization](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases) plantilla de programación de tareas (última versión publicada del archivo .zip)

**Limitaciones**
+ El producto y la solución se han probado y se ha validado su compatibilidad solo con OpenJDK 8 y 11.
+ La plantilla [aws-mainframe-modernization-stonebranchde programación de tareas de integración](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases) solo funcionará con el servicio de modernización de mainframe de AWS.
+ Esta plantilla de programación de tareas solo funcionará en las ediciones para Unix, Linux o Windows de los agentes de Stonebranch.
+ Algunos servicios de AWS no están disponibles en todas las regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte la página [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-architecture"></a>

**Arquitectura de estado objetivo**

En el siguiente diagrama se muestra el entorno de AWS de ejemplo que se requiere para este piloto.

![\[Stonebranch UAC interactuando con el entorno de AWS Mainframe Modernization.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/4a7bea37-0a5b-4663-902b-9b051e92f0cb.png)


1. El Universal Automation Center (UAC) de Stonebranch incluye dos componentes principales: Universal Controller y Universal Agents. Stonebranch OMS se utiliza como un bus de mensajes entre el controlador y los agentes individuales.

1. Universal Controller utiliza la base de datos UAC de Stonebranch. La base de datos puede ser compatible con MySQL, Microsoft SQL Server, Oracle o Aurora MySQL.

1. Servicio de modernización de mainframe de AWS: entorno de ejecución de Micro Focus con la [BankDemo aplicación implementada](https://aws.amazon.com/blogs/aws/modernize-your-mainframe-applications-deploy-them-in-the-cloud/). Los archivos de la BankDemo aplicación se almacenarán en un bucket de S3. Este bucket también contiene los archivos JCL de la unidad central.

1. Stonebranch UAC puede ejecutar las siguientes funciones para la ejecución por lotes:

   1. Inicie un trabajo por lotes con el nombre del archivo JCL que existe en el bucket de S3 vinculado al servicio de AWS Mainframe Modernization.

   1. Obtenga el estado de la ejecución del trabajo por lotes.

   1. Espere hasta que se complete la ejecución del trabajo por lotes.

   1. Obtenga los registros de la ejecución del trabajo por lotes.

   1. Vuelva a ejecutar los trabajos por lotes fallidos.

   1. Cancele el trabajo por lotes mientras se está ejecutando.

1. Stonebranch UAC puede ejecutar las siguientes funciones para la aplicación:

   1. Iniciar la aplicación

   1. Obtener el estado de la aplicación

   1. Espere hasta que la aplicación se inicie o se detenga

   1. Detener la aplicación

   1. Obtener los registros del funcionamiento de la aplicación

**Conversión de trabajos en Stonebranch**

El siguiente diagrama representa el proceso de conversión de puestos de trabajo de Stonebranch durante el proceso de modernización. Describe cómo los cronogramas de trabajo y las definiciones de tareas se convierten a un formato compatible que puede ejecutar tareas por lotes de AWS Mainframe Modernization.

![\[Proceso desde el mainframe hasta la conversión a programador de trabajos en Amazon EC2 con archivos JCL en Amazon S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/4d2ed890-f143-455e-8180-4d967b71c494.png)


1. Para el proceso de conversión, las definiciones de los trabajos se exportan desde el sistema de mainframe existente.

1. Los archivos JCL se pueden cargar en el depósito S3 de la aplicación Mainframe Modernization para que el servicio AWS Mainframe Modernization pueda implementarlos.

1. La herramienta de conversión convierte las definiciones de trabajo exportadas en tareas de UAC.

1. Una vez creadas todas las definiciones de tareas y los cronogramas de trabajos, estos objetos se importarán al controlador universal. A continuación, las tareas convertidas ejecutan los procesos en el servicio de AWS Mainframe Modernization en lugar de ejecutarlos en el mainframe.

**Arquitectura UAC de Stonebranch**

El siguiente diagrama de arquitectura representa un active-active-passive modelo de controlador universal de alta disponibilidad (HA). El UAC de Stonebranch se implementa en varias zonas de disponibilidad para proporcionar una alta disponibilidad y respaldar la recuperación de desastres (DR).

![\[Entorno multi-AZ con DR y controladores, Amazon EFS, Aurora y un bucket de S3 para copias de seguridad.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/3f94b855-c146-4fcb-902c-5d343438a558.png)


*Controlador universal*

Se aprovisionan dos servidores Linux como controladores universales. Ambos se conectan al mismo punto de conexión de la base de datos. Cada servidor alberga una aplicación Universal Controller y un OMS. La versión más reciente de Universal Controller se utiliza en el momento del aprovisionamiento.

Los controladores universales se implementan en la aplicación web de Tomcat como el documento ROOT y se distribuyen en el puerto 80. Esta implementación facilita la configuración del equilibrador de carga de frontend.

El HTTP a través de TLS o HTTPS se habilita mediante el certificado comodín de Stonebranch (por ejemplo, `https://customer.stonebranch.cloud`). Esto asegura la comunicación entre el navegador y la aplicación.

*OMS*

Un agente universal y un OMS (servicio de mensajes de Opswise) residen en cada servidor de Universal Controller. Todos los agentes universales desplegados por el cliente están configurados para conectarse a ambos servicios de OMS. OMS actúa como un servicio de mensajería común entre los agentes universales y el controlador universal.

Amazon EFS monta un directorio de bobinas en cada servidor. OMS utiliza este directorio compartido para mantener la información de conexión y tareas de los controladores y los agentes. OMS funciona en un modo de alta disponibilidad. Si el OMS activo deja de funcionar, el OMS pasivo tiene acceso a todos los datos y reanuda las operaciones activas automáticamente. Los agentes universales detectan este cambio y se conectan automáticamente al nuevo OMS activo.

*Base de datos*

Amazon Relational Database Service (Amazon RDS) aloja la base de datos de UAC y su motor es compatible con Amazon Aurora MySQL. Amazon RDS ayuda a gestionar y ofrecer copias de seguridad programadas a intervalos regulares. Ambas instancias de Universal Controller se conectan al mismo punto de conexión de la base de datos.

*Equilibrador de carga*

Se configura un equilibrador de carga de aplicación para cada instancia. El equilibrador de carga dirige el tráfico al controlador activo en cualquier momento dado. Los nombres de dominio de su instancia apuntan a los puntos finales del equilibrador de carga respectivos.

*URLs*

Cada una de sus instancias tiene una URL, como se muestra en el siguiente ejemplo.


| 
| 
| Entorno | Instancia | 
| --- |--- |
| **Producción** | `customer.stonebranch.cloud` | 
| **Desarrollo (no producción)** | `customerdev.stonebranch.cloud` | 
| **Pruebas (fuera de producción)** | `customertest.stonebranch.cloud` | 

**nota**  
  Los nombres de las instancias que no son de producción se pueden configurar en función de sus necesidades.

*Alta disponibilidad*

La alta disponibilidad (HA) es la capacidad de un sistema de funcionar de forma continua y sin fallos durante un período de tiempo designado. Estos fallos incluyen, entre otros, el almacenamiento, las demoras en la respuesta de las comunicaciones del servidor causadas por problemas de la CPU o la memoria y la conectividad de red.

Para cumplir con los requisitos de alta disponibilidad:
+ Todas las instancias, bases de datos y demás configuraciones de EC2 se reflejan en dos zonas de disponibilidad independientes dentro de la misma región de AWS.
+ El controlador se aprovisiona a través de una imagen de máquina de Amazon (AMI) en dos servidores Linux en las dos zonas de disponibilidad. Por ejemplo, si está aprovisionado en la región de Europa eu-west-1, tiene un controlador universal en la zona de disponibilidad eu-west-1a y en la zona de disponibilidad eu-west-1c.
+ No se permite que ningún trabajo se ejecute directamente en los servidores de aplicaciones ni que se almacene ningún dato en estos servidores.
+ El equilibrador de carga de aplicación realiza comprobaciones de estado en cada controlador universal para identificar el controlador activo y dirigir el tráfico hacia él. En caso de que se produzcan problemas con un servidor, el equilibrador de carga pasa automáticamente al estado activo del controlador universal pasivo. A continuación, el equilibrador de cargas identifica la nueva instancia activa de Universal Controller a partir de las comprobaciones de estado y comienza a dirigir el tráfico. La conmutación por error se produce en un plazo de cuatro minutos sin pérdida de trabajo, y la URL de frontend sigue siendo la misma.
+ El servicio de base de datos Aurora compatible con MySQL almacena los datos de Universal Controller. Para los entornos de producción, un clúster de base de datos se crea con dos instancias de base de datos en dos zonas de disponibilidad diferentes dentro de una sola región de AWS. Ambos controladores universales utilizan una interfaz de conectividad de bases de datos Java (JDBC) que apunta a un único punto de conexión del clúster de base de datos. En caso de que una instancia de base de datos tenga problemas, el punto de conexión del clúster de base de datos apunta dinámicamente a la instancia en buen estado. No se requiere intervención manual alguna.

*Backup y purga*

El controlador universal Stonebranch está configurado para realizar copias de seguridad y purgar los datos antiguos siguiendo el programa que se muestra en la tabla.


| 
| 
| Tipo | Schedule | 
| --- |--- |
| **Actividad** | 7 días | 
| **Auditoría** | 90 días | 
| **Historial** | 60 días | 

Los datos de backup anteriores a las fechas mostradas se exportan al formato.xml y se almacenan en el sistema de archivos. Una vez finalizado el proceso de copia de seguridad, los datos más antiguos se purgan de la base de datos y se archivan en un depósito de S3 durante un máximo de un año en el caso de las instancias de producción.

Puede ajustar este programa en la interfaz de la controladora universal. Sin embargo, el aumento de estos plazos puede provocar un tiempo de inactividad más prolongado durante el mantenimiento.

## Tools (Herramientas)
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-tools"></a>

**Servicios de AWS**
+ [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) es un servicio que le ayuda a modernizar sus aplicaciones de unidad central para convertirlas en entornos de tiempo de ejecución administrados nativos en la nube de AWS. Ofrece herramientas y recursos para ayudarle a planificar e implementar la migración y modernización.
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) proporciona volúmenes de almacenamiento de nivel de bloque para su uso con instancias de Amazon EC2.
+ [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.
+ [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. Este patrón utiliza la edición de Amazon Aurora compatible con MySQL.
+ [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.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuye el tráfico entrante de aplicaciones o redes entre varios destinos. Así, por ejemplo, puede distribuir el tráfico entre instancias de Amazon EC2, contenedores y direcciones IP de una o varias zonas de disponibilidad. Este patrón utiliza un Equilibrador de carga de aplicación.

**Stonebranch**
+ [Universal Automation Center (UAC)](https://stonebranchdocs.atlassian.net/wiki/spaces/SD/pages/239239169/Universal+Automation+Center) es un sistema de productos de automatización de cargas de trabajo empresariales. Este patrón utiliza los siguientes componentes del UAC:
  + [Universal Controller](https://www.stonebranch.com/documentation-universal-controller), una aplicación web Java que se ejecuta en un contenedor web de Tomcat, es la solución empresarial de programación de trabajos y agente de automatización de cargas de trabajo de Universal Automation Center. El controlador presenta una interfaz de usuario para crear, supervisar y configurar la información del controlador; gestiona la lógica de programación; procesa todos los mensajes con Universal Agents como origen y destino; y sincroniza gran parte del funcionamiento de alta disponibilidad de Universal Automation Center.
  + [Universal Agent es un agente](https://www.stonebranch.com/documentation-universal-agent) de programación independiente del proveedor que colabora con el programador de tareas existente en las principales plataformas informáticas, tanto antiguas como distribuidas. Se admiten todos los programadores que se ejecutan en z/Series, i/Series Unix, Linux o Windows.
+ [Universal Agent es un agente](https://www.stonebranch.com/documentation-universal-agent) de programación independiente del proveedor que colabora con el programador de tareas existente en las principales plataformas informáticas, tanto antiguas como distribuidas. Se admiten todos los programadores que se ejecutan en Unixz/Series, i/Series, Linux o Windows.
+ [Integración con Stonebranch La extensión universal de aws-mainframe-modernization-stonebranch AWS Mainframe Modernization](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases) es la plantilla de integración para ejecutar, monitorear y volver a ejecutar trabajos por lotes en la plataforma AWS Mainframe Modernization.

**Código**

[El código de este patrón está disponible en el repositorio -integration. aws-mainframe-modernization-stonebranch](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases/) GitHub 

## Epics
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-epics"></a>

### Instalación de Universal Controller y Universal Agent en Amazon EC2
<a name="install-universal-controller-and-universal-agent-on-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue los archivos de instalación. | Descargue la instalación desde los servidores de Stonebranch. Para obtener los archivos de instalación, póngase en contacto con Stonebranch. | Arquitecto de la nube | 
| Lanzar la instancia EC2. | Necesitará unos 3 GB de espacio adicional para las instalaciones de Universal Controller y Universal Agent. Por lo tanto, proporciona al menos 30 GB de espacio en disco para la instancia.Agrega el puerto 8080 al grupo de seguridad para que sea accesible. | Arquitecto de la nube | 
| Compruebe los requisitos previos. | Antes de la instalación, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de la nube, administrador de Linux | 
| Instale Universal Controller. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Arquitecto de la nube, administrador de Linux | 
| Instale Universal Agent. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de la nube, administrador de Linux | 
| Agregue OMS a Universal Controller. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 

### Importe la extensión universal de AWS Mainframe Modernization y cree una tarea
<a name="import-aws-mainframe-modernization-universal-extension-and-create-a-task"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Plantilla de integración de importación. | Para este paso, necesita la [extensión universal de AWS Mainframe Modernization](https://github.com/aws-samples/aws-mainframe-modernization-stonebranch-integration/releases). Asegúrese de descargar la última versión publicada del archivo .zip.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html)Una vez importada la plantilla de integración, verá las **tareas de AWS Mainframe Modernization** en la sección **Servicios disponibles**. | Administrador de Universal Controller | 
| Habilite las credenciales que se pueden resolver. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 
| Iniciar la tarea. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 

### Probar el inicio de un trabajo por lotes
<a name="test-starting-a-batch-job"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una tarea para el trabajo por lotes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 
| Iniciar la tarea. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 

### Cree un flujo de trabajo para múltiples tareas
<a name="create-a-workflow-for-multiple-tasks"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Copie las tareas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 
| Tarea de actualizar. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 
| Cree un flujo de trabajo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 
| Compruebe el estado del flujo de trabajo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de universal Controller | 

### Solucione los problemas de los trabajos por lotes fallidos y vuelva a ejecutarlos
<a name="troubleshoot-failed-batch-jobs-and-rerun"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Corrija la tarea fallida y vuelva a ejecutarla. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 

### Cree las tareas de inicio y detención de la aplicación
<a name="create-start-application-and-stop-application-tasks"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la acción Iniciar aplicación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) | Administrador de Universal Controller | 

### Crear una tarea de cancelación de ejecución por lotes
<a name="create-a-cancel-batch-execution-task"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la acción Cancelar Batch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.html) |  | 

## Recursos relacionados
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-resources"></a>
+ [Controlador universal](https://stonebranchdocs.atlassian.net/wiki/spaces/UC77/overview)
+ [Agente universal](https://stonebranchdocs.atlassian.net/wiki/spaces/UA77/overview)
+ [Configuración de LDAP](https://stonebranchdocs.atlassian.net/wiki/spaces/UC77/pages/794552355/LDAP+Settings)
+ [SAML Single Sign-On](https://stonebranchdocs.atlassian.net/wiki/spaces/UC77/pages/794553130/SAML+Single+Sign-On)
+ [Herramienta de conversión Xpress](https://www.stonebranch.com/resources/xpress-conversion-windows)

## Información adicional
<a name="integrate-stonebranch-universal-controller-with-aws-mainframe-modernization-additional"></a>

**Iconos en el editor de flujos de trabajo**

![\[Tarea RUNHELLO en la parte superior, FOOBAR en el centro y las tareas restantes en el tercer nivel.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/837430ee-3159-4fe2-8e17-65168294ef1e.png)


**Todas las tareas están conectadas**

![\[RUNHELLO se conecta a FOOBAR, que se conecta a las tres tareas restantes.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/fe483348-9a6f-450b-87e6-ceae6b2bdaad.png)


**Estado del flujo de trabajo**

![\[Se produjo un error en la tarea FOOBAR y las tres tareas restantes están esperando.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/01c6f9fa-87e6-459a-b694-5e03dd7f7952/images/5ea4e239-fbbe-4fa4-9ffa-b7a9443b7975.png)


# Migración y réplica de archivos VSAM a Amazon RDS o Amazon MSK mediante Connect de Precisely
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely"></a>

*Prachi Khanna y Boopathy Gopalsamy, Amazon Web Services*

## Resumen
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-summary"></a>

Este patrón le muestra cómo migrar y replicar archivos del Método de Acceso a Almacenamiento Virtual (VSAM) de un mainframe a un entorno de destino en la nube de AWS mediante [Connect](https://www.precisely.com/product/precisely-connect/connect) de Precisely. Los entornos de destino indicados en este patrón incluyen Amazon Relational Database Service (Amazon RDS) y Amazon Managed Streaming para Apache Kafka (Amazon MSK). Connect emplea [registro de datos de cambios (CDC)](https://www.precisely.com/resource-center/productsheets/change-data-capture-with-connect) para supervisar continuamente las actualizaciones de sus archivos VSAM de origen y, a continuación, transferir estas actualizaciones a uno o más de sus entornos de destino de AWS. Puede usar este patrón para lograr sus objetivos de modernización de aplicaciones o análisis de datos. Por ejemplo, puede usar Connect para migrar los archivos de aplicaciones de VSAM a la nube de AWS con baja latencia, o migrar sus datos de VSAM a un almacenamiento de datos o lago de datos de AWS para realizar análisis que puedan tolerar latencias de sincronización superiores a las requeridas para la modernización de las aplicaciones.

## Requisitos previos y limitaciones
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-prereqs"></a>

**Requisitos previos **
+ [IBM z/OS V2R1](https://www-40.ibm.com/servers/resourcelink/svc00100.nsf/pages/zosv2r1-pdf-download?OpenDocument) o posterior
+ [CICS Transaction Server para z/OS (CICS TS) V5.1 o posterior (captura de datos CICS/VSAM](https://www.ibm.com/support/pages/cics-transaction-server-zos-51-detailed-system-requirements))
+ [IBM MQ 8.0](https://www.ibm.com/support/pages/downloading-ibm-mq-80) o posterior
+ Cumplimiento de los [requisitos de seguridad de z/OS (por ejemplo, la autorización de la APF](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-zOS/Prerequisites-for-z/OS/Security-authorization-requirements-for-z/OS) para cargar bibliotecas) SQData 
+ Registros de recuperación de VSAM activados
+ (Opcional) [Versión de recuperación de CICS VSAM (CICS VR)](https://www.ibm.com/docs/en/cics-vr/5.1?topic=started-introducing-cics-vr) para capturar automáticamente los registros de CDC
+ Una cuenta de AWS activa
+ Una [nube privada virtual (VPC) de Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html) con una subred a la que pueda acceder la plataforma antigua
+ Una licencia de VSAM Connect de Precisely

**Limitaciones**
+ Connect no admite la creación automática de tablas de destino basadas en cuadernos o esquemas VSAM de origen. Debe definir la estructura de la tabla de destino por primera vez.
+ En el caso de destinos que no son de transmisión, como Amazon RDS, debe especificar el mapeo entre el origen de la conversión y el destino en el script de configuración de Apply Engine.
+ Las funciones de registro, monitoreo y alerta se implementan a través de componentes externos (como Amazon CloudWatch) APIs y requieren que estén completamente operativas.

**Versiones de producto**
+ SQData 40134 para z/OS
+ SQData 4.0.43 para la Amazon Machine Image (AMI) de Amazon Linux en Amazon Elastic Compute Cloud (Amazon) EC2

## Arquitectura
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-architecture"></a>

**Pila de tecnología de origen**
+ Lenguaje de control de tareas (JCL)
+ Shell z/OS Unix e Instalación de Sistema Interactivo de Productividad (ISPF)
+ Utilidades VSAM (IDCAMS)

**Pila de tecnología de destino**
+ Amazon EC2
+ Amazon MSK
+ Amazon RDS
+ Amazon VPC

**Arquitectura de destino**

*Migración de archivos VSAM a Amazon RDS*

El siguiente diagrama muestra cómo migrar archivos VSAM a una base de datos relacional, como Amazon RDS, en tiempo real o casi en tiempo real mediante el CDC agent/publisher en el entorno de origen (mainframe local) y el [Apply Engine](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine) en el entorno de destino (nube de AWS).

![\[Diagram showing VSAM file migration from on-premises mainframe to Nube de AWS using CDC and Apply Engine.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4ee183bd-1c0d-449d-8cdc-eb6e2c41a695/images/47cefbde-e0c8-4c36-ba48-cccc2c443074.png)


El diagrama muestra el siguiente flujo de trabajo por lotes:

1. Connect registra los cambios en un archivo comparando los archivos VSAM de los archivos de copia de seguridad para identificar los cambios y, a continuación, los envía al flujo de registro.

1. El publicador consume los datos del flujo de registro del sistema.

1. El publicador comunica los cambios registrados en los datos a un motor de destino a través de TCP/IP. El controlador Daemon autentica la comunicación entre los entornos de origen y destino.

1. El Apply Engine del entorno de destino recibe los cambios del agente publicador y los aplica a una base de datos relacional o no relacional.

En el diagrama, se muestra el siguiente flujo on line:

1. Connect registra los cambios en el archivo online mediante una réplica de registro y, a continuación, transmite los cambios registrados a un flujo de registro.

1. El publicador consume los datos del flujo de registro del sistema.

1. El publicador comunica los cambios en los datos registrados al motor de destino a través de TCP/IP. El controlador Daemon autentica la comunicación entre los entornos de origen y destino.

1. El motor de implementación del entorno de destino recibe los cambios del agente publicador y los aplica a una base de datos relacional o no relacional.

*Migración de archivos VSAM a Amazon MSK*

El siguiente diagrama muestra cómo transmitir estructuras de datos de VSAM desde un mainframe a Amazon MSK en modo de alto rendimiento, y cómo generar automáticamente conversiones de esquemas JSON o AVRO que se integran con Amazon MSK.

![\[Diagram showing data flow from on-premises mainframe to Nube de AWS services via Amazon VPC.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/4ee183bd-1c0d-449d-8cdc-eb6e2c41a695/images/13eb27ad-c0d2-489b-91e1-5b2a729fb8dd.png)


El diagrama muestra el siguiente flujo de trabajo por lotes:

1. Connect registra los cambios en un archivo mediante CICS VR o comparando los archivos VSAM de los archivos de copia de seguridad para identificar los cambios. Los cambios registrados se envían al flujo de registro.

1. El publicador consume los datos del flujo de registro del sistema.

1. El publicador comunica los cambios en los datos registrados al motor de destino a través de TCP/IP. El controlador Daemon autentica la comunicación entre los entornos de origen y destino.

1. El motor replicador, que funciona en modo de procesamiento paralelo, divide los datos en una unidad de caché de trabajo.

1. Los subprocesos de trabajo registran los datos de la caché.

1. Los datos se publican en los temas de Amazon MSK desde los hilos de trabajo.

1. [Los usuarios aplican los cambios de Amazon MSK a destinos como Amazon DynamoDB, Amazon Simple Storage Service (Amazon S3) OpenSearch o Amazon Service mediante conectores.](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-connectors.html)

En el diagrama, se muestra el siguiente flujo on line:

1. Los cambios en el archivo online se registran mediante una réplica de registro. Los cambios registrados se envían al flujo de registro.

1. El publicador consume los datos del flujo de registro del sistema.

1. El publicador comunica los cambios en los datos registrados al motor de destino a través de TCP/IP. El controlador Daemon autentica la comunicación entre los entornos de origen y destino.

1. El motor replicador, que funciona en modo de procesamiento paralelo, divide los datos en una unidad de caché de trabajo.

1. Los subprocesos de trabajo registran los datos de la caché.

1. Los datos se publican en los temas de Amazon MSK desde los hilos de trabajo.

1. [Los usuarios aplican los cambios de Amazon MSK a destinos como DynamoDB, Amazon S3 o Service mediante OpenSearch conectores.](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-connectors.html)

## Tools (Herramientas)
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-tools"></a>
+ [Amazon Managed Streaming para Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) es un servicio completamente administrado que le permite crear y ejecutar aplicaciones que utilizan Apache Kafka para procesar datos de streaming.
+ [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.

## Epics
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-epics"></a>

### Prepare el entorno de origen (mainframe)
<a name="prepare-the-source-environment-mainframe"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale Connect CDC 4.1. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | Desarrollador/administrador de IBM Mainframe | 
| Configure el directorio zFS. | Para configurar un directorio zFS, siga las instrucciones de [Directorios de variables zFS](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-zOS/Prerequisites-for-z/OS/Security-authorization-requirements-for-z/OS/zFS-variable-directories) en la documentación de Precisely.Las configuraciones de Controller Daemon y Capture/Publisher agente se almacenan en el sistema de archivos de z/OS UNIX Systems Services (denominado ZfS). Los agentes de controlador Daemon, registrador, almacenamiento y publicador requieren una estructura de directorios zFS predefinida para almacenar un número reducido de archivos. | Desarrollador/administrador de IBM Mainframe | 
| Configure los puertos. TCP/IP  | Para configurar TCP/IP los puertos, siga las instrucciones de los [puertos TCP/IP](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-UNIX/Prerequisites-for-UNIX/Security-authorization-requirements-for-UNIX/TCP/IP-ports) de la documentación de Precily.El controlador Daemon requiere TCP/IP puertos en los sistemas de origen. Los puertos son referenciados por los motores en los sistemas de destino (donde se procesan los datos de cambios registrados). | Desarrollador/administrador de IBM Mainframe | 
| Cree un flujo de z/OS registro. | Para crear un flujo de registro de [z/OS, siga las instrucciones de [Create z/OS system LogStreams](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/IMS-z/OS/IMS-TM-EXIT-capture/Prepare-environment/Create-z/OS-system-logStreams?tocId=wy6243SXlIiEczwR8JE8WA)](https://www.ibm.com/docs/en/was/8.5.5?topic=SSEQTP_8.5.5/com.ibm.websphere.installation.zseries.doc/ae/cins_logstrm.html) en la documentación de Precily.Connect utiliza el flujo de registro para registrar y transmitir datos entre el entorno de origen y el entorno de destino durante la migración.Para ver un ejemplo de JCL que crea un z/OS LogStream, consulte [Crear flujos de registro z/OS del sistema](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/IMS-z/OS/IMS-TM-EXIT-capture/Prepare-environment/Create-z/OS-system-logStreams?tocId=wy6243SXlIiEczwR8JE8WA) en la documentación de Precily. | Desarrollador de Mainframe de IBM | 
| Identifique y autorice a IDs los usuarios de ZfS y a las tareas iniciadas. | Use RACF para conceder acceso al sistema de archivos OMVS zFS. Para ver un ejemplo de JCL, consulte [Identificar y autorizar el usuario de ZfS y la tarea iniciada IDs](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/IMS-z/OS/IMS-log-reader-capture/Prepare-environment/Identify-and-authorize-zFS-user-and-started-task-IDs?tocId=MrBXpFu~N0iAy~8VTrH0tQ) en la documentación de Precily. | Desarrollador/administrador de IBM Mainframe | 
| Genere las claves z/OS públicas/privadas y el archivo de claves autorizado. | Ejecute JCL para generar el par de claves. Para ver un ejemplo, consulte *Ejemplo de par de claves* en la sección de *Información adicional* de este patrón.Para obtener instrucciones, consulte [Generar claves z/OS públicas y privadas y un archivo de claves autorizadas](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/Db2-z/OS/Prepare-the-environment/Generate-z/OS-public-and-private-keys-and-authorized-key-file?tocId=fceE77dWT8smZsSaE~FeMQ) en la documentación de Precily. | Desarrollador/administrador de IBM Mainframe | 
| Active el registro replicado de CICS VSAM y adjúntelo al flujo de registro. | Ejecute el siguiente script de JCL.<pre> //STEP1 EXEC PGM=IDCAMS<br /> //SYSPRINT DD SYSOUT=*<br /> //SYSIN DD *<br />   ALTER SQDATA.CICS.FILEA -<br />   LOGSTREAMID(SQDATA.VSAMCDC.LOG1) -<br />   LOGREPLICATE</pre> | Desarrollador/administrador de IBM Mainframe | 
| Active el registro de recuperación de archivos de VSAM mediante FCT. | Modifique la tabla de control de archivos (FCT) para que refleje los siguientes cambios en los parámetros:<pre> Configure FCT Parms<br />   CEDA ALT FILE(name) GROUP(groupname)<br />   DSNAME(data set name)<br />   RECOVERY(NONE|BACKOUTONLY|ALL)<br />   FWDRECOVLOG(NO|1–99)<br />   BACKUPTYPE(STATIC|DYNAMIC)<br />   RECOVERY PARAMETERS<br />   RECOVery : None | Backoutonly | All<br />   Fwdrecovlog : No | 1-99<br />   BAckuptype : Static | Dynamic</pre> | Desarrollador/administrador de IBM Mainframe | 
| Configure el CDCz registro para el agente publicador. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | Desarrollador/administrador de IBM Mainframe | 
| Active el controlador Daemon. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | Desarrollador/administrador de IBM Mainframe | 
| Active el publicador. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | Desarrollador/administrador de IBM Mainframe | 
| Active el flujo de registro. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | Desarrollador/administrador de IBM Mainframe | 

### Prepare el entorno de destino (AWS)
<a name="prepare-the-target-environment-aws"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale Precily en una EC2 instancia. | Para instalar Connect from Precisely en la AMI de Amazon Linux para Amazon EC2, siga las instrucciones de [Instalar Connect CDC (SQData) en UNIX](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Installation/Install-Connect-CDC-SQData-on-UNIX) en la documentación de Precily. | AWS general | 
| Abra los TCP/IP puertos. | Para modificar el grupo de seguridad e incluir los puertos del controlador Daemon para el acceso entrante y saliente, siga las instrucciones de [TCP/IP](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/Change-data-capture/Transient-storage-and-publishing/TCP/IP) en la documentación de Precisely. | AWS general | 
| Cree directorios de archivos. | Para crear directorios de archivos, siga las instrucciones de [Preparación del entorno de aplicación de destino](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-targets/Kafka/Prepare-target-apply-environment) en la documentación de Precisely. | AWS general | 
| Cree el archivo de configuración de Apply Engine. | Cree el archivo de configuración de Apply Engine en el directorio de trabajo de Apply Engine. El siguiente ejemplo de archivo de configuración muestra Apache Kafka como destino:<pre>builtin.features=SASL_SCRAM<br />  security.protocol=SASL_SSL<br />  sasl.mechanism=SCRAM-SHA-512<br />  sasl.username=<br />  sasl.password=<br />  metadata.broker.list=</pre>Para obtener más información, consulte [Security](https://kafka.apache.org/documentation/#security) en la documentación de Apache Kafka. | AWS general | 
| Cree scripts para el procesamiento de Apply Engine. | Cree scripts para que Apply Engine procese los datos de origen y los replique en el destino. Para obtener más información, consulte [Crear un script de Apply Engine](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine/Apply-engine-script-development/Create-an-apply-engine-script) en la documentación de Precisely. | AWS general | 
| Ejecute los scripts. | Para iniciar el script, ejecute los comandos `SQDPARSE` y `SQDENG`. Para obtener más información, consulte [Analizar un script para zOS](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine/Apply-engine-script-development/Parse-a-script/Parse-a-script-for-zOS) en la documentación de Precisely. | AWS general | 

### Validar el entorno
<a name="validate-the-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide la lista de archivos VSAM y las tablas de destino para su procesamiento en CDC. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | AWS general, Mainframe | 
| Compruebe que el SQData producto Connect CDC esté vinculado. | Ejecute un trabajo de prueba y compruebe que el código de retorno de este trabajo es 0 (correcto).Los mensajes de estado de Connect CDC SQData Apply Engine deben mostrar mensajes de conexión activa. | AWS general, Mainframe | 

### Ejecute y valide casos de prueba (lote)
<a name="run-and-validate-test-cases-batch"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute el trabajo por lotes en el mainframe. | Ejecute el trabajo de aplicación por lotes con un JCL modificado. Incluya pasos en el JCL modificado para hacer lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | AWS general, Mainframe | 
| Comprobar el flujo de registros. | Compruebe el flujo de registro para confirmar que puede ver los datos de cambios del trabajo por lotes completado en el mainframe. | AWS general, Mainframe | 
| Valide los recuentos de la tabla de cambios delta de origen y de destino. | Para confirmar que se han contabilizado los registros, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | AWS general, Mainframe | 

### Ejecute y valide casos de prueba (On line)
<a name="run-and-validate-test-cases-online"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute la transacción online en una región CICS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely.html) | Desarrollador de Mainframe de IBM | 
| Comprobar el flujo de registros. | Confirme que el flujo de registro incluye los cambios específicos a nivel de registro. | Desarrollador de AWS Mainframe | 
| Valide el recuento en la base de datos de destino. | Supervise Apply Engine para comprobar el recuento a nivel de registro. | Precisely, Linux | 
| Valide los recuentos de registros y los registros de datos en la base de datos de destino. | Consulte la base de datos de destino para validar los recuentos de registros y los registros de datos. | AWS general | 

## Recursos relacionados
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-resources"></a>
+ [VSAM z/OS](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Setup-and-configure-sources/VSAM-z/OS) (documentación de Precisely)
+ [Apply engine](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Apply-engine) (documentación de Precisely)
+ [Motor de replicador](https://help.precisely.com/r/Connect-CDC-SQData/4.1.43/en-US/Connect-CDC-SQData-Help/Source-and-Target-Configuration/Replicator-engine) (documentación de Precisely)
+ [Flujo de registro](https://www.ibm.com/docs/en/zos/2.3.0?topic=logger-log-stream) (documentación de IBM)

## Información adicional
<a name="migrate-and-replicate-vsam-files-to-amazon-rds-or-amazon-msk-using-connect-from-precisely-additional"></a>

**Archivo de configuración de ejemplo**

Este es un archivo de configuración de ejemplo para un flujo de registro en el que el entorno de origen es un mainframe y el entorno de destino es Amazon MSK:

```
 
  -- JOBNAME -- PASS THE SUBSCRIBER NAME
  -- REPORT  progress report will be produced after "n" (number) of Source records processed.
  
  JOBNAME VSMTOKFK;
  --REPORT EVERY 100;
  -- Change Op has been ‘I’ for insert, ‘D’ for delete , and ‘R’ for Replace. For RDS it is 'U' for update
  -- Character Encoding on z/OS is Code Page 1047, on Linux and UNIX it is Code Page 819 and on Windows, Code Page 1252
  OPTIONS
  CDCOP('I', 'U', 'D'),
  PSEUDO NULL = NO,
  USE AVRO COMPATIBLE NAMES,
  APPLICATION ENCODING SCHEME = 1208;
  
  --       SOURCE DESCRIPTIONS
  
  BEGIN GROUP VSAM_SRC;
  DESCRIPTION COBOL ../copybk/ACCOUNT AS account_file;
  END GROUP;
  
  --       TARGET DESCRIPTIONS
  
  BEGIN GROUP VSAM_TGT;
  DESCRIPTION COBOL ../copybk/ACCOUNT AS account_file;
  END GROUP;
  
  --       SOURCE DATASTORE (IP & Publisher name)
  
  DATASTORE cdc://10.81.148.4:2626/vsmcdct/VSMTOKFK
  OF VSAMCDC
  AS CDCIN
  DESCRIBED BY GROUP VSAM_SRC ACCEPT ALL;
  
  --       TARGET DATASTORE(s) - Kafka and topic name
  
  DATASTORE 'kafka:///MSKTutorialTopic/key'
  OF JSON
  AS CDCOUT
  DESCRIBED BY GROUP VSAM_TGT FOR INSERT;
  
  --       MAIN SECTION
  
  PROCESS INTO
  CDCOUT
  SELECT
  {
  SETURL(CDCOUT, 'kafka:///MSKTutorialTopic/key')
  REMAP(CDCIN, account_file, GET_RAW_RECORD(CDCIN, AFTER), GET_RAW_RECORD(CDCIN, BEFORE))
  REPLICATE(CDCOUT, account_file)
  }
  FROM CDCIN;
```

**Ejemplo de par de claves**

Este es un ejemplo de cómo ejecutar JCL para generar el par de claves:

```
//SQDUTIL EXEC PGM=SQDUTIL //SQDPUBL DD DSN=&USER..NACL.PUBLIC, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=21200), // DISP=(,CATLG,DELETE),UNIT=SYSDA, // SPACE=(TRK,(1,1)) //SQDPKEY DD DSN=&USER..NACL.PRIVATE, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=21200), // DISP=(,CATLG,DELETE),UNIT=SYSDA, // SPACE=(TRK,(1,1)) //SQDPARMS DD  keygen //SYSPRINT DD SYSOUT= //SYSOUT DD SYSOUT=* //SQDLOG DD SYSOUT=* //*SQDLOG8 DD DUMMY
```

# Modernice la aplicación de CardDemo mainframe mediante AWS Transform
<a name="modernize-carddemo-mainframe-app"></a>

*Santosh Kumar Singh y Cheryl du Preez, Amazon Web Services*

## Resumen
<a name="modernize-carddemo-mainframe-app-summary"></a>

[AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html) se diseñó para acelerar la modernización de las aplicaciones de mainframe. Utiliza IA generativa para agilizar el proceso de modernización del mainframe. Automatiza tareas complejas, como el análisis de código heredado, la documentación del mainframe, la extracción de reglas empresariales, la descomposición de aplicaciones monolíticas en el dominio empresarial y la refactorización del código. Acelera los proyectos de modernización al automatizar tareas complejas, como el análisis de aplicaciones y la planificación de las secuencias de migración. Al descomponer las aplicaciones monolíticas, secuencia de AWS Transform forma inteligente la transformación de las aplicaciones del mainframe, lo que le ayuda a transformar las funciones empresariales en paralelo. AWS Transform puede acelerar la toma de decisiones y mejorar la agilidad operativa y la eficiencia de la migración.

Este patrón ofrece step-by-step instrucciones que le ayudarán a probar las capacidades de modernización del mainframe AWS Transform mediante [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo)el uso de un ejemplo de una aplicación de mainframe de código abierto.

## Requisitos previos y limitaciones
<a name="modernize-carddemo-mainframe-app-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ AWS IAM Identity Center, [habilitado](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)
+ [Permisos](https://docs.aws.amazon.com/transform/latest/userguide/security_iam_id-based-policy-examples.html#id-based-policy-examples-admin-enable-transform) que permiten a los administradores habilitar AWS Transform
+ [Permisos](https://docs.aws.amazon.com/transform/latest/userguide/security_iam_id-based-policy-examples.html#id-based-policy-examples-admin-connector) que permiten a los administradores aceptar solicitudes de conexión de Amazon Simple Storage Service (Amazon S3) para AWS Transform la aplicación web

**Limitaciones**
+ AWS Transform está disponible solo en algunos Regiones de AWS. Para obtener la lista completa de regiones admitidas, consulte [Supported Regions for AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/regions.html).
+ AWS Transform admite el análisis de código, la generación de documentos, la extracción de reglas empresariales, la descomposición y la refactorización del lenguaje común orientado a los negocios (COBOL) a Java. Para obtener más información, consulte [Capabilities and key features](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-features) y [Supported file types for transformation of mainframe applications](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-supported-files).
+ Hay una cuota de servicio para las capacidades de transformación del mainframe en AWS Transform. Para obtener más información, consulte [Cuotas para AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html).
+ Para poder colaborar en un espacio de trabajo compartido, todos los usuarios deben estar registrados en la misma instancia AWS IAM Identity Center que esté asociada a la instancia de la aplicación web. AWS Transform 
+ El bucket de Amazon S3 AWS Transform debe estar en la misma región Cuenta de AWS y.

## Arquitectura
<a name="modernize-carddemo-mainframe-app-architecture"></a>

En el siguiente diagrama se muestra la arquitectura que configuró en este patrón.

![\[Uso de AWS Transform para modernizar una aplicación del mainframe que se almacena en un bucket de Amazon S3.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/0e539474-b733-452d-b0fb-6b3f4cbd5075/images/75be6d78-5b43-448c-ad07-bf74b9ae14ad.png)


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

1. AWS Transform utiliza un conector para acceder a la aplicación de CardDemo mainframe, que está almacenada en un bucket de Amazon S3.

1. AWS Transform AWS IAM Identity Center se utiliza para administrar el acceso y la autenticación de los usuarios. El sistema implementa distintos niveles de controles de seguridad para la autenticación, la autorización, el cifrado y la administración del acceso para proteger el código y los artefactos durante el procesamiento. Los usuarios interactúan con el AWS Transform agente a través de una interfaz de chat. Puede dar instrucciones al agente de IA para realizar tareas específicas en inglés. Para obtener más información, consulte [Human in the loop (HITL)](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-hitl) en la AWS Transform documentación.

1. El agente de IA interpreta las instrucciones del usuario, crea un plan de trabajo, divide el trabajo en tareas ejecutables y lo ejecuta de forma autónoma. Los usuarios pueden revisar y aprobar la transformación. Estas son algunas de las tareas de transformación:
   + **Análisis de código**: AWS Transform analiza el código de cada archivo para obtener detalles como el nombre y el tipo de archivo, las líneas de código y sus rutas. El agente analiza el código fuente, ejecuta clasificaciones, crea asignaciones de las dependencias e identifica cualquier artefacto que falte. También identifica los componentes duplicados.
   + **Generación de documentos**: AWS Transform genera documentación para la aplicación de mainframe. Al analizar el código, puede crear automáticamente documentación detallada de los programas de las aplicaciones, así como descripciones de la lógica empresarial, los flujos, las integraciones y las dependencias que hay en los sistemas heredados.
   + **Extracción de la lógica empresarial**: AWS Transform analiza los programas de COBOL para documentar su lógica empresarial principal, a fin de ayudarlo a comprender la lógica empresarial fundamental.
   + **Descomposición del código**: AWS Transform descompone el código en dominios que tienen en cuenta las dependencias entre los programas y los componentes. La agrupación de archivos y programas relacionados en el mismo dominio mejora la organización y ayuda a preservar la estructura lógica de la aplicación al dividirla en componentes más pequeños.
   + **Planificación de la oleada de migración**: en función de los dominios que haya creado durante la fase de descomposición, AWS Transform genera un plan de migración con el orden de modernización recomendado.
   + **Refactorización de código**: AWS Transform refactoriza el código de todos los archivos de dominio o de algunos de ellos en código Java. El objetivo de este paso es preservar la lógica empresarial fundamental de la aplicación y, al mismo tiempo, refactorizarla para convertirla en una aplicación de Java modernizada y optimizada para la nube.

1. AWS Transform almacena el código refactorizado, los documentos generados, los artefactos asociados y las bibliotecas de tiempo de ejecución en su bucket de Amazon S3. Se puede hacer lo siguiente:
   + Acceda a la carpeta del tiempo de ejecución del bucket de Amazon S3.
   + Cree e implemente la aplicación siguiendo las instrucciones de la documentación sobre cómo [crear e implementar la aplicación modernizada después](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow-build-deploy.html) de la refactorización. AWS Transform 
   + A través de la interfaz de chat, solicite y descargue una muestra o una plantilla Terraform de AWS CloudFormation AWS Cloud Development Kit (AWS CDK) Hashicorp. Estas plantillas pueden ayudarlo a implementar los AWS recursos necesarios para respaldar la aplicación refactorizada.
   + Utilice [Reforge](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-refactor-code-reforge) para mejorar la calidad del código refactorizado mediante el uso de modelos de lenguaje de gran tamaño (). LLMs El motor de refactorización conserva la equivalencia funcional de COBOL y, al mismo tiempo, la transforma en código Java. El uso de Reforge es un paso opcional que está disponible después de la transformación. Este paso se utiliza LLMs para reestructurar el código para que se parezca mucho al Java nativo, lo que puede mejorar la legibilidad y el mantenimiento. Reforge también agrega comentarios legibles por humanos para ayudarlo a entender el código e implementa patrones de programación modernos y prácticas recomendadas.

## Tools (Herramientas)
<a name="modernize-carddemo-mainframe-app-tools"></a>

**Servicios de AWS**
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html)utiliza la IA agentic para ayudarlo a acelerar la modernización de las cargas de trabajo heredadas, como .NET, los mainframes y las cargas de trabajo. VMware 
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)le ayuda a gestionar de forma centralizada el acceso mediante inicio de sesión único (SSO) a sus aplicaciones y a las de la nube. 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.

**Repositorio de código**

Puede utilizar la aplicación de AWS [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo)mainframe de código abierto como ejemplo de aplicación para empezar a modernizar el mainframe.

## Prácticas recomendadas
<a name="modernize-carddemo-mainframe-app-best-practices"></a>
+ **Comience de a poco**: comience con un código pequeño y menos complejo (entre 15 000 y 20 000 líneas de código) para comprender cómo se AWS Transform analizan y transforman las aplicaciones de mainframe.
+ **Combínelo con la experiencia humana**: utilícelo AWS Transform como acelerador y, al mismo tiempo, aplique la experiencia humana para obtener resultados óptimos.
+ **Haga revisiones y pruebas minuciosas**: revise siempre detenidamente el código transformado y ejecute pruebas exhaustivas para validar la equivalencia funcional después de la transformación.
+ Envía **comentarios**: para enviar comentarios y sugerencias de mejora, utiliza el botón **Enviar comentarios** del Consola de administración de AWS o crea un caso con [AWS Support](https://support.console.aws.amazon.com/). Para obtener más información, consulte [Creación de un caso de soporte](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html). Sus comentarios son valiosos para poder mejorar y seguir desarrollando el servicio.

## Epics
<a name="modernize-carddemo-mainframe-app-epics"></a>

### Preparación de la aplicación del mainframe
<a name="prepare-the-mainframe-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un bucket. | Cree un bucket de Amazon S3 en la misma Cuenta de AWS región en la que AWS Transform está activado. Utiliza este depósito para almacenar el código de la aplicación del mainframe y AWS Transform utiliza este depósito para almacenar los documentos generados, el código refactorizado y otros archivos asociados a la transformación. Para obtener instrucciones, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la documentación de Amazon S3. | AWS general | 
| Prepare la aplicación del mainframe de ejemplo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | Desarrollador de aplicaciones, ingeniero DevOps  | 

### Configure el Centro de Identidad de IAM y AWS Transform
<a name="configure-sso-and-trn"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Agregue usuarios a IAM Identity Center. | Agregue los posibles usuarios a IAM Identity Center. Siga las instrucciones de la documentación sobre cómo [añadir usuarios al Centro de identidades de IAM](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-management.html#transform-add-idc-users). AWS Transform  | Administrador de AWS | 
| Habilite AWS Transform y añada usuarios. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | Administrador de AWS | 
| Configure el acceso de los usuarios a la aplicación AWS Transform web. | Cada usuario debe aceptar la invitación para acceder a la aplicación AWS Transform web. Siga las instrucciones que se indican en [la AWS Transform documentación sobre cómo aceptar la invitación](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-onboarding.html#transform-user-invitation). | Desarrollador de aplicaciones, propietario de la aplicación | 
| Inicie sesión en la aplicación AWS Transform web. | Siga las instrucciones que se indican [en Iniciar sesión en AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-onboarding.html#transform-user-signin). | Desarrollador de aplicaciones, propietario de la aplicación | 
| Configure un espacio de trabajo. | Configure un espacio de trabajo en el que los usuarios puedan colaborar en la aplicación AWS Transform web. Siga las instrucciones de la AWS Transform documentación sobre cómo [iniciar su proyecto](https://docs.aws.amazon.com/transform/latest/userguide/transform-environment.html#start-workflow). | Administrador de AWS | 

### Transformación de la aplicación del mainframe
<a name="transform-the-mainframe-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un trabajo de transformación. | Cree un trabajo de transformación para modernizar la aplicación de CardDemo mainframe. Para obtener instrucciones, consulte [Crear e iniciar un trabajo](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-start-job) en la AWS Transform documentación. Cuando se le pida que defina los objetivos en la interfaz de AWS Transform chat, elija **Realizar la modernización del mainframe ( z/OS a IBM AWS) y, a** continuación, elija **Analizar código, Generar documentación técnica, Lógica empresarial, Descomponer código, Planificar la secuencia de migración y Transformar código a Java**. | Desarrollador de aplicaciones, propietario de la aplicación | 
| Configure el conector. | Establezca un conector al bucket de Amazon S3 que contiene la aplicación de CardDemo mainframe. Este conector permite acceder AWS Transform a los recursos del bucket y realizar funciones de transformación consecutivas. Para obtener instrucciones, consulte [Configurar un conector](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-setup-connector) en la AWS Transform documentación. | Administrador de AWS | 
| Realice el análisis del código. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)Para obtener más información, consulte [Análisis de código](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-code-analysis) en la AWS Transform documentación. | Desarrollador de aplicaciones, propietario de la aplicación | 
| Genere la documentación técnica. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)Para obtener más información, consulte [Generar documentación técnica](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-generate-documentation) en la AWS Transform documentación. | Desarrollador de aplicaciones, propietario de la aplicación | 
| Extraiga la lógica empresarial. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)Para obtener más información, consulte [Extraer la lógica empresarial](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-extract-business-logic) en la AWS Transform documentación. | Desarrollador de aplicaciones, propietario de la aplicación | 
| Descomponga el código. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)Para obtener más información sobre la descomposición y las semillas, consulte [Descomposición en la documentación](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-decomposition). AWS Transform  | Desarrollador de aplicaciones, propietario de la aplicación | 
| Planifique las oleadas de migración. | Planifique las oleadas de migración de la CardDemo aplicación. Siga las instrucciones que aparecen en la AWS Transform documentación sobre la [planificación de la oleada de migración](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-wave-planning) para revisar y editar el plan de oleada. | Desarrollador de aplicaciones, propietario de la aplicación | 
| Refactorice el código | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html) | Desarrollador de aplicaciones, propietario de la aplicación | 
| (Opcional) Utilice Reforge para mejorar el código de Java. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)Para obtener más información, consulte [Reforge](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-refactor-code-reforge) en la AWS Transform documentación. | Desarrollador de aplicaciones, propietario de la aplicación | 
| Optimice la implementación. | AWS Transform puede proporcionar plantillas de infraestructura como código (IaC) para Terraform o CloudFormation AWS CDK Terraform. Estas plantillas lo ayudan a implementar los componentes principales, como los recursos de computación, base de datos, almacenamiento y seguridad.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)Para obtener más información, consulte [Capacidades de implementación](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-features-deployment) en la AWS Transform documentación. | Desarrollador de aplicaciones, propietario de la aplicación | 

## Resolución de problemas
<a name="modernize-carddemo-mainframe-app-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| No puede ver el código fuente ni el documento generado en la aplicación AWS Transform web. | Añada una política al permiso CORS para que el bucket de Amazon S3 la permita AWS Transform como origen. Para obtener más información, consulte los [permisos CORS del bucket S3](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-setup-connector-s3) en la AWS Transform documentación. | 

## Recursos relacionados
<a name="modernize-carddemo-mainframe-app-resources"></a>

**AWS documentación**
+ [Transformación de aplicaciones de mainframe](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html) (AWS Transform documentación)

**Otros recursos AWS **
+ [Acelere su proceso de modernización del mainframe utilizando agentes de IA con AWS Transform](https://aws.amazon.com/blogs/migration-and-modernization/accelerate-your-mainframe-modernization-journey-using-ai-agents-with-aws-transform/) (AWS entrada del blog)
+ [AWS Transform FAQs](https://aws.amazon.com/transform/faq/)
+ [AWS IAM Identity Center FAQs](https://aws.amazon.com/iam/identity-center/faqs/)

**Videos y tutoriales**
+ [Introducción a Amazon Q Developer: Transform](https://explore.skillbuilder.aws/learn/courses/21893/aws-flash-introduction-to-amazon-q-developer-transform) (AWS Skill Builder)
+ [AWS re:Invent 2024: Modernice las aplicaciones de mainframe más rápido con Amazon Q Developer](https://www.youtube.com/watch?v=pSi0XtYfY4o) () YouTube
+ [AWS re:Invent 2024: Automatizar la migración](https://www.youtube.com/watch?v=9FjxnEoH5wg) y la modernización para acelerar la transformación () YouTube
+ [AWS re:Invent 2024: Toyota impulsa la innovación y mejora la eficiencia operativa](https://www.youtube.com/watch?v=_NXc1MJenw4) con la generación de IA () YouTube

**nota**  
AWS Transform anteriormente se conocía como *transformación de Amazon Q Developer para mainframe.*

# Modernice e implemente aplicaciones de mainframe con Terraform AWS Transform
<a name="modernize-mainframe-app-transform-terraform"></a>

*Mason Cahill, Polaris Jhandi, Prachi Khanna, Sivasubramanian Ramani y Santosh Kumar Singh, Amazon Web Services*

## Resumen
<a name="modernize-mainframe-app-transform-terraform-summary"></a>

[AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html)puede acelerar la modernización a gran escala de .NET, el mainframe y las cargas VMware de trabajo. Implementa agentes de IA especializados que automatizan las tareas complejas como las evaluaciones, el análisis de código, la refactorización, la descomposición, la asignación de dependencias, la validación y la planificación de la transformación. [Este patrón demuestra cómo AWS Transform modernizar una aplicación de mainframe y luego implementarla en la AWS infraestructura mediante Hashicorp Terraform.](https://developer.hashicorp.com/terraform/intro) Estas step-by-step instrucciones le ayudan a pasar de COBOL a una aplicación Java moderna [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo), que es un ejemplo de aplicación de mainframe de código abierto.

## Requisitos previos y limitaciones
<a name="modernize-mainframe-app-transform-terraform-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS
+ Permisos administrativos para crear AWS recursos e implementar aplicaciones
+ La versión 1.5.7 o posterior de Terraform [configurada](https://developer.hashicorp.com/terraform/tutorials/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS)
+ AWS [Proveedor de Terraform, configurado](https://registry.terraform.io/providers/hashicorp/aws/2.36.0/docs#authentication)
+ AWS IAM Identity Center[, activado](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)
+ AWS Transform, [habilitado](https://docs.aws.amazon.com/transform/latest/userguide/getting-started.html)
+ Un usuario [incorporado a un](https://docs.aws.amazon.com/transform/latest/userguide/transform-user-management.html) espacio de AWS Transform trabajo con un rol de colaborador que puede ejecutar tareas de transformación

**Limitaciones**
+ AWS Transform solo está disponible en algunos. Regiones de AWS Para obtener la lista completa de regiones admitidas, consulte [Supported Regions for AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/regions.html).
+ Hay una cuota de servicio para las capacidades de transformación del mainframe en AWS Transform. Para obtener más información, consulte [Cuotas para AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html).
+ Para colaborar en un espacio de trabajo compartido, todos los usuarios deben ser usuarios registrados de la misma instancia AWS IAM Identity Center que esté asociada a tu instancia de la aplicación AWS Transform web.
+ El bucket de Amazon Simple Storage Service (Amazon S3) debe estar en la Cuenta de AWS misma región AWS Transform y.

## Arquitectura
<a name="modernize-mainframe-app-transform-terraform-architecture"></a>

El siguiente diagrama muestra la end-to-end modernización de la aplicación antigua y su implementación en Nube de AWS. Las credenciales de la aplicación y la base de datos se almacenan en AWS Secrets Manager, y Amazon CloudWatch proporciona capacidades de monitoreo y registro.

![\[AWS Transform moderniza una aplicación de mainframe y la implementación mediante Terraform.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/78bc1e6e-cd3d-4c6d-ae4b-0675a6898fd9/images/332ccf35-f55a-449e-a05d-7e321b3867b7.png)


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

1. A través de él AWS IAM Identity Center, el usuario se autentica y accede al AWS Transform . Cuenta de AWS

1. El usuario carga el código de mainframe COBOL en el bucket de Amazon S3 e inicia la transformación en AWS Transform.

1. AWS Transform moderniza el código COBOL para convertirlo en código Java nativo de la nube y almacena el código modernizado en el bucket de Amazon S3.

1. Terraform crea la AWS infraestructura para implementar la aplicación modernizada, que incluye un Application Load Balancer, una instancia de Amazon Elastic Compute Cloud (Amazon EC2) y una base de datos del Amazon Relational Database Service (Amazon RDS). Terraform implementa el código modernizado en la instancia de Amazon EC2.

1. Los archivos VSAM se cargan en Amazon EC2 y se migran de Amazon EC2 a la base de datos de Amazon RDS.

## Tools (Herramientas)
<a name="modernize-mainframe-app-transform-terraform-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) brinda capacidad de computación escalable en la Nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez. En este patrón, las instancias de clúster de conmutación por error de SQL Server se instalan en las instancias de Amazon EC2.
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)le ayuda a gestionar de forma centralizada el acceso mediante el inicio de sesión único (SSO) a sus aplicaciones y a las de la nube. Cuentas de AWS 
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) lo ayuda a configurar, utilizar y escalar una base de datos relacional en la Nube de AWS.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) lo ayuda a reemplazar las credenciales codificadas en su código, incluidas contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html)utiliza la IA agentic para ayudarlo a acelerar la modernización de las cargas de trabajo antiguas, como .NET, los mainframes y las cargas de trabajo. VMware 

**Otras herramientas**
+ [Apache Maven](https://maven.apache.org/) es una herramienta de automatización de compilaciones y administración de proyectos de software de código abierto para proyectos de Java.
+ [Apache Tomcat](https://tomcat.apache.org/) es un contenedor de servlets de código abierto y un servidor web para el código Java.
+ [HashiCorp Terraform](https://www.terraform.io/docs) es una herramienta de infraestructura como código (IaC) que facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube.
+ [Spring Boot](https://spring.io/projects/spring-boot) es un marco de código abierto que se creó sobre Spring Boot Framework en Java.

**Repositorio de código**

[El código de este patrón está disponible en el repositorio E2E de Mainframe Transformation GitHub .](https://github.com/aws-samples/sample-mainframe-transformation-e2e) Este patrón utiliza la aplicación de AWS [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo)mainframe de código abierto como aplicación de ejemplo.

## Prácticas recomendadas
<a name="modernize-mainframe-app-transform-terraform-best-practices"></a>
+ Asigne la propiedad total del código y los recursos destinados a la migración.
+ Desarrolle y pruebe una prueba de concepto antes de escalar a una migración completa.
+ Garantice la implicación de todas las partes interesadas.
+ Establezca canales de comunicación claros.
+ Defina y documente los requisitos para un producto mínimo viable (MVP).
+ Establezca criterios de éxito claros.

## Epics
<a name="modernize-mainframe-app-transform-terraform-epics"></a>

### Preparación y carga del código de la aplicación del mainframe
<a name="prepare-and-upload-the-mainframe-application-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear un bucket. | Cree un bucket de Amazon S3 en la misma Cuenta de AWS región en la que AWS Transform está activado. Este depósito se utiliza para almacenar el código de la aplicación del mainframe, los datos y los scripts adicionales necesarios para crear y ejecutar la aplicación. AWS Transform utiliza este depósito para almacenar el código refactorizado y otros archivos asociados a la transformación. Para obtener instrucciones, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la documentación de Amazon S3. | AWS general, administrador de AWS | 
| Configure los permisos de CORS para el bucket. | Al configurar su depósito para el AWS Transform acceso, debe configurar el uso compartido de recursos de origen cruzado (CORS) para el depósito. Si no se ha configurado correctamente, es posible que no pueda utilizar las funciones de visualización en línea o de comparación de archivos de AWS Transform. Para obtener instrucciones sobre cómo configurar CORS para un bucket, consulte [Uso compartido de recursos entre orígenes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html) en el bucket de Amazon S3. Para conocer la política, consulta los [permisos CORS del bucket de S3](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-setup-connector-s3) en la documentación. AWS Transform  | AWS general, administrador de AWS | 
| Prepare el código de la aplicación del mainframe de ejemplo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | AWS general, desarrollador de aplicaciones | 

### Transformación de la aplicación del mainframe
<a name="transform-the-mainframe-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el AWS Transform trabajo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicaciones, propietario de la aplicación | 
| Configure un conector. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicaciones, propietario de la aplicación | 
| Transforme el código. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicaciones, propietario de la aplicación | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice las plantillas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html)En el caso de los entornos de producción o similares a los de producción, configure componentes de seguridad adicionales. Por ejemplo, habilite las [protecciones de AWS WAF para el equilibrador de carga de aplicación](https://aws.amazon.com/about-aws/whats-new/2024/02/aws-application-load-balancer-one-click-waf-integrations/). | AWS general, 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/modernize-mainframe-app-transform-terraform.html) | Terraform | 

### Instalación y configuración de Apache Tomcat en la instancia de Amazon EC2
<a name="install-and-configure-apache-tomcat-on-the-ec2-instance"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el software necesario. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 
| Verifique la instalación del software. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 

### Compilación y empaquetado del código de la aplicación modernizada
<a name="compile-and-package-the-modernized-application-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descargue y extraiga el código generado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 
| Compile la aplicación modernizada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la base de datos y los esquemas JICS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 
| Valide la creación de la base de datos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 
| Migre los datos a la base de datos de JICS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 

### Instalación de la aplicación modernizada
<a name="install-the-modernized-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale la aplicación modernizada en la instancia de Amazon EC2. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicaciones, arquitecto de la nube | 
| Reinicie el servidor de Tomcat. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicaciones, arquitecto de la nube | 
| Migre el conjunto de datos de VSAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicación, ingeniero de migraciones | 
| Actualice los parámetros en los scripts de Groovy. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador de aplicaciones | 

### Pruebe la aplicación
<a name="test-the-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Pruebe la aplicación modernizada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador, ingeniero de pruebas | 
| Compruebe los scripts del lote. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | Desarrollador, ingeniero de pruebas | 

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Prepárese para eliminar la infraestructura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | AWS general | 
| Configurar la infraestructura. | Estos pasos eliminarán sus recursos de forma permanente. Asegúrese de haber realizado una copia de seguridad de todos los datos importantes antes de continuar.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | AWS general | 

## Resolución de problemas
<a name="modernize-mainframe-app-transform-terraform-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Autenticación de Terraform | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 
| Errores relacionados con Tomcat | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-app-transform-terraform.html) | 
| El nombre de la URL no se carga | Asegúrese de que el grupo de seguridad del equilibrador de carga de aplicación tenga su dirección IP en la regla de entrada como origen. | 
| Problema de autenticación en el registro de Tomcat | Confirme que la contraseña secreta de la base de datos AWS Secrets Manager y la contraseña del **archivo server.xml** coinciden. | 

## Recursos relacionados
<a name="modernize-mainframe-app-transform-terraform-resources"></a>

**AWS Guía prescriptiva**
+ [Modernice la aplicación de CardDemo mainframe con AWS Transform](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/modernize-carddemo-mainframe-app.html)

**AWS documentación de servicio**
+ [AWS Consola de administración de Blue Age Blusam](https://docs.aws.amazon.com/m2/latest/userguide/ba-shared-bac-userguide.html)
+ [Requisitos de configuración de la infraestructura para AWS Blu Age Runtime (no gestionada)](https://docs.aws.amazon.com/m2/latest/userguide/ba-infrastructure-setup.html)
+ [Incorporación de AWS Blu Age Runtime](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-setup-onboard.html)
+ [Modernización de las aplicaciones de mainframe](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/transform-app-mainframe.html)
+ [Configure la configuración de AWS Blu Age Runtime](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)

**AWS publicaciones de blog**
+ [Acelere su proceso de modernización del mainframe con agentes de IA con AWS Transform](https://aws.amazon.com/blogs/migration-and-modernization/accelerate-your-mainframe-modernization-journey-using-ai-agents-with-aws-transform/)

# Modernice la administración de la producción del mainframe AWS mediante Rocket Enterprise Server y LRS X PageCenter
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx"></a>

*Shubham Roy, Amazon Web Services*

*Abraham Rondon, Micro Focus*

*Guy Tucker, Levi, Ray and Shoup Inc*

## Resumen
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-summary"></a>

Al modernizar la administración de la producción de su mainframe, puede ahorrar costos, mitigar la deuda técnica que implica el mantenimiento de los sistemas heredados y mejorar la resiliencia y la agilidad mediante las tecnologías nativas de la DevOps nube de Amazon Web Services (AWS). Este patrón muestra cómo modernizar las cargas de trabajo de administración de la producción de mainframe críticas para la empresa en la nube de AWS. El modelo utiliza [Rocket Enterprise Server](https://www.rocketsoftware.com/en-us/products/enterprise-suite/enterprise-server) como entorno de ejecución para una aplicación de mainframe modernizada, con Levi, Ray & Shoup, Inc. (LRS) VPSX/MFI (Micro Focus Interface) como servidor de impresión y LRS X como servidor de archivos. PageCenter El LRS PageCenter X ofrece soluciones de administración de resultados para ver, indexar, buscar, archivar y proteger el acceso a los resultados empresariales.

El patrón se basa en el enfoque de modernización del mainframe a través de [redefinir la plataforma.](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/) Las aplicaciones de mainframe se migran mediante [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) a Amazon Elastic Compute Cloud (Amazon EC2). Las cargas de trabajo de administración de resultados de mainframe se migran a Amazon EC2, y una base de datos de mainframe, como IBM Db2 (para), funciona con z/OS, is migrated to Amazon Relational Database Service (Amazon RDS). The LRS Directory Integration Server (LRS/DIS AWS Directory Service para Microsoft Active Directory para la autenticación y autorización del flujo de trabajo de administración de resultados.

## Requisitos previos y limitaciones
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa.
+ Una carga de trabajo de administración de la producción de mainframe.
+ Conocimientos básicos sobre cómo volver a compilar y entregar una aplicación de mainframe que se ejecute en Rocket Enterprise Server. Para obtener más información, consulte la ficha técnica de [Rocket Enterprise Server](https://www.rocketsoftware.com/sites/default/files/resource_files/enterprise-server.pdf) en la documentación de Rocket Software.
+ Conocimientos básicos de las soluciones y los conceptos de impresión en la nube de LRS. Para obtener más información, consulte *Output Modernization* (Modernización de la producción) en la documentación del LRS.
+ Software y licencia de Rocket Enterprise Server. Para obtener más información, contacte con [Rocket Software](https://www.rocketsoftware.com/products/enterprise-suite/request-contact).
+ VPSX/MFI, LRS PageCenterX, LRS/Queue, and LRS/DISSoftware y licencias de LRS. Para obtener más información, [póngase en contacto con LRS](https://www.lrsoutputmanagement.com/about-us/contact-us/). Debe proporcionar los nombres de host de las EC2 instancias en las que se instalarán los productos LRS.


| 
| 
| Nota: Para obtener más información sobre las consideraciones de configuración de las cargas de trabajo de administración de la salida de mainframe, consulte *Consideraciones* en la sección [Información adicional](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional) de este patrón. | 
| --- |

**Versiones de producto**
+ [Rocket Enterprise Server 10.0](https://www.rocketsoftware.com/products/enterprise-suite/enterprise-test-server)
+ [LRS VPSX/MFI](https://www.lrsoutputmanagement.com/products/modernization-products/)
+ [LRS PageCenter X](https://www.lrsoutputmanagement.com/products/content-management/pagecenterx-for-open-systems/) V1R3 o posterior

## Arquitectura
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-architecture"></a>

**Pila de tecnología de origen**
+ Sistema operativo: IBM z/OS
+ Lenguaje de programación: Common Business-Oriented Language (COBOL), Job Control Language (JCL) y Customer Information Control System (CICS)
+ Base de datos: IBM Db2 para z/OS, base de datos del Sistema de Gestión de la Información de IBM (IMS) y Método de acceso al almacenamiento virtual (VSAM)
+ Seguridad: Resource Access Control Facility (RACF), CA Top Secret for z/OS y Access Control Facility 2 () ACF2
+ Soluciones de impresión y archivado: productos de impresión y z/OS salida para mainframes de IBM (IBM Infoprint Server for z/OS, LRS y CA Deliver) y soluciones de archivado (CA Deliver, ASG Mobius o CA Bundle)

**Arquitectura de origen**

El diagrama siguiente muestra una arquitectura de estado actual tipo para una carga de trabajo de administración de la producción de mainframe.

![\[Proceso de la salida de mainframe en siete pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/d170394a-c9b2-43c0-a3d4-677b5f7c2473.png)


El diagrama muestra el siguiente flujo de trabajo:

1. Los usuarios llevan a cabo transacciones comerciales en un sistema de participación (SoE) que se basa en una aplicación CICS de IBM escrita en COBOL.

1. El SoE invoca el servicio de mainframe, que registra los datos de las transacciones comerciales en una base de datos (SoR) como IBM Db2 for z/OS. system-of-records

1. El SoR conserva los datos comerciales del SoE.

1. El programador de trabajos por lotes inicia un trabajo por lotes para generar resultados de impresión.

1. El trabajo por lotes extrae los datos de la base de datos. Formatea los datos de acuerdo con los requisitos comerciales y, a continuación, genera producción empresarial, como extractos de facturación, tarjetas de identidad o extractos de préstamos. Por último, el trabajo por lotes dirige la producción a la administración de la producción para formatear, publicar y almacenar los resultados en función de los requisitos empresariales.

1. La administración de la producción recibe los resultados del trabajo por lotes. La gestión de salida indexa, organiza y publica la salida en un destino específico del sistema de gestión de salida, como las soluciones LRS PageCenter X (como se demuestra en este patrón) o CA View.

1. Los usuarios pueden ver, buscar y recuperar los resultados.

**Pila de tecnología de destino**
+ Sistema operativo: Windows Server que se ejecuta en Amazon EC2
+ Informática — Amazon EC2
+ Almacenamiento: Amazon Elastic Block Store (Amazon EBS) y FSx Amazon para Windows File Server
+ Lenguaje de programación: COBOL, JCL y CICS
+ Bases de datos: Amazon RDS
+ Seguridad: AWS Managed Microsoft AD
+ Impresión y archivado: solución de impresión LRS (VPSX) y archivado (PageCenterX) en AWS
+ Entorno de tiempo de ejecución de mainframe: Rocket Enterprise Server

**Arquitectura de destino**

El diagrama siguiente muestra una arquitectura para una carga de trabajo de administración de la producción de mainframe que se implementa en la nube de AWS.

![\[Arquitectura de destino para la administración por lotes de aplicaciones y la salida en siete pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/3e25ab03-bf3a-4fea-b5eb-38cea9e50138.png)


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

1. El programador de trabajos por lotes inicia un trabajo por lotes para generar la producción, como extractos de facturación, tarjetas de identificación o extractos de préstamos.

1. El trabajo por lotes del mainframe ([rediseñado para Amazon EC2](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)) utiliza el tiempo de ejecución de Rocket Enterprise Server para extraer datos de la base de datos de la aplicación, aplicar lógica empresarial a los datos y formatear los datos. A continuación, envía los datos a un destino de salida mediante el [módulo de salida de la impresora de Rocket Software (documentación](https://www.microfocus.com/documentation/enterprise-developer/ed100/ED-Eclipse/HCOMCMJCLOU020.html) de OpenText Micro Focus).

1. La base de datos de la aplicación (un SoR que se ejecuta en Amazon RDS) conserva los datos para su impresión.

1. La solución de VPSX/MFI impresión LRS se implementa en Amazon EC2 y sus datos operativos se almacenan en Amazon EBS. LRS VPSX/MFI utiliza el agente de TCP/IP-based LRS/Queue transmisión para recopilar los datos de salida a través de la API JES Print Exit de Rocket Software.

   LRS VPSX/MFI realiza el preprocesamiento de datos, como la traducción de EBCDIC a ASCII. También realiza tareas más complejas, como la conversión de flujos de datos exclusivos de computadoras centrales, como IBM Advanced Function Presentation (AFP) y Xerox Line Conditioned Data Stream (LCDS), en flujos de datos más comunes de visualización e impresión, como el lenguaje de comandos de impresora (PCL) y el PDF.

   Durante el período de mantenimiento del LRS PageCenter X, el LRS conserva la cola de salida y VPSX/MFI sirve de respaldo para la cola de salida. El LRS VPSX/MFI conecta y envía la salida al LRS PageCenter X mediante el protocolo. LRS/Queue LRS/Queue realiza un intercambio de información sobre la preparación y la finalización de los trabajos para garantizar que se produzca la transferencia de datos.

   **Notas:**

   Para obtener más información sobre los datos de impresión que se transmiten desde Rocket Software Print Exit a LRS/Queue los mecanismos de procesamiento por lotes de mainframe VPSX/MFI compatibles con el LRS, consulte *Captura de datos de impresión* en la sección de [información adicional](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional).

   El LRS VPSX/MFI puede realizar comprobaciones de estado a nivel de flota de impresoras. Para obtener más información, consulte *Printer-fleet health checks* (Comprobaciones de estado de la flota de impresoras) en la sección [Additional information](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional) (Información adicional) de este patrón.

1. La solución de administración de salida LRS PageCenter X se implementa en Amazon EC2 y sus datos operativos se almacenan en Amazon FSx for Windows File Server. LRS PageCenter X proporciona un sistema central de gestión de informes de todos los archivos importados a LRS PageCenter X y permite a todos los usuarios acceder a los archivos. Los usuarios pueden ver el contenido de un archivo específico o realizar búsquedas de criterios coincidentes en varios archivos.

   El LRS/NetX componente es un servidor de aplicaciones web multiproceso que proporciona un entorno de ejecución común para la aplicación LRS PageCenter X y otras aplicaciones LRS. El componente LRS/Web Connect está instalado en el servidor web y proporciona un conector desde el servidor web al servidor de aplicaciones LRS/NetX web.

1. El LRS PageCenter X proporciona almacenamiento para los objetos del sistema de archivos. Los datos operativos del LRS PageCenter X se almacenan en Amazon FSx for Windows File Server.

1. AWS Managed Microsoft AD lleva a cabo la autenticación y la autorización de la administración de la producción con LRS/DIS.

**nota**  
La solución de destino no suele requerir cambios en la aplicación para adaptarse a los lenguajes de formato de mainframe, como IBM AFP o Xerox LCDS.

**Arquitectura de infraestructura de AWS**

El diagrama siguiente muestra una arquitectura de infraestructura de AWS segura y de alta disponibilidad para una carga de trabajo de administración de la producción de mainframe.

![\[Infraestructura multi-AZ de AWS con un flujo de trabajo en siete pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/images/8d8aa995-b576-4ecd-8a7c-5f566740a515.png)


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

1. El programador de lotes inicia el proceso por lotes y se implementa EC2 en Amazon en varias [zonas de disponibilidad](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) para una alta disponibilidad (HA).
**nota**  
Este patrón no incluye la implementación del programador de lotes. Para obtener más información acerca de la implementación, consulte la documentación del proveedor de software del programador.

1. El trabajo por lotes dela computadora central (escrito en un lenguajes de programación como JCL o COBOL) utiliza la lógica empresarial básica para procesar y generar la producción de impresión, como extractos de facturación, tarjetas de identificación y extractos de préstamos. El trabajo por lotes se implementa en Amazon en EC2 dos zonas de disponibilidad para alta disponibilidad. Utiliza la API Print Exit de Rocket Software para enrutar la salida de impresión al LRS VPSX/MFI para el preprocesamiento de los datos.

1. El servidor de VPSX/MFI impresión LRS se implementa en Amazon en dos zonas EC2 de disponibilidad para HA (par redundante activo-en espera). Utiliza [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) como almacén de datos operativos. El Network Load Balancer realiza una comprobación del estado de las instancias VPSX/MFI EC2 LRS. Si una instancia activa está en mal estado, el equilibrador de carga dirige el tráfico a las instancias activas en espera de la otra zona de disponibilidad. Las solicitudes de impresión se conservan en la cola de trabajos del LRS de forma local en cada una de las instancias. EC2 En caso de producirse un error, se debe reiniciar la instancia errónea antes de que los servicios de LRS puedan reanudar el procesamiento de la solicitud de impresión.
**nota**  
El LRS también VPSX/MFI puede realizar comprobaciones de estado a nivel de flota de impresoras. Para obtener más información, consulte *Printer-fleet health checks* (Comprobaciones de estado de la flota de impresoras) en la sección [Additional information](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional) (Información adicional) de este patrón.

1. La administración de salida del LRS PageCenter X se implementa en Amazon en EC2 dos zonas de disponibilidad para HA (par redundante activo-en espera). Utiliza [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) como almacén de datos operativos. Si una instancia activa se encuentra en mal estado, el balanceador de cargas comprueba el estado de las instancias LRS PageCenter X y dirige el tráfico a las EC2 instancias en espera de la otra zona de disponibilidad.

1. Un [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) proporciona un nombre DNS para integrar el VPSX/MFI servidor LRS con LRS X. PageCenter
**nota**  
El LRS PageCenter X admite un balanceador de carga de capa 4.

1. LRS PageCenter X utiliza Amazon FSx for Windows File Server como almacén de datos operativo implementado en dos zonas de disponibilidad para alta disponibilidad. LRS PageCenter X solo entiende los archivos que se encuentran en el recurso compartido de archivos, no en una base de datos externa.

1. [AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) se utiliza con LRS/DIS para realizar la autenticación y la autorización del flujo de trabajo de administración de resultados. Para obtener más información, consulte *Print output authentication and authorization* (Autenticación y autorización de la producción de impresión) en la sección [Additional information](#modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional) (Información adicional).

## Tools (Herramientas)
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-tools"></a>

**Servicios de AWS**
+ [AWS Directory Service para Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) permite que las cargas de trabajo compatibles con un directorio y los recursos de AWS utilicen Active Directory administrado en la nube de AWS.
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) proporciona volúmenes de almacenamiento a nivel de bloques para utilizarlos con instancias de Amazon Elastic Compute Cloud (Amazon). EC2
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribuye el tráfico entrante de aplicaciones o redes entre varios destinos. Por ejemplo, puede distribuir el tráfico entre EC2 instancias, contenedores y direcciones IP de Amazon en una o más zonas de disponibilidad. Este patrón utiliza un equilibrador de carga de red.
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) proporciona sistemas de archivos que admiten los protocolos de conectividad estándares del sector y ofrecen alta disponibilidad y replicación en todas las regiones de AWS. Este patrón usa Amazon FSx for Windows File Server.
+ [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.

**Otras herramientas**
+ El software [LRS PageCenter X](https://www.lrsoutputmanagement.com/products/content-management/pagecenterx-for-open-systems/) proporciona una solución escalable de administración de contenido de documentos e informes que ayuda a los usuarios a obtener el máximo valor de la información mediante funciones automatizadas de indexación, cifrado y búsqueda avanzada.
+ [La LRS VPSX/MFI (interfaz Micro Focus)](https://www.lrsoutputmanagement.com/products/modernization-products/), desarrollada conjuntamente por LRS y Rocket Software, captura la salida de una bobina JES de Rocket Software y la envía de forma fiable a un destino de impresión específico.
+ LRS/Queue is a transmission agent that’s TCP/IP based. LRS VPSX/MFI uses LRS/Queuepara recopilar o capturar datos de impresión a través de la interfaz de programación JES Print Exit de Rocket Software.
+ LRS Directory Integration Server (LRS/DIS) es un directorio de integración que se utiliza para la autenticación y la autorización durante el flujo de trabajo de impresión.
+ [Rocket Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed80/ES-WIN/GUID-F7D8FD6E-BDE0-4169-8D8C-96DDFFF6B495.html) es un entorno de implementación de aplicaciones para aplicaciones de mainframe. Proporciona el entorno en tiempo de ejecución para las aplicaciones de mainframe que se migran o crean con cualquier versión de Rocket Enterprise Developer.

## Epics
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-epics"></a>

### Configuración del tiempo de ejecución de Rocket e implementación de una aplicación por lotes para mainframe
<a name="set-up-the-rocket-runtime-and-deploy-a-mainframe-batch-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el tiempo de ejecución e implemente una aplicación de demostración. | Para configurar Rocket Enterprise Server en Amazon EC2 e implementar la aplicación de BankDemo demostración de Rocket Software, siga las instrucciones de la guía de [usuario](https://docs.aws.amazon.com/m2/latest/userguide/mf-runtime-setup.html) de AWS Mainframe Modernization.La BankDemo aplicación es una aplicación por lotes para mainframe que crea y, a continuación, inicia la impresión. | Arquitecto de la nube | 

### Configurar un servidor de impresión LRS en Amazon EC2
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea una instancia de Amazon EC2 Windows. | Para lanzar una instancia de Amazon EC2 Windows, sigue las instrucciones de [Lanzar una EC2 instancia de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html) en la EC2 documentación de Amazon. Utilice el mismo nombre de host que utilizó para la licencia de producto de LRS.La instancia debe cumplir los siguientes requisitos de hardware y software para LRS VPSX/MFI:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html)Los requisitos de hardware y software anteriores están pensados para una flota de impresoras pequeña (entre 500 y 1000). Para conocer todos los requisitos, consulte a sus personas de contacto en LRS y AWS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Instale LRS VPSX/MFI en la EC2 instancia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Instale LRS/Queue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Instale LRS/DIS. | El LRS/DIS producto suele estar incluido en la instalación del LRS VPSX. Sin embargo, si LRS/DIS no se instaló junto con el LRS VPSX, siga los siguientes pasos para instalarlo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Crear un grupo de destino. | Cree un grupo de destino siguiendo las instrucciones de [Create a target group for your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html) (Crear un grupo de destino para el equilibrador de carga de red). Al crear el grupo de destino, registre la VPSX/MFI EC2 instancia de LRS como destino:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Crear un equilibrador de carga de red. | Para crear el equilibrador de carga de red, siga las instrucciones de la [documentación de Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) (Equilibrio de carga elástico). Su Network Load Balancer dirige el tráfico de Rocket Enterprise Server a la instancia de VPSX/MFI EC2 LRS.Al crear el equilibrador de carga de red, elija los valores siguientes en la página **Listeners and Routing** (Oyentes y enrutamiento):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Integre Rocket Enterprise Server con un VPSX/MFI de LRS/Queue LRS
<a name="integrate-rocket-enterprise-server-with-lrs-queue-and-lrs-vpsx-mfi"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Rocket Enterprise Server para la integración. LRS/Queue  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Configura Rocket Enterprise Server para la VPSX/MFI integración con LRS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Configurar la cola de impresión y los usuarios de impresión
<a name="set-up-the-print-queue-and-the-print-users"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Asocie el módulo OpenText Micro Focus Print Exit al proceso de ejecución del servidor de la impresora por lotes de Micro Focus Enterprise Server. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Cree una cola de salida de impresión en LRS VPSX/MFI e intégrela con LRS X. PageCenter | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Cree un usuario de impresión en LRS VPSX/MFI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Configurar un servidor LRS PageCenter X en Amazon EC2
<a name="set-up-an-lrs-pagecenterx-server-on-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea una instancia de Amazon EC2 Windows. | Para lanzar una instancia de Amazon EC2 Windows, sigue las instrucciones del [paso 1: lanzar una instancia](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance) de la EC2 documentación de Amazon. Utilice el mismo nombre de host que utilizó para la licencia de producto de LRS.La instancia debe cumplir los siguientes requisitos de hardware y software para LRS PageCenter X:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html)Los requisitos de hardware y software anteriores están pensados para una flota de impresoras pequeña (entre 500 y 1000). Para conocer todos los requisitos, consulte a sus personas de contacto en LRS y AWS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Instale PageCenter LRS X en la instancia. EC2  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Instale LRS/DIS. | El LRS/DIS producto suele incluirse en la instalación del LRS VPSX. Sin embargo, si LRS/DIS no se instaló junto con el LRS VPSX, siga los siguientes pasos para instalarlo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Crear un grupo de destino. | Cree un grupo de destino siguiendo las instrucciones de [Create a target group for your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html) (Crear un grupo de destino para el equilibrador de carga de red). Al crear el grupo objetivo, registre la EC2 instancia LRS PageCenter X como destino:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Crear un equilibrador de carga de red. | Para crear el equilibrador de carga de red, siga las instrucciones de la [documentación de Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) (Equilibrio de carga elástico). Su Network Load Balancer enruta el tráfico de LRS VPSX/MFI a la instancia de PageCenter LRS X. EC2 Al crear el equilibrador de carga de red, elija los valores siguientes en la página **Listeners and Routing** (Oyentes y enrutamiento):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Configure las funciones de administración de salida en LRS X PageCenter
<a name="set-up-output-management-features-in-lrs-pagecenterx"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Habilite la función de importación en LRS X. PageCenter | Puede utilizar la función de importación de LRS PageCenter X para reconocer las salidas que llegan al LRS PageCenter X mediante criterios como el nombre del trabajo o el ID del formulario. A continuación, puede enrutar los resultados a carpetas específicas del LRS X. PageCenterPara habilitar la importación, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Configure la política de conservación de documentos. | LRS PageCenter X utiliza una política de retención de documentos para decidir durante cuánto tiempo se debe conservar un documento en LRS X. PageCenterPara configurar la política de conservación de documentos, siga los pasos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Cree una regla para enrutar el documento de salida a una carpeta específica de LRS X. PageCenter | En LRS PageCenter X, **Destination** determina la ruta de la carpeta a la que se enviará la salida cuando **Report** Definition invoque este destino. Para este ejemplo, cree una carpeta basada en la carpeta de **Form ID** en la definición del informe y guarde el resultado en esa carpeta.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Cree una definición de informe. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Configurar la autenticación y autorización para administración de la producción
<a name="set-up-authentication-and-authorization-for-output-management"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un dominio de AWS Managed Microsoft AD con usuarios y grupos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Une las EC2 instancias a un dominio de Microsoft AD administrado por AWS. | Une las EC2 instancias LRS VPSX/MFI y LRS PageCenter X a tu dominio de AWS Managed Microsoft AD de [forma automática](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/) (documentación del AWS Knowledge Center) o [manualmente](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html) (documentación de AWS Directory Service). | Arquitecto de la nube | 
| Configure e integre LRS/DIS con AWS Managed Microsoft AD para la EC2 instancia LRS PageCenter X. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Configure un grupo de importación para importar la salida de LRS VPSX a LRS X. PageCenter | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Agregue una regla de seguridad a Import group (Grupo de importación). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Cree un usuario en LRS PageCenter X para importar la salida desde LRS VPSX/MFI.  | Al crear un usuario en LRS PageCenter X para importar la salida, el nombre de usuario debe ser el mismo que el **ID de VPSX de la cola de salida de impresión en LRS VPSX/MFI**. En este ejemplo, el ID de VPSX es. **VPS1**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Agregue el usuario de importación de LRS PageCenter X al grupo de importación exclusiva. | Para conceder los permisos necesarios para la importación de documentos de LRS VPSX a LRS PageCenter X, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 
| Configure LRS/DIS con AWS Managed Microsoft AD para la VPSX/MFI EC2 instancia de LRS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Configure Amazon FSx for Windows File Server como almacén de datos operativos para LRS X PageCenter
<a name="configure-amazon-fsx-for-windows-file-server-as-the-operational-data-store-for-lrs-pagecenterx"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un sistema de archivos para LRS X. PageCenter | Para utilizar Amazon FSx for Windows File Server como almacén de datos operativo para LRS PageCenter X en un entorno Multi-AZ, siga las instrucciones del [paso 1: Cree su sistema de archivos](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/getting-started-step1.html). | Arquitecto de la nube | 
| Asigne el archivo compartido a la instancia de LRS X. PageCenter EC2  | Para asignar el recurso compartido de archivos creado en el paso anterior a la EC2 instancia LRS PageCenter X, siga las instrucciones del [paso 2: Asigne el recurso compartido de archivos a una EC2 instancia que ejecute Windows Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/getting-started-step2.html). | Arquitecto de la nube | 
| Asigne el directorio de control y el directorio de carpetas maestras de LRS PageCenter X a la unidad compartida FSx de red Amazon. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Arquitecto de la nube | 

### Pruebe un flujo de trabajo de administración de la producción
<a name="test-an-output-management-workflow"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie una solicitud de impresión por lotes desde la BankDemo aplicación Rocket Software. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Ingeniero de pruebas | 
| Compruebe el resultado de impresión en el LRS X. PageCenter | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.html) | Ingeniero de pruebas | 

## Recursos relacionados
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-resources"></a>
+ [LRS](https://www.lrsoutputmanagement.com/products/modernization-products)
+ [Advanced Function Presentation data stream](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream) (Flujo de datos de presentación de funciones avanzadas) (Documentación de IBM)
+ [Flujo de datos condicionado por línea (LCDS)](https://www.compart.com/en/lcds) (documentación de Compart)
+ [Empowering Enterprise Mainframe Workloads on AWS with Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/) (Capacitación de cargas de trabajo de mainframe empresarial en AWS) (publicación de blog)
+ [Modernize your mainframe online printing workloads on AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) (Modernice las cargas de trabajo de impresión online de mainframe en AWS) (Recomendaciones de AWS)
+ [Modernize your mainframe batch printing workloads on AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) (Modernice las cargas de trabajo de impresión por lotes de mainframe en AWS) (Recomendaciones de AWS)

## Información adicional
<a name="modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx-additional"></a>

**Consideraciones**

Durante su proceso de modernización, podría considerar la posibilidad de utilizar una amplia variedad de configuraciones para los procesos en línea y por lotes de mainframe, así como para la producción que generan. Todos los clientes y proveedores que utilizan la plataforma de mainframe la han personalizado con requisitos particulares que afectan directamente a la impresión. Así, por ejemplo, su plataforma actual podría incorporar el flujo de datos AFP de IBM o las pantallas LCD de Xerox en el flujo de trabajo actual. Además, los [caracteres de control de carro de mainframe](https://www.ibm.com/docs/en/cmofz/10.5.0?topic=tips-ansi-machine-carriage-controls) y [las palabras del comando de canal](https://www.ibm.com/docs/en/zos/3.1.0?topic=devices-channel-command-words) pueden afectar al aspecto de la página impresa y requerir un manejo especial. Como parte del proceso de planificación de la modernización, le recomendamos evaluar y comprender las configuraciones de su entorno de impresión específico.  

**Captura de datos de impresión**

Rocket Software Print Exit pasa la información necesaria para que LRS VPSX/MFI procese eficazmente el archivo de bobina. La información consta de campos incluidos en los bloques de control correspondientes, como los siguientes:
+ JOBNAME
+ OWNER (USERID)
+ DESTINATION
+ FORM
+ FILENAME
+ WRITER

El LRS VPSX/MFI admite los siguientes mecanismos de procesamiento por lotes de ordenadores centrales para capturar datos de Rocket Enterprise Server:
+  print/spool Procesamiento COBOL POR LOTES mediante sentencias z/OS JCL SYSOUT estándar. DD/OUTPUT 
+  print/spool Procesamiento por lotes de COBOL mediante sentencias z/OS JCL CA-SPOOL SUBSYS DD estándar.
+ IMS/COBOL print/spoolprocesamiento mediante la interfaz CBLTDLI. Para obtener una lista completa de los métodos y ejemplos de programación compatibles, consulte la documentación de LRS que se incluye con la licencia del producto.

**Comprobaciones de estado de la flota de impresoras**

El LRS VPSX/MFI (LRS LoadX) puede realizar controles de estado exhaustivos, incluida la gestión de los dispositivos y la optimización operativa. La administración de dispositivos puede detectar un error en un dispositivo de impresión y dirigir la solicitud de impresión a una impresora en buen estado. Para obtener más información sobre las comprobaciones de estado exhaustivas de las flotas de impresoras, consulte la documentación de LRS que se incluye con la licencia del producto.

**Autenticación y autorización de impresoras**

LRS/DIS enables LRS applications to authenticate user IDs and passwords by using Microsoft Active Directory or a Lightweight Directory Access Protocol (LDAP) server. In addition to basic print authorization, LRS/DIStambién puede aplicar controles de seguridad de impresión de nivel granular en los siguientes casos de uso:
+ Gestione quién puede examinar el trabajo de impresión.
+ Gestione el nivel de navegación de los trabajos de otros usuarios.
+ Gestione las tareas operativas, por ejemplo, la seguridad en el nivel de comandos, como retener o liberar, purgar, modificar, copiar y redirigir. La seguridad se puede configurar mediante el ID de usuario o el grupo, de forma similar a un grupo de seguridad de Active Directory o a un grupo LDAP.

## Conexiones
<a name="attachments-f9ad041d-b9f0-4a9a-aba7-40fdc3088b27"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/f9ad041d-b9f0-4a9a-aba7-40fdc3088b27/attachments/attachment.zip)

# Modernice las cargas de trabajo de impresión por lotes de mainframe AWS mediante Rocket Enterprise Server y LRS VPSX/MFI
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi"></a>

*Shubham Roy y Kevin Yung, Amazon Web Services*

*Abraham Rondon, Micro Focus*

*Guy Tucker, Levi, Ray and Shoup Inc*

## Resumen
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-summary"></a>

Este patrón le muestra cómo modernizar las cargas de trabajo de impresión por lotes de mainframe críticas para la empresa en la nube de Amazon Web Services (AWS) mediante Rocket Enterprise Server como entorno de ejecución para una aplicación de mainframe modernizada y LRS VPSX/MFI (Micro Focus Interface) como servidor de impresión. El patrón se basa en el enfoque de modernización del mainframe a través de [redefinir la plataforma.](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/) Con este enfoque, migra los trabajos por lotes de su mainframe a Amazon Elastic Compute Cloud (Amazon EC2) y migra su base de datos de mainframe, como IBM ( DB2 forz/OS, to Amazon Relational Database Service (Amazon RDS). The authentication and authorization for the modernized print workflow is performed by AWS Directory Service for Microsoft Active Directory, also known as AWS Managed Microsoft AD. The LRS Directory Information Server (LRS/DIS), integrada con AWS Managed Microsoft AD. Al modernizar sus cargas de trabajo de impresión por lotes, puede reducir los costos de infraestructura de TI, mitigar la carga técnica que supone el mantenimiento de los sistemas heredados, eliminar los silos de datos, aumentar la agilidad y la eficiencia con un DevOps modelo y aprovechar los recursos bajo demanda y la automatización en la nube de AWS.

## Requisitos previos y limitaciones
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una carga de trabajo de gestión de producción o impresión de mainframe
+ Conocimientos básicos sobre cómo recompilar y entregar una aplicación de mainframe ejecutada en Rocket Enterprise Server (para obtener más información, consulte la hoja de datos de [Rocket Enterprise Server](https://www.rocketsoftware.com/sites/default/files/resource_files/enterprise-server.pdf) en la documentación de Rocket).
+ Conocimientos básicos de las soluciones y los conceptos de [impresión en la nube de LRS](https://www.lrsoutputmanagement.com/solutions/solutions-cloud-printing/)
+ Software y licencia de Rocket Enterprise Server (para obtener más información, póngase en contacto con el [departamento de ventas de Rocket](https://www.rocketsoftware.com/en-us/products/enterprise-suite/request-contact)).
+ VPSX/MFI, LRS/Queue, and LRS/DIS[Software y licencias de LRS (para obtener más información, póngase en contacto con el departamento de ventas de LRS).](https://www.lrsoutputmanagement.com/about-us/contact-us/)

**nota**  
Para obtener más información sobre las consideraciones de configuración de las cargas de trabajo de administración de la producción de mainframe, consulte *Consideraciones* en la sección [Información adicional](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional) de este patrón.

**Versiones de producto**
+ [Rocket Enterprise Server](https://www.microfocus.com/en-us/products/enterprise-server/overview?utm_campaign=7018e000000PgfnAAC&utm_content=SCH-BR-AMC-AppM-AMS&gclid=EAIaIQobChMIoZCQ6fvS9wIVxQN9Ch2MzAOlEAAYASAAEgKx2fD_BwE) 6.0 (actualización de producto 7)
+ [LRS VPSX/MFI](https://www.lrsoutputmanagement.com/products/vpsx-enterprise/) V1R3 o superior

## Arquitectura
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-architecture"></a>

**Pila de tecnología de origen**
+ Sistema operativo: IBM z/OS
+ Lenguaje de programación: Common Business-Oriented Language (COBOL), Job Control Language (JCL) y Customer Information Control System (CICS)
+ Base de datos: IBM DB2 for z/OS y Virtual Storage Access Method (VSAM)
+ Seguridad: Resource Access Control Facility (RACF), CA Top Secret for z/OS y Access Control Facility 2 () ACF2
+ Gestión de impresión y salida: productos de z/OS impresión para mainframes de IBM (IBM Tivoli Output Manager for z/OS, LRS y CA View)

**Pila de tecnología de destino**
+ Sistema operativo: Microsoft Windows Server que se ejecuta en Amazon EC2
+ Informática — Amazon EC2
+ Lenguaje de programación: COBOL, JCL y CICS
+ Bases de datos: Amazon RDS
+ Seguridad: AWS Managed Microsoft AD
+ Administración de impresión y producción: solución de impresión LRS en AWS
+ Entorno de tiempo de ejecución de mainframe: Rocket Enterprise Server

**Arquitectura de origen**

El diagrama siguiente muestra una arquitectura de estado actual tipo para una carga de trabajo de administración de la producción de mainframe:

![\[De usuario a servicio de mainframe: Db2 para z/OS, programador de tareas, trabajo por lotes y salida en seis pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/83d82435-0aa6-4eb8-a5c8-0920102afb09.png)


El diagrama muestra el siguiente flujo de trabajo:

1. Los usuarios llevan a cabo transacciones comerciales en un sistema de participación (SoE) que se basa en una aplicación CICS de IBM escrita en COBOL.

1. El SoE invoca el servicio de mainframe, que registra los datos de las transacciones comerciales en una base de datos system-of-records (SoR), como IBM DB2 for z/OS.

1. El SoR conserva los datos comerciales del SoE.

1. El programador de trabajos por lotes inicia un trabajo por lotes para generar resultados de impresión.

1. El trabajo por lotes extrae datos de la base de datos, formatea los datos de acuerdo con los requisitos comerciales y, a continuación, genera producción empresarial, como extractos de facturación, tarjetas de identificación o extractos de préstamos. Por último, el trabajo por lotes dirige la producción a la administración de la impresión para procesar y enviar los resultados en función de los requisitos empresariales. 

1. La gestión de los resultados de producción recibe la producción de impresión del trabajo por lotes y, a continuación, la envía a un destino específico, como el correo electrónico, un archivo compartido que emplee un FTP seguro, una impresora física que use soluciones de impresión LRS (como se demuestra en este patrón) o IBM Tivoli.

**Arquitectura de destino**

El diagrama siguiente muestra una arquitectura para una carga de trabajo de administración de la producción de mainframe que se implementa en la nube de AWS:

![\[Aplicación por lotes en AWS con programador, Rocket Enterprise Server y base de datos en cuatro pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/8cdd4ef7-3cbd-476a-9aa4-c1c0924f17c6.png)


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

1. El programador de trabajos por lotes inicia un trabajo por lotes para generar la producción, como extractos de facturación, tarjetas de identificación o extractos de préstamos.

1. El trabajo por lotes del mainframe ([rediseñado a Amazon EC2](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)) utiliza el tiempo de ejecución de Rocket Enterprise Server para extraer datos de la base de datos de la aplicación, aplicar lógica empresarial a los datos, formatear los datos y, a continuación, enviarlos a un destino de impresión mediante [Rocket Software Print Exit](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/HCOMCMJCLOU020.html) (documentación de Micro Focus).

1. La base de datos de la aplicación (un SoR que se ejecuta en Amazon RDS) conserva los datos para su impresión.

1. La solución de VPSX/MFI impresión LRS se implementa en Amazon EC2 y sus datos operativos se almacenan en Amazon Elastic Block Store (Amazon EBS). LRS VPSX/MFI utiliza el agente TCP/IP-based LRS/Queue de transmisión para recopilar datos de impresión a través de la API JES Print Exit de Rocket Software y entregar los datos a un destino de impresión específico.

**nota**  
La solución de destino no suele requerir cambios en la aplicación para adaptarla a los lenguajes de formato de mainframe, como IBM Advanced Function Presentation (AFP) o Xerox Line Condition Data Stream (LCDS). Para obtener más información sobre el uso de Rocket Software para la migración y modernización de aplicaciones de mainframe en AWS, consulte la entrada en el blog [Empowering Enterprise Mainframe Workloads on AWS with Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/).

**Arquitectura de infraestructura de AWS**

El diagrama siguiente muestra una arquitectura de infraestructura de AWS segura y de alta disponibilidad para una carga de trabajo de administración de la producción de mainframe:

![\[Implementación multi-AZ en AWS con Rocket Software y componentes de LRS en siete pasos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/36de7312-4860-4702-a325-c01cf74c4f33/images/287dd143-338c-4d83-a9b2-8e39214a81b0.png)


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

1. El programador de lotes inicia el proceso por lotes y se implementa EC2 en Amazon en varias [zonas de disponibilidad](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) para una alta disponibilidad (HA). 
**nota**  
Este patrón no incluye la implementación del programador de lotes. Para obtener más información acerca de la implementación, consulte la documentación del proveedor de software del programador.

1. El trabajo por lotes de la computadora central (escrito en un lenguajes de programación como JCL o COBOL) utiliza la lógica empresarial básica para procesar y generar la producción de impresión, como extractos de facturación, tarjetas de identificación y extractos de préstamos. El trabajo se implementa en Amazon en dos zonas de EC2 disponibilidad para alta disponibilidad y utiliza Rocket Software Print Exit para enrutar los resultados de impresión a LRS VPSX/MFI para que los impriman los usuarios finales.

1. LRS VPSX/MFI usa un comando. TCP/IP-based LRS/Queue transmission agent to collect or capture print data from the Rocket Software JES Print Exit programming interface. Print Exit passes the necessary information to enable LRS VPSX/MFI to effectively process the spool file and dynamically build LRS/Queue A continuación, los comandos se ejecutan mediante una función estándar integrada de Rocket Software. 
**nota**  
Para obtener más información sobre los datos de impresión que se transmiten desde Rocket Software Print Exit a LRS/Queue los mecanismos de procesamiento por lotes de ordenadores centrales VPSX/MFI compatibles con el LRS, consulte *Captura de datos de impresión* en la sección de [información adicional](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional) de este patrón.

1. 
**nota**  
Un [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) proporciona un nombre DNS para integrar Rocket Enterprise Server con el LRS VPSX/MFI. : LRS VPSX/MFI supports a Layer 4 load balancer. The Network Load Balancer also does a basic health check on LRS VPSX/MFI y enruta el tráfico a los destinos registrados que están en buen estado.

1. 
**nota**  
El servidor de VPSX/MFI impresión LRS se implementa en Amazon en EC2 dos zonas de disponibilidad para alta disponibilidad y utiliza [Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html) como almacén de datos operativos. El LRS VPSX/MFI admite los modos de servicio activo-activo y activo-pasivo. Esta arquitectura utiliza varios AZs en un par activo-pasivo como modo de espera activo y activo. El Network Load Balancer realiza una comprobación del estado de las VPSX/MFI EC2 instancias LRS y enruta el tráfico a las instancias en espera activas de la otra zona de disponibilidad si una instancia activa se encuentra en mal estado. Las solicitudes de impresión se conservan en la cola de trabajos del LRS de forma local en cada una de las instancias. EC2 En caso de recuperación, se debe reiniciar una instancia fallida para que los servicios de LRS reanuden el procesamiento de la solicitud de impresión. : LRS también VPSX/MFI puede realizar comprobaciones de estado a nivel de flota de impresoras. Para obtener más información, consulte *Comprobaciones de estado de la flota de impresoras* en la sección de [Información adicional](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional) de este patrón.

1. [AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) se integra LRS/DIS para realizar la autenticación y autorización del flujo de trabajo de impresión. Para obtener más información, consulte *Autenticación y autorización de impresión* en la sección de [Información adicional](#modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional) de este patrón.

1. LRS VPSX/MFI utiliza Amazon EBS para el almacenamiento en bloque. Puede hacer copias de seguridad de los datos de Amazon EBS de EC2 las instancias activas en Amazon S3 como point-in-time instantáneas y restaurarlos en volúmenes de EBS activos en espera. Para automatizar la creación, retención y eliminación de instantáneas de volúmenes de Amazon EBS, puede usar [Amazon Data Lifecycle Manager](https://aws.amazon.com/blogs/aws/new-lifecycle-management-for-amazon-ebs-snapshots/) para establecer la frecuencia de las instantáneas automatizadas y restaurarlas en función de sus [necesidades de RTO/RPO](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html).

## Tools (Herramientas)
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html)) proporciona volúmenes de almacenamiento a nivel de bloque para usarlos con instancias. EC2 Los volúmenes de EBS se comportan como dispositivos de bloques sin formatear. Puede montar estos volúmenes como dispositivos en sus instancias.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) proporciona capacidad informática escalable en la nube de AWS. Puede usar Amazon EC2 para lanzar tantos o tan pocos servidores virtuales como necesite, y puede ampliarlos de manera horizontal o horizontal.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) es un servicio web que facilita la configuración, el funcionamiento y la escala de una base de datos relacional en la nube de AWS. Proporciona una capacidad rentable y de tamaño ajustable para una base de datos relacional y se ocupa de las tareas comunes de administración de bases de datos.
+ [AWS Directory Service para Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html), también conocido como AWS Managed Microsoft AD, permite que las cargas de trabajo compatibles con un directorio y los recursos de AWS utilicen Microsoft Active Directory en la nube de AWS.

**Otras herramientas**
+ [LRS VPSX/MFI (Micro Focus Interface)](https://www.lrsoutputmanagement.com/products/vpsx-enterprise/), una interfaz desarrollada conjuntamente por LRS y Rocket Software, captura la producción de una bobina de Rocket Enterprise Server JES y la entrega de forma fiable a un destino de impresión específico.
+ El servidor de información de directorio LRS (LRS/DIS) se utiliza para la autenticación y la autorización durante el flujo de trabajo de impresión.
+ TCP/IP-based LRS/Queue transmission agent is used by LRS VPSX/MFIpara recopilar o capturar datos de impresión a través de la interfaz de programación JES Print Exit de Rocket Software.
+ [Rocket Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-A2F23243-962B-440A-A071-480082DF47E7.html) es un entorno de implementación de aplicaciones para aplicaciones de mainframe. Proporciona el entorno de ejecución para las aplicaciones de mainframe que se migran o crean con cualquier versión de Rocket Software Enterprise Developer.

## Epics
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-epics"></a>

### Configura Rocket Enterprise Server en Amazon EC2 e implementa una aplicación por lotes para mainframe
<a name="set-up-rocket-enterprise-server-on-amazon-ec2-and-deploy-a-mainframe-batch-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Rocket Enterprise Server e implemente una aplicación de demostración. | Configure Rocket Enterprise Server en Amazon y EC2, a continuación, despliegue la aplicación de BankDemo demostración de Rocket Software en Amazon EC2.La BankDemo aplicación es una aplicación por lotes para ordenadores centrales que crea y, a continuación, inicia la impresión. | Arquitecto de la nube | 

### Configurar un servidor de impresión LRS en Amazon EC2
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga una licencia de producto LRS para imprimir. | Para obtener una licencia de producto LRS para LRSVPSX/MFI, LRS/Queue, and LRS/DIS, póngase en contacto con el equipo de gestión de producción de [LRS.](https://www.lrsoutputmanagement.com/about-us/contact-us/) Debe proporcionar los nombres de host de las EC2 instancias en las que se instalarán los productos de LRS. | Responsable de compilación | 
| Cree una instancia de Amazon EC2 Windows para instalar LRS VPSX/MFI. | Para lanzar una instancia de Amazon EC2 Windows, sigue las instrucciones de [Lanzar una EC2 instancia de Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html) en la EC2 documentación de Amazon. La instancia debe cumplir los siguientes requisitos de hardware y software para LRS VPSX/MFI:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)Los requisitos de hardware y software anteriores están pensados para una flota de impresoras pequeña (entre 500 y 1000). Para conocer todos los requisitos, consulte a sus personas de contacto en LRS y AWS.Cuando cree la instancia de Windows, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Instala LRS VPSX/MFI en la EC2 instancia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Instale LRS/Queue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Instale LRS/DIS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Cree un grupo objetivo y registre LRS VPSX/MFI EC2 como objetivo. | Cree un grupo de destino siguiendo las instrucciones de [Crear un grupo de destino para el equilibrador de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html) en la documentación en el equilibrador de carga de red elástico.Al crear el grupo de destino, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Crear un equilibrador de carga de red. | Siga las instrucciones de [Crear un equilibrador de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) en la documentación de Elastic Load Balancing. Su Network Load Balancer dirige el tráfico de Rocket Enterprise Server a LRS. VPSX/MFI EC2Al crear el equilibrador de carga de red, siga los pasos siguientes en la página **Listeners and Routing** (Oyentes y enrutamiento):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Integre Rocket Enterprise Server con LRS y LRS/Queue VPSX/MFI
<a name="integrate-rocket-enterprise-server-with-lrs-vpsx-mfi-and-lrs-queue"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Rocket Enterprise Server para la integración. LRS/Queue  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)Actualmente, LRS admite un límite máximo de 50 caracteres para los nombres de DNS, pero este aspecto cambiará en el futuro. Si el nombre DNS tiene más de 50 caracteres, puede utilizar la dirección IP del equilibrador de carga de red como alternativa. | Arquitecto de la nube | 
| Configura Rocket Enterprise Server para la VPSX/MFI integración con LRS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Configuración de impresoras y usuarios de impresión en Rocket Enterprise Server y LRS VPSX/MFI
<a name="set-up-printers-and-print-users-in-rocket-enterprise-server-and-lrs-vpsx-mfi"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Asocie el módulo de Rocket Software Print Exit al proceso de ejecución del servidor de la impresora por lotes de Rocket Enterprise Server. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)Para obtener más información sobre la configuración, consulte [Using the Exit](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/HCOMCMJCLOS025.html) (Uso de la salida) en la documentación de Micro Focus. | Arquitecto de la nube | 
| Añada una impresora en LRS VPSX/MFI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Cree un usuario de impresión en LRS VPSX/MFI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Configure imprimir autenticación y autorización
<a name="set-up-print-authentication-and-authorization"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un dominio de AWS Managed Microsoft AD con usuarios y grupos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Une LRS VPSX/MFI EC2 a un dominio de Microsoft AD gestionado por AWS. | Une LRS VPSX/MFI EC2 a tu dominio de Microsoft AD gestionado por AWS de [forma automática](https://repost.aws/knowledge-center/ec2-systems-manager-dx-domain) (documentación del AWS Knowledge Center) o [manualmente](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) (documentación de AWS Directory Service). | Arquitecto de la nube | 
| Configure e integre LRS/DIS con AWS Managed Microsoft AD. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Pruebe un flujo de trabajo de impresión
<a name="test-a-print-workflow"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie una solicitud de impresión por lotes desde la BankDemo aplicación Rocket Software. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html) | Ingeniero de pruebas | 
| Compruebe la producción de impresión en LRS VPSX/MFI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi.html)Ya puede ver el resultado impreso de un extracto de cuenta con columnas para **Account No.** (Número de cuenta), **Description**, **Date**, **Amount** (Importe) y **Balance** (Saldo). Para ver un ejemplo, consulte el archivo adjunto **batch\$1print\$1output ** para este patrón. | Ingeniero de pruebas | 

## Recursos relacionados
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-resources"></a>
+ [Modernización de la producción de LRS](https://www.lrsoutputmanagement.com/) (documentación de LRS)
+ [Controles ANSI y de carro de máquinas](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls) (documentación de IBM)
+ [Palabras de comando de canal](https://www.ibm.com/docs/en/zos/2.3.0?topic=devices-channel-command-words) (documentación de IBM)
+ [Empowering Enterprise Mainframe Workloads on AWS with Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/) (Capacitación de cargas de trabajo de mainframe empresarial en AWS) (publicación de blog de socio de AWS)
+ [Cree un PAC para servidores empresariales de Micro Focus con Amazon EC2 Auto Scaling y Systems Manager (documentación](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.html) de AWS Prescriptive Guidance)
+ Flujo de datos de [Presentación de funciones avanzadas (AFP)](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream) (documentación de IBM)
+ [Flujo de datos condicionado por línea (LCDS)](https://www.compart.com/en/lcds) (documentación de Compart)

## Información adicional
<a name="modernize-mainframe-batch-printing-workloads-on-aws-by-using-rocket-enterprise-server-and-lrs-vpsx-mfi-additional"></a>

**Consideraciones**

Durante su proceso de modernización, podría considerar la posibilidad de utilizar una amplia variedad de configuraciones para los procesos en línea y por lotes de mainframe, así como para la producción que generan. Todos los clientes y proveedores que utilizan la plataforma de mainframe la han personalizado con requisitos particulares que afectan directamente a la impresión. Por ejemplo, su plataforma actual puede incorporar Advanced Function Presentation (AFP) de IBM o Line Condition Data Stream (LCDS) de Xerox en el flujo de trabajo actual. Además, los [caracteres de control de carro de mainframe](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls) y las [palabras de comando de canal](https://www.ibm.com/docs/en/zos/2.3.0?topic=devices-channel-command-words) pueden afectar al aspecto de la página impresa y pueden requerir un tratamiento especial. Como parte del proceso de planificación de la modernización, le recomendamos evaluar y comprender las configuraciones de su entorno de impresión específico.

**Captura de datos de impresión**

Rocket Software Print Exit transmite la información necesaria para que LRS VPSX/MFI pueda procesar de forma eficaz el archivo de impresión. La información consta de campos incluidos en los bloques de control correspondientes, como los siguientes:
+ JOBNAME
+ OWNER (USERID)
+ DESTINATION
+ FORM
+ FILENAME
+ WRITER

El LRS VPSX/MFI admite los siguientes mecanismos de procesamiento por lotes de mainframe para capturar datos de Rocket Enterprise Server.
+  print/spool Procesamiento COBOL POR LOTES mediante sentencias JCL SYSOUT estándar z/OS DD/OUTPUT 
+  print/spool Procesamiento de COBOL POR LOTES utilizando sentencias JCL CA-SPOOL SUBSYS DD estándar z/OS 
+ IMS/COBOL print/spoolprocesamiento mediante la interfaz CBLTDLI (para obtener una lista completa de los métodos y ejemplos de programación compatibles, consulte la documentación del LRS que se incluye con la licencia del producto).

**Comprobación de estado de la flota de impresoras**

El LRS VPSX/MFI (LRS LoadX) puede realizar controles de estado exhaustivos, como la gestión de los dispositivos y la optimización operativa. La administración de dispositivos puede detectar un error en un dispositivo de impresión y dirigir la solicitud de impresión a una impresora en buen estado. Para obtener más información sobre las comprobaciones de estado exhaustivas de las flotas de impresoras, consulte la documentación de LRS que se incluye con la licencia del producto.

**Imprimir autenticación y autorización**

LRS/DIS enables LRS applications to authenticate user IDs and passwords by using Microsoft Active Directory or an LDAP server. In addition to basic print authorization, LRS/DIStambién puede aplicar controles de seguridad de impresión de nivel granular en los siguientes casos de uso:
+ Gestione quién puede examinar el trabajo de impresión.
+ Gestione el nivel de navegación de los trabajos de otros usuarios.
+ Gestione las tareas operativas. Por ejemplo, la seguridad en el nivel de comandos, como retener o liberar, purgar, modificar, copiar y redirigir. La seguridad se puede configurar mediante el ID de usuario o el grupo, (similar a un grupo AD o a un grupo LDAP).** **

## Conexiones
<a name="attachments-36de7312-4860-4702-a325-c01cf74c4f33"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/36de7312-4860-4702-a325-c01cf74c4f33/attachments/attachment.zip)

# Modernización del mainframe: DevOps adelante AWS con Rocket Software Enterprise Suite
<a name="mainframe-modernization-devops-on-aws-with-micro-focus"></a>

*Kevin Yung, Amazon Web Services*

## Resumen
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-summary"></a>

**Desafíos de los clientes**

Las organizaciones que ejecutan aplicaciones principales en hardware de mainframe suelen enfrentarse a algunos desafíos cuando el hardware necesita escalar verticalmente para satisfacer las demandas de las innovaciones digitales. Estos desafíos incluyen las siguientes limitaciones. 
+ Los entornos de desarrollo y prueba de los mainframe no se pueden escalar debido a la inflexibilidad de los componentes de hardware de los mainframes y al elevado costo que supone cambiarlos.
+ El desarrollo de mainframes se enfrenta a una escasez de personal cualificado, ya que los nuevos desarrolladores no están familiarizados con las herramientas tradicionales de desarrollo de mainframes ni están interesados en ellas. La tecnología moderna, como los contenedores, los canales de integration/continuous entrega continua (CI/CD) y los marcos de prueba modernos, no están disponibles para el desarrollo de mainframes.

**Resultados del patrón**

Para abordar estos desafíos, Amazon Web Services (AWS) y Rocket Software Micro Focus, un socio de AWS Partner Network (APN), han colaborado para crear este patrón. La solución está diseñada para ayudarle a lograr los siguientes resultados.
+ Mejora de la productividad de los desarrolladores. Los desarrolladores pueden disponer de nuevas instancias de desarrollo de mainframe en cuestión de minutos.
+ Uso del Nube de AWS para crear nuevos entornos de prueba de mainframe con una capacidad prácticamente ilimitada.
+ Aprovisionamiento rápido de una nueva infraestructura de mainframe CI/CD . El aprovisionamiento se AWS puede completar en una hora utilizando y. AWS CloudFormation AWS Systems Manager
+ Uso nativo de AWS DevOps herramientas para el desarrollo de mainframes, incluidas AWS CodeBuild, AWS CodeCommit AWS CodePipeline AWS CodeDeploy, y Amazon Elastic Container Registry (Amazon ECR).
+ Transforme el desarrollo tradicional en cascada en un desarrollo ágil en proyectos de mainframe.

**Resumen de tecnologías**

En este patrón, la pila de destino contiene los siguientes componentes.


| 
| 
| Componentes lógicos | Soluciones de implementación | Description (Descripción) | 
| --- |--- |--- |
| Repositorios de código fuente |  AccuRev Servidor de software Rocket CodeCommit, Amazon ECR  | Administración del código fuente: la solución utiliza dos tipos de código fuente: Código fuente de mainframe, por ejemplo, COBOL y JCL. AWS plantillas de infraestructura y scripts de automatización Ambos tipos de código fuente necesitan control de versiones, pero se administran de forma diferente SCMs. El código fuente desplegado en el mainframe o en los servidores empresariales de Rocket Software se administra en Rocket Software Micro Focus AccuRev Server. AWS las plantillas y los scripts de automatización se gestionan en CodeCommit. Amazon ECR se utiliza para los repositorios de imágenes de Docker.  | 
| Instancias de desarrolladores empresariales | Amazon Elastic Compute Cloud (Amazon EC2), desarrollador empresarial de Rocket Software para Eclipse | Los desarrolladores de mainframe pueden desarrollar código en Amazon EC2 mediante Rocket Software Enterprise Developer for Eclipse. Esto elimina la necesidad de depender del hardware del mainframe para escribir y probar el código.  | 
| Administración de licencias de Rocket Software Enterprise Suite | Rocket Software Enterprise Suite License Manager | Para la administración y la gobernanza centralizadas de las licencias de Rocket Software Enterprise Suite, la solución utiliza Rocket Software Enterprise Suite License Manager para alojar la licencia requerida. | 
| Canalización de CI/CD | CodePipeline, CodeBuild CodeDeploy, Rocket Software Enterprise Developer en un contenedor, Rocket Software Enterprise Test Server en un contenedor, Rocket Software Micro Focus Enterprise Server | Los equipos de desarrollo de mainframes necesitan CI/CD canalizaciones para realizar la compilación de código, las pruebas de integración y las pruebas de regresión. En un contenedor de CodePipeline forma nativa AWS, CodeBuild pueden trabajar con Rocket Software Enterprise Developer y Enterprise Test Server en un contenedor. | 

## Requisitos previos y limitaciones
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-prereqs"></a>

**Requisitos previos **


| 
| 
| Name | Description (Descripción) | 
| --- |--- |
| py3270 | py3270 es una interfaz de Python para x3270, un emulador de terminal IBM 3270. Proporciona una API para un subproceso x3270 o s3270. | 
| x3270 | x3270 es un emulador de terminal IBM 3270 para el sistema X Window y Windows.  El desarrollador lo puede utilizar para realizar pruebas unitarias a nivel local. | 
| Robot-Framework-Mainframe-3270-Library | Mainframe3270 es una biblioteca para Robot Framework basada en el proyecto py3270. | 
| Rocket Software Verastream | Rocket Software Verastream es una plataforma de integración que permite probar los activos del mainframe del mismo modo que se prueban las aplicaciones móviles, las aplicaciones web y los servicios web SOA. | 
| Instalador y licencia de Rocket Software Unified Functional Testing (UFT) | Rocket Software Unified Functional Testing es un software que automatiza las pruebas funcionales y de regresión para aplicaciones y entornos de software. | 
| Instalador y licencia de Rocket Software Enterprise Server | Enterprise Server proporciona el tiempo de ejecución para las aplicaciones de mainframe. | 
| Instalador y licencia de Rocket Software Enterprise Test Server | Rocket Software Enterprise Test Server es un entorno de prueba de aplicaciones de mainframe de IBM. | 
|  AccuRev Instalador y licencia de Rocket Software para servidores, e AccuRev instalador y licencia de Rocket Software Micro Focus para sistemas operativos Windows y Linux  | AccuRev proporciona administración de código fuente (SCM). El AccuRev sistema está diseñado para que lo utilice un equipo de personas que están desarrollando un conjunto de archivos. | 
| Instalador, revisión y licencia de Rocket Software Enterprise Developer for Eclipse | Enterprise Developer proporciona a los desarrolladores de mainframe una plataforma para desarrollar y mantener las principales aplicaciones de mainframe en línea y por lotes. | 

**Limitaciones**
+ No se admite la creación de una imagen de Docker de Windows en CodeBuild. Este [problema notificado necesita el](https://github.com/docker-library/docker/issues/49) apoyo de los equipos de Windows Kernel/HCS y Docker. La solución alternativa consiste en crear un manual de procedimientos de imágenes de Docker mediante Systems Manager. Este patrón utiliza la solución alternativa para compilar imágenes de contenedor de Rocket Software Enterpise Developer for Eclipse y Rocket Software Micro Focus Enterprise Test Server. 
+ Windows aún no admite la conectividad de nube privada virtual (VPC) desde CodeBuild , por lo que el patrón no utiliza Rocket Software License Manager para administrar las licencias en los contenedores OpenText Rocket Software Enterprise Developer y Rocket Software Enterprise Test Server.

**Versiones de producto**
+ La versión 5.5 o posterior de Rocket Software Enterprise Developer
+ La versión 5.5 o posterior de Rocket Software Enterprise Test Server
+ La versión 5.5 o posterior de Rocket Software Enterprise Server
+ Rocket Software AccuRev 7.x o posterior
+ Imagen base de Docker de Windows para Rocket Software Enterprise Developer y Enterprise Test Server: **microsoft/dotnet-framework-4.7.2-runtime**
+ **Imagen base de Linux Docker para el AccuRev cliente: amazonlinux:2**

## Arquitectura
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-architecture"></a>

**Entorno de mainframe**

En el desarrollo de mainframe convencional, los desarrolladores necesitan usar hardware de mainframe para desarrollar y probar programas. Se enfrentan a limitaciones de capacidad, por ejemplo, la restricción de millones de instrucciones por segundo (MIPS) para el dev/test entorno, y deben confiar en las herramientas disponibles en los ordenadores centrales.

En muchas organizaciones, el desarrollo de mainframes sigue la metodología de desarrollo en cascada, y los equipos utilizan ciclos largos para publicar los cambios. Estos ciclos de lanzamiento suelen ser más largos que los del desarrollo de productos digitales.   

El siguiente diagrama muestra varios proyectos de mainframe que comparten el hardware de mainframe para su desarrollo. En el caso del hardware de mainframe, resulta caro escalar horizontalmente un entorno de desarrollo y pruebas para más proyectos.

![\[Diagram showing mainframe architecture with z/OS, databases, programming languages, and user groups.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/84e717fc-5aea-41a6-977a-d7e7a7ca5da7.png)


 

 

*Arquitectura de AWS*****

Este patrón extiende el desarrollo de mainframe a la Nube de AWS. En primer lugar, utiliza AccuRev SCM para alojar el código fuente del mainframe. AWS Luego, permite que Enterprise Developer y Enterprise Test Server estén disponibles para compilar y probar el código del mainframe en AWS. 

En las siguientes secciones se describen los tres componentes principales del patrón.

**1. SCM**

En AWS, el patrón se utiliza AccuRev para crear un conjunto de espacios de trabajo SCM y un control de versiones para el código fuente del mainframe. Su arquitectura basada en flujos permite el desarrollo de mainframes paralelos para varios equipos. Para combinar un cambio, AccuRev utiliza el concepto de promoción. Para añadir ese cambio a otros espacios de trabajo, AccuRev utiliza el concepto de actualización.

A nivel de proyecto, cada equipo puede crear una o más secuencias para realizar un seguimiento de los cambios AccuRev a nivel de proyecto. Se denominan flujos de proyectos. Estos flujos del proyecto se heredan del mismo flujo principal. El flujo principal se usa para combinar los cambios de los diferentes flujos del proyecto.

Cada flujo de proyectos puede promover el código y se ha configurado un activador de promoción posterior para iniciar el proceso de AWS CI/CD. AccuRev La versión correcta para el cambio de flujo de un proyecto se puede convertir en su flujo principal para realizar más pruebas de regresión.  

Por lo general, el flujo principal se denomina flujo de integración del sistema. Cuando hay un ascenso de un flujo de proyectos a un flujo de integración de sistemas, una activación posterior a la promoción inicia otro CI/CD proceso para ejecutar pruebas de regresión.

Además del código de mainframe, este patrón incluye AWS CloudFormation plantillas, documentos de automatización de Systems Manager y scripts. Siguiendo las infrastructure-as-code mejores prácticas, se controlan las versiones en ellas. CodeCommit 

Si necesita volver a sincronizar el código del mainframe con un entorno de mainframe para su despliegue, Rocket Software proporciona la solución Enterprise Sync, que sincroniza el código del SCM con el AccuRev SCM del mainframe.

**2. Entornos de desarrollo y pruebas**

En una organización grande, escalar más de cien o incluso más de mil desarrolladores de mainframe es todo un desafío. Para abordar esta restricción, el patrón utiliza instancias de Amazon EC2 Windows para el desarrollo. En las instancias, están instaladas las herramientas Enterprise Developer for Eclipse. El desarrollador puede realizar todas las pruebas y depuraciones del código del mainframe de forma local en la instancia. 

AWS Systems Manager Los documentos de State Manager y Automation se utilizan para automatizar el aprovisionamiento de instancias para desarrolladores. El tiempo medio para crear una instancia de desarrollador es de 15 minutos. Se han preparado el software y las configuraciones siguientes:
+ AccuRev Cliente de Windows para extraer y guardar el código fuente AccuRev
+ Herramienta Enterprise Developers for Eclipse, para escribir, probar y depurar el código de mainframe de forma local
+ Marcos de pruebas de código abierto, pruebas de desarrollo impulsado por el comportamiento (BDD) de Python, marco de prueba Behave, py3270 y el emulador x3270 para crear scripts para probar aplicaciones
+ Una herramienta de desarrollo de Docker para crear la imagen de Docker de Enterprise Test Server y probar la aplicación en el contenedor de Docker de Enterprise Test Server 

En el ciclo de desarrollo, los desarrolladores utilizan la EC2 instancia para desarrollar y probar el código del mainframe de forma local. Cuando los cambios locales se prueban correctamente, los desarrolladores promueven el cambio en el AccuRev servidor.  

**3. CI/CD oleoductos**

En este patrón, las CI/CD canalizaciones se utilizan para las pruebas de integración y las pruebas de regresión antes del despliegue en el entorno de producción. 

Como se explica en la sección SCM, AccuRev utiliza dos tipos de flujos: un flujo de proyecto y un flujo de integración. Cada transmisión está conectada a canalizaciones. CI/CD Para realizar la integración entre el AccuRev servidor y AWS CodePipeline, el patrón utiliza un script AccuRev posterior a la promoción para crear un evento que inicie el CI/CD.

Por ejemplo, cuando un desarrollador promueve un cambio en el flujo de un proyecto AccuRev, inicia un script posterior a la promoción para que se ejecute en Server. AccuRev A continuación, el script carga los metadatos del cambio a un bucket de Amazon Simple Storage Service (Amazon S3) para crear un evento de Amazon S3. Este evento iniciará la ejecución de una canalización CodePipeline configurada. 

El mismo mecanismo de inicio de eventos se utiliza para el flujo de integración y sus canalizaciones asociadas. 

En el CI/CD proceso, se CodePipeline utiliza CodeBuild con el contenedor de clientes de AccuRev Linux para extraer el código más reciente de las AccuRev transmisiones. Luego, la canalización comienza CodeBuild a usar el contenedor de Windows para Enterprise Developer para compilar el código fuente y a usar el contenedor de Windows de Enterprise Test Server CodeBuild para probar las aplicaciones de mainframe.

Las CI/CD canalizaciones se crean mediante CloudFormation plantillas y el plano se utilizará para nuevos proyectos. Al usar las plantillas, un proyecto tarda menos de una hora en crear una nueva CI/CD canalización. AWS

Para ampliar la capacidad de prueba de su ordenador central AWS, el patrón incluye el conjunto de DevOps pruebas de Rocket Software, Verastream y el servidor UFT. Con las DevOps herramientas modernas, puede ejecutar tantas pruebas como necesite. AWS 

En el siguiente diagrama se muestra un ejemplo de entorno de desarrollo de AWS mainframe con Rocket Software activado.

![\[AWS development pipeline with shared components for multiple project teams.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/27da6a52-4573-44cb-8716-1ac49430f618.png)


 

*Pila de tecnología de destino*

En esta sección se ofrece una visión más detallada de la arquitectura de cada componente del patrón.

**1. Repositorio de código fuente: SCM AccuRev **

AccuRev SCM está configurado para administrar las versiones del código fuente del mainframe. Para una alta disponibilidad, AccuRev admite los modos principal y de réplica. Los operadores pueden realizar una conmutación por error a la réplica cuando realizan tareas de mantenimiento en el nodo principal. 

Para acelerar la respuesta de la CI/CD canalización, el patrón utiliza Amazon CloudWatch Events para detectar los cambios en el código fuente e iniciar el inicio de la canalización.

1. La canalización se ha configurado para que utilice un origen de Amazon S3.

1. Se configura una regla de CloudWatch eventos para capturar los eventos de S3 de un bucket de S3 de origen.

1. La regla de CloudWatch eventos establece un objetivo para la canalización.

1. AccuRev SCM está configurado para ejecutar un script posterior a la promoción de forma local una vez finalizada la promoción.

1. AccuRev SCM genera un archivo XML que contiene los metadatos de la promoción y el script carga el archivo XML en el depósito S3 de origen.

1. Tras la carga, el bucket de S3 de origen envía los eventos para que coincidan con la regla de CloudWatch eventos, y esta última inicia la CloudWatch ejecución de la canalización. 

Cuando la canalización se ejecuta, inicia un CodeBuild proyecto para utilizar un contenedor cliente de AccuRev Linux para extraer el código más reciente del mainframe de una transmisión asociada. AccuRev   

El siguiente diagrama muestra la configuración de un AccuRev servidor.

![\[Nube de AWS diagram showing AccuRev setup with primary and replica instances across availability zones.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/e60345cc-2283-4b03-8f57-e3dac1770978.png)


**2. Plantilla para desarrolladores empresariales** 

El patrón utiliza EC2 plantillas de Amazon para simplificar la creación de la instancia de desarrollador. Al usar State Manager, puede aplicar la configuración de software y licencia a EC2 las instancias de manera coherente.

La EC2 plantilla de Amazon incluye su configuración de contexto de VPC y su configuración de instancia predeterminada, y cumple con los requisitos de etiquetado empresarial. Al usar una plantilla, un equipo puede crear sus propias instancias de desarrollo nuevas. 

Cuando se inicia una instancia de desarrollador, mediante la asociación con etiquetas, Systems Manager usa State Manager para aplicar la automatización. La automatización incluye los siguientes pasos generales.

1. Instale el software Enterprise Developer e instale las revisiones.

1. Instale el AccuRev cliente para Windows.

1. Instale el script preconfigurado para que los desarrolladores se unan a la AccuRev transmisión. Inicialice los espacios de trabajo de Eclipse.

1. Instale las herramientas de desarrollo, incluidas x3270, py3270 y Docker.

1. Configure los ajustes de la licencia para que apunten a un equilibrador de carga de License Manager.

El siguiente diagrama muestra una instancia de desarrollador empresarial creada por la EC2 plantilla de Amazon, con el software y la configuración aplicados a la instancia por State Manager. Las instancias de desarrollador empresarial se conectan AWS License Manager para activar su licencia.

![\[Nube de AWS diagram showing Enterprise Developer Instance setup with License Manager and Administrador de sistemas components.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/7ca8f538-8362-4a11-a842-7ecff6fa0248.png)


 

**3.  Canalización de CI/CD**

Como se explicó en la sección de AWS arquitectura, en el patrón hay canalizaciones a nivel de proyecto y CI/CD canalizaciones de integración de sistemas. Cada equipo de proyecto de mainframe crea una canalización o varias CI/CD canalizaciones para crear los programas que está desarrollando en un proyecto. Estas CI/CD canalizaciones de proyectos extraen el código fuente de una transmisión asociada. AccuRev  

En un equipo de proyecto, los desarrolladores promocionan su código en la AccuRev transmisión asociada. A continuación, la promoción inicia la canalización del proyecto para compilar el código y ejecutar las pruebas de integración. 

Cada CI/CD canalización de CodeBuild proyectos utiliza proyectos con la imagen Amazon ECR de la herramienta para desarrolladores empresariales y la imagen Amazon ECR de la herramienta Enterprise Test Server. 

CodePipeline y CodeBuild se utilizan para crear las canalizaciones. CI/CD Como CodeBuild no CodePipeline hay comisiones ni compromisos por adelantado, solo pagas por lo que utilizas. En comparación con el hardware de mainframe, la AWS solución reduce considerablemente el tiempo de aprovisionamiento del hardware y reduce el coste del entorno de pruebas.

En el desarrollo moderno, se utilizan múltiples metodologías de prueba. Por ejemplo, el desarrollo basado en pruebas (TDD), el BDD y Robot Framework. Con este patrón, los desarrolladores pueden usar estas herramientas modernas para realizar pruebas de mainframe. Por ejemplo, si utiliza x3270, py3270 y la herramienta de prueba Behave python, puede definir el comportamiento de una aplicación en línea. También puede utilizar la estructura robotizada Build mainframe 3270 en estos procesos. CI/CD 

El siguiente diagrama muestra el proceso de transmisión del equipo. CI/CD  

![\[Nube de AWS CI/CD pipeline showing CodeCommit, CodePipeline, and CodeBuild with Micro Focus tools integration.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/da59f837-2f23-404f-948b-41402cc6fe0c.png)


El siguiente diagrama muestra el informe de CI/CD prueba del proyecto elaborado por CodePipeline Mainframe3270 Robot Framework.

![\[Test report summary showing 100% pass rate for 3 test cases in 2.662 seconds.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/4752321a-c60d-455c-ac2f-6f0e2bc3dca0.png)


El siguiente diagrama muestra el informe de CI/CD prueba del proyecto elaborado por Py3270 y CodePipeline Behave BDD.

![\[Test report summary showing 100% pass rate for 2 test cases in a pipeline.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/d005466e-aeb8-4fd6-8342-743ed049f98a.png)


Una vez superadas las pruebas a nivel de proyecto, el código probado se transfiere manualmente al flujo de integración de SCM. AccuRev Puede automatizar este paso una vez que los equipos confíen en la cobertura de las pruebas de su cartera de proyectos.

Cuando se promueve el código, el proceso de integración del CI/CD sistema comprueba el código fusionado y realiza pruebas de regresión. El código fusionado se promueve desde todos los flujos de proyectos paralelos.

En función de la precisión del entorno de pruebas, los clientes pueden disponer de más CI/CD procesos de integración de sistemas en un entorno diferente, por ejemplo, UAT (preproducción). 

En el patrón, las herramientas utilizadas en la canalización de integración de sistemas son Enterprise Test Server, UFT Server y Verastream. Todas estas herramientas pueden desplegarse en el contenedor Docker y utilizarse con ellas. CodeBuild

Tras probar satisfactoriamente los programas del mainframe, el artefacto se almacena, con el control de versiones, en un bucket de S3. 

El siguiente diagrama muestra una CI/CD canalización de integración del sistema.

![\[CI/CD pipeline showing Servicios de AWS and Micro Focus tools for source, build, test, and promote stages.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/693212e5-1cd0-4f82-a910-39b00d977c38.png)


 

Una vez que el artefacto se haya probado satisfactoriamente en las CI/CD canalizaciones de integración del sistema, podrá promocionarse para su despliegue en producción. 

Si necesita volver a implementar el código fuente en el mainframe, Rocket Software ofrece la solución Enterprise Sync para sincronizar el código fuente desde el mainframe AccuRev Endeavour.

El siguiente diagrama muestra un proceso de producción que CI/CD despliega el artefacto en servidores empresariales. En este ejemplo, CodeDeploy organiza el despliegue del artefacto de mainframe probado en Enterprise Server.

![\[CI/CD pipeline diagram showing CodePipeline, CodeBuild, and CodeDeploy stages for artifact deployment.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2359db4c-f351-45a6-8516-88a3b62e61f9/images/56749c2a-e038-4e56-9487-b2ff83894725.png)


Además del tutorial de arquitectura en CI/CD proceso, consulte la entrada del AWS DevOps blog [Automatice miles de pruebas de mainframe AWS con Micro Focus Enterprise Suite para obtener más información sobre las pruebas](https://aws.amazon.com/blogs/devops/automate-mainframe-tests-on-aws-with-micro-focus/) de aplicaciones de mainframe en y. CodeBuild CodePipeline (Micro Focus ahora es Rocket Software). Consulte la entrada del blog para conocer las mejores prácticas y los detalles sobre cómo realizar pruebas de mainframe en. AWS

## Tools (Herramientas)
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-tools"></a>

**AWS herramientas de automatización**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [ CloudWatch Eventos de Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)

**Herramientas de Rocket Software**
+ [Rocket Enterprise Developer for Eclipse](https://www.microfocus.com/documentation/enterprise-developer/ed60/ED-Eclipse/GUID-8D6B7358-AC35-4DAF-A445-607D8D97EBB2.html)
+ [Rocket Enterprise Test Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ETS-help/GUID-ECA56693-D9FE-4590-8798-133257BFEBE7.html)
+ [Rocket Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/es_60/) (implementación en producción)
+ [Software Rocket AccuRev](https://supportline.microfocus.com/documentation/books/AccuRev/AccuRev/6.2/webhelp/wwhelp/wwhimpl/js/html/wwhelp.htm)
+ [Rocket Software Enterprise Suite License Manager](https://www.microfocus.com/documentation/slm/)
+ [Rocket Software Verastream Host Integrator](https://www.microfocus.com/documentation/verastream-host-integrator/)
+ [Rocket Software UFT One](https://admhelp.microfocus.com/uft/en/24.4/UFT_Help/Content/User_Guide/Ch_UFT_Intro.htm)

**Otras herramientas**
+ x3270
+ [py3270](https://pypi.org/project/py3270/)
+ [Robot-Framework-Mainframe-3270-Library](https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library)

## Epics
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-epics"></a>

### Cree la infraestructura AccuRev SCM
<a name="create-the-accurev-scm-infrastructure"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente un servidor AccuRev SCM principal mediante. CloudFormation |  | AWS CloudFormation | 
| Cree el usuario AccuRev administrador. | Inicie sesión en el servidor AccuRev SCM y ejecute el comando CLI para crear un usuario administrador. | AccuRev Administrador del servidor SCM | 
| Crea AccuRev transmisiones. | Cree AccuRev flujos que hereden de los flujos superiores en secuencia: flujos de producción, integración de sistemas y equipos. | AccuRev Administrador de SCM | 
| Cree las cuentas de inicio de AccuRev sesión del desarrollador. | Utilice los comandos CLI de AccuRev SCM para crear cuentas de inicio de sesión de AccuRev usuarios para desarrolladores de mainframe. | AccuRev Administrador de SCM | 

### Cree la plantilla de EC2 lanzamiento de Amazon para desarrolladores empresariales
<a name="create-the-enterprise-developer-ec2-launch-template"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente la plantilla de EC2 lanzamiento de Amazon utilizando CloudFormation. | Se usa CloudFormation para implementar una plantilla de EC2 lanzamiento de Amazon para instancias de Enterprise Developer. La plantilla incluye un documento de Automatización de Systems Manager para la instancia de Rocket Enterprise Developer. | AWS CloudFormation | 
| Crea la instancia de Enterprise Developer a partir de la EC2 plantilla de Amazon. |  | Habilidades de desarrollador de mainframe y inicio de sesión en la consola de AWS | 

### Creación de la imagen de Docker de la herramienta Enterprise Developer
<a name="create-the-enterprise-developer-tool-docker-image"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear la imagen de Docker de la herramienta Enterprise Developer. | Utilice el comando de Docker y el Dockerfile de la herramienta Enterprise Developer para crear la imagen de Docker. | Docker | 
| Cree el repositorio de Docker en Amazon ECR. | En la consola de Amazon ECR, cree el repositorio para la imagen de Docker de Enterprise Developer. | Amazon ECR | 
| Enviar la imagen de Docker de la herramienta Enterprise Developer a Amazon ECR. | Ejecute el comando push de Docker para enviar la imagen de Docker de la herramienta para desarrolladores empresariales y guardarla en el repositorio de Docker de Amazon ECR. | Docker | 

### Creación de la imagen de Docker de Enterprise Test Server
<a name="create-the-enterprise-test-server-docker-image"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear la imagen de Docker de Enterprise Test Server. | Utilice el comando de Docker y el Dockerfile de Enterprise Test Server para crear la imagen de Docker. | Docker | 
| Cree el repositorio de Docker en Amazon ECR. | En la consola de Amazon ECR, cree el repositorio de Amazon ECR para la imagen de Docker de Enterprise Test Server. | Amazon ECR | 
| Enviar la imagen de Docker de Enterprise Test Server a Amazon ECR. | Ejecute el comando push de Docker para enviar y guardar la imagen de Docker del Enterprise Test Server en Amazon ECR. | Docker | 

### Crea la CI/CD canalización de transmisión del equipo
<a name="create-the-team-stream-ci-cd-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea el CodeCommit repositorio. | En la CodeCommit consola, cree un repositorio basado en Git para la infraestructura y el CloudFormation código. | AWS CodeCommit | 
| Cargue la CloudFormation plantilla y el código de automatización en el CodeCommit repositorio. | Ejecuta el comando Git push para cargar la CloudFormation plantilla y el código de automatización en el repositorio. | Git | 
| Implemente la CI/CD canalización de transmisiones en equipo mediante CloudFormation. | Usa la CloudFormation plantilla preparada para implementar una CI/CD canalización de transmisión en equipo. | AWS CloudFormation | 

### Cree la CI/CD canalización de integración del sistema
<a name="create-the-system-integration-ci-cd-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear la imagen de Docker de UFT. | Utilice el comando de Docker y el Dockerfile de UFT para crear la imagen de Docker. | Docker | 
| Crear el repositorio de Docker en Amazon ECR para la imagen de UFT. | En la consola de Amazon ECR, cree el repositorio de Docker para la imagen de UFT. | Amazon ECR | 
| Enviar la imagen de Docker de UFT a Amazon ECR. | Ejecute el comando push de Docker para enviar y guardar la imagen de Docker del Enterprise Test Server en Amazon ECR. | Docker | 
| Crear la imagen de Docker de Verastream. | Utilice el comando de Docker y el Dockerfile de Verastream para crear la imagen de Docker. | Docker | 
| Crear el repositorio de Docker en Amazon ECR para la imagen de Verastream. | En la consola de Amazon ECR, cree el repositorio de Docker para la imagen de Verastream. | Amazon ECR | 
| Implemente la CI/CD canalización de integración del sistema mediante CloudFormation. | Utilice la CloudFormation plantilla preparada para implementar una CI/CD canalización de integración de sistemas. | AWS CloudFormation | 

### Cree una CI/CD canalización de despliegue de producción
<a name="create-production-deployment-ci-cd-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente Enterprise Server mediante el AWS Quick Start. | Para implementar Enterprise Server mediante CloudFormation, inicie Enterprise Server en AWS Quick Start. | AWS CloudFormation | 
| Implemente una CI/CD canalización de despliegue en producción. | En la CloudFormation consola, utilice la CloudFormation plantilla para implementar una CI/CD canalización de despliegue de producción. | AWS CloudFormation | 

## Recursos relacionados
<a name="mainframe-modernization-devops-on-aws-with-micro-focus-resources"></a>

**Referencias**
+ [AWS DevOps Blog - Automatice miles de pruebas de mainframe AWS con Micro Focus Enterprise Suite](https://aws.amazon.com/blogs/devops/automate-mainframe-tests-on-aws-with-micro-focus/) (Micro Focus ahora es Rocket Software).
+ [repositorio py3270/py3270 GitHub ](https://github.com/py3270/py3270)
+ [Repositorio de bibliotecas GitHub Altran-PT-GDC/Robot-Framework-Mainframe-3270](https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library)
+ [¡Bienvenido a Behave\$1](https://behave.readthedocs.io/en/latest/index.html)
+ [Blog de socios de la APN - Etiqueta: Micro Focus](https://aws.amazon.com/blogs/apn/tag/micro-focus/) (Micro Focus ahora es Rocket Software)
+ [Lanzamiento de una instancia desde una plantilla de lanzamiento](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)

**AWS Marketplace**
+ [Rocket Software UFT One](https://aws.amazon.com/marketplace/pp/B01EGCA5OS?ref_=srh_res_product_title)

**AWS Quick Start (Inicio rápido)**
+ [Rocket Enterprise Server en AWS](https://aws.amazon.com/quickstart/architecture/micro-focus-enterprise-server/)

# Modernizar las cargas de trabajo de impresión en línea de mainframe en AWS mediante Micro Focus Enterprise Server y LRS VPSX/MFI
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi"></a>

*Shubham Roy y Kevin Yung, Amazon Web Services*

*Abraham Rondon, Micro Focus*

*Guy Tucker, Levi, Ray and Shoup Inc*

## Resumen
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-summary"></a>

Este patrón le muestra cómo modernizar sus cargas de trabajo de impresión online de mainframe críticas para la empresa en la nube de Amazon Web Services (AWS) mediante el uso de Micro Focus Enterprise Server como entorno de ejecución para una aplicación de mainframe modernizada y LRS VPSX/MFI (Micro Focus Interface) como servidor de impresión. El patrón se basa en el enfoque de modernización del mainframe a través de [redefinir la plataforma.](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/) Con este enfoque, migra su aplicación en línea de mainframe a Amazon Elastic Compute Cloud (Amazon EC2) y migra su base de datos de mainframe, como IBM ( DB2 forz/OS, to Amazon Relational Database Service (Amazon RDS). The authentication and authorization for the modernized print workflow is performed by AWS Directory Service for Microsoft Active Directory, also known as AWS Managed Microsoft AD. The LRS Directory Information Server (LRS/DIS), integrada con AWS Managed Microsoft AD para la autenticación y autorización del flujo de trabajo de impresión. Al modernizar sus cargas de trabajo de impresión en línea, puede reducir los costos de infraestructura de TI, mitigar la carga técnica que supone el mantenimiento de los sistemas heredados, eliminar los silos de datos, aumentar la agilidad y la eficiencia con un DevOps modelo y aprovechar los recursos bajo demanda y la automatización en la nube de AWS.

## Requisitos previos y limitaciones
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una carga de trabajo de impresión en línea o administración de producción de mainframe
+ Conocimientos básicos sobre cómo recompilar y entregar una aplicación de mainframe ejecutada en Micro Focus Enterprise Server (para obtener más información, consulte la hoja de datos de [Enterprise Server](https://www.microfocus.com/media/data-sheet/enterprise_server_ds.pdf) en la documentación de Micro Focus).
+ Conocimientos básicos de las soluciones y conceptos de impresión en la nube de LRS (para obtener más información, consulte [Modernización de la producción](https://www.lrsoutputmanagement.com/products/modernization-products) en la documentación de LRS).
+ Software y licencia de Micro Focus Enterprise Server (para obtener más información, póngase en contacto con el [departamento de ventas de Micro Focus](https://www.microfocus.com/en-us/contact/contactme)).
+ VPSX/MFI, LRS/Queue, and LRS/DIS[Software y licencias de LRS (para obtener más información, póngase en contacto con el departamento de ventas de LRS).](https://www.lrsoutputmanagement.com/about-us/contact-us/)

**nota**  
Para obtener más información sobre las consideraciones de configuración de las cargas de trabajo de impresión en línea de mainframe, consulte *Consideraciones* en la sección *Información adicional* de este patrón.

**Versiones de producto**
+ [Micro Focus Enterprise Server](https://www.microfocus.com/en-us/products/enterprise-server/overview?utm_campaign=7018e000000PgfnAAC&utm_content=SCH-BR-AMC-AppM-AMS&gclid=EAIaIQobChMIoZCQ6fvS9wIVxQN9Ch2MzAOlEAAYASAAEgKx2fD_BwE) 8.0 o posterior
+ [LRS VPSX/MFI](https://www.lrsoutputmanagement.com/products/modernization-products/) V1R3 o posterior

## Arquitectura
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-architecture"></a>

**Pila de tecnología de origen**
+ Sistema operativo: IBM z/OS
+ Lenguaje de programación – Common Business-Oriented Language (COBOL), y Customer Information Control System (CICS) 
+ Base de datos: z/OS IBM DB2 para el sistema de gestión de la información (IMS) y el método de acceso al almacenamiento virtual (VSAM) de IBM
+ Seguridad: Resource Access Control Facility (RACF), CA Top Secret para z/OS y Access Control Facility 2 () ACF2
+ Gestión de impresión y salida: productos de z/OS impresión para mainframes de IBM (IBM Infoprint Server for z/OS, LRS y CA View)

**Pila de tecnología de destino**
+ Sistema operativo: Microsoft Windows Server que se ejecuta en Amazon EC2
+ Informática — Amazon EC2
+ Lenguaje de programación – COBOL y CICS
+ Bases de datos: Amazon RDS
+ Seguridad: AWS Managed Microsoft AD
+ Administración de impresión y producción: solución de impresión LRS en AWS
+ Entorno de tiempo de ejecución de mainframe – Micro Focus Enterprise Server

**Arquitectura de origen**

En el siguiente diagrama se muestra una arquitectura de estado actual típica para una carga de trabajo de impresión en línea de mainframe.

![\[Proceso de seis pasos para producir una salida visible.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/293368f5-d102-4f4e-b290-71da4aeff347.png)


El diagrama muestra el siguiente flujo de trabajo:

1. Los usuarios llevan a cabo transacciones comerciales en un sistema de participación (SoE) que se basa en una aplicación CICS de IBM escrita en COBOL.

1. El SoE invoca el servicio de mainframe, que registra los datos de las transacciones comerciales en una base de datos system-of-records (SoR), como IBM DB2 for z/OS.

1. El SoR conserva los datos comerciales del SoE.

1. Un usuario inicia una solicitud para generar un resultado de impresión desde el CICS SoE, que inicia una solicitud de transacción de impresión para procesar la solicitud de impresión. 

1. La aplicación de transacciones de impresión (como un programa CICS y COBOL) extrae los datos de la base de datos, los formatea de acuerdo con los requisitos empresariales y genera resultados empresariales (datos impresos), como extractos de facturación, tarjetas de identidad o extractos de préstamos. A continuación, la aplicación envía una solicitud de impresión mediante el método de acceso virtual a las telecomunicaciones (VTAM). Un servidor de z/OS impresión (como IBM Infoprint Server) utiliza NetSpool o un componente VTAM similar para interceptar las solicitudes de impresión y, a continuación, crea conjuntos de datos de salida de impresión en la bobina de JES mediante los parámetros de salida de JES. Los parámetros de salida del JES especifican la información de enrutamiento que el servidor de impresión utiliza para transmitir la salida a una impresora de red determinada. El término *VTAM* se refiere al servidor de z/OS comunicaciones y al elemento de servicios de la arquitectura de red del sistema (SNA) de z/OS.

1. El componente de transmisión de la producción de impresión transmite los conjuntos de datos de impresión de salida desde la bobina JES a impresoras o servidores de impresión remotos, como LRS (como se demuestra en este patrón), IBM Infoprint Server o destinos de correo electrónico.

**Arquitectura de destino**

El siguiente diagrama muestra una arquitectura para una carga de trabajo de impresión en línea de mainframe que se implementa en la nube de AWS:

![\[Proceso de cuatro pasos, desde la solicitud de inicio de la impresión hasta el procesamiento en AWS y la impresión de LRS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/07c97b6f-1a86-493d-a4e0-b8321b46f9b7.png)


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

1. Un usuario inicia una solicitud de impresión desde una interfaz de usuario en línea (CICS) para crear la producción de impresión, como extractos de facturación, tarjetas de identificación o extractos de préstamos.

1. La aplicación en línea de mainframe ([rediseñada para Amazon EC2](https://aws.amazon.com/blogs/apn/demystifying-legacy-migration-options-to-the-aws-cloud/)) utiliza el tiempo de ejecución de Micro Focus Enterprise Server para extraer datos de la base de datos de la aplicación, aplicar lógica empresarial a los datos, formatear los datos y, a continuación, enviar los datos a un destino de impresión mediante [Micro Focus CICS Print Exit](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/HCOMCMJCLOU020.html) (DFHUPRNT). 

1. La base de datos de la aplicación (un SoR que se ejecuta en Amazon RDS) conserva los datos para su impresión.

1. La solución de VPSX/MFI impresión LRS se implementa en Amazon EC2 y sus datos operativos se almacenan en Amazon Elastic Block Store (Amazon EBS). LRS VPSX/MFI usa un TCP/IP-based LRS/Queue transmission agent to collect print data through the Micro Focus CICS Print Exit API (DFHUPRNT) and deliver the data to a specified printer destination. The original TERMID (TERM) that’s used in the modernized CICS application is used as the VPSX/MFI nombre de cola. 

**nota**  
La solución de destino no suele requerir cambios en la aplicación para adaptarla a los lenguajes de formato de mainframe, como IBM Advanced Function Presentation (AFP) o Xerox Line Condition Data Stream (LCDS). Para obtener más información sobre el uso de Micro Focus para la migración y modernización de aplicaciones de mainframe en AWS, consulte [Potenciar las cargas de trabajo de mainframe empresarial en AWS con Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/) en la documentación de AWS.

**Arquitectura de infraestructura de AWS**

El siguiente diagrama muestra una arquitectura de infraestructura de AWS segura y de alta disponibilidad para una carga de trabajo de impresión en línea de mainframe:

![\[Dos zonas de disponibilidad con el servidor Micro Focus Enterprise activado EC2, Amazon RDS e impresión LRS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/images/093555a1-342c-420c-bb90-e9440d2e8650.png)


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

1. La aplicación en línea para mainframe (escrita en un lenguaje de programación como CICS o COBOL) utiliza la lógica empresarial básica para procesar y generar la producción de impresión, como extractos de facturación, tarjetas de identidad y extractos de préstamos. La aplicación en línea se implementa en Amazon en dos [zonas EC2 de disponibilidad](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) (AZ) para una alta disponibilidad (HA) y utiliza Micro Focus CICS Print Exit para enrutar los resultados de impresión a LRS VPSX/MFI para que los impriman los usuarios finales.

1. LRS utiliza un comando. VPSX/MFI TCP/IP-based LRS/Queue transmission agent to collect or capture print data from the Micro Focus online Print Exit programming interface. Online Print Exit passes the necessary information to enable LRS VPSX/MFI to effectively process the print file and dynamically build LRS/Queue 
**nota**  
Para obtener más información sobre los distintos métodos de programación de aplicaciones CICS para la impresión y sobre su compatibilidad con Micro Focus Enterprise Server y LRS VPSX/MFI, consulte *Captura de datos de impresión* en la sección *Información adicional* de este patrón.

1. 
**nota**  
Un [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) proporciona un nombre DNS para integrar Micro Focus Enterprise Server con LRS VPSX/MFI. : LRS VPSX/MFI supports a Layer 4 load balancer. The Network Load Balancer also does a basic health check on LRS VPSX/MFI y enruta el tráfico a los destinos registrados que están en buen estado.

1. El servidor de VPSX/MFI impresión LRS se implementa en Amazon en EC2 dos zonas de disponibilidad para alta disponibilidad y utiliza [Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) como almacén de datos operativos. El LRS VPSX/MFI admite los modos de servicio activo-activo y activo-pasivo. Esta arquitectura utiliza varias zonas de disponibilidad en un par activo-pasivo como activo y modo de espera activa. El Network Load Balancer realiza una comprobación del estado de las VPSX/MFI EC2 instancias LRS y enruta el tráfico a las instancias activas en espera en otra zona de disponibilidad si una instancia activa se encuentra en mal estado. Las solicitudes de impresión se conservan en la cola de trabajos del LRS de forma local en cada una de las instancias. EC2 En caso de recuperación, se debe reiniciar una instancia fallida para que los servicios de LRS reanuden el procesamiento de la solicitud de impresión. 
**nota**  
El LRS también VPSX/MFI puede realizar comprobaciones de estado a nivel de flota de impresoras. Para obtener más información, consulte *Comprobaciones de estado de la flota de impresoras* en la sección de *Información adicional* de este patrón.

1. [AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) se integra LRS/DIS para llevar a cabo la autenticación y autorización del flujo de trabajo de impresión. Para obtener más información, consulte *Autenticación y autorización de impresión* en la sección de *Información adicional* de este patrón.

1. LRS VPSX/MFI utiliza Amazon EBS para el almacenamiento en bloque. Puede hacer copias de seguridad de los datos de Amazon EBS de EC2 las instancias activas en Amazon S3 como point-in-time instantáneas y restaurarlos en volúmenes de EBS activos en espera. Para automatizar la creación, retención y eliminación de instantáneas de volúmenes de Amazon EBS, puede usar [Amazon Data Lifecycle Manager](https://aws.amazon.com/blogs/aws/new-lifecycle-management-for-amazon-ebs-snapshots/) para establecer la frecuencia de las instantáneas automatizadas y restaurarlas en función de sus [necesidades de RTO/RPO](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html).

## Tools (Herramientas)
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) proporciona volúmenes de almacenamiento a nivel de bloques para su uso con las instancias de Amazon. EC2 Los volúmenes de EBS se comportan como dispositivos de bloques sin formatear. Puede montar estos volúmenes como dispositivos en sus instancias.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [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.
+ [AWS Directory Service para Microsoft Active Directory (AD)](https://aws.amazon.com/directoryservice/active-directory/), también conocido como AWS Managed Microsoft Active Directory, permite que sus cargas de trabajo compatibles con directorios y los recursos de AWS utilicen Active Directory administrado en AWS.

**Otras herramientas**
+ [LRS VPSX/MFI (Micro Focus Interface)](https://www.lrsoutputmanagement.com/products/modernization-products/), una interfaz desarrollada conjuntamente por LRS y Micro Focus, captura la producción de una bobina JES de Micro Focus Enterprise Server y la entrega de forma fiable a un destino de impresión específico.
+ El servidor de información de directorio LRS (LRS/DIS) se utiliza para la autenticación y la autorización durante el flujo de trabajo de impresión.
+ LRS/Queue is a TCP/IP-based LRS/Queue transmission agent, used by LRS VPSX/MFI, para recopilar o capturar datos de impresión a través de la interfaz de programación Print Exit en línea de Micro Focus.
+ [Micro Focus Enterprise Server](https://www.microfocus.com/documentation/enterprise-developer/ed60/ES-WIN/GUID-A2F23243-962B-440A-A071-480082DF47E7.html) es un entorno de implementación de aplicaciones para aplicaciones de mainframe. Proporciona el entorno de ejecución para las aplicaciones de mainframe que se migran o crean con cualquier versión de Micro Focus Enterprise Developer.

## Epics
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-epics"></a>

### Configure Micro Focus Enterprise Server en Amazon EC2 e implemente una aplicación en línea para mainframe
<a name="set-up-micro-focus-enterprise-server-on-amazon-ec2-and-deploy-a-mainframe-online-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Micro Focus Enterprise Server e implemente una aplicación en línea de demostración. | Configure Micro Focus Enterprise Server en Amazon y EC2, a continuación, despliegue la aplicación Micro Focus Account Demo (ACCT Demo) en Amazon EC2 siguiendo las instrucciones del [Tutorial: CICS Support](https://www.microfocus.com/documentation/enterprise-developer/ed70/ED-Eclipse/GMWALK00.html) de la documentación de Micro Focus.La aplicación ACCT Demo es una aplicación en línea para mainframe (CICS) que crea y, a continuación, inicia la producción de impresión. | Arquitecto de la nube | 

### Configurar un servidor de impresión LRS en Amazon EC2
<a name="set-up-an-lrs-print-server-on-amazon-ec2"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Obtenga una licencia de producto LRS para imprimir. | Para obtener una licencia de producto LRS para LRSVPSX/MFI, LRS/Queue, and LRS/DIS, póngase en contacto con el equipo de gestión de producción de [LRS.](https://www.lrsoutputmanagement.com/about-us/contact-us/) Debe proporcionar los nombres de host de las EC2 instancias en las que se instalarán los productos de LRS. | Responsable de compilación | 
| Cree una instancia de Amazon EC2 Windows para instalar LRS VPSX/MFI. | Para lanzar una instancia de Amazon EC2 Windows, sigue las instrucciones del [paso 1: lanzar una instancia](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-launch-instance) de la EC2 documentación de Amazon. La instancia debe cumplir los siguientes requisitos de hardware y software para LRS VPSX/MFI:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)Los requisitos de hardware y software anteriores están pensados para una flota de impresoras pequeña (entre 500 y 1000). Para conocer todos los requisitos, consulte a sus personas de contacto en LRS y AWS.Cuando cree la instancia de Windows, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Instale LRS VPSX/MFI en la EC2 instancia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Instale LRS/Queue. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Instale LRS/DIS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Cree un grupo objetivo y registre LRS VPSX/MFI EC2 como destino. | Cree un grupo de destino siguiendo las instrucciones de [Crear un grupo de destino para el equilibrador de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-target-group.html) en la documentación en el equilibrador de carga de red elástico.Al crear el grupo de destino, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Crear un equilibrador de carga de red. | Siga las instrucciones de [Crear un equilibrador de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) en la documentación de Elastic Load Balancing. Su Network Load Balancer dirige el tráfico de Micro Focus Enterprise Server a LRS. VPSX/MFI EC2Al crear el equilibrador de carga de red, siga los pasos siguientes en la página **Listeners and Routing** (Oyentes y enrutamiento):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Integre Micro Focus Enterprise Server con LRS y LRS/Queue VPSX/MFI
<a name="integrate-micro-focus-enterprise-server-with-lrs-vpsx-mfi-and-lrs-queue"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Micro Focus Enterprise Server para la integración. LRS/Queue  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Haga que CICS Print Exit (DFHUPRNT) esté disponible para la inicialización de Micro Focus Enterprise Server. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)**Comprobar que Micro Focus Enterprise Server haya detectado CICS Print Exit (DFHUPRNT)**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Defina el ID de terminal de la impresora CICS (TERMIDs) como Micro Focus Enterprise Server. | **Habilitar la impresión 3270 en Micro Focus Enterprise Server**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)**Defina el terminal de la impresora CICS en Micro Focus Enterprise Server**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Configure impresoras y usuarios de impresión en Micro Focus Enterprise Server y LRS VPSX/MFI
<a name="set-up-printers-and-print-users-in-micro-focus-enterprise-server-and-lrs-vpsx-mfi"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una cola de impresión en LRS VPSX. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)La cola de impresión debe ser equivalente a la impresión TERMIDs creada en Micro Focus Enterprise Server. | Arquitecto de la nube | 
| Cree un usuario de impresión en LRS VPSX/MFI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Configure imprimir autenticación y autorización
<a name="set-up-print-authentication-and-authorization"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un dominio de AWS Managed Microsoft AD con usuarios y grupos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 
| Une LRS VPSX/MFI EC2 a un dominio de Microsoft AD gestionado por AWS. | Une LRS VPSX/MFI EC2 a tu dominio de Microsoft AD gestionado por AWS de [forma automática](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-systems-manager-dx-domain/) (documentación del AWS Knowledge Center) o [manualmente](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html) (documentación de AWS Directory Service). | Arquitecto de la nube | 
| Configure e integre LRS/DIS con AWS Managed Microsoft AD. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html) | Arquitecto de la nube | 

### Probar un flujo de trabajo de impresión en línea
<a name="test-an-online-print-workflow"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie una solicitud de impresión en línea desde la aplicación Micro Focus ACCT Demo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)El mensaje “Solicitud de impresión programada” se muestra en la parte inferior de la pantalla. Esto confirma que se generó una solicitud de impresión en línea desde la aplicación ACCT Demo y se envió a LRS VPS/MFI para su procesamiento de impresión.  | Arquitecto de la nube | 
| Compruebe la producción de impresión en LRS VPSX/MFI. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.html)Ahora puede ver el resultado de impresión de un extracto de cuenta con columnas para el número de cuenta, el apellido, el nombre, la dirección, el teléfono, el número de tarjetas emitidas, la fecha de emisión, el importe y el saldo.Para ver un ejemplo, consulte el archivo adjunto **online\$1print\$1output** para ver este patrón. | Ingeniero de pruebas | 

## Recursos relacionados
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-resources"></a>
+ [Modernización de la producción de LRS](https://www.lrsoutputmanagement.com/products/modernization-products) (documentación de LRS)
+ [Conceptos de redes VTAM](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-vtam-networking-concepts) (documentación de IBM)
+ [Resumen de los tipos de unidades lógicas (LU)](https://www.ibm.com/docs/en/wsfz-and-o/1.1?topic=installation-summary-logical-unit-lu-types) (documentación de IBM)
+ [Controles ANSI y de carro de máquinas](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls) (documentación de IBM)
+ [Capacitación de las cargas de trabajo de mainframe empresariales en AWS con Micro Focus](https://aws.amazon.com/blogs/apn/empowering-enterprise-grade-mainframe-workloads-on-aws-with-micro-focus/) (blog de AWS Partner Network)
+ [Cree un PAC para servidores empresariales de Micro Focus con Amazon EC2 Auto Scaling y Systems Manager (documentación](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.html) de AWS Prescriptive Guidance)
+ Flujo de datos de [Presentación de funciones avanzadas (AFP)](https://www.ibm.com/docs/en/i/7.4?topic=streams-advanced-function-presentation-data-stream) (documentación de IBM)
+ [Flujo de datos condicionado por línea (LCDS)](https://www.compart.com/en/lcds) (documentación de Compart)

## Información adicional
<a name="modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi-additional"></a>

**Consideraciones**

Durante su proceso de modernización, puede considerar una amplia variedad de configuraciones para los procesos en línea del mainframe y la producción que generan. Todos los clientes y proveedores que utilizan la plataforma de mainframe la han personalizado con requisitos particulares que afectan directamente a la impresión. Por ejemplo, su plataforma actual puede incorporar Advanced Function Presentation (AFP) de IBM o Line Condition Data Stream (LCDS) de Xerox en el flujo de trabajo actual. Además, los [caracteres de control de carro de mainframe](https://www.ibm.com/docs/en/cmofz/9.5.0?topic=tips-ansi-machine-carriage-controls) y las [palabras de comando de canal](https://www.ibm.com/docs/en/zos/2.3.0?topic=devices-channel-command-words) pueden afectar al aspecto de la página impresa y pueden requerir un tratamiento especial. Como parte del proceso de planificación de la modernización, le recomendamos evaluar y comprender las configuraciones de su entorno de impresión específico.

**Captura de datos de impresión**

En esta sección se resumen los métodos de programación de aplicaciones CICS que puede utilizar en un entorno de mainframe de IBM para la impresión. Los VPSX/MFI componentes del LRS proporcionan técnicas que permiten a los mismos programas de aplicación crear datos de la misma manera. En la siguiente tabla se describe cómo se admite cada método de programación de aplicaciones en una aplicación CICS modernizada que se ejecuta en AWS y Micro Focus Enterprise Server con un servidor de impresión LRS VPSX/MFI .


| 
| 
| Método | Description (Descripción) | Soporte para el método en un entorno modernizado | 
| --- |--- |--- |
| EXEC CICS SEND TEXT..    or EXEC CICS SEND MAP..  | Estos métodos CICS y VTAM son responsables de crear y entregar los flujos de datos de impresión 3270/SCS a los dispositivos de impresión LUTYPE0 y a los dispositivos de impresión. LUTYPE1 LUTYPE3  | La interfaz de programa de aplicación (API) Online Print Exit (DFHUPRNT) de Micro Focus permite procesar los datos de impresión al crear flujos de datos de impresión 3270/SCS mediante VPSX/MFI cualquiera de estos métodos.  | 
| EXEC CICS SEND TEXT..    or EXEC CICS SEND MAP.. (con software de mainframe de IBM de terceros) | Los métodos CICS y VTAM se encargan de crear y entregar los flujos de datos de impresión 3270/SCS a los dispositivos de impresión LUTYPE0 y a los dispositivos de impresión. LUTYPE1 LUTYPE3 Los productos de software de terceros interceptan los datos de impresión, los convierten en datos de formato de impresión estándar con un carácter de ASA/MCH control y colocan los datos en la bobina JES para que los procesen sistemas de impresión basados en ordenadores centrales que utilizan JES.  | La API Print Exit online (DFHUPRNT) de Micro Focus permite procesar los datos de impresión antes de crear flujos de datos de impresión VPSX/MFI 3270/SCS mediante uno de estos métodos.  | 
| EXEC CICS SPOOLOPEN  | Los programas de aplicación CICS utilizan este método para escribir datos directamente en la bobina JES. A continuación, los datos están disponibles para ser procesados por sistemas de impresión basados en mainframe que utilizan JES.  | Micro Focus Enterprise Server envía los datos a la bobina de Enterprise Server, donde los puede procesar VPSX/MFI Batch Print Exit (LRSPRTE6), que envía los datos a VPSX.  | 
| DRS/API | Se utiliza una interfaz de programación proporcionada por LRS para escribir los datos de impresión en JES.  | VPSX/MFI proporciona una interfaz de reemplazo que envía los datos de impresión directamente al VPSX.  | 

**Comprobación de estado de la flota de impresoras**

El LRS VPSX/MFI (LRS LoadX) puede realizar exhaustivas comprobaciones de estado, incluidas la gestión de los dispositivos y la optimización operativa. La administración de dispositivos puede detectar un error en un dispositivo de impresión y dirigir la solicitud de impresión a una impresora en buen estado. Para obtener más información sobre las comprobaciones de estado exhaustivas de las flotas de impresoras, consulte la documentación de LRS que se incluye con la licencia del producto.

**Imprimir autenticación y autorización**

LRS/DIS enables LRS applications to authenticate user IDs and passwords by using Microsoft Active Directory or an LDAP server. In addition to basic print authorization, LRS/DIStambién puede aplicar controles de seguridad de impresión de nivel granular en los siguientes casos de uso:
+ Gestione quién puede examinar el trabajo de impresión.
+ Gestione el nivel de navegación de los trabajos de otros usuarios.
+ Gestione las tareas operativas. Por ejemplo, la seguridad a nivel de comandos, como retener o liberar, purgar, modificar, copiar y redirigir. La seguridad se puede configurar mediante el ID de usuario o el grupo (similar al grupo AD o al grupo LDAP).

## Conexiones
<a name="attachments-924cdae7-9265-4fc9-8e5e-bb2da5368e7e"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/924cdae7-9265-4fc9-8e5e-bb2da5368e7e/attachments/attachment.zip)

# Mover los archivos de mainframe directamente a Amazon S3 mediante Transfer Family
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family"></a>

*Luis Gustavo Dantas, Amazon Web Services*

## Resumen
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-summary"></a>

Como parte del proceso de modernización, puede afrontar el desafío de transferir archivos entre sus servidores en las instalaciones y la nube de Amazon Web Services (AWS). La transferencia de datos desde mainframes puede suponer un desafío importante, ya que los mainframes normalmente no pueden acceder a los almacenes de datos modernos como Amazon Simple Storage Service (Amazon S3), Amazon Elastic Block Store (Amazon EBS) o Amazon Elastic File System (Amazon EFS).

Muchos clientes utilizan recursos de almacenamiento provisional intermedios, como servidores Linux, Unix o Windows en las instalaciones, para transferir archivos a la nube de AWS. Puede evitar este método indirecto si utiliza AWS Transfer Family con el protocolo de File Transfer (SFTP) de Secure Shell (SSH) para cargar archivos de mainframe directamente a Amazon S3.

## Requisitos previos y limitaciones
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una nube privada virtual (VPC) con una subred a la que pueda acceder la plataforma antigua
+ Un punto de conexión de Transfer Family para su VPC
+ Archivos del método de acceso al almacenamiento virtual (VSAM) de mainframe convertidos en [archivos de longitud fija](https://www.ibm.com/docs/en/zos/2.1.0?topic=reports-converting-vb-fb) secuenciales (documentación de IBM)

**Limitaciones**
+ SFTP transfiere los archivos en modo binario de forma predeterminada, lo que significa que los archivos se cargan en Amazon S3 conservando la codificación EBCDIC. Si el archivo no contiene datos binarios o empaquetados, puede utilizar el **sftp **[ascii subcommand](https://www.ibm.com/docs/en/zos/2.3.0?topic=version-what-zos-openssh-supports) (documentación de IBM) para convertir los archivos en texto durante la transferencia.
+ Debe [desempaquetar los archivos de mainframe](https://apg-library.amazonaws.com/content/f5907bfe-7dff-4cd0-8523-57015ad48c4b) (Recomendaciones de AWS) que contengan contenido empaquetado y binario para poder utilizar estos archivos en el entorno de destino.
+ El tamaño de los objetos de Amazon S3 puede oscilar entre un mínimo de 0 bytes y un máximo de 5 TB. Para obtener más información sobre las capacidades de Amazon S3, consulte [Amazon S3 FAQs](https://aws.amazon.com/s3/faqs/?nc1=h_ls).

## Arquitectura
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-architecture"></a>

**Pila de tecnología de origen**
+ Lenguaje de control de tareas (JCL)
+ Intérprete de comandos e ISPF para z/OS Unix
+ SFTP
+ VSAM y archivos planos

**Pila de tecnología de destino**
+ Transfer Family
+ Amazon S3
+ Amazon Virtual Private Cloud (Amazon VPC)

**Arquitectura de destino**

El diagrama siguiente muestra una arquitectura de referencia para usar Transfer Family con SFTP para cargar archivos de mainframe directamente a un bucket de S3.

![\[Uso de Transfer Family con SFTP para cargar archivos de mainframe directamente a un bucket de S3\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/1f4fa1fd-b681-41bc-81d8-d556426b14c2/images/110491d5-b58d-4451-8de9-e742756bb192.png)


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

1. Se utiliza un trabajo de JCL para transferir los archivos de mainframe del mainframe heredado a la nube de AWS a través de Direct Connect.

1. Direct Connect permite que el tráfico de la red permanezca en la red global de AWS y evite la Internet pública. Direct Connect también mejora la velocidad de la red, empezando en 50 Mbps y escalando verticalmente hasta 100 Gbps.

1. El punto de conexión de VPC permite las conexiones entre los recursos de la VPC y los servicios compatibles sin utilizar la Internet pública. El acceso a Transfer Family y Amazon S3 logra una alta disponibilidad al realizarse a través de las interfaces de red elásticas ubicadas en dos subredes privadas y zonas de disponibilidad.

1. Transfer Family autentica a los usuarios y usa SFTP para recibir los archivos del entorno heredado y moverlos a un bucket de S3.

**Automatizar y escalar**

Una vez implementado el servicio Transfer Family, puede transferir un número ilimitado de archivos desde el mainframe a Amazon S3 utilizando un trabajo de JCL como cliente SFTP. También puede automatizar la transferencia de archivos mediante el uso de un programador de trabajos por lotes del mainframe para ejecutar los trabajos de SFTP cuando esté todo a punto para transferir los archivos del mainframe.

## Tools (Herramientas)
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-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 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.
+ [AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) le permite escalar de forma segura sus transferencias de business-to-business archivos recurrentes a Amazon S3 y Amazon EFS mediante los protocolos SFTP, FTPS y FTP.

## Epics
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-epics"></a>

### Crear el bucket de S3 y la política de acceso
<a name="create-the-s3-bucket-and-the-access-policy"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el bucket de S3. | [Cree un bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) para alojar los archivos que transfiera desde su entorno anterior. | AWS general | 
| Cree una política y un rol de IAM. | Transfer Family utiliza el rol de AWS Identity and Access Management (IAM) para conceder acceso al bucket de S3 que se creó con anterioridad.[Cree un rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) que incluya la siguiente [política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html):<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "UserFolderListing",<br />            "Action": [<br />                "s3:ListBucket",<br />                "s3:GetBucketLocation"<br />            ],<br />            "Effect": "Allow",<br />            "Resource": [<br />                "arn:aws:s3:::<your-bucket-name>"<br />            ]<br />        },<br />        {<br />            "Sid": "HomeDirObjectAccess",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",<br />                "s3:GetObjectAcl",<br />                "s3:GetObject",<br />                "s3:DeleteObjectVersion",<br />                "s3:DeleteObject",<br />                "s3:PutObjectAcl",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": "arn:aws:s3:::<your-bucket-name>/*"<br />        }<br />    ]<br />}</pre>Debe elegir el caso de uso de Transfer al crear el rol de IAM. | AWS general | 

### Definir el servicio de transferencia
<a name="define-the-transfer-service"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el servidor SFTP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)Para obtener más información sobre cómo configurar un servidor SFTP, consulte [Create an SFTP-enabled server](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html) (Guía del usuario de AWS Transfer Family). | AWS general | 
| Obtenga la dirección del servidor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | AWS general | 
| Cree el par de claves del cliente SFTP. | Cree un key pair de claves SSH para [Microsoft Windows](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#windows-ssh) o [macOS/Linux/UNIX](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#macOS-linux-unix-ssh). | AWS general, SSH | 
| Cree el servidor SFTP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | AWS general | 

### Transferir el archivo de mainframe
<a name="transfer-the-mainframe-file"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Envíe la clave privada SSH a la computadora central. | Utilice SFTP o SCP para enviar la clave privada SSH al entorno heredado.Ejemplo de SFTP:<pre>sftp [USERNAME@mainframeIP]<br />[password]<br />cd [/u/USERNAME]<br />put [your-key-pair-file]</pre>Ejemplos de SCP:<pre>scp [your-key-pair-file] [USERNAME@MainframeIP]:/[u/USERNAME]</pre>A continuación, guarde la clave SSH en el sistema de archivos z/OS Unix con el nombre de usuario que ejecutará más adelante el trabajo de transferencia de archivos por lotes (por ejemplo,). `/u/CONTROLM` Para obtener más información sobre el shell de z/OS Unix, consulte [Introducción a los z/OS shell](https://www.ibm.com/docs/en/zos/2.2.0?topic=shells-introduction-zos) (documentación de IBM). | Computadora central, shell de z/OS Unix, FTP, SCP | 
| Cree el cliente SFTP de JCL. | Como los mainframes no tienen un cliente SFTP nativo, debe usar la utilidad BPXBATCH para ejecutar el cliente SFTP desde el shell de Unix. z/OS En el editor ISPF, cree el cliente SFTP JCL. Por ejemplo:<pre>//JOBNAM JOB ...<br />//**********************************************************************<br />//SFTP EXEC PGM=BPXBATCH,REGION=0M <br />//STDPARM DD * <br />SH cp "//'MAINFRAME.FILE.NAME'" filename.txt; <br />echo 'put filename.txt' > uplcmd; <br />sftp -b uplcmd -i ssh_private_key_file ssh_username@<transfer service ip or DNS>; <br />//SYSPRINT DD SYSOUT=* <br />//STDOUT DD SYSOUT=* <br />//STDENV DD * <br />//STDERR DD SYSOUT=*</pre>[Para obtener más información sobre cómo ejecutar un comando en el shell de z/OS Unix, consulte La utilidad BPXBATCH (documentación de IBM).](https://www.ibm.com/docs/en/zos/2.2.0?topic=ispf-bpxbatch-utility) Para obtener más información sobre cómo crear o editar trabajos de JCL en z/OS, consulte [What is ISPF?](https://www.ibm.com/docs/en/zos-basic-skills?topic=interfaces-what-is-ispf) (¿Qué es el ISPF?) y [The ISPF editor](https://www.ibm.com/docs/en/zos-basic-skills?topic=ispf-editor) (El editor ISPF) (documentación de IBM). | JCL, Mainframe, shell de Unix z/OS  | 
| Ejecute el cliente SFTP de JCL. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)Para obtener más información sobre cómo comprobar la actividad de los trabajos por lotes, consulte la [z/OS SDSF User's Guide](https://www.ibm.com/docs/en/zos/2.4.0?topic=sdsf-zos-users-guide) (documentación de IBM). | Mainframe, JCL, ISPF | 
| Valide la transferencia de archivos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | AWS general | 
| Automatice el cliente SFTP de JCL. | Utilice el programador de tareas para activar automáticamente el cliente SFTP de JCL.Puede utilizar programadores de trabajos de mainframe, como [BMC Control-M](https://www.bmcsoftware.pt/it-solutions/control-m.html) o [CA Workload Automation](https://www.broadcom.com/products/mainframe/workload-automation/ca7), para automatizar los trabajos por lotes para la transferencia de archivos en función del tiempo y otras dependencias de los trabajos por lotes. | Programador de trabajos | 

## Recursos relacionados
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-resources"></a>
+ [How AWS Transfer Family works](https://docs.aws.amazon.com/transfer/latest/userguide/how-aws-transfer-works.html) (Cómo funciona AWS Transfer Family)

# Optimice el rendimiento de su aplicación modernizada AWS Blu Age
<a name="optimize-performance-aws-blu-age-modernized-application"></a>

*Vishal Jaswani, Manish Roy y Himanshu Sah, Amazon Web Services*

## Resumen
<a name="optimize-performance-aws-blu-age-modernized-application-summary"></a>

Las aplicaciones de mainframe que se modernizan con AWS Blu Age requieren pruebas de equivalencia funcional y de rendimiento antes de implementarlas en producción. En las pruebas de rendimiento, las aplicaciones modernizadas pueden funcionar más lentamente que los sistemas heredados, especialmente en trabajos por lotes complejos. Esta disparidad se debe a que las aplicaciones de mainframe son monolíticas, mientras que las aplicaciones modernas utilizan arquitecturas de varios niveles. Este patrón presenta técnicas de optimización para abordar estas brechas de rendimiento en las aplicaciones que se modernizan mediante la [refactorización automatizada con Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html). AWS 

El patrón utiliza el marco de modernización de AWS Blu Age con capacidades nativas de Java y ajuste de bases de datos para identificar y resolver los cuellos de botella en el rendimiento. El patrón describe cómo puede utilizar la creación de perfiles y la supervisión para identificar los problemas de rendimiento con métricas como los tiempos de ejecución de SQL, el uso de la memoria y los patrones. I/O A continuación, se explica cómo aplicar optimizaciones específicas, como la reestructuración de las consultas de la base de datos, el almacenamiento en caché y el perfeccionamiento de la lógica empresarial.

Las mejoras en los tiempos de procesamiento por lotes y en el uso de los recursos del sistema lo ayudan a igualar los niveles de rendimiento del mainframe en los sistemas modernizados. Este enfoque mantiene la equivalencia funcional durante la transición a arquitecturas modernas basadas en la nube.

Para utilizar este patrón, configure el sistema e identifique hotspots de rendimiento siguiendo las instrucciones de la sección [Epics](#optimize-performance-aws-blu-age-modernized-application-epics) y aplique las técnicas de optimización que se describen en detalle en la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture).

## Requisitos previos y limitaciones
<a name="optimize-performance-aws-blu-age-modernized-application-prereqs"></a>

**Requisitos previos **
+ Una aplicación modernizada de AWS Blu Age
+ [¿Una licencia JProfiler ](https://www.ej-technologies.com/store/jprofiler)
+ Privilegios administrativos para instalar herramientas de creación de perfiles y clientes de bases de datos
+ AWS [Certificación Blu Age Level 3](https://bluinsights.aws/certification/)
+ Comprensión de nivel intermedio del marco AWS Blu Age, la estructura del código generado y la programación en Java

**Limitaciones**

Las siguientes funciones y características de optimización quedan fuera del alcance de este patrón:
+ Optimización de la latencia de la red entre los niveles de aplicación
+ Optimizaciones a nivel de infraestructura mediante tipos de instancias de Amazon Elastic Compute Cloud (Amazon EC2) y optimización del almacenamiento
+ Pruebas simultáneas de carga de usuarios y pruebas de estrés

**Versiones de producto**
+ JProfiler versión 13.0 o posterior (recomendamos la versión más reciente)
+ Versión 8.14 o posterior de pgAdmin

## Arquitectura
<a name="optimize-performance-aws-blu-age-modernized-application-architecture"></a>

Este patrón configura un entorno de creación de perfiles para una aplicación de AWS Blu Age mediante herramientas como JProfiler pgAdmin. Es compatible con la optimización mediante el SQLExecution generador DAOManager y el generador APIs proporcionado por AWS Blu Age.

El resto de esta sección proporciona información detallada y ejemplos para identificar los hotspots de rendimiento y las estrategias de optimización para sus aplicaciones modernizadas. Los pasos de la sección [Epics](#optimize-performance-aws-blu-age-modernized-application-epics) se refieren a esta información para brindar más pautas.

**Identificación de los hotspots de rendimiento en las aplicaciones de mainframe modernizadas**

En las aplicaciones de mainframe modernizadas, los *hotspots de rendimiento* son áreas específicas del código que provocan ralentizaciones o ineficiencias significativas. Estos hotspots suelen deberse a las diferencias de arquitectura entre el mainframe y las aplicaciones modernizadas. Para identificar estos obstáculos en el rendimiento y optimizar el rendimiento de su aplicación modernizada, puede utilizar tres técnicas: el registro de SQL, un `EXPLAIN` plan de consultas y el análisis. JProfiler 

*Técnica de identificación de hotspots: registro de SQL*

Las aplicaciones Java modernas, incluidas las que se han modernizado con AWS Blu Age, tienen funciones integradas para registrar consultas SQL. Puede habilitar registradores específicos en los proyectos de AWS Blu Age para rastrear y analizar las sentencias SQL ejecutadas por su aplicación. Esta técnica es particularmente útil para identificar patrones ineficientes de acceso a las bases de datos, como el exceso de consultas individuales o las llamadas a las bases de datos mal estructuradas, que podrían optimizarse mediante el procesamiento por lotes o el refinamiento de las consultas.

Para implementar el registro SQL en su aplicación modernizada de AWS Blu Age, establezca el nivel de registro en las sentencias SQL del `application.properties` archivo a fin `DEBUG` de capturar los detalles de la ejecución de las consultas:

```
level.org.springframework.beans.factory.support.DefaultListableBeanFactory : WARN
level.com.netfective.bluage.gapwalk.runtime.sort.internal: WARN
level.org.springframework.jdbc.core.StatementCreatorUtils: DEBUG
level.com.netfective.bluage.gapwalk.rt.blu4iv.dao: DEBUG
level.com.fiserv.signature: DEBUG
level.com.netfective.bluage.gapwalk.database.support.central: DEBUG
level.com.netfective.bluage.gapwalk.rt.db.configuration.DatabaseConfiguration: DEBUG
level.com.netfective.bluage.gapwalk.rt.db.DatabaseInteractionLoggerUtils: DEBUG
level.com.netfective.bluage.gapwalk.database.support.AbstractDatabaseSupport: DEBUG
level.com.netfective.bluage.gapwalk.rt: DEBUG
```

Supervise las consultas de alta frecuencia y de bajo rendimiento utilizando los datos registrados para identificar los objetivos de optimización. Céntrese en las consultas dentro de los procesos por lotes, ya que suelen tener el mayor impacto en el rendimiento.

*Técnica de identificación de hotspots: plan EXPLAIN de las consultas*

Este método utiliza las capacidades de planificación de consultas de los sistemas de administración de bases de datos relacionales. Puede utilizar comandos como `EXPLAIN` en PostgreSQL o MySQL o `EXPLAIN PLAN` en Oracle para examinar cómo la base de datos pretender ejecutar una consulta determinada. El resultado de estos comandos proporciona información valiosa sobre la estrategia de ejecución de la consulta; por ejemplo, si se utilizarán índices o si se realizarán exámenes de tablas completas. Esta información es fundamental para optimizar el rendimiento de las consultas, especialmente en los casos en que una indexación adecuada puede reducir considerablemente el tiempo de ejecución.

Extraiga las consultas SQL más repetitivas de los registros de la aplicación y analice la ruta de ejecución de las consultas con un rendimiento lento mediante el comando `EXPLAIN` específico de la base de datos. A continuación, se muestra un ejemplo de base de datos de PostgreSQL.

Consulta:

```
SELECT * FROM tenk1 WHERE unique1 < 100;
```

Comando de `EXPLAIN`:

```
EXPLAIN SELECT * FROM tenk1 where unique1 < 100;
```

Salida:

```
Bitmap Heap Scan on tenk1 (cost=5.06..224.98 rows=100 width=244) 
Recheck Cond: (unique1 < 100) 
-> Bitmap Index Scan on tenk1_unique1 (cost=0.00..5.04 rows=100 width=0)
Index Cond: (unique1 < 100)
```

Puede interpretar la salida de `EXPLAIN` de la siguiente forma:
+ Lea el plan `EXPLAIN` desde las operaciones más internas hasta las más externas (de abajo hacia arriba).
+ Busque los términos clave. Por ejemplo, `Seq Scan` indica un examen completo de la tabla y `Index Scan` muestra el uso del índice.
+ Compruebe los valores de costo: el primer número es el costo inicial y el segundo es el costo total.
+ Consulte el valor `rows` del número estimado de filas de salida.

En este ejemplo, el motor de consultas utiliza un examen del índice para buscar las filas coincidentes y, a continuación, prepara solo esas filas (`Bitmap Heap Scan`). Este método es más eficiente que examinar toda la tabla, a pesar del mayor costo del acceso a las filas individuales.

Las operaciones de examen de las tablas incluidas en la salida de un plan `EXPLAIN` indican que falta un índice. La optimización requiere la creación de un índice adecuado.

*Técnica de identificación de puntos calientes: análisis JProfiler *

JProfiler es una completa herramienta de creación de perfiles de Java que le ayuda a resolver los cuellos de botella en el rendimiento al identificar las llamadas lentas a las bases de datos y las llamadas que requieren un uso intensivo de la CPU. Esta herramienta es particularmente eficaz para identificar las consultas SQL lentas y el uso ineficiente de la memoria.

Ejemplo de análisis para la consulta:

```
select evt. com.netfective.bluage.gapwalk.rt.blu4iv.dao.Blu4ivTableManager.queryNonTrasactional
```

La vista JProfiler Hot Spots proporciona la siguiente información:
+ Columna **Tiempo**
  + Muestra la duración total de la ejecución (por ejemplo, 329 segundos)
  + Muestra el porcentaje del tiempo total de la aplicación (por ejemplo, 58,7 %)
  + Ayuda a identificar las operaciones que más tiempo consumen
+ Columna **Tiempo medio**
  + Muestra la duración de cada ejecución (por ejemplo, 2692 microsegundos)
  + Indica el rendimiento de cada operación
  + Ayuda a detectar operaciones lentas
+ Columna **Eventos**
  + Muestra el recuento de ejecuciones (por ejemplo, 122 387 veces)
  + Indica la frecuencia de la operación
  + Ayuda a identificar los métodos a los que se llama con frecuencia

Para ver los resultados del ejemplo:
+ Frecuencia alta: 122 387 ejecuciones indican un potencial de optimización
+ Problema de rendimiento: 2692 microsegundos durante un tiempo medio sugieren poca eficiencia
+ Impacto crítico: el 58,7 % del tiempo total indica un cuello de botella importante

JProfiler puede analizar el comportamiento de la aplicación en tiempo de ejecución para revelar puntos críticos que podrían no ser evidentes mediante el análisis de código estático o el registro de SQL. Estas métricas lo ayudan a identificar las operaciones que necesitan optimizarse y a determinar la estrategia de optimización que sería más eficaz. Para obtener más información sobre JProfiler las funciones, consulte la [JProfiler documentación](https://www.ej-technologies.com/resources/jprofiler/help/doc/main/introduction.html).

Si utiliza estas tres técnicas (registro de SQL, `EXPLAIN` plan de consultas y JProfiler) en combinación, puede obtener una visión holística de las características de rendimiento de la aplicación. Al identificar y abordar los hotspots de rendimiento más críticos, puede cerrar la brecha de rendimiento entre la aplicación de mainframe original y el sistema modernizado basado en la nube.

Tras identificar los hotspots de rendimiento de la aplicación, puede aplicar estrategias de optimización, que se explican en la siguiente sección.

**Estrategias de optimización para la modernización del mainframe**

En esta sección se describen las estrategias clave para optimizar las aplicaciones que se han modernizado a partir de sistemas de mainframe. Se centra en tres estrategias: utilizar las existentes APIs, implementar un almacenamiento en caché eficaz y optimizar la lógica empresarial.

*Estrategia de optimización: utilizar la existente APIs*

AWS Blu Age proporciona varias interfaces DAO potentes APIs que puede utilizar para optimizar el rendimiento. Dos interfaces principales, DAOManager y SQLExecution Builder, ofrecen capacidades para mejorar el rendimiento de las aplicaciones.

**DAOManager**

DAOManager sirve como interfaz principal para las operaciones de bases de datos en aplicaciones modernizadas. Ofrece varios métodos para mejorar las operaciones de las bases de datos y mejorar el rendimiento de las aplicaciones, especialmente para las operaciones sencillas de creación, lectura, actualización y eliminación (CRUD, por sus siglas en inglés) y procesamiento por lotes.
+ **Uso SetMaxResults.** En la DAOManager API, puede usar el **SetMaxResults**método para especificar el número máximo de registros que se van a recuperar en una sola operación de base de datos. De forma predeterminada, DAOManager recupera solo 10 registros a la vez, lo que puede provocar varias llamadas a la base de datos al procesar conjuntos de datos de gran tamaño. Utilice esta optimización cuando la aplicación tenga que procesar una gran cantidad de registros y actualmente esté realizando varias llamadas a bases de datos para recuperarlos. Esto resulta particularmente útil en situaciones de procesamiento por lotes en las que se realiza una iteración a través de un conjunto de datos de gran tamaño. En el siguiente ejemplo, el código de la izquierda (antes de la optimización) usa el valor de recuperación de datos predeterminado de 10 registros. El código de la derecha (después de la optimización) se configura **setMaxResults**para recuperar 100 000 registros a la vez.  
![\[Ejemplo de uso SetMaxResults para evitar múltiples llamadas a la base de datos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/beb9623e-e7a8-45ef-adc6-19a249224b05.png)
**nota**  
Elija lotes de mayor tamaño con cuidado y compruebe el tamaño del objeto, ya que esta optimización aumenta el consumo de memoria.
+ **Sustituir SetOnGreatorOrEqual por SetOnEqual.** Esta optimización implica cambiar el método que se utiliza para establecer la condición de recuperación de registros. El **SetOnGreatorOrEqual**método recupera los registros que son mayores o iguales a un valor especificado, mientras que solo **SetOnEqual**recupera los registros que coinciden exactamente con el valor especificado.

  **SetOnEqual**Utilícelo como se ilustra en el siguiente ejemplo de código, cuando sepa que necesita coincidencias exactas y esté utilizando actualmente el **SetOnGreatorOrEqual**método seguido de **readNextEqual()**. Esta optimización reduce la recuperación innecesaria de datos.  
![\[Ejemplo de uso SetOnEqual para recuperar registros en función de una coincidencia exacta.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/5ce0dac9-f281-4862-a71f-1614493a83f0.png)
+ **Utilice operaciones de escritura y actualización por lotes.** Puede utilizar las operaciones por lotes para agrupar varias operaciones de escritura o actualización en una sola transacción de la base de datos. Esto reduce el número de llamadas a la base de datos y puede mejorar considerablemente el rendimiento de las operaciones que implican varios registros.

  En el siguiente ejemplo, el código de la izquierda realiza operaciones de escritura en bucle, lo que ralentiza el rendimiento de la aplicación. Puede optimizar este código mediante una operación de escritura por lotes: durante cada iteración del bucle `WHILE`, se agregan registros a un lote hasta que el tamaño del lote alcance un tamaño predeterminado de 100. A continuación, puede vaciar el lote cuando alcance el tamaño de lote predeterminado y, a continuación, vaciar los registros restantes en la base de datos. Esto resulta especialmente útil en las situaciones en las que se procesan conjuntos de datos de gran tamaño que requieren actualizaciones.  
![\[Ejemplo de agrupación de varias operaciones en una sola transacción de base de datos.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/e3bd60d4-06f5-4c1c-9cbd-463f6835a1ba.png)
+ **Agregue índices.** Agregar índices es una optimización a nivel de base de datos que puede mejorar considerablemente el rendimiento de las consultas. Los índices permiten que la base de datos localice rápidamente las filas con un valor de columna específico sin tener que examinar toda la tabla. Utilice la indexación en las columnas que se utilizan con frecuencia en las cláusulas `WHERE`, las condiciones `JOIN` o las instrucciones `ORDER BY`. Esto es particularmente importante para las tablas de gran tamaño o cuando la recuperación rápida de datos es fundamental.

**SQLExecutionConstructor**

SQLExecutionBuilder es una API flexible que puede utilizar para controlar las consultas SQL que se ejecutarán, recuperar solo determinadas columnas mediante `SELECT` el uso de nombres de tablas dinámicas y utilizar nombres de tablas dinámicas. `INSERT` En el siguiente ejemplo, SQLExecutor Builder usa una consulta personalizada que usted defina. 

![\[Ejemplo de uso de SQLExecutor Builder con una consulta personalizada.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/364e9fb1-0cbc-47d0-936d-46fb3b48b608.png)


**Elegir entre DAOManager y SQLExecution Builder**

La elección entre estas opciones APIs depende de su caso de uso específico:
+ Úselo DAOManager cuando desee que AWS Blu Age Runtime genere las consultas SQL en lugar de escribirlas usted mismo.
+ Elija SQLExecution Builder cuando necesite escribir consultas SQL para aprovechar las funciones específicas de la base de datos o escribir consultas SQL óptimas.

*Estrategia de optimización: almacenamiento en caché*

En las aplicaciones modernizadas, la implementación de estrategias de almacenamiento en caché eficaces puede reducir significativamente las llamadas a las bases de datos y mejorar los tiempos de respuesta. Esto ayuda a cerrar la brecha de rendimiento entre los entornos de mainframe y en la nube.

En las aplicaciones de AWS Blu Age, las implementaciones de almacenamiento en caché sencillas utilizan estructuras de datos internas, como mapas hash o listas de matrices, por lo que no es necesario configurar una solución de almacenamiento en caché externa que requiera una reestructuración de costes y código. Este enfoque es particularmente eficaz para los datos a los que se accede con frecuencia, pero que no cambian a menudo. Al implementar el almacenamiento en caché, tenga en cuenta las limitaciones de memoria y los patrones de actualización para mantener el rendimiento y las ventajas de rendimiento reales de los datos almacenados en caché.

La clave para un almacenamiento en caché exitoso es identificar los datos correctos que se van a almacenar en caché. En el siguiente ejemplo, el código de la izquierda siempre lee los datos de la tabla, mientras que el código de la derecha lee los datos de la tabla cuando el mapa hash local no tiene un valor para una clave determinada. `cacheMap` es un objeto de mapa hash que se crea en el contexto del programa y se borra con el método de limpieza del contexto del programa.

Almacenamiento en caché con: DAOManager

![\[Ejemplo de optimizaciones de almacenamiento en caché con. DAOManager\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/4efd3d22-c694-4f7d-a543-2bed341d1651.png)


Almacenamiento en caché con Builder: SQLExecution

![\[Ejemplo de optimizaciones de almacenamiento en caché con Builder. SQLExecution\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/c8964804-96eb-4e26-b2bf-8742e62b4c33.png)


*Estrategia de optimización: optimización de la lógica empresarial*

La optimización de la lógica empresarial se centra en reestructurar el código generado automáticamente por AWS Blu Age para alinearlo mejor con las capacidades de la arquitectura moderna. Esto se hace necesario cuando el código generado mantiene la misma estructura lógica que el código de mainframe heredado, lo que puede no ser óptimo para los sistemas modernos. El objetivo es mejorar el rendimiento y, al mismo tiempo, mantener la equivalencia funcional de la aplicación original.

Este enfoque de optimización no se centra solo en los simples ajustes de la API y las estrategias de almacenamiento en caché. Implica cambios en la forma en que la aplicación procesa los datos e interactúa con la base de datos. Algunas de las optimizaciones más comunes son evitar operaciones de lectura innecesarias para las actualizaciones sencillas, eliminar las llamadas redundantes a las bases de datos y reestructurar los patrones de acceso a los datos para adaptarlos mejor a la arquitectura moderna de la aplicación. A continuación se muestran algunos ejemplos:
+ **Actualizar los datos directamente en la base de datos.**Reestructure su lógica empresarial mediante actualizaciones directas de SQL en lugar de DAOManager realizar múltiples operaciones con bucles. Por ejemplo, el siguiente código (lado izquierdo) realiza varias llamadas a la base de datos y utiliza memoria excesiva. En concreto, utiliza varias operaciones de lectura y escritura en bases de datos dentro de bucles, actualizaciones específicas en lugar de hacer procesamientos por lotes y crear objetos innecesarios para cada iteración.

  El siguiente código optimizado (en la derecha) utiliza una sola operación de actualización de Direct SQL. En concreto, utiliza una sola llamada a la base de datos en lugar de realizar varias llamadas y no requiere bucles, ya que todas las actualizaciones se gestionan en una sola instrucción. Esta optimización proporciona un mejor rendimiento y una mejor utilización de los recursos y reduce la complejidad. Evita la inyección de código SQL, proporciona un mejor almacenamiento en caché del plan de consultas y ayuda a mejorar la seguridad.  
![\[Reestructuración del código mediante actualizaciones directas de SQL en lugar de DAOManager operaciones con bucles.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/7d0a7879-8db2-4cc5-b41c-ee370b3f22e5.png)
**nota**  
Utilice siempre consultas parametrizadas para evitar la inyección de código SQL y garantizar una administración adecuada de las transacciones.
+ **Reducción de las llamadas redundantes a las bases de datos.** Las llamadas redundantes a las bases de datos pueden afectar significativamente al rendimiento de las aplicaciones, especialmente cuando se producen dentro de bucles. Una técnica de optimización sencilla pero eficaz consiste en evitar repetir la misma consulta a la base de datos varias veces. En la siguiente comparación de código se demuestra cómo al mover la llamada a la base de datos `retrieve()` fuera del bucle se evita la ejecución redundante de consultas idénticas, lo que mejora la eficiencia.  
![\[alt text not found\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b42fafd-1535-416d-8abd-1a5f9007ddba/images/da9c15f4-bcf1-4827-b91a-73212fe35cca.png)
+ **Reducción de las llamadas a la base de datos mediante la cláusula SQL** `JOIN`**.** Implemente SQLExecution Builder para minimizar las llamadas a la base de datos. SQLExecutionBuilder proporciona un mayor control sobre la generación de SQL y es particularmente útil para consultas complejas que DAOManager no se pueden gestionar de manera eficiente. Por ejemplo, el código siguiente utiliza varias DAOManager llamadas:

  ```
  List<Employee> employees = daoManager.readAll();
  for(Employee emp : employees) {
      Department dept = deptManager.readById(emp.getDeptId());  // Additional call for each employee
      Project proj = projManager.readById(emp.getProjId());     // Another call for each employee
      processEmployeeData(emp, dept, proj);
  }
  ```

  El código optimizado usa una sola llamada a la base de datos en SQLExecution Builder:

  ```
  SQLExecutionBuilder builder = new SQLExecutionBuilder();
  builder.append("SELECT e.*, d.name as dept_name, p.name as proj_name");
  builder.append("FROM employee e");
  builder.append("JOIN department d ON e.dept_id = d.id");
  builder.append("JOIN project p ON e.proj_id = p.id");
  builder.append("WHERE e.status = ?", "ACTIVE");
  
  List<Map<String, Object>> results = builder.execute();  // Single database call
  for(Map<String, Object> result : results) {
      processComplexData(result);
  }
  ```

*Uso conjunto de estrategias de optimización*

Estas tres estrategias funcionan de forma sinérgica: APIs proporcionan las herramientas para un acceso eficiente a los datos, el almacenamiento en caché reduce la necesidad de recuperar datos de forma repetida y la optimización de la lógica empresarial garantiza que APIs se utilicen de la manera más eficaz posible. La supervisión y el ajuste periódicos de estas optimizaciones garantizan una mejora continua del rendimiento y, al mismo tiempo, mantienen la fiabilidad y la funcionalidad de la aplicación modernizada. La clave del éxito reside en comprender cuándo y cómo aplicar cada estrategia en función de las características y los objetivos de rendimiento de la aplicación.

## Tools (Herramientas)
<a name="optimize-performance-aws-blu-age-modernized-application-tools"></a>
+ [JProfiler](https://www.ej-technologies.com/jprofiler)es una herramienta de creación de perfiles de Java diseñada para desarrolladores e ingenieros de rendimiento. Analiza las aplicaciones Java y ayuda a identificar los cuellos de botella en el rendimiento, las pérdidas de memoria y los problemas de subprocesos. JProfiler ofrece perfiles de CPU, memoria y subprocesos, así como supervisión de bases de datos y máquinas virtuales Java (JVM) para proporcionar información sobre el comportamiento de las aplicaciones.
**nota**  
Como alternativa JProfiler, puede utilizar [Java](https://visualvm.github.io/) VisualVM. Se trata de una herramienta gratuita de código abierto de creación de perfiles de rendimiento y supervisión para aplicaciones de Java que permite supervisar en tiempo real el uso de la CPU, el consumo de memoria, la administración de subprocesos y las estadísticas de recopilación de elementos no utilizados. Dado que Java VisualVM es una herramienta JDK integrada, resulta más JProfiler rentable que para las necesidades básicas de creación de perfiles.
+ [pgAdmin](https://www.pgadmin.org/) es una plataforma de administración y desarrollo de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos. Puede usar pgAdmin para realizar una amplia gama de tareas, desde escribir consultas SQL sencillas hasta desarrollar bases de datos complejas. Algunas de sus características son un editor de código SQL que resalta la sintaxis, un editor de código en el servidor, un agente de programación para SQL, un intérprete de comandos y tareas por lotes, y compatibilidad con todas las características de PostgreSQL tanto para usuarios sin experiencia como con experiencia de PostgreSQL.

## Prácticas recomendadas
<a name="optimize-performance-aws-blu-age-modernized-application-best-practices"></a>

Identificación de hotspots de rendimiento:
+ Documente las métricas de rendimiento de referencia antes de iniciar las optimizaciones.
+ Establezca objetivos claros de mejora del rendimiento en función de los requisitos empresariales.
+ Al realizar evaluaciones comparativas, desactive la creación de registros detallados, ya que esto puede afectar al rendimiento.
+ Configure un conjunto de pruebas de rendimiento y ejecútelo periódicamente.
+ Utilice la versión más reciente de pgAdmin. (Las versiones más antiguas no admiten el plan `EXPLAIN` de consultas).
+ Para realizar una evaluación comparativa, desconéctese una vez que se hayan JProfiler completado las optimizaciones, ya que esto aumenta la latencia.
+ Para realizar evaluaciones comparativas, asegúrese de ejecutar el servidor en modo de inicio en lugar de en modo de depuración, ya que el modo de depuración aumenta la latencia.

Estrategias de optimización:
+ Configure **SetMaxResults**los valores en el `application.yaml` archivo para especificar lotes del tamaño correcto de acuerdo con las especificaciones de su sistema.
+ Configure **SetMaxResults**los valores en función del volumen de datos y las restricciones de memoria.
+ Cambie **SetOnGreatorOrEqual**a **SetOnEqual**solo cuando se realicen llamadas posteriores`.readNextEqual()`.
+ En las operaciones de escritura o actualización por lotes, gestione el último lote por separado, ya que podría ser más pequeño que el tamaño del lote configurado y la operación de escritura o actualización podría pasarlo por alto.

Almacenamiento en caché:
+ Los campos que se introducen para el almacenamiento en caché en `processImpl`, que cambian con cada ejecución, siempre deben definirse en el contexto de ese `processImpl`. Los campos también deben borrarse mediante el método `doReset()` o `cleanUp()`.
+ Cuando implemente el almacenamiento en caché en memoria, ajuste el tamaño de la caché. Las cachés muy grandes que se almacenan en la memoria pueden ocupar todos los recursos, lo que podría afectar al rendimiento general de la aplicación.

SQLExecutionConstructor:
+ Para las consultas que planea usar en SQLExecution Builder, utilice nombres clave como`PROGRAMNAME_STATEMENTNUMBER`.
+ Cuando utilice SQLExecution Builder, compruebe siempre el `Sqlcod` campo. Este campo contiene un valor que especifica si la consulta se ejecutó correctamente o si encontró algún error.
+ Utilice consultas parametrizadas para evitar la inyección de código SQL.

Optimización de la lógica empresarial:
+ Mantenga la equivalencia funcional al reestructurar el código y ejecute pruebas de regresión y comparaciones de bases de datos para el subconjunto de programas correspondiente.
+ Mantenga instantáneas de la creación de perfiles para poder compararlas.

## Epics
<a name="optimize-performance-aws-blu-age-modernized-application-epics"></a>

### Instalación JProfiler y pgAdmin
<a name="install-jprofiler-and-pgadmin"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar y configurar. JProfiler | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | Desarrollador de aplicaciones | 
| Instale y configure pgAdmin. | En este paso, debe instalar y configurar un cliente de base de datos para que realice consultas en la base de datos. Este patrón utiliza una base de datos PostgreSQL y pgAdmin como cliente de base de datos. Si utiliza otro motor de base de datos, siga la documentación del cliente de base de datos correspondiente.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | Desarrollador de aplicaciones | 

### Identificación de hotspots
<a name="identify-hotspots"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Habilite el registro de consultas SQL en su aplicación AWS Blu Age. | Habilite los registradores para el registro de consultas SQL en el `application.properties` archivo de su aplicación AWS Blu Age, tal y como se explica en la sección de [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture). | Desarrollador de aplicaciones | 
| Genere y analice los planes `EXPLAIN` de consultas para identificar los hotspots de rendimiento de las bases de datos. | Para obtener información detallada, consulte la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture). | Desarrollador de aplicaciones | 
| Cree una JProfiler instantánea para analizar un caso de prueba de rendimiento lento. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | Desarrollador de aplicaciones | 
| Analice la JProfiler instantánea para identificar los cuellos de botella en el rendimiento. | Siga estos pasos para analizar la instantánea. JProfiler [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html)Para obtener más información sobre su uso JProfiler, consulte la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture) y la [JProfiler documentación](https://www.ej-technologies.com/jprofiler/docs). | Desarrollador de aplicaciones | 

### Establecimiento de una línea de base
<a name="establish-a-baseline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Establezca una línea de base de rendimiento antes de implementar las optimizaciones. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | Desarrollador de aplicaciones | 

### Aplicación de estrategias de optimización
<a name="apply-optimization-strategies"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Optimice las llamadas de lectura. | Optimice la recuperación de datos mediante el DAOManager **SetMaxResults**método. Para obtener más información sobre este enfoque, consulte la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture). | Desarrollador de aplicaciones, DAOManager | 
| Refactorice la lógica empresarial para evitar varias llamadas a la base de datos. | Reduzca las llamadas a la base de datos mediante una cláusula `JOIN` en SQL. Para obtener detalles y ejemplos, consulte *Optimización de la lógica empresarial* en la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture). | Desarrollador de aplicaciones, SQLExecution constructor | 
| Refactorice el código para usar el almacenamiento en caché para reducir la latencia de las llamadas de lectura. | Para obtener información sobre esta técnica, consulte *Almacenamiento en caché* en la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture). | Desarrollador de aplicaciones | 
| Reescriba el código ineficiente que utiliza varias DAOManager operaciones para realizar operaciones de actualización sencillas. | Para obtener más información sobre cómo actualizar los datos directamente en la base de datos, consulte *Optimización de la lógica empresarial* en la sección [Arquitectura](#optimize-performance-aws-blu-age-modernized-application-architecture). | Desarrollador de aplicaciones | 

### Estrategias de optimización de pruebas
<a name="test-optimization-strategies"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide cada cambio de optimización de forma iterativa y, al mismo tiempo, mantenga la equivalencia funcional. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html)El uso de métricas de línea de base como referencia garantiza una medición precisa del impacto de cada optimización y, al mismo tiempo, mantiene la fiabilidad del sistema. | Desarrollador de aplicaciones | 

## Resolución de problemas
<a name="optimize-performance-aws-blu-age-modernized-application-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Al ejecutar la aplicación moderna, verá una excepción con el error `Query_ID not found`. | Para resolver este problema, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 
| Ha agregado índices, pero no ve ninguna mejora de rendimiento. | Siga estos pasos para asegurarse de que el motor de consultas utilice el índice:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 
| Te encuentras con una excepción out-of-memory. | Compruebe que el código libere la memoria almacenada en la estructura de datos. | 
| Las operaciones de escritura por lotes hacen que falten registros en la tabla | Revise el código para asegurarse de que se realice una operación de escritura adicional cuando el recuento de lotes no es cero. | 
| El registro de SQL no aparece en los registros de la aplicación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/optimize-performance-aws-blu-age-modernized-application.html) | 

## Recursos relacionados
<a name="optimize-performance-aws-blu-age-modernized-application-resources"></a>
+ [Refactorización automática de aplicaciones con AWS Blu Age (Guía AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html) *del usuario*)
+ [Documentación de pgAdmin](https://www.pgadmin.org/docs/)
+ [JProfiler documentación](https://www.ej-technologies.com/jprofiler/docs)

# Proteja y optimice el acceso de los usuarios a una base de datos de federación DB2 en AWS mediante contextos de confianza
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts"></a>

*Sai Parthasaradhi, Amazon Web Services*

## Resumen
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-summary"></a>

Muchas empresas están migrando sus cargas de trabajo de la unidad central antigua a Amazon Web Services (AWS). Esta migración incluye el cambio de IBM Db2 para z/OS bases de datos a Db2 para Linux, Unix y Windows (LUW) en Amazon Elastic Compute Cloud (Amazon). EC2 Durante una migración gradual de las instalaciones a AWS, es posible que los usuarios necesiten acceder a los datos de IBM Db2 z/OS y Db2 LUW en EC2 Amazon hasta que todas las aplicaciones y bases de datos se hayan migrado por completo a Db2 LUW. En estos escenarios de acceso remoto a los datos, la autenticación de los usuarios puede resultar difícil porque las diferentes plataformas utilizan diferentes mecanismos de autenticación.

Este patrón explica cómo configurar un servidor de federación en Db2 para LUW con Db2 como base de datos remota. z/OS El patrón utiliza un contexto confiable para propagar la identidad de un usuario de Db2 LUW a Db2 sin volver a autenticarse en la base de datos z/OS remota. Para obtener más información sobre los contextos de confianza, consulte la sección [Información adicional](#secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-additional).

## Requisitos previos y limitaciones
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Una instancia de Db2 que se ejecuta en una instancia de Amazon EC2 
+ Un Db2 remoto para una z/OS base de datos que se ejecuta en las instalaciones
+ La red local conectada a AWS a través de [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) o [AWS Direct Connect](https://aws.amazon.com/directconnect/)

## Arquitectura
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-architecture"></a>

**Arquitectura de destino**

![\[El mainframe local se conecta a través de un servidor Db2 local y una VPN a la base de datos de Db2 on. EC2\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/9e04f0fe-bae2-412a-93ac-83da50222017/images/0a384695-7907-4fb8-bb7e-d170dcc114af.png)


## Tools (Herramientas)
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-tools"></a>

**Servicios de AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) proporciona capacidad informática escalable en la nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ La [ Site-to-SiteVPN de AWS](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) le ayuda a transferir el tráfico entre las instancias que lanza en AWS y su propia red remota.

**Otras herramientas**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) es el comando de la interfaz de la línea de comandos (CLI) interactiva de Db2.

## Epics
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-epics"></a>

### Habilite la federación en la base de datos Db2 LUW que se ejecuta en AWS
<a name="enable-federation-on-the-db2-luw-database-running-on-aws"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Habilite la federación en la base de datos DB2 LUW. | Para habilitar la federación en DB2 LUW, ejecute el siguiente comando.<pre>update dbm cfg using federated YES</pre> | Administrador de base de datos | 
| Reinicie la base de datos. | Para reiniciar la base de datos, ejecute el comando siguiente:<pre>db2stop force;<br />db2start;</pre> | Administrador de base de datos | 

### Cataloga la base de datos remota
<a name="catalog-the-remote-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cataloga el subsistema Db2 z/OS remoto. | Para catalogar la z/OS base de datos Db2 remota en Db2 LUW que se ejecuta en AWS, utilice el siguiente comando de ejemplo.<pre>catalog TCPIP NODE tcpnode REMOTE mainframehost SERVER mainframeport</pre> | Administrador de base de datos | 
| Catalogue la base de datos remota. | Para catalogar la base de datos remota, utilice el siguiente comando de ejemplo. <pre>catalog db dbnam1 as ndbnam1 at node tcpnode</pre> | Administrador de base de datos | 

### Cree la definición de servidor remoto
<a name="create-the-remote-server-definition"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Recopile las credenciales de usuario para la base de datos remota de Db2. z/OS  | Antes de continuar con los siguientes pasos, recopile la siguiente información:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts.html) | Administrador de base de datos | 
| Cree la capa DRDA. | Ejecute el siguiente comando para crear una capa DRDA.<pre>CREATE WRAPPER DRDA;</pre> | Administrador de base de datos | 
| Cree la definición del servidor. | Para crear la definición del servidor, ejecute el siguiente comando de ejemplo.<pre>CREATE SERVER ndbserver<br />TYPE DB2/ZOS VERSION 12<br />WRAPPER DRDA<br />AUTHORIZATION "dbuser1" PASSWORD "dbpasswd" OPTIONS ( DBNAME 'ndbnam1',FED_PROXY_USER 'ZPROXY' );</pre>En esta definición, `FED_PROXY_USER` especifica el usuario proxy que se utilizará para establecer conexiones de confianza a la base de datos de Db2 z/OS . El ID de usuario y la contraseña de autorización solo son necesarios para crear el objeto de servidor remoto en la base de datos de Db2 LUW. No se utilizarán más adelante durante el tiempo de ejecución. | Administrador de base de datos | 

### Creación de asignaciones de usuarios
<a name="create-user-mappings"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un asignación de usuarios para el usuario proxy. | Para crear un asignación de usuarios para el usuario proxy, ejecute el siguiente comando.<pre>CREATE USER MAPPING FOR ZPROXY SERVER ndbserver OPTIONS (REMOTE_AUTHID 'ZPROXY', REMOTE_PASSWORD 'zproxy');</pre> | Administrador de base de datos | 
| Cree asignaciones de usuarios para cada usuario en Db2 LUW. | Cree asignaciones de usuarios para todos los usuarios de la base de datos de Db2 LUW en AWS que necesiten acceder a datos remotos a través del usuario proxy. Ejecute el siguiente comando para crear las asignaciones de usuario.<pre>CREATE USER MAPPING FOR PERSON1 SERVER ndbserver OPTIONS (REMOTE_AUTHID 'USERZID', USE_TRUSTED_CONTEXT 'Y');</pre>La declaración especifica que un usuario de Db2 LUW (`PERSON1`) puede establecer una conexión de confianza con la base de datos remota de Db2 z/OS (). `USE_TRUSTED_CONTEXT 'Y'` Una vez establecida la conexión a través del usuario proxy, el usuario puede acceder a los datos mediante el ID de z/OS usuario de Db2 (). `REMOTE_AUTHID 'USERZID'` | Administrador de base de datos | 

### Cree el objeto de contexto de confianza
<a name="create-the-trusted-context-object"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el objeto de contexto de confianza. | Para crear el objeto de contexto de confianza en la z/OS base de datos remota de Db2, utilice el siguiente comando de ejemplo.<pre>CREATE TRUSTED CONTEXT CTX_LUW_ZOS<br />BASED UPON CONNECTION USING SYSTEM AUTHID ZPROXY<br />ATTRIBUTES (<br />ADDRESS '10.10.10.10'<br />)<br />NO DEFAULT ROLE<br />ENABLE<br />WITH USE FOR PUBLIC WITHOUT AUTHENTICATION;</pre>En esta definición, `CTX_LUW_ZOS` es un nombre arbitrario para el objeto de contexto de confianza. El objeto contiene el ID del usuario proxy y la dirección IP del servidor desde el que debe originarse la conexión de confianza. En este ejemplo, el servidor de la base de datos Db2 LUW en AWS. También puede utilizar el nombre de dominio en lugar de la dirección IP. La cláusula `WITH USE FOR PUBLIC WITHOUT AUTHENTICATION` indica que se permite cambiar el ID de usuario en una conexión de confianza para cada ID de usuario. No es necesario proporcionar una contraseña. | Administrador de base de datos | 

## Recursos relacionados
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-resources"></a>
+ [Instalación de control de acceso a los recursos de IBM (RACF)](https://www.ibm.com/products/resource-access-control-facility)
+ [Federación IBM Db2 LUW](https://www.ibm.com/docs/en/db2/11.5?topic=federation)
+ [Contextos de confianza](https://www.ibm.com/docs/en/db2-for-zos/13?topic=contexts-trusted)

## Información adicional
<a name="secure-and-streamline-user-access-in-a-db2-federation-database-on-aws-by-using-trusted-contexts-additional"></a>

**Contextos de confianza de Db2**

Un contexto de confianza es un objeto de base de datos de Db2 que define una relación de confianza entre un servidor federado y un servidor de base de datos remoto. Para definir una relación de confianza, el contexto de confianza especifica los atributos de confianza. Existen tres tipos de atributos de confianza:
+ El ID de autorización del sistema que realiza la solicitud de conexión inicial a la base de datos
+ La dirección IP o el nombre de dominio desde los que se realiza la conexión
+ La configuración de cifrado para las comunicaciones de datos entre el servidor de la base de datos y el cliente de la base de datos

Se establece una conexión de confianza cuando todos los atributos de una solicitud de conexión coinciden con los atributos especificados en cualquier objeto de contexto de confianza definido en el servidor. Existen dos tipos diferentes de conexiones de confianza: implícitas y explícitas. Una vez establecida una conexión de confianza implícita, el usuario hereda un rol que no está disponible para él fuera del ámbito de esa definición de conexión de confianza. Una vez establecida una conexión de confianza explícita, los usuarios pueden conectarse a la misma conexión física, con o sin autenticación. Además, a los usuarios de Db2 se les pueden asignar roles que especifiquen privilegios que solo se utilizarán dentro de la conexión de confianza. Este patrón utiliza una conexión de confianza explícita.

*Contexto de confianza en este patrón*

Una vez completado el patrón, PERSON1 en Db2, LUW accede a los datos remotos de Db2 z/OS mediante un contexto de confianza federado. La conexión para PERSON1 se establece a través de un usuario proxy si la conexión se origina en la dirección IP o el nombre de dominio que se especifica en la definición del contexto de confianza. Una vez establecida la conexión, el ID PERSON1 de z/OS usuario de Db2 correspondiente se cambia sin necesidad de volver a autenticarse, y el usuario puede acceder a los datos u objetos en función de los privilegios de Db2 configurados para ese usuario.

*Ventajas de los contextos de confianza federados*
+ Este enfoque mantiene el principio del privilegio mínimo al eliminar el uso de un ID de usuario o de aplicación común, que requeriría un conjunto de todos los privilegios que requieren todos los usuarios.
+ La identidad real del usuario que realiza la transacción tanto en la base de datos federada como en la remota siempre se conoce y se puede auditar.
+ El rendimiento mejora porque la conexión física se reutiliza entre los usuarios sin necesidad de que el servidor federado vuelva a autenticarse.

# Transfiera z/OS datos de Db2 a gran escala a Amazon S3 en archivos CSV
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files"></a>

*Bruno Sahinoglu, Abhijit Kshirsagar e Ivan Schuster, Amazon Web Services*

## Resumen
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-summary"></a>

Un mainframe sigue siendo el sistema de registro de muchas empresas que conservan una enorme cantidad de datos, incluidas entidades de datos maestros con registros de las transacciones comerciales actuales e históricas. A menudo está aislado, y los sistemas distribuidos de la misma empresa no pueden acceder fácilmente a él. Con la aparición de la tecnología en la nube y la democratización de los macrodatos, las empresas tratan de usar la información oculta en los datos del mainframe para desarrollar nuevas capacidades empresariales.

Con ese objetivo, las empresas buscan abrir sus datos Db2 de mainframe a su entorno de nube de Amazon Web Services (AWS). Los motivos empresariales son varios, y los métodos de transferencia varían de un caso a otro. Es posible que prefiera conectar la aplicación directamente al mainframe, o que prefiera replicar los datos prácticamente en tiempo real. Si el caso de uso es alimentar un almacén de datos o un lago de datos, disponer de una up-to-date copia ya no es un problema y el procedimiento descrito en este patrón puede ser suficiente, especialmente si se quiere evitar los costes de licencia de productos de terceros. Otro caso de uso podría ser la transferencia de datos de un mainframe para un proyecto de migración. En un escenario de migración, es necesario contar con datos para realizar las pruebas de equivalencia funcional. El enfoque descrito en esta publicación es una forma rentable de transferir los datos de Db2 al entorno de nube de AWS.

Dado que Amazon Simple Storage Service (Amazon S3) es uno de los servicios de AWS más integrados, puede acceder a los datos desde allí y recopilar información directamente mediante otros servicios de AWS, como Amazon Athena, AWS Lambda Functions o Amazon. QuickSight También puede cargar los datos en Amazon Aurora o Amazon DynamoDB mediante AWS Glue o AWS Database Migration Service (AWS DMS). Con ese objetivo en mente, este patrón describe cómo descargar datos de Db2 en archivos CSV en formato ASCII en el mainframe y transferir los archivos a Amazon S3.

Para ello, se han desarrollado [scripts de mainframe](https://github.com/aws-samples/unloaddb2-samples) para ayudar a generar lenguajes de control de tareas (JCLs) para descargar y transferir tantas tablas de Db2 como necesite.

## Requisitos previos y limitaciones
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-prereqs"></a>

**Requisitos previos **
+ Usuario del sistema z/OS operativo IBM con autorización para ejecutar scripts JCL y Restructured Extended Executor (REXX).
+ Acceso a los servicios del sistema z/OS Unix (USS) para generar claves públicas y privadas de SSH (Secure Shell).
+ Un bucket de S3 con permisos de escritura. Para obtener más información, consulte la sección [Cree su primer bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) en la documentación de Amazon S3.
+ Un servidor habilitado para el protocolo SSH File Transfer (SFTP) de AWS Transfer Family con **Service Managed** como proveedor de identidad y Amazon S3 como servicio de almacenamiento de AWS. Para obtener más información, consulte [Crear un servidor habilitado para SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html) en la documentación de AWS Transfer Family.

**Limitaciones**
+ Este enfoque no es adecuado para la sincronización de datos prácticamente en tiempo real o en tiempo real.
+ Los datos solo se pueden mover de Db2 z/OS a Amazon S3, y no al revés.

## Arquitectura
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-architecture"></a>

**Pila de tecnología de origen**
+ Mainframe que ejecuta Db2 en z/OS

**Pila de tecnología de destino**
+ AWS Transfer Family
+ Amazon S3
+ Amazon Athena
+ Amazon QuickSight
+ AWS Glue
+ Amazon Relational Database Service (Amazon RDS)
+ Amazon Aurora
+ Amazon Redshift

**Arquitectura de origen y destino**

El siguiente diagrama muestra el proceso de generación, extracción y transferencia de z/OS datos de Db2 en formato CSV ASCII a un bucket de S3.

![\[Data flow from corporate data center to Nube de AWS, showing mainframe extraction and cloud processing steps.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/87b13e0d-0be9-4462-bdbf-67342334416c.png)


1. Se selecciona una lista de tablas para la migración de datos del catálogo de Db2.

1. La lista se usa para impulsar la generación de trabajos de descarga con las columnas numéricas y de datos en formato externo.

1. A continuación, los datos se transfieren a Amazon S3 mediante AWS Transfer Family.

1. Un trabajo de extracción, transformación y carga (ETL) de AWS Glue puede transformar los datos y cargarlos en un bucket procesado en el formato especificado, o bien AWS Glue puede introducir los datos directamente en la base de datos.

1. Amazon Athena y Amazon se QuickSight pueden usar para consultar y renderizar los datos para impulsar el análisis.

En el siguiente diagrama se muestra un flujo lógico de todo el proceso.

![\[Flowchart showing JCL process with TABNAME, REXXEXEC, and JCL decks steps, including inputs and outputs.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/66e6fa1a-1c7d-4b7a-8404-9ba85e433b24/images/d72f2572-10c9-43f9-b6c9-7e57c9a69d52.png)


1. El primer JCL, denominado TABNAME, usará la utilidad DSNTIAUL de Db2 para extraer y generar la lista de tablas que planea descargar de Db2. Para elegir las tablas, debe adaptar manualmente la entrada SQL para seleccionar y añadir criterios de filtro que incluyan uno o más esquemas de Db2.

1. El segundo JCL, denominado REXXEXEC, usará un esqueleto de JCL y el programa REXX proporcionado para procesar la lista de tablas creada por el JCL TABNAME y generar un JCL por nombre de tabla. Cada JCL incluirá un paso para descargar la tabla y otro paso para enviar el archivo al bucket de S3 mediante el protocolo SFTP.

1. El último paso consiste en ejecutar el JCL para descargar la tabla y transferir el archivo a AWS. Todo el proceso se puede automatizar con AWS o mediante un programador en las instalaciones.

## Tools (Herramientas)
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-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.
+ [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) es un motor de base de datos relacional completamente administrado diseñado para la nube y compatible con MySQL y PostgreSQL.
+ [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.
+ [Amazon QuickSight](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 de control.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) es un servicio de almacenamiento de datos administrado de varios petabytes en la nube de AWS.
+ [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.
+ [AWS Transfer Family](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) es un servicio de transferencia segura que le permite transferir archivos dentro y fuera de los servicios de almacenamiento de AWS.

**Herramientas de mainframe**
+ El [Protocolo SSH File Transfer (SFTP)](https://www.ssh.com/academy/ssh/sftp-ssh-file-transfer-protocol) es un protocolo seguro de transferencia de archivos que permite el inicio de sesión remoto y la transferencia de archivos entre servidores. SSH proporciona seguridad al cifrar todo el tráfico.
+ [DSNTIAUL](https://www.ibm.com/docs/en/db2-for-zos/11?topic=dpasp-dsntiaul-sample-program) es un programa de muestra proporcionado por IBM para descargar datos.
+ [DSNUTILB](https://www.ibm.com/docs/en/db2-for-zos/11?topic=sharing-recommendations-utilities-in-coexistence) es un programa de utilidades por lotes proporcionado por IBM para descargar datos con diferentes opciones de DSNTIAUL.
+ [z/OS OpenSSH es un puerto SSH](https://www.ibm.com/docs/en/zos/2.4.0?topic=zbed-zos-openssh) de software de código abierto que se ejecuta en el Servicio de Sistema Unix bajo la red del sistema operativo IBM. z/OS. SSH is a secure, encrypted connection program between two computers running on a TCP/IP Proporciona múltiples utilidades, como ssh-keygen.
+ El script [REXX (Restructured Extended Executor)](https://www.ibm.com/docs/en/zos/2.1.0?topic=guide-learning-rexx-language) se usa para automatizar la generación de JCL con los pasos Db2 Unload y SFTP.

**Código**

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

## Prácticas recomendadas
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-best-practices"></a>

Para la primera descarga, lo generado JCLs debería descargar todos los datos de la tabla.

Tras la primera descarga completa, realice descargas graduales para mejorar el rendimiento y ahorrar costos. Actualice la consulta SQL de la plantilla JCL para adaptarla a cualquier cambio en el proceso de descarga.

Puede convertir el esquema manualmente o mediante un script de Lambda con SYSPUNCH de Db2 como entrada. Para un proceso industrial, la [herramienta de conversión de esquemas (SCT) de AWS](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2zOS.html) es la opción recomendada.

Por último, use un programador basado en mainframe o un programador en AWS con un agente en el mainframe para ayudar a gestionar y automatizar todo el proceso.

## Epics
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-epics"></a>

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el bucket de S3. | Para obtener instrucciones, consulte [Crear su primer bucket de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). | AWS general | 

### Configure el servidor Transfer Family
<a name="set-up-the-transfer-family-server"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un servidor compatible con SFTP. | Para abrir y crear un servidor SFTP en la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/), haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | AWS general | 
| Cree un rol de IAM para Transfer Family. | Para crear un rol de AWS Identity and Access Management (IAM) que permita a Transfer Family obtener acceso a Amazon S3, siga las instrucciones de [Crear una política y rol de IAM](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html).  | Administrador de AWS | 
| Añada un usuario gestionado por el servicio Amazon S3. | Para añadir el usuario gestionado por el servicio Amazon S3, siga las instrucciones de la [documentación de AWS](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html#add-s3-user) y use su ID de usuario de mainframe. | AWS general | 

### Proteja el protocolo de comunicación
<a name="secure-the-communication-protocol"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la clave de SSH. | En el entorno de USS de su servidor principal, ejecute el siguiente comando.<pre>ssh-keygen -t rsa</pre>Cuando se le pida una contraseña, deje el campo vacío. | Desarrollador de Mainframe | 
| Proporcione los niveles de autorización correctos a la carpeta SSH y a los archivos de clave. | De forma predeterminada, las claves públicas y privadas se almacenarán en el directorio de usuario `/u/home/username/.ssh`.Debe conceder autorización 644 a los archivos de clave, y 700 a la carpeta.<pre>chmod 644 .ssh/id_rsa<br />chmod 700 .ssh</pre> | Desarrollador de Mainframe | 
| Copie el contenido de la clave pública a su usuario gestionado por el servicio Amazon S3. | Para copiar el contenido de clave pública generado por USS abra la [consola de AWS Transfer Family](https://console.aws.amazon.com/transfer/).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html) | Desarrollador de Mainframe | 

### Genera el JCLs
<a name="generate-the-jcls"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere la lista de tablas Db2 incluidas. | Proporcione el código SQL de entrada para crear una lista de las tablas destinadas a la migración de datos. Este paso requiere que especifique los criterios de selección consultando la tabla SYSIBM.SYSTABLES del catálogo de Db2 mediante una cláusula where de SQL. Los filtros se pueden personalizar para incluir un esquema específico, o bien nombres de tablas que comiencen con un prefijo concreto o en función de una marca de tiempo para la descarga gradual. El resultado se captura en un conjunto de datos secuencial físico (PS) en el mainframe. Este conjunto de datos servirá de entrada para la siguiente fase de generación de JCL.Antes de usar JCL TABNAME (puede renombrarlo si es necesario), realice los siguientes cambios:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Trabajo de extracción de lista de tablas de Db2**<pre><Jobcard><br />//* <br />//* UNLOAD ALL THE TABLE NAMES FOR A PARTICULAR SCHEMA<br />//* <br />//STEP01  EXEC PGM=IEFBR14<br />//* <br />//DD1      DD  DISP=(MOD,DELETE,DELETE),<br />//         UNIT=SYSDA,<br />//         SPACE=(1000,(1,1)),<br />//         DSN=<HLQ1>.DSN81210.TABLIST<br />//* <br />//DD2      DD  DISP=(MOD,DELETE,DELETE),<br />//         UNIT=SYSDA,<br />//         SPACE=(1000,(1,1)),<br />//         DSN=<HLQ1>.DSN81210.SYSPUNCH <br />//* <br />//UNLOAD  EXEC PGM=IKJEFT01,DYNAMNBR=20 <br />//SYSTSPRT DD  SYSOUT=* <br />//STEPLIB  DD  DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT<br />//         DD  DISP=SHR,DSN=DSNC10.SDSNLOAD<br />//         DD  DISP=SHR,DSN=CEE.SCEERUN <br />//         DD  DISP=SHR,DSN=DSNC10.DBCG.RUNLIB.LOAD <br />//SYSTSIN  DD  *<br />  DSN SYSTEM(DBCG) <br />  RUN  PROGRAM(DSNTIAUL) PLAN(DSNTIB12) PARMS('SQL') - <br />       LIB('DSNC10.DBCG.RUNLIB.LOAD')<br />  END<br />//SYSPRINT DD SYSOUT=*<br />//* <br />//SYSUDUMP DD SYSOUT=*<br />//* <br />//SYSREC00 DD DISP=(NEW,CATLG,DELETE),<br />//            UNIT=SYSDA,SPACE=(32760,(1000,500)),<br />//            DSN=<HLQ1>.DSN81210.TABLIST <br />//* <br />//SYSPUNCH DD DISP=(NEW,CATLG,DELETE), <br />//            UNIT=SYSDA,SPACE=(32760,(1000,500)),<br />//            VOL=SER=SCR03,RECFM=FB,LRECL=120,BLKSIZE=12 <br />//            DSN=<HLQ1>.DSN81210.SYSPUNCH <br />//* <br />//SYSIN    DD * <br />   SELECT CHAR(CREATOR), CHAR(NAME)<br />     FROM SYSIBM.SYSTABLES <br />    WHERE OWNER = '<Schema>' <br />      AND NAME LIKE '<Prefix>%' <br />      AND TYPE = 'T'; <br />/* </pre> | Desarrollador de Mainframe | 
| Modifique las plantillas de JCL. | Las plantillas JCL proporcionadas con este patrón contienen una tarjeta de trabajo y nombres de bibliotecas genéricas. Sin embargo, la mayoría de los sitios de mainframe tendrán sus propios estándares de nomenclatura para los nombres de conjuntos de datos, bibliotecas y tarjetas de trabajo. Por ejemplo, es posible que necesite una clase de trabajo específica para ejecutar trabajos de Db2. El subsistema Job Entry implementa JES2 y JES3 puede imponer cambios adicionales. Las bibliotecas de carga estándar pueden tener un primer calificador diferente a `SYS1`, que es el predeterminado de IBM. Por lo tanto, personalice las plantillas para adecuarlas a los estándares específicos de su sitio antes de ejecutarlas.Realice los siguientes cambios en el esqueleto de JCL UNLDSKEL:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Descargue el esqueleto de JCL mediante SFTP**<pre>//&USRPFX.U JOB (DB2UNLOAD),'JOB',CLASS=A,MSGCLASS=A, <br />//         TIME=1440,NOTIFY=&USRPFX<br />//* DELETE DATASETS<br />//STEP01   EXEC PGM=IEFBR14<br />//DD01     DD DISP=(MOD,DELETE,DELETE),<br />//            UNIT=SYSDA,<br />//            SPACE=(TRK,(1,1)),<br />// DSN=&USRPFX..DB2.PUNCH.&JOBNAME<br />//DD02     DD DISP=(MOD,DELETE,DELETE),<br />//            UNIT=SYSDA,<br />//            SPACE=(TRK,(1,1)),<br />// DSN=&USRPFX..DB2.UNLOAD.&JOBNAME<br />//*<br />//* RUNNING DB2 EXTRACTION BATCH JOB FOR AWS DEMO<br />//*<br />//UNLD01   EXEC PGM=DSNUTILB,REGION=0M,<br />// PARM='<DSN>,UNLOAD'<br />//STEPLIB  DD  DISP=SHR,DSN=DSNC10.DBCG.SDSNEXIT<br />//         DD  DISP=SHR,DSN=DSNC10.SDSNLOAD<br />//SYSPRINT DD  SYSOUT=*<br />//UTPRINT  DD  SYSOUT=*<br />//SYSOUT   DD  SYSOUT=*<br />//SYSPUN01 DD  DISP=(NEW,CATLG,DELETE),<br />//             SPACE=(CYL,(1,1),RLSE),<br />// DSN=&USRPFX..DB2.PUNCH.&JOBNAME<br />//SYSREC01 DD  DISP=(NEW,CATLG,DELETE),<br />//             SPACE=(CYL,(10,50),RLSE),<br />// DSN=&USRPFX..DB2.UNLOAD.&JOBNAME<br />//SYSPRINT DD SYSOUT=*<br />//SYSIN    DD *<br />  UNLOAD<br />  DELIMITED COLDEL ','<br />  FROM TABLE &TABNAME<br />  UNLDDN SYSREC01<br />  PUNCHDDN SYSPUN01<br />  SHRLEVEL CHANGE ISOLATION UR;<br /> /*<br />//*<br />//* FTP TO AMAZON S3 BACKED FTP SERVER IF UNLOAD WAS SUCCESSFUL<br />//*<br />//SFTP EXEC PGM=BPXBATCH,COND=(4,LE),REGION=0M<br />//STDPARM DD *<br /> SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'"<br />   &TABNAME..csv;<br /> echo "ascii             " >> uplcmd;<br /> echo "PUT &TABNAME..csv " >>>> uplcmd;<br /> sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTPSITE;<br /> rm &TABNAME..csv;<br /> //SYSPRINT DD SYSOUT=*<br /> //STDOUT DD SYSOUT=*<br /> //STDENV DD *<br /> //STDERR DD SYSOUT=*                                                </pre>  | Desarrollador de Mainframe | 
| Genere el JCL de descarga masiva. | Este paso implica ejecutar un script REXX en un entorno ISPF mediante JCL. Proporcione la lista de tablas incluidas en el primer paso como entrada para la generación masiva de JCL con el nombre `TABLIST DD`. El JCL generará un nuevo JCL por nombre de tabla en un conjunto de datos particionado definido por el usuario y especificado con el nombre `ISPFILE DD`. Asigne esta biblioteca de antemano. Cada nuevo JCL tendrá dos pasos: uno para descargar la tabla de Db2 en un archivo y otro para enviar el archivo al bucket de S3.Realice los siguientes cambios en el JCL REXXEXEC (puede cambiar el nombre):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Generación masiva de trabajos JCL**<pre>//RUNREXX JOB (CREATEJCL),'RUNS ISPF TABLIST',CLASS=A,MSGCLASS=A,      <br />//         TIME=1440,NOTIFY=&SYSUID<br />//* Most of the values required can be updated to your site specific<br />//* values using the command 'TSO ISRDDN' in your ISPF session. <br />//* Update all the lines tagged with //update marker to desired<br />//* site specific values. <br />//ISPF EXEC PGM=IKJEFT01,REGION=2048K,DYNAMNBR=25<br />//SYSPROC   DD DISP=SHR,DSN=USER.Z23D.CLIST<br />//SYSEXEC   DD DISP=SHR,DSN=<HLQ1>.TEST.REXXLIB<br />//ISPPLIB   DD DISP=SHR,DSN=ISP.SISPPENU<br />//ISPSLIB   DD DISP=SHR,DSN=ISP.SISPSENU<br />//          DD DISP=SHR,DSN=<HLQ1>.TEST.ISPSLIB<br />//ISPMLIB   DD DSN=ISP.SISPMENU,DISP=SHR<br />//ISPTLIB   DD DDNAME=ISPTABL<br />//          DD DSN=ISP.SISPTENU,DISP=SHR<br />//ISPTABL   DD LIKE=ISP.SISPTENU,UNIT=VIO<br />//ISPPROF   DD LIKE=ISP.SISPTENU,UNIT=VIO<br />//ISPLOG    DD SYSOUT=*,RECFM=VA,LRECL=125<br />//SYSPRINT  DD SYSOUT=*<br />//SYSTSPRT  DD SYSOUT=*<br />//SYSUDUMP  DD SYSOUT=*<br />//SYSDBOUT  DD SYSOUT=*<br />//SYSTSPRT  DD SYSOUT=*<br />//SYSUDUMP  DD SYSOUT=*<br />//SYSDBOUT  DD SYSOUT=*<br />//SYSHELP   DD DSN=SYS1.HELP,DISP=SHR <br />//SYSOUT    DD SYSOUT=*<br />//* Input list of tablenames<br />//TABLIST   DD DISP=SHR,DSN=<HLQ1>.DSN81210.TABLIST<br />//* Output pds<br />//ISPFILE   DD DISP=SHR,DSN=<HLQ1>.TEST.JOBGEN<br />//SYSTSIN   DD *<br />ISPSTART CMD(ZSTEPS <MFUSER> <FTPUSER> <AWS TransferFamily IP>)<br />/*</pre>Antes de ejecutar el script REXX, realice los siguientes cambios:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.html)**Script ZSTEPS REXX**<pre>/*REXX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */<br />/* 10/27/2021 - added new parms to accommodate ftp */<br />Trace "o" <br />    parse arg usrpfx ftpuser ftpsite<br />    Say "Start"<br />    Say "Ftpuser: " ftpuser "Ftpsite:" ftpsite<br />    Say "Reading table name list"<br />    "EXECIO * DISKR TABLIST (STEM LINE. FINIS"<br />    DO I = 1 TO LINE.0<br />      Say I<br />      suffix = I<br />      Say LINE.i<br />      Parse var LINE.i schema table rest<br />      tabname = schema !! "." !! table<br />      Say tabname<br />      tempjob= "LOD" !! RIGHT("0000" !! i, 5) <br />      jobname=tempjob<br />      Say tempjob<br />      ADDRESS ISPEXEC "FTOPEN "<br />      ADDRESS ISPEXEC "FTINCL UNLDSKEL"<br />      /* member will be saved in ISPDSN library allocated in JCL */<br />      ADDRESS ISPEXEC "FTCLOSE NAME("tempjob")"<br />    END<br /><br />    ADDRESS TSO "FREE F(TABLIST) "<br />    ADDRESS TSO "FREE F(ISPFILE) "<br /><br />exit 0</pre> | Desarrollador de Mainframe | 

### Ejecute el JCLs
<a name="run-the-jcls"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Realice el paso de descarga de Db2. | Tras la generación del JCL, tendrá tantas tablas JCLs como desee descargar.Esta historia emplea un ejemplo generado por el JCL para explicar la estructura y los pasos más importantes.No tiene que hacer nada. La siguiente información es solo para referencia. Si su intención es enviar las JCLs que ha generado en el paso anterior, vaya a *Enviar la LODnnnnn JCLs tarea*.Al descargar datos de Db2 usando un JCL con la utilidad DSNUTILB Db2 proporcionada por IBM, debe asegurarse de que los datos descargados no contengan datos numéricos comprimidos. Para ello, utilice el parámetro de DSNUTILB `DELIMITED`.El parámetro `DELIMITED` permite descargar los datos en formato CSV añadiendo un carácter como delimitador y comillas dobles para el campo de texto, eliminando el relleno de la columna VARCHAR y convirtiendo todos los campos numéricos a FORMATO EXTERNO, incluidos los campos de FECHA.El siguiente ejemplo muestra el aspecto del paso de descarga en el JCL generado, usando el carácter de coma como delimitador.<pre>                            <br /> UNLOAD<br /> DELIMITED COLDEL ',' <br /> FROM TABLE SCHEMA_NAME.TBNAME<br /> UNLDDN SYSREC01<br /> PUNCHDDN SYSPUN01<br /> SHRLEVEL CHANGE ISOLATION UR;</pre> | Desarrollador de mainframe, ingeniero de sistemas | 
| Realice el paso de SFTP. | Para usar el protocolo SFTP de un JCL, emplee la utilidad BPXBATCH. La utilidad SFTP no puede acceder directamente a los conjuntos de datos de MVS. Puede usar el comando de copia (`cp`) para copiar el archivo secuencial `&USRPFX..DB2.UNLOAD.&JOBNAME` al directorio USS, donde se convierte en `&TABNAME..csv`.Ejecute el comando `sftp` con la clave privada (`id_rsa`) y la ID de usuario de RACF como nombre de usuario para conectarse a la dirección IP de AWS Transfer Family.<pre>SH cp "//'&USRPFX..DB2.UNLOAD.&JOBNAME'"<br />   &TABNAME..csv;<br /> echo "ascii             " >> uplcmd;<br /> echo "PUT &TABNAME..csv " >>>> uplcmd;<br /> sftp -b uplcmd -i .ssh/id_rsa &FTPUSER.@&FTP_TF_SITE;<br /> rm &TABNAME..csv; </pre> | Desarrollador de mainframe, ingeniero de sistemas | 
| Envíe el LODnnnnn JCLs. | El JCL anterior generaba todas las tablas de LODnnnnn JCL que debían descargarse, transformarse en CSV y transferirse al bucket de S3.Ejecute el `submit` comando en todas las JCLs que se hayan generado. | Desarrollador de mainframe, ingeniero de sistemas | 

## Recursos relacionados
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-resources"></a>

Para obtener más información sobre las diferentes herramientas y soluciones usadas en este documento, consulte lo siguiente:
+ [Guía del usuario de z/OS OpenSSH](https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R4sc276806/$file/foto100_v2r4.pdf)
+ [Db2 z/OS — Ejemplos de sentencias de control UNLOAD](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-sample-control-statements)
+ [Db2 z/OS — Descarga de archivos delimitados](https://www.ibm.com/docs/en/db2-for-zos/11?topic=unload-unloading-delimited-files)
+ [Transfer Family: cree un servidor habilitado para SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)
+ [Transfer Family: trabajar con usuarios gestionados por servicios](https://docs.aws.amazon.com/transfer/latest/userguide/service-managed-users.html)

## Información adicional
<a name="transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files-additional"></a>

Una vez que tenga sus datos de Db2 en Amazon S3, podrá obtener información de múltiples maneras. Como Amazon S3 se integra con los servicios de análisis de datos de AWS, puede consumir o exponer libremente estos datos de forma distribuida. Por ejemplo, puede hacer lo siguiente:
+ Cree un [lago de datos en Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) y extraiga información valiosa mediante query-in-place el uso de herramientas de análisis y aprendizaje automático sin mover los datos.
+ Iniciar una [función de Lambda](https://aws.amazon.com/lambda/) configurando un flujo de trabajo de procesamiento posterior a la carga integrado con AWS Transfer Family.
+ Desarrollar nuevos microservicios para acceder a los datos en Amazon S3 o en una [base de datos totalmente administrada](https://aws.amazon.com/free/database/?trk=ps_a134p000007CdNEAA0&trkCampaign=acq_paid_search_brand&sc_channel=PS&sc_campaign=acquisition_FR&sc_publisher=Google&sc_category=Database&sc_country=FR&sc_geo=EMEA&sc_outcome=acq&sc_detail=amazon%20relational%20database%20service&sc_content=Relational%20Database_e&sc_matchtype=e&sc_segment=548727697660&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Database|Solution|FR|EN|Text&s_kwcid=AL!4422!3!548727697660!e!!g!!amazon%20relational%20database%20service&ef_id=CjwKCAjwzt6LBhBeEiwAbPGOgcGbQIl1-QsbHfWTgMZSSHEXzSG377R9ZyK3tCcbnHuT45L230FufxoCeEkQAvD_BwE:G:s&s_kwcid=AL!4422!3!548727697660!e!!g!!amazon%20relational%20database%20service) con [AWS Glue](https://aws.amazon.com/glue/), un servicio de integración de datos sin servidor que facilita la detección, preparación y combinación de datos para el análisis, el machine learning y el desarrollo de aplicaciones.

En un caso de uso de migración, dado que puede transferir cualquier dato del mainframe a S3, puede hacer lo siguiente:
+ Retirar la infraestructura física y crear una estrategia de archivado de datos rentable con Amazon S3 Glacier y S3 Glacier Deep Archive. 
+ Crear soluciones de copia de seguridad y restauración escalables, duraderas y seguras con Amazon S3 y otros servicios de AWS, como S3 Glacier y Amazon Elastic File System (Amazon EFS), para mejorar o reemplazar las capacidades existentes en las instalaciones.

# Transforma Easytrieve a idiomas modernos mediante el uso personalizado AWS Transform
<a name="transform-easytrieve-modern-languages"></a>

*Shubham Roy, Subramanyam Malisetty y Harshitha Shashidhar, de Amazon Web Services*

## Resumen
<a name="transform-easytrieve-modern-languages-summary"></a>

[https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html) language-to-language Aborda los desafíos de modernizar las cargas de trabajo EZT exclusivas y exclusivas de mainframe que se utilizan habitualmente para el procesamiento de datos por lotes y la generación de informes. Este patrón reemplaza los enfoques de migración costosos, prolongados y propensos a errores, que se basan en herramientas patentadas y una experiencia poco común en mainframe, por una solución automatizada de inteligencia artificial basada en agentes que usted crea. AWS Transform

Este patrón proporciona una definición de transformación personalizada lista para usar para la transformación EZT. La definición utiliza varias entradas de transformación:
+ Reglas de negocio de EZT extraídas mediante un [AWS Transform mainframe](https://aws.amazon.com/transform/mainframe/)
+ Documentación de referencia sobre la programación de EZT
+ Código fuente de EZT
+ Conjuntos de datos de entrada y salida de mainframe

AWS Transform custom utiliza estas entradas para generar aplicaciones funcionalmente equivalentes en los lenguajes de destino modernos, como Java o Python.

El proceso de transformación utiliza funciones inteligentes de ejecución de pruebas, depuración automática y corrección iterativa para validar la equivalencia funcional con los resultados esperados. También es compatible con el aprendizaje continuo, lo que permite la definición de transformación personalizada para mejorar la precisión y la coherencia en las transformaciones sucesivas. Con este patrón, las organizaciones pueden reducir el esfuerzo y el riesgo de migración, hacer frente a la deuda técnica especializada en mainframes y modernizar las cargas de trabajo de EZT AWS para mejorar la agilidad, la fiabilidad, la seguridad y la innovación.

## Requisitos previos y limitaciones
<a name="transform-easytrieve-modern-languages-prereqs"></a>

**Requisitos previos **
+ Una cuenta activa AWS  
+ Una carga de trabajo EZT para mainframe con datos de entrada y salida 

**Limitaciones**

*Limitaciones de alcance*
+ **Compatibilidad con el lenguaje: solo se admite** la transformación de EZT a Java para este patrón de transformación específico. 
+ **Fuera de alcance**: la transformación de otros lenguajes de programación de mainframe requiere una nueva definición de transformación personalizada en formato personalizado. AWS Transform 

*Limitaciones del proceso*
+ **Dependencia de la validación**: sin los datos de salida de referencia, la transformación no se puede validar. 
+ **Lógica patentada**: las utilidades altamente específicas y desarrolladas a medida requieren documentación de usuario adicional y materiales de referencia para que el agente de IA las interprete correctamente.

*Limitaciones técnicas*
+ **Límites de servicio**: para ver los límites y las cuotas de servicio AWS Transform personalizados, consulte la [Guía AWS Transform del usuario (Cuotas](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html)) y la [referencia AWS general (Transformar cuotas](https://docs.aws.amazon.com/general/latest/gr/aws-transform.html)).

**Versiones de producto**
+ AWS Transform CLI — Última versión
+ Node.js: versión 20 o posterior
+ Git — Última versión
+ Entorno de destino
  + Java: versión 17 o posterior
  + Spring Boot: la versión 3.x es el objetivo principal de las aplicaciones refactorizadas
  + Maven: versión 3.6 o posterior

## Arquitectura
<a name="transform-easytrieve-modern-languages-architecture"></a>

**Pila de tecnología de origen**
+ **Sistema operativo**: IBM z/OS
+ **Lenguaje de programación** — Easytrieve, lenguaje de control de tareas (JCL)
+ **Base de datos**: IBM DB2 for z/OS, método de acceso al almacenamiento virtual (VSAM), archivos planos de mainframe

**Pila de tecnología de destino**
+ **Sistema operativo** — Amazon Linux
+ **Computación**: Amazon Elastic Compute Cloud (Amazon EC2)
+ Lenguaje de **programación**: Java
+ **Base de datos** Amazon Relational Database Service (Amazon RDS)

**Arquitectura de destino**

![\[diagrama de arquitectura de destino para usar AWS Transform custom para transformar EZT en código moderno.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/71f15422-42cb-4c7e-94fa-051a4f130445/images/eb89eed0-dd55-485c-a433-9869162eaad9.png)


**Flujo de trabajo**

Esta solución utiliza un patrón de transformación de language-to-language migración AWS Transform personalizado para modernizar las aplicaciones Easytrieve (EZT) de mainframe a Java mediante un flujo de trabajo automatizado de cuatro pasos.

*Paso 1: Proporcione su código heredado a Mainframe, que: AWS Transform *
+ Analiza el código
+ Extrae la lógica empresarial de alto nivel
+ Extrae la lógica empresarial detallada.

*Paso 2: Crea una carpeta con las entradas necesarias:*
+ Reglas de negocio de EZT extraídas mediante un AWS Transform mainframe 
+ Documentación de referencia sobre la programación de EZT 
+ Código fuente de EZT
+ Conjuntos de datos de entrada y salida de mainframe

*Paso 3: Crear y ejecutar una definición de transformación personalizada*

1. Utilice la AWS Transform CLI para describir los objetivos de transformación en lenguaje natural. AWS Transform custom analiza las guías de programación BRE, código fuente y EZT para generar una definición de transformación personalizada para que los desarrolladores la revisen y aprueben.

1. A continuación, invoque la AWS Transform CLI con el código fuente del proyecto. AWS Transform custom crea planes de transformación, convierte EZT a Java tras su aprobación, genera archivos auxiliares, crea el JAR ejecutable y valida los criterios de salida.

1. Utilice el agente de validación para probar la equivalencia funcional con la salida del mainframe. El agente de autodepuración corrige los problemas de forma autónoma. Los resultados finales incluyen informes de validación de código Java y HTML validados.

**Automatización y escala**
+ Arquitectura de ejecución multimodo de Agentic AI: AWS Transform custom aprovecha la IA de Agentic con 3 modos de ejecución (conversacional, interactivo y totalmente automatizado) para automatizar tareas de transformación complejas, como el análisis de código, la refactorización, la planificación de la transformación y las pruebas.
+ Sistema de comentarios sobre el aprendizaje adaptativo: la plataforma implementa mecanismos de aprendizaje continuo mediante el análisis de muestras de código, el análisis de la documentación y la integración de los comentarios de los desarrolladores con las definiciones de transformación versionadas.
+ Arquitectura de procesamiento simultáneo de aplicaciones: el sistema permite la ejecución paralela distribuida de múltiples operaciones de transformación de aplicaciones simultáneamente en una infraestructura escalable.

## Tools (Herramientas)
<a name="transform-easytrieve-modern-languages-tools"></a>

**Servicios de AWS  **
+ [AWS Transform custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) es un servicio de IA de agencia que se utiliza para transformar las aplicaciones EZT heredadas en lenguajes de programación modernos. 
+ [AWS Transform](https://docs.aws.amazon.com/transform/latest/userguide/what-is-service.html)utiliza la IA agentic para ayudarlo a acelerar la modernización de las cargas de trabajo heredadas, como .NET, los mainframes y las cargas de trabajo. VMware 
+ [AWS Transform para mainframe](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html) se utiliza para analizar las aplicaciones EZT heredadas a fin de extraer la lógica empresarial integrada y generar una documentación exhaustiva sobre las reglas empresariales, que incluye resúmenes de lógica, definiciones de acrónimos y bases de conocimiento estructuradas. Sirven como datos de entrada para personalizarlos. AWS Transform  
+ [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 S3 sirve como el servicio de almacenamiento principal de AWS Transform Custom para almacenar definiciones de transformaciones, repositorios de código y resultados de procesamiento. 
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos. La IAM proporciona un marco de seguridad AWS Transform personalizado, gestionando los permisos y el control de acceso para las operaciones de transformación.

**Otras herramientas**
+ [AWS Transform CLI](https://docs.aws.amazon.com/transform/latest/userguide/custom-command-reference.html) es la interfaz de línea de comandos AWS Transform personalizada, que permite a los desarrolladores definir, ejecutar y administrar transformaciones de código personalizadas a través de conversaciones en lenguaje natural y modos de ejecución automatizados. AWS Transform custom admite sesiones interactivas (atx custom def exec) y transformaciones autónomas para una modernización escalable de las bases de código.
+ El sistema de control de versiones de [Git](https://git-scm.com/doc) se utiliza para la protección de sucursales, el seguimiento de cambios y las capacidades de reversión durante la aplicación de correcciones automatizadas. 
+ [Java](https://www.java.com/en/) es el lenguaje de programación y el entorno de desarrollo utilizados en este patrón. 

**Repositorio de código**

El código de este patrón está disponible en [Easytrieve to Modern Languages Transformation with AWS Transform](https://github.com/aws-samples/sample-mainframe-easytrieve-transform?tab=readme-ov-file#easytrieve-to-modern-languages-transformation-with-aws-transform-custom) Custom on. GitHub

## Prácticas recomendadas
<a name="transform-easytrieve-modern-languages-best-practices"></a>
+ Establezca una estructura de proyecto estandarizada: cree una estructura de cuatro carpetas (código fuente, bre-doc, datos de entrada y datos de salida), valide la integridad y documente el contenido antes de la transformación.
+ Utilice archivos de referencia para la validación: utilice archivos de entrada de referencia de producción, realice una comparación con la salida de referencia y acepte la tolerancia cero ante las desviaciones. byte-by-byte
+ Utilice todos los documentos de referencia disponibles: para aumentar la precisión de la transformación, proporcione todos los documentos de referencia disponibles, como los requisitos empresariales y las listas de verificación de codificación.
+ Proporcione información para mejorar la calidad: AWS Transform Custom extrae automáticamente lo aprendido de las ejecuciones de transformación (comentarios de los desarrolladores, problemas de código) y crea elementos de conocimiento para ellos. Después de cada transformación exitosa, revise los elementos de conocimiento y apruebe el que le gustaría utilizar en futuras ejecuciones. Esto mejora la calidad de las futuras transformaciones.

## Epics
<a name="transform-easytrieve-modern-languages-epics"></a>

### Genere un extracto de reglas de negocio (BRE)
<a name="generate-a-business-rule-extract-bre"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure AWS Transform para un mainframe. | Configure el entorno y los permisos necesarios AWS Identity and Access Management (IAM) para respaldar los flujos de trabajo de modernización del mainframe. Para obtener más información, consulte la documentación sobre [la transformación de las aplicaciones de mainframe.](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html) AWS  | Desarrollador de aplicaciones | 
| Genere documentación sobre Business Rule Extract (BRE). | Extraiga la lógica empresarial del código EZT o COBOL fuente para generar documentación funcional. Para obtener instrucciones sobre cómo iniciar el proceso de extracción y revisar el resultado, consulte [Extraer la lógica empresarial](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe-workflow.html#transform-app-mainframe-workflow-extract-business-logic) en la AWS Transform documentación. | Desarrollador de aplicaciones | 

### Configure una configuración AWS Transform personalizada
<a name="set-up-trn-custom"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Aprovisione la infraestructura de AWS Transform forma personalizada. | Implemente la infraestructura lista para la producción necesaria para alojar un entorno de transformación seguro. Esto incluye una instancia privada de Amazon EC2 configurada con las herramientas, los permisos de IAM y la configuración de red necesarios para convertir el código de Easytrieve. Para aprovisionar el entorno mediante la infraestructura como código (IaC), siga las instrucciones de implementación del repositorio Personalizado y transformado [a lenguajes modernos de Easytrieve](https://github.com/aws-samples/sample-mainframe-easytrieve-transform). AWS Transform GitHub  | Desarrollador de aplicaciones, administrador de AWS | 
| Prepare los materiales de entrada para la transformación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Desarrollador de aplicaciones | 

###  Crea una definición de transformación personalizada
<a name="create-a-custom-transformation-definition"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una definición de transformación. | Siga estos pasos para crear la definición de transformación personalizada para la transformación de EZT a Java con validación funcional.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Desarrollador de aplicaciones | 
| Publique la definición de transformación. | Tras revisar y validar la definición de transformación, puede publicarla en el registro AWS Transform personalizado con un mensaje en lenguaje natural y proporcionar un nombre de definición, por ejemplo, *EasyTrieve-to-Java-Migration*. | Desarrollador de aplicaciones | 

### Prepare los datos de referencia para su validación.
<a name="prepare-baseline-data-for-validation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revise el resumen de validación de la transformación. | Antes de ejecutar la transformación AWS Transform personalizada, compruebe que la `input-data` carpeta contiene los archivos de datos necesarios capturados antes de ejecutar el trabajo por lotes del mainframe. Tras ejecutar el trabajo por lotes en el ordenador central, asegúrese de que la `output-data` carpeta capture los archivos resultantes. Todos los archivos están en formato Sequential/Text/DB 2 y utilizan la codificación EBCDIC según los requisitos de ejecución.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Desarrollador de aplicaciones | 
| Ejecute el trabajo de transformación personalizado. | Ejecute el comando AWS Transform CLI y elija la opción interactiva o no interactiva:<pre>:# Non-interactive execution (fully autonomous):<br />atx custom def exec \<br />  --transformation-name "Easytrieve-to-Java-Migration" \<br />  --code-repository-path ~/root/transform-workspace/mainframe-source/source-code \<br />  --build-command "mvn clean install" \<br />  --non-interactive \<br />  --trust-all-tools \<br /><br /># Interactive execution (with human oversight):<br />atx custom def exec \<br />  -n "Easytrieve-to-Java-Migration" \<br />  -p ~/root/transform-workspace/mainframe-source/source-code \<br />  -c "mvn clean install"<br /><br /># Resume interrupted execution:<br />atx -resume<br /># OR<br />atx --conversation-id <conversation-id><br /></pre>AWS Transform se valida automáticamente mediante build/test comandos durante la ejecución de la transformación. | Desarrollador de aplicaciones | 

### Valide y entregue el código probado
<a name="validate-and-deliver-tested-code"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Revise el resumen de validación de la transformación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | Desarrollador de aplicaciones | 
| Acceda a los informes de validación. | Introduzca estos comandos para revisar los artefactos de validación detallados:<pre># Full validation report<br />cat ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_report.html<br /><br /># Generated code location<br />ls ~/.aws/atx/custom/$LATEST_SESSION/generated/<br /><br /># Execution logs<br />cat ~/.aws/atx/custom/$LATEST_SESSION/logs/execution.log</pre> | Desarrollador de aplicaciones | 
| Habilite los elementos de conocimiento para un aprendizaje continuo. | Mejore la precisión de la transformación futura al incluir los elementos de conocimiento sugeridos en su configuración persistente. Tras una transformación, el agente almacena los patrones identificados y las reglas de mapeo en el directorio de sesión local. Para revisar y aplicar estos elementos aprendidos, ejecute estos comandos en su instancia de Amazon EC2:<pre># List all knowledge items for a specific transformation definition<br />atx custom def list-ki -n <transformation-name><br /><br /># Retrieve the details of a specific knowledge item<br />atx custom def get-ki -n <transformation-name> --id <id><br /><br /># Update the status of a knowledge item (ENABLED or DISABLED)<br />atx custom def update-ki-status -n <transformation-name> --id <id> --status ENABLED<br /><br /># Update the knowledge item configuration to enable auto-approval<br />atx custom def update-ki-config -n <transformation-name> --auto-enabled TRUE</pre> | Desarrollador de aplicaciones | 

## Resolución de problemas
<a name="transform-easytrieve-modern-languages-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| *Configuración de las rutas de entrada y salida*Los archivos de entrada no se leen o los archivos de salida no se escriben correctamente.  | Especifique la ruta completa del directorio donde se almacenan los archivos de entrada e indique claramente la ubicación en la que debe escribirse la salida. Asegúrese de que los permisos de acceso adecuados estén configurados para estos directorios. Las mejores prácticas incluyen el uso de rutas absolutas en lugar de rutas relativas para evitar la ambigüedad y la verificación de que todas las rutas especificadas existan con los permisos adecuados read/write .  | 
| *Reanudar las ejecuciones interrumpidas*La ejecución se interrumpió o debe continuar desde donde se detuvo | Puede reanudar la ejecución desde donde la dejó proporcionando el ID de conversación en el comando CLI.Busque el ID de la conversación en los registros del intento de ejecución anterior.   | 
| *Resolver las restricciones de memoria*Se produce un error de memoria insuficiente durante la ejecución. | Puede solicitar AWS Transform compartir el tamaño actual de la JVM en memoria y, a continuación, aumentar la asignación de memoria en función de esta información. Este ajuste ayuda a adaptarse a mayores requisitos de procesamiento.Considere la posibilidad de dividir los trabajos grandes en lotes más pequeños si persisten las limitaciones de memoria después de los ajustes.  | 
| *Abordar las discrepancias en los archivos de salida*Los archivos de salida no coinciden con las expectativas e AWS Transform indican que no es posible realizar más cambios. | Proporcione comentarios específicos y razones técnicas que expliquen por qué la salida actual es incorrecta. Incluya documentación técnica o empresarial adicional para respaldar sus requisitos. Este contexto detallado ayuda a AWS Transform corregir el código para generar los archivos de salida adecuados. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 

## Recursos relacionados
<a name="transform-easytrieve-modern-languages-resources"></a>
+ [AWS Transform documentación personalizada](https://docs.aws.amazon.com/transform/latest/userguide/custom.html)
+ [Generador de informes Easytrieve 11.6](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6/getting-started.html)

## Conexiones
<a name="attachments-71f15422-42cb-4c7e-94fa-051a4f130445"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/71f15422-42cb-4c7e-94fa-051a4f130445/attachments/attachment.zip)

# Más patrones
<a name="mainframe-more-patterns-pattern-list"></a>

**Topics**
+ [Implemente las automatizaciones de seguridad para la AWS WAF solución mediante Terraform](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Replicar bases de datos de unidades centrales en AWS mediante Precisely Connect](replicate-mainframe-databases-to-aws-by-using-precisely-connect.md)