使用AWS Data Pipeline在S3到EC2之间传输文件

时间:2015-05-13 06:36:59

标签: amazon-web-services amazon-ec2 amazon-s3 amazon-data-pipeline

我想将TB的数据从S3转移到EC2 Windows Server然后再回来,这将花费几个小时来使用基本的AWS CLI Copy command。为了帮助加快速度,我想使用AWS Data PipelineAWS Data Pipeline文档中的图形似乎表明数据至少可以从EC2流向S3:

然而,我发现很难理解如何做到这一点。我见过的最接近的例子是通过使用ShellCommandActivity来暂存数据的概念,DataNode将数据从S3 Link传输到EC2,然后再将其复制回S3。

相反,我想在已经运行的Windows实例上从S3复制数据,然后在稍后将更多数据复制回S3。

4 个答案:

答案 0 :(得分:1)

这可以在没有我相信的数据管道的情况下完成 - 主要是为了消除一些复杂性。这项工作可以通过AWS CLI完成,也可以在Windows XP及更高版本上使用。如果您在计算机上没有AWS CLI,请查找MSI安装程序。

On * nix:

 memset(buf, 255, sizeof(char) * sizeof(buf));

将s3存储桶内容复制到执行目录。

答案 1 :(得分:1)

简而言之,我不认为您可以使用AWS DataPipeline为此用例获得任何性能优势。

原因是 Task Runner (数据管道使用的执行程序)是not supported on Windows platform。因此,您尝试运行的任何活动实际上都会在不同的平台上运行,然后您可以将其scp / sftp发送到您的计算机。

在其他平台上将数据提取到EC2实例有多种方法:

  1. 使用ShellCommandActivity:它不仅允许您上传,还可以从S3 using env vairables下载,例如INPUT1_STAGING_DIR。虽然他们的文档没有提及它们的实现或性能改进,但我相信它正在使用S3的多部分API进行并行拉动。
  2. 使用EMR + s3distcp并将其转换为HDFS,然后使用getMerge
  3. 从HDFS将其转移到本地磁盘

答案 2 :(得分:1)

您是否需要Windows计算机上的所有这些数据?或者你打算间歇性地访问它?

您可以尝试安装S3存储桶。

它仍然是远程的,但在Windows中就像普通的安装驱动器一样。如果您需要进行一些数据处理,那么只需将当时需要的文件复制到本地磁盘。您可以使用S3browser,Cloudberry或其他一百个S3客户端安装S3。

答案 3 :(得分:1)

最后,我能够使用datapipeline进行从ec2到s3的数据传输。

  

步骤:

     
      
  1. 首先我们需要让一个任务跑步者跑进ec2机器。
  2.   
  3. aws s3不能使用你的ec2集群,因为ec2没有你的s3存储桶的权利;使用aws configure添加   访问密钥和密码。
  4.   
  5. 创建一个数据管道,架构师在shellcommand活动中添加。你可以使用sh的脚本路径   aws s3 cp / var / tmp / xyz s3:// abc;最重要的是加入工人   表示你在ec2上开始的任务运行的组。

         

    REF:http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-how-task-runner-user-managed.html

  6.