在云端构建高级大型机文件查看器 AWS - AWS Prescriptive Guidance

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

在云端构建高级大型机文件查看器 AWS

由 Boopathy GOPALSAMY (AWS) 和 Jeremiah O'Connor () 创作 AWS

摘要

此模式提供了代码示例和步骤,可帮助您构建用于使用AWS无服务器服务浏览和查看大型机固定格式文件的高级工具。该模式提供了如何将大型机输入文件转换为用于浏览和搜索的 Amazon S OpenSearch ervice 文档的示例。文件查看器工具可以帮助您实现以下目标:

  • 保持相同的大型机文件结构和布局以保持AWS目标迁移环境的一致性(例如,在将文件传输给外部方的批处理应用程序中,您可以为文件保持相同的布局)

  • 在大型机迁移过程中加快开发和测试速度

  • 支持迁移后的维护活动

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 虚拟私有云 (VPC),其子网可由您的传统平台访问

  • 注意

    输入文件及其相应的面向业务的通用语言 (COBOL) Copybook (: 有关输入文件和COBOL抄写本示例,请参阅存储库中的gfs-mainframe-solutions。 GitHub 有关COBOL抄写本的更多信息,请参阅网站上的《COBOL适用于 z/OS 的 Enterprise 6.3 编程指南》IBM。)

限制

  • Copybook 解析限制为不超过两个嵌套级别 () OCCURS

架构

源技术堆栈

目标技术堆栈

  • Amazon Athena

  • 亚马逊 OpenSearch 服务

  • Amazon Simple Storage Service(Amazon S3)

  • AWS Lambda

  • AWS Step Functions

目标架构

下图显示了解析大型机输入文件并将其转换为 OpenSearch 服务文档以供浏览和搜索的过程。

解析大型机输入文件并将其转换为服务的过程。 OpenSearch

图表显示了以下工作流:

  1. 管理员用户或应用程序将输入文件推送到一个 S3 存储桶,将COBOL副本推送到另一个 S3 存储桶。

  2. 注意

    包含输入文件的 S3 存储桶调用 Lambda 函数,启动无服务器 Step Functions 工作流。:在此模式中使用 S3 事件触发器和 Lambda 函数来驱动 Step Functions 工作流程是可选的。此模式中的 GitHub 代码示例不包括对这些服务的使用,但您可以根据自己的要求使用这些服务。

  3. Step Functions 工作流协调来自以下 Lambda 函数的所有批处理:

    • s3copybookparser.py 函数解析副本布局并提取字段属性、数据类型和偏移量(输入数据处理的必要条件)。

    • s3toathena.py 函数创建 Athena 表格布局。Athena 解析函数处理的s3toathena.py输入数据,并将数据转换为文件。CSV

    • s3toelasticsearch.py函数从 S3 存储桶中提取结果文件并将该文件推送到 OpenSearch 服务。

  4. 用户访问带有 S OpenSearch ervice 的 OpenSearch 仪表板以各种表和列格式检索数据,然后对索引数据运行查询。

工具

