教程:为 BankDemo 示例应用程序设置 Micro Focus 版本 - AWS 大型机现代化

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:为 BankDemo 示例应用程序设置 Micro Focus 版本

AWS 大型机现代化使您能够为迁移的应用程序设置构建和持续集成/持续交付 (CI/CD) 管道。这些版本和管道使用 AWS CodeBuild AWS CodeCommit、和 AWS CodePipeline 来提供这些功能。 CodeBuild 是一项完全托管的生成服务,它可以编译源代码、运行单元测试并生成可随时部署的工件。 CodeCommit 是一项版本控制服务,使您能够在云端私下存储和管理 Git 存储库。 AWS CodePipeline 是一项持续交付服务,可让您对发布软件所需的步骤进行建模、可视化和自动化。

本教程演示 AWS CodeBuild 如何使用从 Amazon S3 编译 BankDemo 示例应用程序源代码,然后将编译后的代码导出回 Amazon S3。

AWS CodeBuild 是一项完全托管的持续集成服务,用于编译源代码、运行测试和生成随时可以部署的软件包。使用 CodeBuild,您可以使用预先打包的构建环境,也可以使用自己的构建工具创建自定义构建环境。此演示场景使用后者,它由一个使用预打包的 Docker 镜像的 CodeBuild 构建环境组成。

重要

在启动大型机现代化项目之前,我们建议您了解适用于大型机的AWS 迁移加速计划 (MAP),或者联系 AWS 大型机专家,了解实现大型机应用程序现代化所需的步骤。

先决条件

开始本教程之前,请满足以下先决条件:

  • 下载BankDemo 示例应用程序并将其解压缩到一个文件夹。源文件夹包含 COBOL 程序、Copybook 以及定义。此外,它还包含一个供参考的 JCL 文件夹,尽管您不需要构建 JCL。该文件夹还包含构建所需的元文件。

  • 在 AWS 大型机现代化控制台中,选择工具。在分析、开发和构建资产中,选择使用我的 AWS 账户共享资产

第 1 步:与 AWS 账户共享构建资产

在此步骤中,您需要确保与您的 AWS 账户共享构建资产,尤其是在使用资产的地区。

  1. 打开 AWS 大型机现代化控制台,网址为 https://console.aws.amazon.com/m2/

  2. 在左侧导航中,选择工具

  3. 分析、开发和生成资产中,选择与我的 AWS 账户共享资产

重要

您需要在要进行构建的每个 AWS 区域执行一次此步骤。

第 2 步:创建 Amazon S3 存储桶

在此步骤中,您将创建两个 Amazon S3 存储桶。一个是用于存放源代码的输入存储桶,另一个是用于存放构建输出的输出存储桶。有关更多信息,请参阅《Amazon S3 用户指南》中的创建、配置和使用 Amazon S3 存储桶

  1. 要创建输入存储桶,登录 Amazon S3 控制台并选择创建存储桶

  2. 常规配置中,提供存储桶的名称并指定要 AWS 区域 在哪里创建存储桶。示例名称是codebuild-regionId-accountId-input-bucket, AWS 区域 其中regionId是存储桶的,accountId是您的 AWS 账户 ID。

    注意

    如果您要在与美国东部(弗吉尼亚北部)不同的 AWS 区域 位置创建存储桶,请指定LocationConstraint参数。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的创建存储桶

  3. 保留所有其他设置并选择创建存储桶

  4. 重复步骤 1 – 3 来创建输出存储桶。例如,名称是codebuild-regionId-accountId-output-bucket, AWS 区域 其中regionId是存储桶的,accountId是您的 AWS 账户 ID。

    无论您为这些存储桶选择的名称如何,请务必在本教程中保持统一。

第 3 步:创建构建规范文件

