使用弹性映射减少SFTP到S3分布式文件复制

时间:2014-11-27 16:10:07

标签: amazon-web-services amazon-s3 sftp

我需要定期从使用SFTP的服务器复制文件到AWS S3存储桶。目前我正在通过使用Python的Paramiko模块和AWS Boto的cron作业来完成它。我想知道是否有办法通过AWS弹性mapreduce(EMR)更有效地做到这一点。 S3DistCp工具非常适合使用EMR将数据从S3复制到S3存储桶,但我没有找到任何从SFTP到S3的分布式文件复制。

1 个答案:

答案 0 :(得分:1)

Amazon Elastic Map Reduce(EMR)中原本没有SFTP功能。

使用EMR会增加显着的开销,无论是在复杂性还是处理时间方面(例如,必须让群集运行,每个作业只需要30秒才能启动)。 S3DistCp对于并行复制许多文件确实很有用,但只有在要复制数百个文件时才有用。

您可以考虑管理SFTP部分以将文件检索到临时位置,然后调用 AWS Command Line Interface (CLI) 来处理文件上传。这将从您的代码中删除一些困难的部分(例如错误检查,多部分上传)。

要充分利用网络带宽,您可以使用GNU Parallel等工具执行多个同步上传:

ls * | parallel --no-notice -j100 aws s3 cp {1} s3://my-bucket/{1}