亚马逊AWS官方博客

DTH 跨境数据同步最佳实践

背景

随着全球化进程的不断推进,中国企业”走出去”拓展国际市场已经成为一种大趋势。这不仅有助于企业开拓新的市场和客户群体,还能促进企业自身的创新发展和提升竞争力。在中国公司向全球范围内扩展业务的过程中,数据的跨境流动是一个极为重要的环节。

AWS 数据传输解决方案(Data Transfer Hub)正是针对客户的这一真实业务场景而推出的创新服务。DTH 为 Amazon S3 对象和 Amazon ECR 镜像提供了安全、可扩展和可跟踪的数据传输能力。传统的数据跨境传输方式通常是通过公网网络进行,但是公网网络的稳定性和安全性都难以得到有效保证。公网带宽、延迟等指标无法持续满足高效数据传输的需求,同时也存在数据在传输过程中被窃取、篡改的风险,无法满足数据安全合规要求。因此,对于需要高效、安全、合规的数据跨境传输需求,客户大都选择使用合规的专有线路连接国内外区域。专有线路可以为客户提供独立稳定的网络通道,确保网络质量和数据安全。

本篇内容根据客户的真实场景,总结介绍 DTH 如何使用专有线路结合 S3 interface endpoints,优化了 DTH 在跨境数据同步时的成本和效率。

解决方案

架构图

架构解释:

  1. 北京 region 部署 DTH 解决方案
  2. DTH worker 使用 S3 Gateway Endpoint 实现从 VPC 内访问 S3(cn-north-1)
  3. 北京 region 和俄勒冈 region 间使用专线进行连接,实现内网互通
  4. 使用 S3 Interface Endpoint 实现 VPC 内和北京 region 环境访问 S3(us-west-2)
  5. 使用 Route 53 Private Zone 实现 EC2 实例使用 us-west-2 的 s3-interface-endpoint

构建测试场景并测试

一. 基础环境准备

  1. DTH 解决方案部署详见 AWS 数据传输解决方案
  2. S3 Gateway Endpoint 部署详见官方文档
  3. 在 us-west-2 区域创建 S3 测试存储桶 dthtest
  4. 在 cn-north-1 区域 VPC 中创建 EC2 server 进行测试
  5. 本实验环境 cn-north-1 和 us-west-2 间已使用专线打通,线路连接设置费本篇讨论范畴,大家也可以使用海外两个区域间进行测试

二. 使用 S3 Interface Endpoint 实现 VPC 内和北京 region 环境访问 S3(us-west-2)

进入 VPC 控制台,在左侧找到 Endpoints 终端节点,点击创建。在创建 Endpoint 界面,选择服务类别 AWS Service,在搜索框中输入 S3 过滤显示结果,然后选择 S3 的 Interface 类型;选择对应的 VPC 安全组,策略选择完全访问。如下图:

注意:创建时需要正确进行 DNS 设置,如下图

仅适用于入站端点的私有 DNS

此选项仅适用于网关和接口端点均支持的服务。这样可以优化联网成本,因为源自 VPC 的服务流量通过不收取费用的网关端点路由,而来自本地的流量则通过接口端点路由。

S3-Interface-Endpoint 更多细节详见官方文档: https://docs.aws.amazon.com/zh_cn/vpc/latest/privatelink/create-interface-endpoint.html

. 使用 Route 53 Private Zone 设置 EC2 实例使用 us-west-2 的 s3-interface-endpoint

1. 创建 Hosted Zone,域名位置输入 us-west-2 区域 S3 的默认域名:s3.us-west2.amazonaws.com,类型选择私有拖管区

2. 关联的 VPC 位置,选择 EC2 所在的区域和 VPC

3. 创建成功后,在 s3.us-west-2.amazonaws.com zone 中创建 CNAME 记录:(*.s3.us-west-2.amazonaws.com CNAME vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com) 如下图

. 集成测试

登录 BJS EC2 实例进行测试。

1. 测试 us-west-2 s3 DNS 解析

可以正常解析到 vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com

[root@* ec2-user]# nslookup vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com 
Server:        172.31.0.2
Address:    172.31.0.2#53

Non-authoritative answer:
Name:    vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com
Address: 10.10.2.42
Name:    vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com
Address: 10.10.1.109

[root@* ec2-user]# nslookup dthtest.s3.us-west-2.amazonaws.com
Server:        172.31.0.2
Address:    172.31.0.2#53

Non-authoritative answer:
dthtest.s3.us-west-2.amazonaws.com    canonical name = vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com.
Name:    vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com
Address: 10.10.2.42
Name:    vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com
Address: 10.10.1.109

2. 使用 AWSCLI 访问 us-west-2 s3 进行测试

awscli 命令指定 Endpoint,显式声明新的 S3 Endpoint 进行测试(此方法会对客户端代码进行了侵入,可根据自有情况进行选择,本测试只是为了方便大家理解):

[root@* tmp]# aws s3 cp /tmp/test.yaml s3://dthtest --endpoint-url https://bucket.vpce-014448eb2dc087430-ige0ic2x.s3.us-west-2.vpce.amazonaws.com
upload: ../../tmp/test.yaml to s3://dthtest/test.yaml    

3. 使用默认的方式访问 us-west-2 s3 进行文件上传测试

[root@* tmp]# aws s3 cp /tmp/test.yaml s3://dthtest --region us-west-2
upload: ./test.yaml to s3://dthtest/test.yaml   

至此环境已设置完成,DTH 已使用专有线路通过 s3-interface-endpoint 进行数据上传。

小结

使用专有线路在网络流量成本上更有优势,按照官方费用统计,北京 region 出公网费用为 ¥0.93/G,出 DX 专线的费用为 ¥0.28/G,加上 S3 interface 的流量处理费约 ¥0.07/G,客户数据通过专线到同步数据海外 S3,流量整体费用比使用公网费用更低。本方案充分利用了 AWS 的产品组合优势,通过 Direct Connect 专线 + Route 53 Private Zone + S3 Interface Endpoint 的创新组合,为客户提供了安全性、成本和效率均有保证的数据跨境同步解决方案,极大满足了企业”走出去”过程中对数据流动的需求。

费用对比
传输方式 数据量 流量总费用
公网传输 1TB ¥952
本方案传输 1TB ¥358

参考资料

https://www.amazonaws.cn/solutions/data-transfer-hub

https://awslabs.github.io/data-transfer-hub/en

https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#accessing-bucket-and-aps-from-interface-endpoints

https://aws.amazon.com/cn/blogs/storage/introducing-private-dns-support-for-amazon-s3-with-aws-privatelink

本篇作者

梁战雷

亚马逊云科技解决方案架构师,具有超过 13 年的运维工作经验,在微服务,容器,devops 等云原生领域有丰富的项目落地实施经验,现在主要负责汽车行业客户的上云推广,出海规划及支持工作。