在此步骤中,创建一个构建规范文件。此文件以 YAML 格式提供构建命令和相关设置, CodeBuild 用于运行构建。有关更多信息,请参阅《AWS CodeBuild 用户指南》 CodeBuild中的构建规范参考

  1. 在您在先决条件中解压缩的目录中创建一个名为 buildspec.yml 的文件。

  2. 将以下内容添加到该文件并保存。无需对该文件进行任何更改。

    version: 0.2 env: exported-variables: - CODEBUILD_BUILD_ID - CODEBUILD_BUILD_ARN phases: install: runtime-versions: python: 3.7 pre_build: commands: - echo Installing source dependencies... - ls -lR $CODEBUILD_SRC_DIR/source build: commands: - echo Build started on `date` - /start-build.sh -Dbasedir=$CODEBUILD_SRC_DIR/source -Dloaddir=$CODEBUILD_SRC_DIR/target post_build: commands: - ls -lR $CODEBUILD_SRC_DIR/target - echo Build completed on `date` artifacts: files: - $CODEBUILD_SRC_DIR/target/**

    这里CODEBUILD_BUILD_IDCODEBUILD_BUILD_ARN$CODEBUILD_SRC_DIR/source、和$CODEBUILD_SRC_DIR/target是里面可用的环境变量 CodeBuild。有关更多信息,请参阅构建环境中的环境变量

    此时,您的目录结构应如下所示。

    (root directory name) |-- build.xml |-- buildspec.yml |-- LICENSE.txt |-- source |... etc.
  3. 将文件夹的内容压缩到名为 BankDemo.zip 的文件中。在本教程中,您无法压缩文件夹。因此,将文件夹的内容压缩到文件 BankDemo.zip 中。

第 4 步:上传源文件

在此步骤中,您将 BankDemo 示例应用程序的源代码上传到您的 Amazon S3 输入存储桶。

  1. 登录到 Amazon S3 控制台,并在左侧导航窗格中,选择存储桶。然后选择您之前创建的输入存储桶。

  2. 对象下,选择上传

  3. 文件和文件夹部分,选择添加文件

  4. 导航到并选择 BankDemo.zip 文件。

  5. 选择上传

步骤 5:创建 IAM 策略

在此步骤中,创建两个 IAM 策略。一项策略授予 AWS 大型机现代化访问和使用包含 Micro Focus 构建工具的 Docker 镜像的权限。此策略不是为客户自定义的。另一项策略授予 AWS 大型机现代化与输入和输出存储桶以及生成的 A mazon CloudWatch 日志进行交互的权限。 CodeBuild

要了解有关创建 IAM 策略的信息,请参阅《IAM 用户指南》中的编辑 IAM 策略

创建允许访问 Docker 映像的策略
  1. 在 IAM 控制台中,将以下策略文档复制并粘贴到策略编辑器中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:*:673918848628:repository/m2-enterprise-build-tools" }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::aws-m2-repo-*-<region>-prod" } ] }
  2. 提供策略名称,例如 m2CodeBuildPolicy

创建允许 AWS 大型机现代化与存储桶和日志交互的策略
  1. 在 IAM 控制台中,将以下策略文档复制并粘贴到策略编辑器中。请务必更新regionId到 AWS 区域,并更新accountId到您的 AWS 账户。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:regionId:accountId:log-group:/aws/codebuild/codebuild-bankdemo-project", "arn:aws:logs:regionId:accountId:log-group:/aws/codebuild/codebuild-bankdemo-project:*" ], "Effect": "Allow" }, { "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:List*" ], "Resource": [ "arn:aws:s3:::codebuild-regionId-accountId-input-bucket", "arn:aws:s3:::codebuild-regionId-accountId-input-bucket/*", "arn:aws:s3:::codebuild-regionId-accountId-output-bucket", "arn:aws:s3:::codebuild-regionId-accountId-output-bucket/*" ], "Effect": "Allow" } ] }
  2. 提供策略名称,例如 BankdemoCodeBuildRolePolicy

步骤 6:创建 IAM 角色

在此步骤中,在 CodeBuild 将之前创建的 IAM 策略与该新 IAM 角色关联后,您将创建一个允许您与 AWS 资源交互的新 IAM 角色。

有关创建服务角色的信息,请参阅 IAM 用户指南中的创建角色以向 AWS 服务委派权限

  1. 登录到 IAM 控制台,然后在左侧导航窗格中,选择角色

  2. 选择 创建角色

  3. 可信实体类型下,选择 AWS 服务

  4. 在 “其他 AWS 服务的使用案例” 下 CodeBuild,选择,然后CodeBuild再次选择。

  5. 选择 Next(下一步)。

  6. 添加权限页面上,选择下一步。您稍后给该角色分配策略。

  7. 角色详细信息下,提供角色的名称,例如 BankdemoCodeBuildServiceRole

  8. 选择可信实体下,验证策略文档是否如下所示:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  9. 选择 创建角色

步骤 7:将 IAM 策略附加到 IAM 角色

在此步骤中,将您之前创建的两个 IAM 策略附加到 BankdemoCodeBuildServiceRole IAM 角色。

  1. 登录到 IAM 控制台,然后在左侧导航窗格中,选择角色

  2. 角色中,选择您之前创建的角色,例如 BankdemoCodeBuildServiceRole

  3. 权限策略中,依次选择添加权限附加策略

  4. 其他权限策略中,选择您之前创建的策略,例如 m2CodeBuildPolicyBankdemoCodeBuildRolePolicy

  5. 选择附加策略

第 8 步:创建 CodeBuild 项目

在此步骤中,您将创建 CodeBuild 项目。

  1. 登录 CodeBuild 控制台并选择 “创建构建项目”。

  2. 项目配置部分中,提供项目的名称,例如 codebuild-bankdemo-project

  3. 部分中,对于源提供商,选择 Amazon S3,然后选择您之前创建的输入存储桶,例如codebuild-regionId-accountId-input-bucket

  4. S3 对象密钥或 S3 文件夹字段中,输入您上传到 S3 存储桶的 zip 文件的名称。在本例中,此文件名为 bankdemo.zip

  5. 环境部分中,选择自定义映像

  6. 环境类型字段中,选择 Linux

  7. 映像注册表中,选择其他注册表

  8. 在 “外部注册表 URL” 字段中,

    • 对于 Micro Focus v9:输入673918848628.dkr.ecr.us-west-1.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1。如果您在 Micro Focus v9 <m2-region>中使用其他 AWS AWS 区域 673918848628.dkr.ecr.<m2-region>.amazonaws.com/m2-enterprise-build-tools:9.0.7.R1,则还可以指定,其中是提供 AWS 大型机现代化服务的区域(例如,eu-west-3)。

    • 对于 Micro Focus v8:输入 673918848628.dkr.ecr.us-west-2.amazonaws.com/m2-enterprise-build-tools:8.0.9.R1

    • 对于 Micro Focus v7:输入 673918848628.dkr.ecr.us-west-2.amazonaws.com/m2-enterprise-build-tools:7.0.R10

  9. 服务角色下,选择现有服务角色,然后在角色 ARN 字段中,选择您之前创建的服务角色,例如 BankdemoCodeBuildServiceRole

  10. 构建规范部分中,选择使用构建规范文件

  11. 构件部分的类型下,选择 Amazon S3,然后选择您的输出存储桶,例如 codebuild-regionId-accountId-output-bucket

  12. 名称字段中,输入存储桶中要包含构建输出构件的文件夹的名称,例如 bankdemo-output.zip

  13. 构件打包下,选择 Zip

  14. 选择 Create build project(创建构建项目)

第 9 步:开始构建

在此步骤中,启动构建。

  1. 登录 CodeBuild 控制台。

  2. 在左侧导航窗格中,选择构建项目

  3. 选择您之前创建的构建项目,例如 codebuild-bankdemo-project

  4. 选择启动构建

此命令开始构建。构建以异步方式运行。此命令的输出是一个包含属性 ID 的 JSON。此属性 id是对您刚刚启动的版本的构 CodeBuild 建 ID 的引用。你可以在 CodeBuild 控制台中查看版本的状态。您还可以在控制台中查看有关构建执行的详细日志。有关更多信息,请参阅《AWS CodeBuild 用户指南》中的查看详细构建信息

当前阶段完成后,即表示您的构建已成功完成,并且编译的构件已在 Amazon S3 上准备就绪。

步骤 10:下载输出工件

在此步骤中,从 Amazon S3 下载输出构件。Micro Focus 构建工具可以创建几种不同的可执行文件类型。在本教程中,它将生成共享对象。

  1. 登录 Amazon S3 控制台。

  2. Buckets role= "bold" > 部分,选择输出存储桶的名称,例如。codebuild-regionId-accountId-output-bucket

  3. 选择 “下载角色” = “bold” >。

  4. 解压下载的文件。导航到目标文件夹以查看构建构件。其中包括 .so Linux 共享对象。

清理资源

如果您不再需要为本教程创建的资源,请将其删除,以免产生额外费用。为此,请完成以下步骤:

  • 删除您为本教程创建的 S3 存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的删除存储桶

  • 删除您为本教程创建的 IAM 策略。有关更多信息,请参阅《IAM 用户指南》 中的删除 IAM 策略

  • 删除您为本教程创建的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件

  • 删除您为本教程创建的 CodeBuild 项目。有关更多信息,请参阅《AWS CodeBuild 用户指南》 CodeBuild中的删除构建项目