

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Créez des programmes COBOL DB2 en utilisant et AWS Mainframe Modernization AWS CodeBuild
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild"></a>

*Luis Gustavo Dantas et Eduardo Zimelewicz, Amazon Web Services*

## Résumé
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-summary"></a>

**Note**  
AWS Mainframe Modernization Le service (Managed Runtime Environment Experience) n'est plus ouvert aux nouveaux clients. Pour des fonctionnalités similaires à AWS Mainframe Modernization Service (expérience d'environnement d'exécution géré), explorez AWS Mainframe Modernization Service (expérience autogérée). Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Mainframe Modernization la section Modification de la disponibilité](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Ce modèle explique comment créer un AWS CodeBuild projet simple pour précompiler et lier des programmes COBOL Db2 à l'aide des outils de replateforme. AWS Mainframe Modernization Cela permet le déploiement et l'exécution de ces programmes dans l'environnement d'exécution AWS Mainframe Modernization Replatform.

COBOL, langage de programmation orienté métier, alimente de nombreuses applications critiques en raison de sa fiabilité et de sa lisibilité. IBM Db2, un système de gestion de base de données relationnelle, gère efficacement de grands volumes de données et s'intègre aux programmes COBOL via SQL. Ensemble, COBOL et Db2 constituent l'épine dorsale des opérations critiques dans des secteurs tels que la finance et le gouvernement, malgré l'émergence de nouvelles technologies.

La migration des composants COBOL et DB2 de l'environnement mainframe vers d'autres plateformes pose des défis tels que la compatibilité des plateformes, la complexité de l'intégration, la migration des données et l'optimisation des performances. Le déplacement de ces composants critiques nécessite une planification minutieuse, une expertise technique et des ressources pour garantir une migration fluide tout en préservant la fiabilité et les fonctionnalités.

Le AWS Mainframe Modernization service fournit des outils et des ressources pour reconfigurer les applications et les bases de données du mainframe afin qu'elles s'exécutent sur une AWS infrastructure, telle que les instances Amazon Elastic Compute Cloud EC2 (Amazon). Cela implique de déplacer les charges de travail du mainframe vers le cloud sans modifications majeures du code.

Le processus de précompilation et de liaison Db2 est essentiel pour optimiser les performances et la fiabilité des applications de base de données. La précompilation transforme les instructions SQL intégrées en code exécutable, ce qui réduit la charge d'exécution et améliore l'efficacité. Le processus de liaison lie le code précompilé aux structures de base de données, facilitant ainsi les chemins d'accès et l'optimisation des requêtes. Ce processus garantit l'intégrité des données, améliore la réactivité des applications et protège contre les failles de sécurité. Les applications correctement précompilées et liées minimisent la consommation de ressources, améliorent l'évolutivité et atténuent les risques d'attaques par injection SQL.

## Conditions préalables et limitations
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-prereqs"></a>

