Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen Sie COBOL Db2-Programme mit AWS Mainframe Modernization und AWS CodeBuild
Erstellt von Luis Gustavo Dantas () und Eduardo Zimelewicz () AWS AWS
Übersicht
Dieses Muster erklärt, wie ein einfaches AWS CodeBuild Projekt zum Vorkompilieren und Binden von Db2-Programmen mithilfe der Replatform-Tools erstellt wird. COBOL AWS Mainframe Modernization Dies ermöglicht die Bereitstellung und Ausführung dieser Programme in der AWS Mainframe Modernization Replatform-Laufzeitumgebung.
COBOL, eine geschäftsorientierte Programmiersprache, unterstützt aufgrund ihrer Zuverlässigkeit und Lesbarkeit viele kritische Anwendungen. IBM Db2, ein relationales Datenbankmanagementsystem, verwaltet große Datenmengen effizient und lässt sich so in COBOL Programme integrieren. SQL Zusammen bilden Db2 COBOL und Db2 trotz des Aufkommens neuerer Technologien das Rückgrat geschäftskritischer Abläufe in Branchen wie dem Finanzwesen und der Regierung.
Die Migration COBOL von Db2-Komponenten aus der Mainframe-Umgebung auf andere Plattformen führt zu Herausforderungen wie Plattformkompatibilität, Integrationskomplexität, Datenmigration und Leistungsoptimierung. Die Migration dieser kritischen Komponenten erfordert sorgfältige Planung, technisches Fachwissen und Ressourcen, um eine reibungslose Migration zu gewährleisten und gleichzeitig Zuverlässigkeit und Funktionalität zu gewährleisten.
Der AWS Mainframe Modernization Service bietet Tools und Ressourcen zur Neuplattformierung von Mainframe-Anwendungen und Datenbanken, sodass sie auf AWS Infrastrukturen wie Amazon Elastic Compute Cloud (AmazonEC2) -Instances ausgeführt werden können. Dies beinhaltet die Verlagerung von Mainframe-Workloads in die Cloud ohne größere Codeänderungen.
Der Db2-Vorkompilierungs- und Bindungsprozess ist für die Optimierung der Leistung und Zuverlässigkeit von Datenbankanwendungen unerlässlich. Durch die Vorkompilierung werden eingebettete SQL Anweisungen in ausführbaren Code umgewandelt, wodurch der Laufzeitaufwand reduziert und die Effizienz gesteigert wird. Der Bind-Prozess verknüpft den vorkompilierten Code mit Datenbankstrukturen und erleichtert so die Zugriffspfade und die Abfrageoptimierung. Dieser Prozess gewährleistet die Datenintegrität, verbessert die Reaktionsfähigkeit von Anwendungen und schützt vor Sicherheitslücken. Ordnungsgemäß vorkompilierte und gebundene Anwendungen minimieren den Ressourcenverbrauch, verbessern die Skalierbarkeit und verringern das Risiko von SQL Injektionsangriffen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein AWS-Konto Konsolenzugriff auf Administratorebene.
Ein IBM Db2-Datenbanksystem, wie IBM Db2 für z/OS oder Db2 für Linux, Unix und Windows (). LUW
Die IBM Data Server Client-Software, die von der Website heruntergeladen werden kann. IBM
Weitere Informationen finden Sie unter IBMDatenserver-Client- und Datenserver-Treibertypen . Ein COBOL Db2-Programm, das kompiliert und gebunden werden soll. Alternativ bietet dieses Muster ein einfaches Beispielprogramm, das Sie verwenden können.
Eine virtuelle private Cloud (VPC) AWS mit einem privaten Netzwerk. Informationen zum Erstellen einer VPC finden Sie in der Dokumentation zu Amazon Virtual Private Cloud (AmazonVPC).
Ein Quellcodeverwaltungs-Repository wie GitHub oder GitLab.
Einschränkungen
Informationen zu AWS CodeBuild Kontingenten finden Sie unter Kontingente für AWS CodeBuild.
Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie AWS-Services unter Nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie auf der Seite Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
Quelltechnologie-Stack
Der Quellstapel umfasst:
COBOLProgramme, die eine Db2-Datenbank zum Speichern von Daten verwenden
IBMCOBOLCompiler und Db2 für z/OS-Precompiler
Andere Teile des Mainframe-Setups, wie das Dateisystem, der Transaktionsmanager und der Spool
Zieltechnologie-Stack
Der Ansatz dieses Musters funktioniert bei zwei Optionen: beim Verschieben von Daten von Db2 für z/OS nach Db2 for oder beim Verbleiben auf Db2 for LUW z/OS. Die Zielarchitektur umfasst:
COBOLProgramme, die eine Db2-Datenbank zum Speichern von Daten verwenden
AWS Mainframe Modernization Kompilierungstools auf eine neue Plattform
AWS CodeBuild als Infrastruktur für die Erstellung der Anwendung
Andere AWS Cloud Ressourcen wie Amazon Linux
Zielarchitektur

