

AWS 大型机现代化服务（托管运行时环境体验）不再向新客户开放。有关类似于 AWS 大型机现代化服务（托管运行时环境体验）的功能，请浏览 AWS 大型机现代化服务（自我管理体验）。现有客户可以继续正常使用该服务。有关更多信息，请参阅[AWS 大型机现代化可用性变更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

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

# 部署 BAC
<a name="bac-deployment"></a>

BAC 可用作单个安全 Web 应用程序，使用 Web 归档格式（.war）。它打算与适用于大型机的 AWS Transform Gapwalk-应用程序一起部署在 Apache Tomcat 应用程序服务器中，但也可以作为独立应用程序部署。如果存在 Gapwalk-Application 配置，BAC 将继承对Blusam存储的访问权限。

BAC 具有自己的专用配置文件，名为 `application-bac.yml`。有关配置详细信息，请参阅 [BAC 专用配置文件](#ba-shared-bac-configuration-file)。

BAC 受到安全保护。有关安全配置的详细信息，请参阅[为 BAC 配置安全性](#ba-shared-bac-securing)。

## BAC 专用配置文件
<a name="ba-shared-bac-configuration-file"></a>

独立部署：如果 BAC 单独部署 Gapwalk-Application，则必须在 application-bac.yml 配置文件中配置与Blusam存储的连接。

必须在配置文件中设置用于浏览数据集记录的数据集配置的默认值。请参阅[浏览数据集中的记录](bac-usage.md#ba-shared-bac-read-dataset)。记录浏览页面可以使用可选的掩码机制，从而可以显示记录内容的结构化视图。使用掩码时，某些属性会影响记录视图。

以下可配置属性必须在配置文件中设置。BAC 应用程序不为这些属性假设任何默认值。


| Key | Type | 说明 | 
| --- | --- | --- | 
| bac.crud.limit | 整数 | 正整数值，提供浏览记录时返回的最大记录数。使用 0 意味着无限制。建议值：10（然后根据浏览页面上的数据集调整该值，以满足您的需求）。 | 
| bac.crud.encoding | 字符串 | 默认字符集名称，用于将记录字节解码为字母数字内容。提供的字符集名称必须与 java 兼容（有关受支持的字符集，请参阅 java 文档）。建议值：在数据集源自的遗留平台上使用的遗留字符集；大多数情况下，这将是 EBCDIC 变体。 | 
| bac.crud.initCharacter | 字符串 | 用于初始化数据项的默认字符（字节）。可以使用两个特殊值："LOW-VALUE"，0x00 字节（建议值）和 "HI-VALUE"，0xFF 字节。在应用掩码时使用。 | 
| bac.crud.defaultCharacter | 字符串 | 默认字符（字节），作为单字符串，用于填充记录（在右侧）。建议值：" "（空白）。在应用掩码时使用。 | 
| bac.crud.blankCharacter | 字符串 | 默认字符（字节），作为单字符串，用于表示记录中的空白。建议值：" "（空白）。在应用掩码时使用。 | 
| bac.crud.strictZoned | 布尔值 | 一个标志，用于指示记录使用哪种分区模式。如果为 true，则使用严格区域模式；如果为 false，则使用修改后的分区模式。建议值：true。在应用掩码时使用。 | 
| bac.crud.decimalSeparator | 字符串 | 在数值编辑字段中用作小数分隔符的字符（应用掩码时使用）。 | 
| bac.crud.currencySign | 字符串 | 默认字符，作为单字符串，在应用格式设置时用于表示数字编辑字段中的货币（应用掩码时使用）。 | 
| bac.crud.pictureCurrencySign | 字符串 | 默认字符，作为单字符串，用于表示数字编辑字段图片中的货币（应用掩码时使用）。 | 

以下示例是一个配置文件片段。

```
bac.crud.limit: 10
bac.crud.encoding: ascii
bac.crud.initCharacter: "LOW-VALUE"
bac.crud.defaultCharacter: " "
bac.crud.blankCharacter: " "
bac.crud.strictZoned: true
bac.crud.decimalSeparator: "."
bac.crud.currencySign: "$"
bac.crud.pictureCurrencySign: "$"
```

## 为 BAC 配置安全性
<a name="ba-shared-bac-securing"></a>

为 BAC 配置安全性依赖于本文档页面中详述的机制。身份验证方案是 OAuth2，并提供了 Amazon Cognito 或 Keycloak 的配置详细信息。

虽然可以应用一般设置，但这里需要详细说明有关 BAC 的一些细节。对 BAC 特征的访问使用基于角色的策略进行保护，并且依赖于以下角色。
+ ROLE\_USER：
  + 基本用户角色
  + 不支持导入、导出、创建或删除数据集
  + 无法控制缓存策略
  + 不支持使用管理特征
+ ROLE\_ADMIN：
  + 继承 ROLE\_USER 权限
  + 支持所有数据集操作
  + 支持使用管理缓存策略

## 安装掩码
<a name="ba-shared-bac-masks"></a>

在Blusam存储中，出于多功能性和性能考虑，数据集记录存储在数据库的字节数组列中。基于应用的视角，使用字段访问业务记录的结构化视图是 BAC 的一项便捷特征。这依赖于在大型机驱动的现代化的 AWS 转型过程中生成的 SQL 掩码。

要生成的 SQL 掩码，请确保将 AWS 大型机转换重构转换中心配置中的相关选项 (`export.SQL.masks`) 设置为 true：

![突出显示 export.sql.masks 的属性集，显示设置为 true 的布尔类型。](http://docs.aws.amazon.com/zh_cn/m2/latest/userguide/images/ba-bac-bluinsights-generate-masks-option.png)


掩码是现代化构件的一部分，可以从 AWS Transform 下载用于给定项目的大型机重构。掩码是 SQL 脚本，由现代化程序组织，提供了数据集记录的应用视角。

例如，使用 [AWS CardDemo 示例应用程序，您可以在此应用程序](https://github.com/aws-samples/aws-mainframe-modernization-carddemo/tree/main/app/cbl)的现代化结果中下载的项目中找到该程序 CBACT04 c.cbl 的以下 SQL 掩码：

![五个名称以 cbact04c_fd 开头的 SQL 文件，包括 acctfile、discrp、tran_cat_bal_record、tranfile 和 xreffile。](http://docs.aws.amazon.com/zh_cn/m2/latest/userguide/images/ba-bac-sample-masks.png)


每个 SQL 掩码名称都是程序名称和程序中给定数据集的记录结构名称的串联。

例如，查看 [[CBACT04c.cbl](https://github.com/aws-samples/aws-mainframe-modernization-carddemo/blob/main/app/cbl/CBACT04C.cbl) 程序，给定的文件控制条目：

```
    FILE-CONTROL.      
        SELECT TCATBAL-FILE ASSIGN TO TCATBALF   
               ORGANIZATION IS INDEXED
               ACCESS MODE  IS SEQUENTIAL
               RECORD KEY   IS FD-TRAN-CAT-KEY
               FILE STATUS  IS TCATBALF-STATUS.
```

与给定的 FD 记录定义关联

```
       FILE SECTION. 
       FD  TCATBAL-FILE.  
       01  FD-TRAN-CAT-BAL-RECORD.  
           05 FD-TRAN-CAT-KEY.  
              10 FD-TRANCAT-ACCT-ID             PIC 9(11).  
              10 FD-TRANCAT-TYPE-CD             PIC X(02).
              10 FD-TRANCAT-CD                  PIC 9(04).  
           05 FD-FD-TRAN-CAT-DATA               PIC X(33).
```

名为的匹配的 SQL 掩码`cbact04c_fd_tran_cat_bal_record.SQL`是提供程序 CBACT04 c.cbl 对名为 FD 记录的视角的掩码。`FD-TRAN-CAT-BAL-RECORD`

其内容是：

```
-- Generated by AWS Transform for mainframe Velocity
-- Mask : cbact04c_fd_tran_cat_bal_record

INSERT INTO mask (name, length) VALUES ('cbact04c_fd_tran_cat_bal_record', 50);
  INSERT INTO mask_item (name, c_offset, length, skip, type, options, mask_fk) VALUES ('fd_trancat_acct_id', 1, 11, false, 'zoned', 'integerSize=11!fractionalSize=0!signed=false', (SELECT MAX(id) FROM mask));
  INSERT INTO mask_item (name, c_offset, length, skip, type, options, mask_fk) VALUES ('fd_trancat_type_cd', 12, 2, false, 'alphanumeric', 'length=2', (SELECT MAX(id) FROM mask));
  INSERT INTO mask_item (name, c_offset, length, skip, type, options, mask_fk) VALUES ('fd_trancat_cd', 14, 4, false, 'zoned', 'integerSize=4!fractionalSize=0!signed=false', (SELECT MAX(id) FROM mask));
  INSERT INTO mask_item (name, c_offset, length, skip, type, options, mask_fk) VALUES ('fd_fd_tran_cat_data', 18, 33, false, 'alphanumeric', 'length=33', (SELECT MAX(id) FROM mask));
```

口罩使用两个表Blusam存储在存储器中：
+ mask：用于识别掩码。mask 表包含以下列：
  + name：用于存储掩码标识（用作主键，因此必须是唯一的）
  + length：记录掩码的大小（以字节为单位）
+ mask\_item：用于存储掩码详细信息。FD 记录定义中的每个基本字段都将在 mask\_item 表中生成一行，其中包含了有关如何解读给定记录部分的详细信息。mask\_item 表包含以下列：
  + name：记录字段的名称，以基本名称为基础，使用小写并用下划线取代连字符
  + c\_offset：记录子部分基于 1 的偏移量，用于字段内容
  + length：记录子部分的长度（以字节为单位），用于字段内容
  + skip：一个标志，用于在视图表示中指示是否应该跳过给定记录部分
  + type：字段类型（基于其遗留 picture 子句）
  + options：其他类型选项，取决于 type 列
  + mask\_fk：指代要将此项目附加到的掩码标识符

注意以下几点：
+ SQL 掩码代表了程序对数据集记录的视角：几个程序可能对给定的数据集有不同的视角；请仅安装您认为与您的目的相关的掩码。
+ 除 FD 记录以外，SQL 掩码还可以代表程序基于 01 数据结构（来自 WORKING STORAGE 部分）的视角。SQL 掩码根据其性质组织成子文件夹：
  + 基于 FD 记录的掩码将位于名为 `file` 的子文件夹中
  + 基于 01 数据结构的掩码将位于名为 `working` 的子文件夹中 

  虽然 FD 记录定义始终与数据集中的记录内容相匹配，但 01 数据结构可能并不如此，或者可能仅代表数据集记录中的子集。在使用它们之前，请检查代码并了解可能存在的缺点。