

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

# 使用 Transfer Family 将大型机文件直接移动到 Amazon S3
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family"></a>

*Luis Gustavo Dantas，Amazon Web Services*

## Summary
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-summary"></a>

作为现代化之旅的一部分，您可能会面临在本地服务器和 Amazon Web Services (AWS) 云之间传输文件的挑战。从大型机传输数据可能是一项重大挑战，因为大型机通常无法访问 Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Block Store (Amazon EBS) 或 Amazon Elastic File System (Amazon EFS) 等现代数据存储。

许多客户使用中间暂存资源（如本地 Linux、Unix 或 Windows 服务器）将文件传输到 AWS Cloud。您可以通过使用 AWS Transfer Family 和 Secure Shell (SSH) 文件传输协议 (SFTP) 将大型机文件直接上传到 Amazon S3 来避免这种间接方法。

## 先决条件和限制
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-prereqs"></a>

**先决条件**
+ 一个活跃的 AWS 账户
+ 具有可由您的旧平台访问的子网的虚拟私有云（VPC）
+ 您 VPC 的 Transfer Family 端点
+ 大型机虚拟存储访问方法 (VSAM) 文件转换为[连续的固定长度文件](https://www.ibm.com/docs/en/zos/2.1.0?topic=reports-converting-vb-fb)（IBM 文档）

**限制**
+ SFTP 默认以二进制模式传输文件，这意味着文件上传到 Amazon S3 时会保留 EBCDIC 编码。如果您的文件不包含二进制或打包数据，那么您可以使用 **sftp**[ ascii 子命令](https://www.ibm.com/docs/en/zos/2.3.0?topic=version-what-zos-openssh-supports)（IBM 文档）在传输过程中将文件转换为文本。
+ 您必须[解压包含打包和二进制内容的大型机文件](https://apg-library.amazonaws.com/content/f5907bfe-7dff-4cd0-8523-57015ad48c4b) (AWS Prescriptive Guidance)，才能在目标环境中使用这些文件。
+ Amazon S3 对象的大小范围从最小 0 字节到最大 5 TB。有关 Amazon S3 功能的更多信息，请参阅[亚马逊 S3 FAQs](https://aws.amazon.com/s3/faqs/?nc1=h_ls)。

## 架构
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-architecture"></a>

**源技术堆栈**
+ 作业控制语言 (JCL)
+ z/OS Unix shell 和 ISPF
+ SFTP
+ VSAM 和平面文件

**目标技术堆栈**
+ Transfer Family
+ Amazon S3
+ Amazon Virtual Private Cloud(Amazon VPC)

**目标架构**

下图显示了将 Transfer Family 与 SFTP 结合使用以将大型机文件直接上传到 S3 存储桶的参考架构。

![\[结合使用 Transfer Family 与 SFTP，将大型机文件直接上传至 S3 存储桶\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/1f4fa1fd-b681-41bc-81d8-d556426b14c2/images/110491d5-b58d-4451-8de9-e742756bb192.png)


下图显示了如下工作流：

1. 您可以使用 JCL 作业通过 Direct Connect 将大型机文件从旧版大型机传输到 Amazon Web Services Cloud。

1. Direct Connect 使您的网络流量能够保留在 AWS 全球网络上，并绕过公共互联网。Direct Connect 还提高了网络速度，从 50 Mbps 开始，扩展到 100 Gbps。

1. VPC 端点无需使用公共互联网即可在您的 VPC 资源和支持的服务之间建立连接。对 Transfer Family 和 Amazon S3 的访问通过位于两个私有子网和可用区中的弹性网络接口实现高可用性。

1. Transfer Family 对用户进行身份验证，并使用 SFTP 从旧环境接收文件并将其移动到 S3 存储桶。

**自动化和扩缩**

Transfer Family 服务到位后，您可以使用 JCL 作业作为 SFTP 客户端，将无限数量的文件从大型机传输到 Amazon S3。当您准备好传输大型机文件时，还可以使用大型机批处理作业计划程序运行 SFTP 作业，从而自动执行文件传输。

## 工具
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 可帮助您将 AWS 资源启动到您定义的虚拟网络中。此虚拟网络类似于您在自己的数据中心内运行的传统网络，具有使用 AWS 可扩展基础设施的优势。
+ [AWS Transfer Fam](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) ily 使您能够使用 SFTP、FTPS 和 FTP 协议安全地将定期 business-to-business文件传输扩展到亚马逊 S3 和亚马逊 EFS。

## 操作说明
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-epics"></a>

### 创建 S3 存储桶和访问策略
<a name="create-the-s3-bucket-and-the-access-policy"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 S3 存储桶。 | [创建一个 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)来托管您从旧环境传输的文件。 | 常规 AWS | 
| 创建 IAM 角色和策略。 | Transfer Family 使用您的 AWS Identity and Access Management (IAM) 角色授予对您之前创建的 S3 存储桶的访问权限。[创建 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)，包含以下 [IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)：<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "UserFolderListing",<br />            "Action": [<br />                "s3:ListBucket",<br />                "s3:GetBucketLocation"<br />            ],<br />            "Effect": "Allow",<br />            "Resource": [<br />                "arn:aws:s3:::<your-bucket-name>"<br />            ]<br />        },<br />        {<br />            "Sid": "HomeDirObjectAccess",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",<br />                "s3:GetObjectAcl",<br />                "s3:GetObject",<br />                "s3:DeleteObjectVersion",<br />                "s3:DeleteObject",<br />                "s3:PutObjectAcl",<br />                "s3:GetObjectVersion"<br />            ],<br />            "Resource": "arn:aws:s3:::<your-bucket-name>/*"<br />        }<br />    ]<br />}</pre>您必须在创建 IAM 角色时选择“传输使用案例”。 | 常规 AWS | 

### 定义传输服务
<a name="define-the-transfer-service"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 SFTP 服务器。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)有关如何设置 SFTP 服务器的更多信息，请参阅[创建启用了 SFTP 的服务器](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-sftp.html)（AWS Transfer Family 用户指南）。 | 常规 AWS | 
| 获取服务器地址。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | 常规 AWS | 
| 创建 SFTP 客户端密钥对。 | 为[微软 Windows](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#windows-ssh) 或创建 SSH 密钥对[macOS/Linux/UNIX](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#macOS-linux-unix-ssh)。 | 常规 AWS、SSH | 
| 创建 SFTP 用户。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | 常规 AWS | 

### 传输大型机文件
<a name="transfer-the-mainframe-file"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 将 SSH 私钥发送到大型机。 | 使用 SFTP 或 SCP 将 SSH 私钥发送到旧版环境。SFTP 示例：<pre>sftp [USERNAME@mainframeIP]<br />[password]<br />cd [/u/USERNAME]<br />put [your-key-pair-file]</pre>SCP 示例：<pre>scp [your-key-pair-file] [USERNAME@MainframeIP]:/[u/USERNAME]</pre>接下来，将 SSH 密钥存储在 z/OS Unix 文件系统中，该用户名稍后将运行文件传输批处理作业（例如，`/u/CONTROLM`）。 有关 z/OS Unix 外壳的更多信息，请参见外[ z/OS 壳简介](https://www.ibm.com/docs/en/zos/2.2.0?topic=shells-introduction-zos)（IBM 文档）。 | 大型机、 z/OS Unix 外壳、FTP、SCP | 
| 创建 JCL SFTP 客户端。 | 由于大型机没有本机 SFTP 客户端，因此必须使用 BPXBATCH 实用程序从 Unix 外壳中运行 SFTP 客户端。 z/OS 在 ISPF 编辑器中，创建 JCL SFTP 客户端。例如：<pre>//JOBNAM JOB ...<br />//**********************************************************************<br />//SFTP EXEC PGM=BPXBATCH,REGION=0M <br />//STDPARM DD * <br />SH cp "//'MAINFRAME.FILE.NAME'" filename.txt; <br />echo 'put filename.txt' > uplcmd; <br />sftp -b uplcmd -i ssh_private_key_file ssh_username@<transfer service ip or DNS>; <br />//SYSPRINT DD SYSOUT=* <br />//STDOUT DD SYSOUT=* <br />//STDENV DD * <br />//STDERR DD SYSOUT=*</pre>有关如何在 z/OS Unix 外壳中运行命令的更多信息，请参阅 [BPXBATCH 实用程序](https://www.ibm.com/docs/en/zos/2.2.0?topic=ispf-bpxbatch-utility)（IBM 文档）。有关如何在 z/OS 中创建或编辑 JCL 作业的更多信息，请参阅[什么是 ISPF？](https://www.ibm.com/docs/en/zos-basic-skills?topic=interfaces-what-is-ispf)和 [ISPF 编辑器](https://www.ibm.com/docs/en/zos-basic-skills?topic=ispf-editor)（IBM 文档）。 | JCL、大型机、Unix 外壳 z/OS  | 
| 运行 JCL SFTP 客户端。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html)有关如何检查批处理作业活动的更多信息，请参阅 [z/OS SDSF 用户指南](https://www.ibm.com/docs/en/zos/2.4.0?topic=sdsf-zos-users-guide)（IBM 文档）。 | 大型机、JCL、ISPF | 
| 验证文件传输。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/move-mainframe-files-directly-to-amazon-s3-using-transfer-family.html) | 常规 AWS | 
| 自动执行 JCL SFTP 客户端。 | 使用作业调度程序自动触发 JCL SFTP 客户端。您可以使用大型机作业调度程序（例如 [BMC Control-M](https://www.bmcsoftware.pt/it-solutions/control-m.html) 或 [CA Workload Automation](https://www.broadcom.com/products/mainframe/workload-automation/ca7)），根据时间和其他批处理作业依赖性自动执行文件传输的批处理作业。 | 作业调度程序 | 

## 相关资源
<a name="move-mainframe-files-directly-to-amazon-s3-using-transfer-family-resources"></a>
+ [AWS Transfer Family 的工作原理](https://docs.aws.amazon.com/transfer/latest/userguide/how-aws-transfer-works.html)