

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Membangun program COBOL Db2 dengan menggunakan dan AWS Mainframe Modernization AWS CodeBuild
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild"></a>

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

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

**catatan**  
AWS Mainframe Modernization Layanan (Managed Runtime Environment experience) tidak lagi terbuka untuk pelanggan baru. Untuk kemampuan yang mirip dengan AWS Mainframe Modernization Service (Managed Runtime Environment experience) jelajahi AWS Mainframe Modernization Service (Self-Managed Experience). Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk informasi selengkapnya, lihat [perubahan AWS Mainframe Modernization ketersediaan](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

Pola ini menjelaskan cara membuat AWS CodeBuild proyek sederhana untuk mengkompilasi dan mengikat program COBOL Db2 dengan menggunakan alat Replatform. AWS Mainframe Modernization Ini memungkinkan penerapan dan eksekusi program-program ini di lingkungan runtime AWS Mainframe Modernization Replatform.

COBOL, bahasa pemrograman berorientasi bisnis, mendukung banyak aplikasi penting karena keandalan dan keterbacaannya. IBM Db2, sistem manajemen database relasional, mengelola volume data yang besar secara efisien dan terintegrasi dengan program COBOL melalui SQL. Bersama-sama, COBOL dan Db2 membentuk tulang punggung operasi misi kritis di industri seperti keuangan dan pemerintah, meskipun munculnya teknologi yang lebih baru.

Migrasi komponen COBOL dan Db2 dari lingkungan mainframe ke platform lain mengarah pada tantangan seperti kompatibilitas platform, kompleksitas integrasi, migrasi data, dan pengoptimalan kinerja. Memindahkan komponen penting ini membutuhkan perencanaan yang cermat, keahlian teknis, dan sumber daya untuk memastikan migrasi yang lancar sambil mempertahankan keandalan dan fungsionalitas.

 AWS Mainframe Modernization Layanan ini menyediakan alat dan sumber daya untuk memplatform ulang aplikasi mainframe dan database untuk berjalan pada AWS infrastruktur, seperti instans Amazon Elastic Compute Cloud (Amazon). EC2 Ini melibatkan pemindahan beban kerja mainframe ke cloud tanpa perubahan kode besar.

Proses precompile dan bind Db2 sangat penting untuk mengoptimalkan kinerja dan keandalan aplikasi database. Prakompilasi mengubah pernyataan SQL yang disematkan menjadi kode yang dapat dieksekusi, yang mengurangi overhead runtime dan meningkatkan efisiensi. Proses mengikat menghubungkan kode yang telah dikompilasi sebelumnya dengan struktur database, memfasilitasi jalur akses dan optimasi kueri. Proses ini memastikan integritas data, meningkatkan daya tanggap aplikasi, dan menjaga terhadap kerentanan keamanan. Aplikasi yang dikompilasi dan terikat dengan benar meminimalkan konsumsi sumber daya, meningkatkan skalabilitas, dan mengurangi risiko serangan injeksi SQL.

## Prasyarat dan batasan
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-prereqs"></a>

**Prasyarat**
+ Akses konsol tingkat administratif Akun AWS dan administratif.
+ Sistem database IBM Db2, seperti IBM Db2 untuk z/OS atau Db2 untuk Linux, Unix, dan Windows (LUW).
+ Perangkat lunak IBM Data Server Client, yang tersedia untuk diunduh dari situs web [IBM](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers). Untuk informasi selengkapnya, lihat [tipe IBM Data Server Client dan Data Server Driver](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients).
+ Program COBOL Db2 yang akan dikompilasi dan diikat. Atau, pola ini menyediakan program sampel dasar yang dapat Anda gunakan.
+ Virtual Private Cloud (VPC) aktif AWS dengan jaringan pribadi. Untuk informasi tentang membuat VPC, lihat dokumentasi [Amazon Virtual Private Cloud (Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)).
+ Sebuah repositori kontrol sumber seperti GitHub atau. GitLab

**Keterbatasan**
+ Untuk AWS CodeBuild kuota, lihat [Kuota](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html) untuk. AWS CodeBuild
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [Layanan AWS berdasarkan Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat halaman [titik akhir dan kuota Layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

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

**Tumpukan teknologi sumber**

Tumpukan sumber meliputi:
+ Program COBOL yang menggunakan database Db2 untuk menyimpan data
+ Kompiler IBM COBOL dan Db2 untuk precompiler z/OS 
+ Bagian lain dari pengaturan mainframe, seperti sistem file, manajer transaksi, dan spool

**Tumpukan teknologi target**

Pendekatan pola ini berfungsi untuk dua opsi: memindahkan data dari Db2 ke Db2 z/OS untuk LUW, atau tetap menggunakan Db2 untuk z/OS. Arsitektur target meliputi:
+ Program COBOL yang menggunakan database Db2 untuk menyimpan data
+ AWS Mainframe Modernization Alat kompilasi replatform
+ AWS CodeBuild sebagai infrastruktur untuk membangun aplikasi
+  AWS Cloud Sumber daya lain seperti Amazon Linux

**Arsitektur target**

![\[Arsitektur untuk membangun program COBOL Db2 di AWS.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/5895fa34-f05b-4cc3-a59f-a596f9116c66/images/0dda414a-21a7-41d1-b86b-7ff3b1c6fbda.png)


Diagram ini menggambarkan hal sebagai berikut:

1. Pengguna mengunggah kode mereka ke repositori kontrol sumber seperti atau. GitHub GitLab

1. AWS CodePipeline memperhatikan perubahan dan mendapatkan kode dari repositori.

1. CodePipeline Memulai AWS CodeBuild dan mengirimkan kode

1. CodeBuild mengikuti instruksi dalam `buildspec.yml` template (disediakan di bagian [Informasi tambahan](#build-cobol-db2-programs-mainframe-modernization-codebuild-additional)) untuk:

   1. Dapatkan Klien Server Data IBM dari bucket Amazon Simple Storage Service (Amazon S3).

   1. Instal dan atur IBM Data Server Client.

   1. Ambil kredensi Db2 dari. AWS Secrets Manager

   1. Hubungi server Db2.

   1. Prakompilasi, kompilasi, dan ikat program COBOL.

   1. Simpan produk jadi dalam ember S3 AWS CodeDeploy untuk digunakan.

1. CodePipeline dimulai CodeDeploy.

1. CodeDeploy mengkoordinasikan agennya, yang sudah diinstal di lingkungan runtime. Agen mengambil aplikasi dari Amazon S3 dan menginstalnya berdasarkan instruksi di. `appspec.yml`

Untuk menjaga hal-hal sederhana dan fokus pada build, instruksi dalam pola ini mencakup langkah 1 hingga 4 tetapi tidak termasuk penerapan program COBOL Db2.

**Otomatisasi dan skala**

Untuk mempermudah, pola ini menjelaskan cara menyediakan sumber daya secara manual. Namun, ada banyak opsi otomatisasi yang tersedia, seperti,, dan HashiCorp Terraform CloudFormation AWS Cloud Development Kit (AWS CDK), yang mengotomatiskan tugas-tugas ini. Untuk informasi lebih lanjut, lihat [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)dan [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)dokumentasi.

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

**Layanan AWS**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)adalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)mengotomatiskan penerapan ke Amazon EC2 atau instans, fungsi AWS Lambda , atau layanan Amazon Elastic Container Service (Amazon ECS) lokal.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)membantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.
+ [AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)menyediakan alat dan sumber daya untuk membantu Anda merencanakan dan mengimplementasikan migrasi dan modernisasi dari mainframe ke lingkungan runtime AWS terkelola.

**Alat lainnya**
+ **Gambar Amazon ECR untuk alat AWS Mainframe Modernization Replatform**. Untuk mengkompilasi aplikasi COBOL, Anda harus memulai CodeBuild dengan menggunakan image Amazon Elastic Container Registry (Amazon ECR) Registry ECR) yang berisi alat Replatform: AWS Mainframe Modernization 

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

  Untuk informasi lebih lanjut tentang gambar ECR yang tersedia, lihat [tutorial](https://docs.aws.amazon.com/m2/latest/userguide/tutorial-build-mf.html) di *Panduan AWS Mainframe Modernization Pengguna*.
+ Perangkat lunak [IBM Data Server Client](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients) sangat penting untuk pra-kompilasi dan pengikatan program COBOL Db2 di. CodeBuild Ini bertindak sebagai jembatan antara kompiler COBOL dan Db2.

## Praktik terbaik
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-best-practices"></a>
+ Tidak setiap program COBOL bergantung pada Db2 sebagai lapisan persistensi datanya. Pastikan bahwa arahan kompilasi untuk mengakses Db2 diterapkan hanya untuk program COBOL yang dirancang khusus untuk berinteraksi dengan Db2. Menerapkan logika untuk membedakan antara program COBOL Db2 dan program COBOL yang tidak menggunakan Db2.
+ Kami menyarankan Anda menghindari kompilasi program yang belum dimodifikasi. Menerapkan proses untuk mengidentifikasi program mana yang memerlukan kompilasi.

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

### Buat infrastruktur cloud
<a name="create-the-cloud-infrastructure"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat bucket S3 untuk meng-host IBM Data Server Client dan artefak pipeline. | Anda perlu menyiapkan bucket S3 untuk (a) mengunggah Klien Server Data IBM, (b) menyimpan kode Anda dari repositori, dan (c) menyimpan hasil proses pembuatan.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Untuk cara membuat bucket S3, lihat dokumentasi [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). | AWS Umum | 
| Unggah Klien Server Data IBM ke bucket S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS Umum | 
| Buat AWS Secrets Manager rahasia untuk kredensi Db2 Anda. | Untuk membuat rahasia untuk menyimpan DB2 kredensil Anda dengan aman:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Untuk informasi selengkapnya tentang membuat rahasia, lihat [dokumentasi Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). | AWS Umum | 
| Verifikasi bahwa Db2 dapat diakses dari subnet VPC. | AWS CodeBuild membutuhkan koneksi ke server Db2 sehingga Klien Server Data dapat melakukan operasi prakompilasi dan mengikat. Pastikan itu CodeBuild dapat mencapai server Db2 melalui koneksi yang aman.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | Administrator jaringan, AWS Umum | 

### Buat artefak aplikasi
<a name="create-the-application-artifacts"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat aset COBOL Db2. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | Pengembang aplikasi | 
| Buat file `buildspec.yml`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| Connect repositori Anda ke. CodePipeline | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Anda akan memerlukan Nama Sumber Daya Amazon (ARN) untuk koneksi saat Anda membuat kebijakan AWS Identity and Access Management (IAM) untuk langkah CodePipeline selanjutnya. | AWS DevOps | 

### Mengatur Konfigurasi Izin
<a name="configure-permissions"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat kebijakan IAM untuk CodeBuild. |  CodeBuild Proyek ini memerlukan akses ke beberapa sumber daya, termasuk Secrets Manager dan Amazon S3.Untuk mengatur izin yang diperlukan:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html)Untuk informasi selengkapnya tentang membuat kebijakan IAM, lihat dokumentasi [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html). | AWS Umum | 
| Buat peran IAM untuk CodeBuild. | Agar kebijakan keamanan tersedia CodeBuild, Anda perlu mengonfigurasi peran IAM.Untuk membuat peran ini:1. Di [konsol IAM](https://console.aws.amazon.com/iam), di panel navigasi, pilih **Peran, **Buat** Peran**.3. Untuk **jenis entitas Tepercaya**, pertahankan **Layanan AWS**pengaturan default.4. Untuk **kasus penggunaan**, pilih CodeBuild layanan, dan kemudian pilih **Berikutnya**.4. Dalam daftar kebijakan IAM yang tersedia, cari kebijakan yang Anda buat CodeBuild, lalu pilih **Berikutnya** untuk melampirkannya ke peran.5. Tentukan nama untuk peran, dan pilih **Buat peran** untuk menyimpannya untuk referensi di masa mendatang CodeBuild.Untuk informasi selengkapnya tentang membuat peran IAM untuk sebuah Layanan AWS, lihat dokumentasi [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). | AWS Umum | 
| Buat kebijakan IAM untuk CodePipeline. |  AWS CodePipeline Pipeline memerlukan akses ke beberapa sumber daya, termasuk repositori kode Anda dan Amazon S3.Ulangi langkah-langkah yang diberikan sebelumnya CodeBuild untuk membuat kebijakan IAM CodePipeline (pada langkah 2, pilih **CodePipeline**sebagai ganti **CodeBuild**). | AWS DevOps | 
| Buat peran IAM untuk CodePipeline. | Agar kebijakan keamanan tersedia CodePipeline, Anda perlu mengonfigurasi peran IAM.Untuk membuat peran ini:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 

### Kompilasi dan ikat program COBOL Db2
<a name="compile-and-bind-the-cobol-db2-program"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat CodePipeline pipeline dan CodeBuild proyek. | Untuk membuat CodePipeline pipeline dan CodeBuild proyek yang mengkompilasi dan mengikat program COBOL Db2:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-cobol-db2-programs-mainframe-modernization-codebuild.html) | AWS DevOps | 
| Tinjau output. | Verifikasi keberhasilan build dengan meninjau log CodePipeline build. | AWS DevOps | 
| Periksa hasil di Db2. | Verifikasi versi paket pada tabel 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>Versi harus cocok dengan ID CodeBuild build, yang ada `CDB2SMP` dalam contoh kita:<pre>NAME       VALIDATE LAST_BIND_TIME             LASTUSED   PKGVERSION<br />---------- -------- -------------------------- ---------- ----------<br />CDB2SMP    B        2024-05-18-11.53.11.503738 01/01/0001 19</pre> |  | 

## Pemecahan masalah
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Terkadang, AWS konsol beralih Wilayah saat Anda berpindah antar layanan. | Pastikan untuk memverifikasi yang dipilih Wilayah AWS setiap kali Anda beralih antar layanan. Wilayah AWS Pemilih berada di sudut kanan atas jendela konsol. | 
| Mungkin sulit untuk mengidentifikasi masalah konektivitas Db2 dari. CodeBuild | Untuk memecahkan masalah konektivitas, tambahkan perintah DB2 connect berikut ke file. `buildspec.yml` Penambahan ini membantu Anda men-debug dan menyelesaikan masalah konektivitas.<pre>db2 connect to $DB_NAME user $DB2USER using $DB2PASS</pre> | 
| Terkadang, panel peran di konsol IAM tidak langsung menampilkan kebijakan IAM yang Anda buat. | Jika Anda mengalami penundaan, segarkan layar untuk menampilkan informasi terbaru. | 

## Sumber daya terkait
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-resources"></a>

**Dokumentasi IBM**
+ [IBM Data Server Client dan tipe driver](https://www.ibm.com/docs/en/db2/11.5?topic=overviews-data-server-clients)
+ [Unduh IBM Data Server Client dan jenis driver](https://www.ibm.com/support/pages/download-initial-version-115-clients-and-drivers)

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

## Informasi tambahan
<a name="build-cobol-db2-programs-mainframe-modernization-codebuild-additional"></a>

**CodeBuild kebijakan**

Ganti placeholder`<RegionID>`,,`<AccountID>`, `<SubnetARN>``<BucketARN>`, dan `<DB2CredSecretARN>` dengan nilai-nilai Anda.

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

Ganti placeholder `<BucketARN>` dan `<ConnectionARN>` dengan nilai-nilai Anda.

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

Ganti `<your-bucket-name>` placeholder dengan nama bucket S3 Anda yang sebenarnya.

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