

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 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
```