Das Diagramm veranschaulicht folgende Vorgänge:
Der Benutzer lädt seinen Code in ein Quellcodeverwaltungs-Repository wie GitHub oder hoch. GitLab
AWS CodePipeline bemerkt die Änderung und ruft den Code aus dem Repository ab.
CodePipeline startet AWS CodeBuild und sendet den Code.
CodeBuild folgt den Anweisungen in der
buildspec.yml
Vorlage (im Abschnitt Zusätzliche Informationen), um:Holen Sie sich den IBM Data Server Client aus einem Amazon Simple Storage Service (Amazon S3) -Bucket.
Installieren und richten Sie den IBM Data Server Client ein.
Rufen Sie die Db2-Anmeldeinformationen von ab AWS Secrets Manager.
Connect zum Db2-Server her.
Das Programm vorkompilieren, kompilieren und binden. COBOL
Speichern Sie die fertigen Produkte zur AWS CodeDeploy Verwendung in einem S3-Bucket.
CodePipeline beginnt CodeDeploy.
CodeDeploy koordiniert seine Agenten, die bereits in den Laufzeitumgebungen installiert sind. Die Agenten rufen die Anwendung von Amazon S3 ab und installieren sie gemäß den Anweisungen in
appspec.yml
.
Um die Dinge einfach zu halten und sich auf den Build zu konzentrieren, decken die Anweisungen in diesem Muster die Schritte 1 bis 4 ab, beinhalten jedoch nicht die Bereitstellung des COBOL Db2-Programms.
Automatisierung und Skalierung
Der Einfachheit halber beschreibt dieses Muster, wie Ressourcen manuell bereitgestellt werden. Es stehen jedoch zahlreiche Automatisierungsoptionen zur Verfügung, wie, und HashiCorp Terraform AWS CloudFormation AWS Cloud Development Kit (AWS CDK), mit denen diese Aufgaben automatisiert werden können. Weitere Informationen finden Sie in der Dokumentation AWS CloudFormationund AWS CDK.
Tools
AWS-Services
AWS CodeBuildist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
AWS CodeDeployautomatisiert Bereitstellungen für Amazon EC2 - oder lokale Instances, AWS Lambda Funktionen oder Amazon Elastic Container Service (AmazonECS) -Services.
AWS CodePipelinehilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
AWS Mainframe Modernizationstellt Tools und Ressourcen bereit, die Sie bei der Planung und Implementierung der Migration und Modernisierung von Mainframes zu AWS verwalteten Runtime-Umgebungen unterstützen.
Andere Tools
ECRAmazon-Image für AWS Mainframe Modernization Replatform-Tools. Um eine COBOL Anwendung zu kompilieren, müssen Sie sie CodeBuild mithilfe eines Amazon Elastic Container Registry (AmazonECR) -Images initiieren, das die AWS Mainframe Modernization Replatform-Tools enthält:
673918848628.dkr.ecr.<your-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1
Weitere Informationen zu dem verfügbaren ECR Image finden Sie im Tutorial im AWS Mainframe Modernization Benutzerhandbuch.
IBMDie Data Server Client-Software
ist für die Vorkompilierung und Einbindung von COBOL Db2-Programmen unerlässlich. CodeBuild Sie fungiert als Brücke zwischen dem COBOL Compiler und Db2.
Bewährte Methoden
Nicht jedes COBOL Programm stützt sich auf Db2 als Datenpersistenzschicht. Stellen Sie sicher, dass Kompilierungsanweisungen für den Zugriff auf Db2 nur auf COBOL Programme angewendet werden, die speziell für die Interaktion mit Db2 entwickelt wurden. Implementieren Sie eine Logik, um zwischen COBOL Db2-Programmen und COBOL Programmen zu unterscheiden, die Db2 nicht verwenden.
Es wird empfohlen, das Kompilieren von Programmen zu vermeiden, die nicht geändert wurden. Implementieren Sie einen Prozess, um zu ermitteln, welche Programme kompiliert werden müssen.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen S3-Bucket, um den IBM Data Server Client und die Pipeline-Artefakte zu hosten. | Sie müssen einen S3-Bucket einrichten, um (a) den IBM Data Server Client hochzuladen, (b) Ihren Code aus dem Repository zu speichern und (c) die Ergebnisse des Build-Prozesses zu speichern.
Informationen zum Erstellen eines S3-Buckets finden Sie in der Amazon S3 S3-Dokumentation. | Allgemein AWS |
Laden Sie den IBM Data Server Client in den S3-Bucket hoch. |
| Allgemein AWS |
Erstellen Sie ein AWS Secrets Manager Geheimnis für Ihre Db2-Anmeldeinformationen. | Um ein Geheimnis zu erstellen, um Ihre DB2 Anmeldeinformationen sicher zu speichern:
Weitere Informationen zum Erstellen von Geheimnissen finden Sie in der Secrets Manager Manager-Dokumentation. | Allgemein AWS |
Stellen Sie sicher, dass auf Db2 vom VPC Subnetz aus zugegriffen werden kann. | AWS CodeBuild benötigt eine Verbindung zum Db2-Server, damit der Data Server Client Vorkompilierungs- und Bindungsvorgänge durchführen kann. Stellen Sie sicher, dass der Db2-Server über eine sichere Verbindung erreicht werden CodeBuild kann.
| Netzwerkadministrator, Allgemein AWS |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie das COBOL Db2-Asset. |
| App-Developer |
Erstellen Sie die Datei |
| AWS DevOps |
Connect dein Repository mit CodePipeline. |
Sie benötigen den Amazon-Ressourcennamen (ARN) für die Verbindung, wenn Sie CodePipeline in einem späteren Schritt die Richtlinie AWS Identity and Access Management (IAM) für erstellen. | AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine IAM Richtlinie für CodeBuild. | Das CodeBuild Projekt benötigt Zugriff auf einige Ressourcen, darunter Secrets Manager und Amazon S3. So richten Sie die erforderlichen Berechtigungen ein:
Weitere Informationen zum Erstellen von IAM Richtlinien finden Sie in der IAMDokumentation. | Allgemein AWS |
Erstellen Sie eine IAM Rolle für CodeBuild. | Um die Sicherheitsrichtlinien für verfügbar zu machen CodeBuild, müssen Sie eine IAM Rolle konfigurieren. Um diese Rolle zu erstellen: 1. Wählen Sie auf der IAMKonsole 3. Behalten Sie für den Entitätstyp Vertrauenswürdig die AWS-ServiceStandardeinstellung bei. 4. Wählen Sie unter Anwendungsfall den CodeBuild Dienst aus und klicken Sie dann auf Weiter. 4. Suchen Sie in der Liste der verfügbaren IAM Richtlinien nach der Richtlinie, für die Sie sie erstellt haben CodeBuild, und klicken Sie dann auf Weiter, um sie der Rolle hinzuzufügen. 5. Geben Sie einen Namen für die Rolle an und wählen Sie Rolle erstellen aus, um sie zur future in zu speichern CodeBuild. Weitere Informationen zum Erstellen einer IAM Rolle für eine AWS-Service finden Sie in der IAMDokumentation. | Allgemeines AWS |
Erstellen Sie eine IAM Richtlinie für CodePipeline. | Die AWS CodePipeline Pipeline benötigt Zugriff auf einige Ressourcen, einschließlich Ihres Code-Repositorys und Amazon S3. Wiederholen Sie die zuvor angegebenen Schritte CodeBuild , um eine IAM Richtlinie für zu erstellen CodePipeline (wählen Sie in Schritt 2 CodePipelinestatt CodeBuild). | AWS DevOps |
Erstellen Sie eine IAM Rolle für CodePipeline. | Um die Sicherheitsrichtlinien für verfügbar zu machen CodePipeline, müssen Sie eine IAM Rolle konfigurieren. Um diese Rolle zu erstellen:
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine CodePipeline Pipeline und ein CodeBuild Projekt. | So erstellen Sie eine CodePipeline Pipeline und das CodeBuild Projekt, das das COBOL Db2-Programm kompiliert und bindet:
| AWS DevOps |
Überprüfen Sie die Ausgabe. | Überprüfen Sie den Erfolg des Builds, indem Sie die CodePipeline Build-Logs überprüfen. | AWS DevOps |
Überprüfen Sie die Ergebnisse in Db2. | Überprüfen Sie die Paketversion in der SYSPLAN Tabelle.
Die Version muss mit der CodeBuild Build-ID übereinstimmen, die
|
Fehlerbehebung
Problem | Lösung |
---|---|
Gelegentlich wechselt die AWS Konsole zwischen Regionen, wenn Sie zwischen Diensten wechseln. | Stellen Sie sicher, dass Sie bei AWS-Region jedem Wechsel zwischen Diensten die Auswahl überprüfen. Der AWS-Region Selektor befindet sich in der oberen rechten Ecke des Konsolenfensters. |
Es kann schwierig sein, Db2-Konnektivitätsprobleme anhand von zu identifizieren. CodeBuild | Um Verbindungsprobleme zu beheben, fügen Sie der
|
Gelegentlich wird im Rollenbereich in der IAM Konsole die von Ihnen erstellte IAM Richtlinie nicht sofort angezeigt. | Wenn Sie auf eine Verzögerung stoßen, aktualisieren Sie den Bildschirm, um die neuesten Informationen anzuzeigen. |
Zugehörige Ressourcen
IBM-Dokumentation
AWS Dokumentation
Zusätzliche Informationen
CodeBuild Richtlinie
Ersetzen Sie die Platzhalter <RegionID>
<AccountID>
,, <SubnetARN>
<BucketARN>
, und <DB2CredSecretARN>
durch Ihre Werte.
{"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 Richtlinie
Ersetzen Sie die Platzhalter <BucketARN>
und <ConnectionARN>
durch Ihre Werte.
{
"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
Ersetzen Sie den <your-bucket-name>
Platzhalter durch Ihren tatsächlichen S3-Bucket-Namen.
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