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.
Convierta y desempaquete datos EBCDIC a ASCII en AWS mediante Python
Creado por Luis Gustavo Dantas (AWS)
Entorno: PoC o piloto | Origen: datos EBCDIC de mainframe | |
Destino: datos ASCII distribuidos o modernizados en la nube | Tipo R: redefinir la plataforma | Carga de trabajo: IBM |
Tecnologías: mainframe; bases de datos; almacenamiento y respaldo; modernización | Servicios de AWS: Amazon EBS; Amazon EC2 |
Resumen
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
Requisitos previos y limitaciones
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
GitHub Para obtener más información sobre los cuadernos COBOL, consulte la Guía del programador de Enterprise COBOL para z/OS 6.4 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
Pila de tecnología de origen
Datos EBCDIC en un mainframe
Cuaderno COBOL
Pila de tecnología de destino
Una 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 instancia de EC2 mediante scripts de Python y un cuaderno COBOL](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 a un archivo ASCII en una instancia de EC2:
Con el script parse_copybook_to_json.py, el cuaderno COBOL se convierte en un archivo JSON.
Con el archivo JSON y el script extract_ebcdic_to_ascii.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:
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.
Crear una función de Lambda de AWS que envíe de forma asíncrona el trabajo del script de intérprete de comandos a una instancia de EC2. Para obtener más información, consulte Programar trabajos de SSH con AWS Lambda
. 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.
Herramientas
Servicios de AWS
Amazon Elastic Compute Cloud (Amazon 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.
Amazon Elastic Block Store (Amazon EBS) proporciona volúmenes de almacenamiento por bloques para su uso con instancias de Amazon Elastic Compute Cloud (Amazon EC2).
La interfaz de la línea de comandos de AWS (AWS CLI) 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) 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
Repositorio de código
El código de este patrón está disponible en el mainframe-data-utilities
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Lanzar una instancia EC2. | La instancia de EC2 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:
| AWS general |
Instale Git |
| AWS general, Linux |
Instalación de Python. |
| AWS general, Linux |
Clone el GitHub repositorio. |
| AWS general, GitHub |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Convierta el cuaderno COBOL en el archivo de diseño JSON. | En la carpeta El siguiente comando convierte el cuaderno COBOL en un archivo JSON.
El script imprime los argumentos recibidos.
Para obtener más información sobre los argumentos, consulte el archivo README | AWS general, Linux |
Inspeccione el archivo de diseño JSON. |
Los atributos más importantes del archivo de diseño JSON son:
Para obtener más información sobre el archivo de diseño JSON, consulta el archivo README | AWS general, JSON |
Cree el archivo ASCII. | Ejecute el script extract_ebcdic_to_ascii.py, que se incluye en el repositorio clonado GitHub . Este script lee el archivo EBCDIC y escribe un archivo ASCII convertido y legible.
A medida que el script procesa los datos del EBCDIC, imprime un mensaje por cada lote de 10 000 registros. Consulte el siguiente ejemplo.
Para obtener información sobre cómo cambiar la frecuencia de impresión, consulte el archivo README | AWS general |
Examinar el archivo ASCII. |
Si ha usado el archivo EBCDIC proporcionado como ejemplo, el primer registro del archivo ASCII será este.
| AWS general, Linux |
Evalúe el archivo EBCDIC. | En la consola de Amazon EC2, ejecute el siguiente comando. Esto abre el primer registro del archivo EBCDIC.
Si ha usado el archivo EBCDIC de ejemplo, el resultado es el siguiente.
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 ( | AWS general, Linux, EBCDIC |
Recursos relacionados
Referencias
El conjunto de caracteres EBCDIC
(documentación de IBM) EBCDIC a ASCII
(documentación de IBM) COBOL
(documentación de IBM) Conceptos básicos de JCL
(documentación de IBM) Conéctese con su instancia de Linux (documentación de Amazon EC2)
Tutoriales
Programar trabajos de SSH con AWS Lambda
(publicación del blog de AWS) Uso de un desencadenador de Amazon S3 para invocar una función de Lambda (documentación de AWS Lambda)