本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Rclone 将数据从 Microsoft Azure Blob 迁移至 Amazon S3
由 Suhas Basavaraj (AWS)、Aidan Keane () 和 Corey Lane (AWS) 创作 AWS
摘要
此模式描述如何使用克隆
先决条件和限制
先决条件
一个活跃的AWS账户
存储在 Azure Blob 容器服务的数据
架构
源技术堆栈
Azure Blob 存储容器
目标技术堆栈
Amazon S3 存储桶
亚马逊弹性计算云 (亚马逊EC2) Linux 实例
架构

工具
Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
Rclone
是一款受 rsync 启发的开源命令行程序。它用于管理许多云存储平台文件。
最佳实践
将数据从 Azure 迁移至 Amazon S3 时,请注意以下注意事项,以避免不必要的成本或传输速度变慢:
在与 Azure 存储帐户和 Blob 容器相同的地理区域中创建AWS基础架构,例如AWS区域
us-east-1
(弗吉尼亚北部)和 Azure 区域。East US
尽可能避免使用 NAT Gateway,因为它会产生入口和出口带宽的数据传输费用。
使用 A mazon S3 的VPC网关终端节点来提高性能。
考虑使用基于 AWS Graviton2 (ARM) 处理器的实例,以获得比英特尔 x EC2 86 实例更低的成本和更高的性能。Rclone 经过大量交叉编译,并提供了预ARM编译的二进制文件。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
准备目标 S3 存储桶。 | 在相应AWS区域@@ 创建新的 S3 存储桶,或选择现有存储桶作为要迁移的数据的目的地。 | AWS 管理员 |
为 Amazon 创建IAM实例角色EC2。 | 为@@ 亚马逊创建一个新的 Ident AWS ity and Access Management (IAM) 角色EC2。此角色授予您的EC2实例对目标 S3 存储桶的写入权限。 | AWS 管理员 |
将策略附加到IAM实例角色。 | 使用IAM控制台或AWS命令行界面 (AWSCLI) 为EC2实例角色创建内联策略,该策略允许对目标 S3 存储桶进行写入访问权限。有关示例策略,请参阅其他信息部分。 | AWS 管理员 |
启动 EC2 实例。 | 启动配置为使用新创建的IAM服务角色的 Amazon Linux EC2 实例。此实例还需要通过互联网访问 Azure 公共API端点。 注意考虑使用AWS基于 Graviton 的EC2实例来降低成本。Rclone 提供ARM编译后的二进制文件。 | AWS 管理员 |
创建 Azure AD 服务主体。 | 使用 Azure CLI 创建 Azure 活动目录 (Azure AD) 服务主体,该主体对源 Azure Blob 存储容器具有只读访问权限。有关说明,请参阅其他信息部分。将这些证书存储在您的EC2实例上,存储到相应的位置 | 云管理员,Azure |
任务 | 描述 | 所需技能 |
---|---|---|
下载并安装 Rclone。 | 下载和安装 Rclone 命令行程序。有关安装说明,请参阅 Rclone 安装文档 | 将军AWS,云管理员 |
配置 Rclone。 | 复制以下
| 将军AWS,云管理员 |
验证 Rclone 配置。 | 若要确认 Rclone 已配置且权限是否正常运行,请验证 Rclone 是否可以解析您的配置文件,以及 Azure Blob 容器和 S3 存储桶中的对象是否可以访问。有关示例验证命令,请参阅以下内容。
| 将军AWS,云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
从容器迁移数据。 | 示例:复制 此命令将数据从源 Azure Blob 容器复制至目标 S3 存储桶。
示例:同步 此命令在源 Azure Blob 容器和目标 S3 存储桶间同步数据。
重要使用同步命令时,源容器中不存在的数据将从目标 S3 存储桶中删除。 | 将军AWS,云管理员 |
同步容器。 | 初始复制完成后,运行 Rclone sync 命令以进行持续迁移,这样只会复制目标 S3 存储桶中缺少的新文件。 | 将军AWS,云管理员 |
验证数据是否成功迁移。 | 将军AWS,云管理员 |
相关资源
亚马逊 S3 用户指南(AWS文档)
IAMAmazon 的角色 EC2(AWS文档)
创建 Microsoft Azure Blob 容器
(Microsoft Azure 文档) Rclone 命令
(Rclone 文档)
其他信息
实例的角色策略示EC2例
该策略授予您的EC2实例对您账户中特定存储桶的读写权限。如果您的存储桶使用客户托管密钥进行服务器端加密,则该策略可能需要对AWS密钥管理服务(AWSKMS)的额外访问权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "arn:aws:s3:::*" } ] }
创建只读 Azure AD 服务主体
Azure 服务主体是客户应用程序、服务和自动化工具用来访问特定 Azure 资源的安全标识。可以将其视为具有特定角色和严格控制访问资源的权限的用户身份(登录名和密码或证书)。要创建只读服务主体、以遵循最低权限并保护 Azure 中的数据免遭意外删除,请按照以下步骤操作:
登录你的 Microsoft Azure 云账户门户,在工作站上启动 Cloud Shell PowerShell 或者使用 Azure 命令行界面 (CLI)。
创建服务主体,并将其配置为对 Azure Blob 存储账户的只读
访问权限。将此命令的JSON输出保存到名为的本地文件中 azure-principal.json
。该文件将上传到您的EC2实例。将大括号({
和}
)中显示的占位符变量替换为您的 Azure 订阅 ID、资源组名称和存储账户名称。az ad sp create-for-rbac ` --name AWS-Rclone-Reader ` --role "Storage Blob Data Reader" ` --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}