**Prérequis**
+ Un accès Compte AWS à la console au niveau administratif.
+ Un système de base de données IBM Db2, tel qu'IBM Db2 pour z/OS ou Db2 pour Linux, Unix et Windows (LUW).
+ Le logiciel client IBM Data Server, disponible en téléchargement sur le [site Web d'IBM](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers). Pour plus d'informations, consultez les [types de client et de pilote de serveur de données IBM](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients) Data Server.
+ Un programme COBOL DB2 à compiler et à lier. Ce modèle fournit également un exemple de programme de base que vous pouvez utiliser.
+ Un cloud privé virtuel (VPC) associé à un AWS réseau privé. Pour plus d'informations sur la création d'un VPC, consultez la documentation [Amazon Virtual Private Cloud (Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)).
+ Un référentiel de contrôle de source tel que GitHub ou GitLab.

**Limites**
+ Pour les AWS CodeBuild quotas, voir [Quotas pour AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html).
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez la page [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien vers le service.

## Architecture
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-architecture"></a>

**Pile technologique source**

La pile source inclut :
+ Programmes COBOL qui utilisent une base de données DB2 pour stocker des données
+ Compilateur IBM COBOL et DB2 pour le précompilateur z/OS 
+ Autres éléments de la configuration du mainframe, tels que le système de fichiers, le gestionnaire de transactions et le spool

**Pile technologique cible**

L'approche de ce modèle fonctionne pour deux options : déplacer les données de Db2 pour z/OS vers Db2 pour LUW, ou rester sur Db2 pour z/OS. L'architecture cible inclut :
+ Programmes COBOL qui utilisent une base de données DB2 pour stocker des données
+ AWS Mainframe Modernization Outils de compilation de replateformes
+ AWS CodeBuild comme infrastructure pour créer l'application
+ Autres AWS Cloud ressources telles qu'Amazon Linux

**Architecture cible**

![\[Architecture pour créer des programmes COBOL Db2 sur AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/5895fa34-f05b-4cc3-a59f-a596f9116c66/images/0dda414a-21a7-41d1-b86b-7ff3b1c6fbda.png)


Le diagramme illustre les éléments suivants :

1. L'utilisateur télécharge son code dans un référentiel de contrôle de source tel que GitHub ou GitLab.

1. AWS CodePipeline remarque le changement et récupère le code depuis le dépôt.

1. CodePipeline démarre AWS CodeBuild et envoie le code.

1. CodeBuild suit les instructions du `buildspec.yml` modèle (fournies dans la section [Informations supplémentaires](#build-cobol-db2-programs-mainframe-modernization-codebuild-additional)) pour :

   1. Obtenez le client IBM Data Server à partir d'un bucket Amazon Simple Storage Service (Amazon S3).

   1. Installez et configurez le client IBM Data Server.

   1. Récupérez les informations d'identification Db2 à partir de. AWS Secrets Manager

   1. Connectez-vous au serveur Db2.

   1. Précompilez, compilez et liez le programme COBOL.

   1. Enregistrez les produits finis dans un compartiment S3 AWS CodeDeploy pour les utiliser.

1. CodePipeline démarre CodeDeploy.

1. CodeDeploy coordonne ses agents, qui sont déjà installés dans les environnements d'exécution. Les agents récupèrent l'application depuis Amazon S3 et l'installent conformément aux instructions fournies dans`appspec.yml`.

Pour simplifier les choses et se concentrer sur le build, les instructions de ce modèle couvrent les étapes 1 à 4 mais n'incluent pas le déploiement du programme COBOL Db2.

**Automatisation et mise à l'échelle**

Pour des raisons de simplicité, ce modèle décrit comment provisionner les ressources manuellement. Cependant, de nombreuses options d'automatisation sont disponibles, telles que CloudFormation, AWS Cloud Development Kit (AWS CDK), et HashiCorp Terraform, qui automatisent ces tâches. Pour plus d'informations, consultez la [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)documentation [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)et.

## Outils
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-tools"></a>

**Services AWS**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)est un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatise les déploiements sur Amazon EC2 ou sur des instances, des AWS Lambda fonctions ou des services Amazon Elastic Container Service (Amazon ECS) sur site.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)vous permet de modéliser et de configurer rapidement les différentes étapes d'une version logicielle et d'automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)fournit des outils et des ressources pour vous aider à planifier et à mettre en œuvre la migration et la modernisation des mainframes vers des environnements d'exécution AWS gérés.

**Autres outils**
+ **Image Amazon ECR pour les outils de AWS Mainframe Modernization replateforme.** Pour compiler une application COBOL, vous devez commencer CodeBuild par utiliser une image Amazon Elastic Container Registry (Amazon ECR) contenant les outils de replateforme : AWS Mainframe Modernization 

  `673918848628.dkr.ecr.<your-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1`

  Pour plus d'informations sur l'image ECR disponible, consultez le [didacticiel](https://docs.aws.amazon.com/m2/latest/userguide/tutorial-build-mf.html) dans le *guide de l'AWS Mainframe Modernization utilisateur*.
+ [Le logiciel client IBM Data Server](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients) est essentiel pour précompiler et lier les programmes COBOL Db2 dans. CodeBuild Il agit comme un pont entre le compilateur COBOL et Db2.

## Bonnes pratiques
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-best-practices"></a>
+ Tous les programmes COBOL ne s'appuient pas sur Db2 comme couche de persistance des données. Assurez-vous que les directives de compilation pour accéder à Db2 sont appliquées uniquement aux programmes COBOL spécifiquement conçus pour interagir avec Db2. Implémentez une logique pour faire la distinction entre les programmes COBOL DB2 et les programmes COBOL qui n'utilisent pas Db2.
+ Nous vous recommandons d'éviter de compiler des programmes qui n'ont pas été modifiés. Implémentez un processus pour identifier les programmes qui nécessitent une compilation.

## Épopées
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-epics"></a>

### Création de l'infrastructure cloud
<a name="create-the-cloud-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3 pour héberger le client IBM Data Server et les artefacts du pipeline. | Vous devez configurer un compartiment S3 pour (a) télécharger le client IBM Data Server, (b) stocker votre code depuis le référentiel et (c) stocker les résultats du processus de génération.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Pour savoir comment créer un compartiment S3, consultez la [documentation Amazon S3.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) | AWS général | 
| Téléchargez le client IBM Data Server dans le compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS général | 
| Créez un AWS Secrets Manager secret pour vos informations d'identification DB2. | Pour créer un secret afin de stocker vos DB2 informations d'identification en toute sécurité :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Pour plus d'informations sur la création de secrets, consultez la [documentation de Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). | AWS général | 
| Vérifiez que Db2 est accessible depuis le sous-réseau VPC. | AWS CodeBuild nécessite une connexion au serveur DB2 afin que le client du serveur de données puisse effectuer des opérations de précompilation et de liaison. Assurez-vous qu'il CodeBuild peut atteindre le serveur DB2 via une connexion sécurisée.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | Administrateur réseau, AWS général | 

### Création des artefacts de l'application
<a name="create-the-application-artifacts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'actif COBOL Db2. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | Développeur d’applications | 
| Créez le fichier `buildspec.yml`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| Connectez votre référentiel à CodePipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Vous aurez besoin de l'Amazon Resource Name (ARN) pour la connexion lorsque vous créerez la politique Gestion des identités et des accès AWS (IAM) pour CodePipeline une étape ultérieure. | AWS DevOps | 

### Configurer les autorisations
<a name="configure-permissions"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une politique IAM pour CodeBuild. | Le CodeBuild projet nécessite l'accès à certaines ressources, notamment Secrets Manager et Amazon S3.Pour configurer les autorisations nécessaires :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Pour plus d'informations sur la création de politiques IAM, consultez la documentation [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html). | AWS général | 
| Créez un rôle IAM pour CodeBuild. | Pour que les politiques de sécurité soient disponibles pour CodeBuild, vous devez configurer un rôle IAM.Pour créer ce rôle, procédez comme suit :1. Sur la [console IAM](https://console.aws.amazon.com/iam), dans le volet de navigation, choisissez **Roles**, **Create Role**.3. Pour le **type d'entité fiable**, conservez le **Service AWS**paramètre par défaut.4. Dans le **champ Cas d'utilisation**, sélectionnez le CodeBuild service, puis cliquez sur **Suivant**.4. Dans la liste des stratégies IAM disponibles, recherchez la stratégie pour laquelle vous avez créé CodeBuild, puis choisissez **Next** pour l'associer au rôle.5. Spécifiez un nom pour le rôle, puis choisissez **Create role** pour l'enregistrer pour référence future dans CodeBuild.Pour plus d'informations sur la création d'un rôle IAM pour un Service AWS, consultez la documentation [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). | AWS général | 
| Créez une politique IAM pour CodePipeline. | Le AWS CodePipeline pipeline nécessite l'accès à certaines ressources, notamment votre référentiel de code et Amazon S3.Répétez les étapes indiquées précédemment pour CodeBuild créer une politique IAM pour CodePipeline (à l'étape 2, choisissez **CodePipeline**au lieu de **CodeBuild**). | AWS DevOps | 
| Créez un rôle IAM pour CodePipeline. | Pour que les politiques de sécurité soient disponibles pour CodePipeline, vous devez configurer un rôle IAM.Pour créer ce rôle, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 

### Compilez et liez le programme COBOL Db2
<a name="compile-and-bind-the-cobol-db2-program"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un CodePipeline pipeline et un CodeBuild projet. | Pour créer un CodePipeline pipeline et le CodeBuild projet qui compile et lie le programme COBOL Db2 :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| Vérifiez la sortie. | Vérifiez le succès de la compilation en consultant les journaux de CodePipeline compilation. | AWS DevOps | 
| Vérifiez les résultats dans DB2. | Vérifiez la version du package dans le tableau 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 version doit correspondre à l'ID de CodeBuild build, qui se trouve `CDB2SMP` dans notre exemple :<pre>NAME       VALIDATE LAST_BIND_TIME             LASTUSED   PKGVERSION<br />---------- -------- -------------------------- ---------- ----------<br />CDB2SMP    B        2024-05-18-11.53.11.503738 01/01/0001 19</pre> |  | 

## Résolution des problèmes
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Parfois, la AWS console change de région lorsque vous passez d'un service à l'autre. | Assurez-vous de vérifier la valeur sélectionnée Région AWS chaque fois que vous passez d'un service à l'autre.Le Région AWS sélecteur se trouve dans le coin supérieur droit de la fenêtre de console. | 
| Il peut être difficile d'identifier les problèmes de connectivité Db2 à partir de CodeBuild. | Pour résoudre les problèmes de connectivité, ajoutez la commande de DB2 connexion suivante au `buildspec.yml` fichier. Cet ajout vous permet de déboguer et de résoudre les problèmes de connectivité.<pre>db2 connect to $DB_NAME user $DB2USER using $DB2PASS</pre> | 
| Parfois, le volet des rôles de la console IAM n'affiche pas immédiatement la politique IAM que vous avez créée. | En cas de retard, actualisez l'écran pour afficher les dernières informations. | 

## Ressources connexes
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-resources"></a>

**Documentation IBM**
+ [Types de clients et de pilotes IBM Data Server](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)
+ [Télécharger les types de clients et de pilotes IBM Data Server](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)

**AWS documentation**
+ [Guide de l'utilisateur d'Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ [AWS CodeBuild Guide de l'utilisateur](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)
+ [AWS Mainframe Modernization Guide de l'utilisateur](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)
+ [AWS Secrets Manager Guide de l'utilisateur](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS CodePipeline Guide de l'utilisateur](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CodeDeploy Guide de l'utilisateur** **](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-codedeploy.html)

## Informations supplémentaires
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-additional"></a>

**CodeBuild stratégie**

Remplacez les espaces réservés `<RegionID>``<AccountID>`,, `<SubnetARN>``<BucketARN>`, et `<DB2CredSecretARN>` par vos valeurs.

```
{"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 stratégie**

Remplacez les espaces réservés `<BucketARN>` `<ConnectionARN>` par vos valeurs.

```
{
    "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`**

Remplacez l'`<your-bucket-name>`espace réservé par le nom réel de votre compartiment 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
```