AWS 服务

  • Amazon Athena 是一项交互式查询服务,可帮助您使用标准直接分析亚马逊简单存储服务 (Amazon S3) 中的数据。SQL

  • AWSLambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。在这种模式中,您可以使用 Lambda 实现核心逻辑,例如解析文件、转换数据以及将数据加载到 S OpenSearch ervice 中以进行交互式文件访问。

  • Amazon OpenSearch Service 是一项托管服务,可帮助您在AWS云中部署、运营和扩展 OpenSearch 服务集群。在这种模式中,您可以使用 S OpenSearch ervice 为转换后的文件编制索引,并为用户提供交互式搜索功能。

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • AWSCommand Line Interface (AWSCLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与AWS服务进行交互。

  • AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。

  • AWSSt ep Functions 是一项无服务器编排服务,可帮助您组合 Lambda 函数和其他AWS服务来构建业务关键型应用程序。在这种模式中,您可使用 Step Functions 编排 Lambda 函数。

其他工具

  • GitHub是一项代码托管服务,提供协作工具和版本控制。

  • Python 是高级编程语言。

代码

此模式的代码可在 GitHub gfs-mainframe-patterns存储库中找到。

操作说明

任务描述所需技能

创建 S3 存储桶。

创建 S3 存储桶,用于存储副本、输入文件和输出文件。我们建议您的 S3 存储桶采用以下文件夹结构:

  • copybook/

  • input/

  • output/

  • query/

  • results/

将军 AWS

创建 s3copybookparser 函数。

  1. 创建名为的 Lambda 函数s3copybookparser然后从存储库上传源代码(s3copybookparser.pycopybook.py)。GitHub

  2. 将该IAM策略附加S3ReadOnly到 Lambda 函数。

将军 AWS

创建 s3toathena 函数。

  1. 创建名为的 Lambda 函数,s3toathena然后从存储库上传源代码 (s3toathena.py)。GitHub将 Lambda 超时配置为大于 60 秒。

  2. 要提供对所需资源的访问权限,请附加IAM策略AmazonAthenaFullAccessS3FullAccess Lambda 函数。

将军 AWS

创建 s3toelasticsearch 函数。

  1. 重要

    在您的 Lambda 环境中添加 Python 依赖项。:要使用该s3toelasticsearch函数,必须添加 Python 依赖项,因为 Lambda 函数使用 Python Elasticsearch 客户端依赖项(和)。Elasticsearch==7.9.0 requests_aws4auth

  2. 创建名为的 Lambda 函数,s3toelasticsearch然后从存储库上传源代码 (s3toelasticsearch.py)。GitHub

  3. 将 Python 依赖项以 Lambda 层导入。

  4. 将IAM策略S3ReadOnly和附加AmazonOpenSearchServiceReadOnlyAccess到 Lambda 函数。

将军 AWS

创建 OpenSearch 服务集群。

创建集群

  1. 创建OpenSearch 服务集群。创建集群时,请执行以下操作:

    • 注意

      为集群创建可用于登录OpenSearch 仪表板的主用户和密码。:如果您通过 Amazon Cognito 使用身份验证,则无需执行此步骤。

    • 选择精细访问权限控制。这为您提供了更多控制 OpenSearch 服务中数据访问权限的方法。

  2. 复制该域URL并将其作为环境变量 “HOST” 传递给 Lambda 函数。s3toelasticsearch

向IAM角色授予访问权限

要提供对 Lambda 函数IAM角色 (arn:aws:iam::**:role/service-role/s3toelasticsearch-role-**) 的细粒度访问权限,请执行以下操作:

  1. 以主用户身份登录 OpenSearch 控制面板。

  2. 选择安全选项卡,然后选择角色all_access映射用户后端角色。

  3. 添加 Lambda 函数IAM角色的亚马逊资源名称 (ARN),然后选择保存。有关更多信息,请参阅 OpenSearch 服务文档中的将角色映射到用户

将军 AWS

为编排创建 Step Functions。

  1. 使用标准流程创建 Step Functions 状态机。该定义包含在GitHub 存储库中。

  2. 在JSON脚本中,将 Lambda 函数替换为您ARNs环境ARNs中的 Lambda 函数中的。

将军 AWS
任务描述所需技能

将输入文件和副本上传到 S3 存储桶。

GitHub 存储库示例文件夹下载示例文件,然后将文件上传到您之前创建的 S3 存储桶。

  1. Mockedcopy.cpyacctix.cpy 上传到 <S3_Bucket>/copybook 文件夹。

  2. Modedupdate.txtacctindex.cpy 示例输入文件上传至 <S3_Bucket>/input 夹。

将军 AWS

调用 Step Functions。

  1. 登录AWS管理控制台并打开 Step Functions 控制台

  2. 在导航面板中,选择状态机

  3. 选择您的状态机,然后选择开始执行

  4. 在 “输入” 框中,输入以下复印簿/文件路径作为 S3 存储桶的JSON变量,然后选择开始执行。

{ "s3_copybook_bucket_name": "<BUCKET NAME>", "s3_copybook_bucket_key": "<COPYBOOK PATH>", "s3_source_bucket_name": "<BUCKET NAME", "s3_source_bucket_key": "INPUT FILE PATH" }

例如:

{ "s3_copybook_bucket_name": "fileaidtest", "s3_copybook_bucket_key": "copybook/acctix.cpy", "s3_source_bucket_name": "fileaidtest", "s3_source_bucket_key": "input/acctindex" }
将军 AWS

在 Step Functions 中验证工作流执行。

Step Functions 控制台,在图表检查器中查看工作流执行情况。执行运行状态用颜色编码来表示执行状态。例如,蓝色表示进行中,绿色表示成功,红色表示失败。您也可以查看执行事件历史记录部分的表格,了解有关执行事件的更多详细信息。

有关图形化工作流执行的示例,请参阅此模式的其他信息部分中的 Step Functions 图

将军 AWS

在 Amazon 中验证配送日志 CloudWatch。

  1. 登录 AWS 管理控制台,打开 CloudWatch 控制台

  2. 在导航窗格中,选择日志,然后选择日志组

  3. 在搜索框中,搜索 s3toelasticsearch 函数的日志组。

有关成功传送日志的示例,请参阅此模式的 “其他信息” 部分中的CloudWatch 传送日志。

将军 AWS

在 OpenSearch 仪表板中验证格式化后的文件并执行文件操作。

  1. 登录 AWS 管理控制台。在 “分析” 下,选择 “亚马逊 OpenSearch 服务”。

  2. 在导航窗格中,选择

  3. 在搜索框中,在OpenSearch 仪表板中URL输入您的域名的。

  4. 选择您的控制面板,然后以主用户身份登录

  5. 以表格形式浏览索引数据。

  6. 将输入文件与 OpenSearch 仪表板中格式化的输出文件(索引文档)进行比较。控制面板视图显示为格式化文件添加的列标题。确认未格式化输入文件中的源数据与控制面板视图中的目标数据匹配。

  7. 对索引文件执行诸如搜索(例如,使用字段名称、值或表达式)、筛选和 DQL(仪表板查询语言)操作之类的操作。

将军 AWS

相关资源

参考

教程

其他信息

Step Functions 图

以下示例显示了 Step Functions 图表。该图显示了在此模式中使用的 Lambda 函数的执行运行状态。

Step Functions 图表显示了此模式中使用的 Lambda 函数的执行运行状态。

CloudWatch 传送日志

以下示例显示了 s3toelasticsearch 执行执行的成功传送日志。

2022-08-10T15:53:33.033-05:00

处理文档数量:100

2022-08-10T15:53:33.171-05:00

[INFO] 2022-08-10T20:53:33.171 Z a1b2c3d4-5678-90ab-cdef--: 443/_bulk [状态:200 请求:0.100s] EXAMPLE11111POST https://search-essearch-3h4uqclifeqaj2vg4mphe7ffle.us-east-2.es.amazonaws.com

2022-08-10T15:53:33.172-05:00

批量写入成功:100 个文档