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.
Cree programas COBOL Db2 mediante y AWS Mainframe ModernizationAWS CodeBuild
Luis Gustavo Dantas y Eduardo Zimelewicz, Amazon Web Services
Resumen
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.
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
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
. Para obtener más información, consulte los tipos de IBM Data Server Client y Data Server Driver . 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).
Un repositorio de control de código fuente, como GitHub o GitLab.
Limitaciones
Para conocer AWS CodeBuild las cuotas, consulte Cuotas para AWS CodeBuild.
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
. Para los puntos de conexión específicos, consulte la página Service endpoints and quotas y elija el enlace del servicio.
Arquitectura
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

En el siguiente diagrama se ilustra lo siguiente:
El usuario carga su código en un repositorio de control de código fuente, como GitHub o GitLab.
AWS CodePipeline nota el cambio y obtiene el código del repositorio.
CodePipeline inicia AWS CodeBuild y envía el código.
CodeBuild sigue las instrucciones de la
buildspec.ymlplantilla (que se proporcionan en la sección de información adicional) para:Obtener IBM Data Server Client de un bucket de Amazon Simple Storage Service (Amazon S3).
Instalar y configurar IBM Data Server Client.
Recupere las credenciales de Db2 de AWS Secrets Manager.
Conexión al servidor Db2.
Precompilar, compilar y vincular el programa COBOL.
Guarde los productos terminados en un depósito de S3 AWS CodeDeploy para su uso.
CodePipeline comienza CodeDeploy.
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 y AWS CDK.
Tools (Herramientas)
Servicios de AWS
AWS CodeBuild 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 CodeDeployautomatiza las implementaciones en instancias, AWS Lambda funciones EC2 o servicios de Amazon Elastic Container Service (Amazon ECS) o en instancias locales.
AWS CodePipeline 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 Modernizationproporciona 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.R1Para obtener más información sobre la imagen de ECR disponible, consulte el tutorial de la Guía del usuario de AWS Mainframe Modernization .
El software IBM Data Server Client
es esencial para precompilar y vincular los programas COBOL Db2. CodeBuild Actúa como puente entre el compilador COBOL y Db2.
Prácticas recomendadas
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
| 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.
Para ver más maneras de crear un bucket de S3, consulte la documentación de Amazon S3. | AWS general |
Cargue IBM Data Server Client en el bucket de S3. |
| 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:
Para más información sobre la creación de secretos, consulte la documentación de Secrets Manager. | 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.
| Administrador de red, AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree el activo COBOL Db2. |
| Desarrollador de aplicaciones |
Creación del archivo |
| AWS DevOps |
Conecta tu repositorio a CodePipeline. |
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 |
| 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:
Para obtener más información sobre la creación de políticas de IAM, consulte la documentación de IAM. | 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 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. | 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 CodePipelinelugar 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:
| AWS DevOps |
| 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:
| 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.
La versión debe coincidir con el ID de CodeBuild compilación, que se muestra
|
Resolución de problemas
| 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
|
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
Documentación de IBM
AWS documentación
Información adicional
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