首页 > 解决方案 > 将数据从 AWS 3 存储桶同步到 Azure Data Lake Gen 2 的最佳方法是什么

问题描述

目前,我使用以下命令将 csv 文件从 AWS S3 下载到本地计算机: aws s3 sync s3://<cloud_source> c:/<local_destination> --profile aws_profile. 现在,我想每天使用相同的流程将文件从 AWS 同步到 Azure Data Lake Storage Gen2(单向同步)。[注意:我只有 S3 数据源的读取/下载权限。]

我想到了解决这个问题的 5 条潜在途径:

  1. 在 Azure 中使用 AWS CLI 命令。我不完全确定如何在不运行 Azure VM 的情况下做到这一点。另外,我想让我的 AWS 配置文件凭证保持不变吗?
  2. 使用 Python 的subprocess库运行 AWS CLI 命令。我遇到了与选项 1 类似的问题,即 a) 维护 AWS CLI 的持久安装,b) 传递 AWS 配置文件凭据,以及 c) 在没有 Azure VM 的情况下运行。
  3. 使用 Python 的Boto3库访问 AWS 服务。过去,Boto3 似乎不支持 AWSsync命令​​。因此,像@raydel-miranda 这样的开发人员开发了他们自己的。[请参阅通过 boto3 同步两个存储桶]。但是,现在似乎有一个DataSync用于 Boto3 的类。[数据同步| Boto3 Docs 1.17.27 文档]。我是否仍需要在 Azure VM 中运行它,还是可以使用 Azure 数据工厂?
  4. 使用 Azure 数据工厂从 AWS S3 存储桶复制数据。[请参阅使用 Azure 数据工厂从 Amazon Simple Storage Service 复制数据] 我担心我想要同步而不是复制。我相信 Azure 数据工厂具有检查文件是否已存在的功能,但如果文件已从 AWS S3 数据源中删除怎么办?
  5. 使用Azure 数据科学虚拟机:a) 安装 AWS CLI,2) 创建我的 AWS 配置文件以存储访问凭证,以及 3) 运行aws s3 sync...命令。

非常感谢有关自动化此过程的任何提示、建议或想法。

标签: amazon-s3boto3aws-cliazure-data-factory-2azure-data-lake-gen2

解决方案


AzReplciate 是另一种选择 - 特别是对于非常大的容器https://docs.microsoft.com/en-us/samples/azure/azreplicate/azreplicate/


推荐阅读