亚马逊AWS官方博客

AWS DataSync 实现海内外 S3 存储间的数据传输

前言

AWS DataSync 是一项在线数据移动和发现服务,可简化数据迁移,并帮助您在 AWS 存储服务以及其他存储之间快速、轻松、安全地传输文件或对象数据。

在 AWS DataSync 服务的位置类型中,可以选择以对象存储的方式添加一个在 AWS 中国区的 S3 桶,如此一来,AWS 中国区 S3 与 AWS 全球区 S3 的数据传输及同步难题得以解决,下面,我们就来验证这一功能。

拓扑

AWS China Region 我们选择宁夏,S3 桶名为 wjltransfer,位置类型直接选择“对象存储”。

AWS Global Region 我们选择新加坡,S3 桶名为 wjlsin,位置类型直接选择为 Amazon S3。

位置类型为“对象存储”时,需要设置 DataSync 代理配合使用,所以在新加坡区域我们还需要配置一个 DataSync 代理,所以拓扑图如下所示:

安装配置 DataSync 代理

DataSync 代理是 AWS DataSync 用于存储发现和数据传输的虚拟机(VM)设备。例如,您需要 DataSync 代理将文件从本地存储系统传输到 AWS。

我们可以在以下虚拟机管理 DataSync 程序上运行代理:

  • VMware ESXi Hypervisor(版本 5、6.7 或 7.0
  • 微软 Hyper-V Hypervisor(2012 R2、2016 或 2019 年版本)
  • 基于 Linux 内核的虚拟机(KVM)
  • Amazon EC2

这里我们选择 Amazon EC2 为 DataSync 代理,按照如下步骤进行:

一、使用以下 CLI 命令获取指定的最新 DataSync Amazon 系统映像(AMI)

aws ssm get-parameter --name /aws/service/datasync/ami --region ap-southeast-1

您将会类似得到如下输出:

{
    "Parameter": {
        "Name": "/aws/service/datasync/ami",
        "Type": "String",
        "Value": "ami-08944143691e1ef5c",
        "Version": 91,
        "LastModifiedDate": "2024-xx-xxT00:11:34.151000+08:00",
        "ARN": "arn:aws:ssm:ap-southeast-1::parameter/aws/service/datasync/ami",
        "DataType": "text"
    }
}

二、获取到 AMI 之后,我们可以用如下步骤安装代理

1、URL 启动 AMI 安装代理,其中 AMI ID 按照上述步骤中的数值填写:

https://console.aws.amazon.com/ec2/v2/home?region=ap-southeast-1#LaunchInstanceWizard:ami=ami-08944143691e1ef5c

接下来就是启动实例的具体配置了。

2、需要选择一种建议的实例类型。有关建议的实例类型,请参阅 DataSync 代理的 Amazon EC2 实例要求。这里我们主要是验证功能,选择 m6i.large 即可。

3、在 Configure Instance Details(配置实例详细信息)页面中,执行以下操作:

  • 对于 Networks,请选择您的源 Amazon EFS 或 NFS 文件系统所在的虚拟私有云(VPC)。这里我们是在 S3 之间复制,通过公网,所以不需要太多配置。
  • 对于 Auto-assign Public IP(自动分配公有 IP),选择一个值。要使您的实例可从公共 Internet 中进行访问,请将自动分配公有 IP 设置为启用。否则,请将自动分配公有 IP 设置为禁用。如果未分配公有 IP 地址,请使用其私有 IP 地址在您的 VPC 中激活代理。
  • 如果您要从云端文件系统传输文件时,为了提高性能,我们建议您选择 NFS 服务器所在的置放群组值。

4、存储部分。代理不需要额外的存储空间,默认即可。

5、配置安全组部分,需要执行以下操作:

  • 确保所选安全组允许从您计划用于激活代理的 Web 浏览器到 HTTP 端口 80 的入站访问。
  • 确保源文件系统的安全组允许来自该代理。此外,请确保代理允许流向源文件系统的出站流量。如果您使用 VPC 终端节点部署代理,则需要允许其他端口。有关更多信息,请参阅 DataSync 代理如何使用 VPC 终端节点
  • 有关 DataSync 的一组完整的网络要求,请参阅 AWS DataSync 网络要求

6、然后选择启动实例以启动您的实例。请记得使用您有权访问的密钥对。将显示一个确认页面,指出您的实例正在启动。

7、返回 Amazon EC2 实例屏幕。当您启动实例时,其初始状态为 pending(待处理)。实例启动后,其状态将更改为 running(正在运行)。此时,已为其分配了公共域名系统(DNS)名称和 IP 地址,您可以在 “描述” 选项卡中找到。

  • 如果您将自动分配公有 IP 设置为启用,则选择您的实例,然后在描述选项卡中记下公有 IP 地址。您之后将使用该 IP 地址连接到您的同步代理。
  • 如果您将自动分配公有 IP 设置为禁用,则启动或使用 VPC 中的现有实例以激活代理。在这种情况下,您可以使用同步代理的私有 IP 地址从 VPC 中的该实例激活代理。

三、为 AWS DataSync 代理选择服务终端节点

这里我们选择使用公共终端节点,按照以下步骤进行配置:

  • 服务端点部分中,AWS 区域名称中选择公共服务端点。有关支持的 AWS 区域列表,请参阅 AWS DataSync 中的 AWS 一般参考

四、激活代理

部署 AWS DataSync 代理并指定其服务终端节点后,您可以激活代理以将其与您的 AWS 账户。

注意:一次只能激活一个 AWS 账户 AWS 区域代理。

在上面的步骤中,继续使用 DataSync 控制台激活您的代理。
在同一创建代理页面上,转到激活密钥部分。
请选择以下选项之一来激活您的代理:

  • 自动从代理获取激活密钥-此选项要求您的浏览器使用端口 80 访问代理。激活后,代理会关闭端口。
    • 对于代理地址,输入代理的 IP 地址或域名,然后选择获取密钥。
    • 您的浏览器连接到此 IP 地址,并从代理中获取唯一的激活密钥。如果激活失败,请检查您的网络配置。
  • 手动输入代理的激活密钥-如果您不想在浏览器和代理之间建立连接,请使用此选项。
    • 从代理的本地控制台获取密钥。
    • 回到 DataSync 控制台,在激活密钥字段中输入密钥。

这里我们选择自动获取,如下图所示,输入刚才创建的 EC2 的 IP,然后点击获取密钥:

注意:如果未使用,代理激活密钥将在 30 分钟后过期。

接下来按照如下步骤进行:

  • (可选)对于 Agent name(代理名称),输入代理的名称。
  • (可选)对于 “标签”,在 “密钥” 和 “值” 字段中输入值以标记您的代理。标签可帮助您管理、筛选和搜索 AWS 资源。
  • 选择 Create agent(创建代理)。
  • 在代理页面上,验证您的服务终端节点是否正确。

注意:此时,您可能会注意到您的代理处于离线状态。激活代理后,不久之后就会脱机

至此已创建完代理,该代理可以由 AWS 完全管理。

创建数据传输位置

此次数据传输测试中,我们需要创建两个位置作为数据传输,所有操作均在新加坡 region 进行。

创建新加坡区域 S3 桶的位置

  • 位置类型选择“Amazon S3”,存储桶选择预先建立好的存储桶,存储类类型根据实际选择即可,文件夹根据实际选择,IAM 角色需要对此桶下的文件夹有访问权限,也可以自动生成
  • 然后点击创建位置即可

创建宁夏区域 S3 桶的位置

由于我们是在 AWS Global 区域配置的 DataSync,Global 区域的 console 并不能发现/操作 China Region 的 S3 桶,所以我们需要按照如下步骤进行操作:

  • 位置类型选择“对象存储”,代理选择刚才创建好的代理,服务器输入 cn-northwest-1.amazonaws.com.cn(宁夏区域 S3 端点),存储桶选择预先建立好的存储桶,文件夹根据实际选择
  • 然后点击创建位置即可

创建数据传输任务

接下来我们就要创建数据传输任务,这里我们选择从新加坡区域的 S3 桶向宁夏区域 S3 同传输数据。

  • 首先我们在新加坡区域的 S3 桶对应文件夹内准备好原始文件
  • 检查宁夏区域 S3 桶的目标文件夹状态
  • 在配置源位置页面,我们选择刚才创建的新加坡区域 S3 桶对应的位置,然后点击下一步
  • 在配置目标位置页面,我们选择刚才创建的宁夏区域 S3 桶对应的位置,然后点击下一步
  • 点击下一步后会进入审核页面,点击创建任务即可

运行数据传输任务

我们点击刚才建立的任务,点击开始,因为我们是初次同步,所以选择“从原定设置开始”,如下图所示:

点击后,任务就开始运行,如下图所示:

然后我们点击左侧的菜单中“历史记录”,可以看到刚才启动的任务,状态会由“正在运行”变为“成功”,如下图所示:

此时我们再次检查宁夏区域的 S3 目标位置,发现文件已经成功传输完毕:

结语

至此,我们已经完成了 AWS China Region S3 和 AWS Global Region S3 之间数据传输,传输方向是从 AWS Global Region S3 到 AWS China Region S3,反之亦然,我们只需要在上述步骤中的“创建数据传输任务”的部分,将源位置和目标位置对调即可。可以看到,我们只需要简单几步配置,即可解决数据传输难题,极大的减少了配置和维护的工作量。

当然 AWS DataSync 支持的存储位置还包括 NFS、SMB、HDFS 等 on-premises 存储系统,支持 Amazon EFS、Amazon FSx 等 AWS 存储服务,支持 Google Cloud Storage、Microsoft Azure Blob Storage、Microsoft Azure Files、Wasabi Cloud Storage、DigitalOcean Spaces、Oracle Cloud Infrastructure Object Storage、Cloudflare R2 Storage、Backblaze B2 Cloud Storage、NAVER Cloud Object Storage、Alibaba Cloud Object Storage Service、IBM Cloud Object Storage、Seagate Lyve Cloud 等多种云存储服务,使您可以轻松跨平台管理您的数据。

而且 AWS DataSync 提供端到端安全性,包括加密和完整性验证,以帮助确保您的数据安全、完好无损地到达并随时可用。AWS DataSync 通过内置 AWS 安全机制(例如 AWS Identity and Access Management (IAM) 角色)访问您的 AWS 存储。它还支持虚拟私有云(VPC)终端节点,使您可以选择在不穿越公共互联网的情况下传输数据,并进一步提高了在线复制的数据的安全性。

在性能方面,AWS DataSync 使用专门构建的网络协议和 parallel 多线程架构来加快传输速度。这种方法可以加快迁移、用于分析和机器学习的重复数据处理工作流程以及数据保护流程。

AWS DataSync 采用每千兆字节的固定定价,经济高效地移动数据。DataSync 避免编写和维护自定义脚本或使用昂贵的商业传输工具。

AWS DataSync 使通过网络在存储系统和服务之间移动数据变得更加容易。DataSync 自动管理数据传输过程和高性能和安全数据传输所需的基础架构。希望通过此文章,能够帮助大家能在日常数据运维过程中保证数据安全的同时,节省精力,提高效率。

本篇作者

王京来

亚马逊云科技解决方案架构师,目前专注于存储、数据库相关的解决方案。在加入 AWS 之前,曾就职于惠普、EMC 等科技公司,从事企业级用户 IT 基础架构相关工作,拥有二十余年技术服务经验。