aws s3 putObject vs sync

时间:2016-08-23 05:44:13

标签: node.js amazon-web-services amazon-s3 npm aws-sdk

我需要将一个大文件上传到aws s3存储桶。在每10分钟我的代码从源目录中删除旧文件并生成一个新文件。文件大小约为500 MB。现在我使用s3.putObject()方法在创建后上传每个文件。我也听说过aws s3同步。它带来了aws-cli。它用于将文件上传到s3存储桶。

我使用aws-sdk for node.js进行s3上传。 node.js的aws-sdk不包含s3-sync方法。是s3-sync比s3.putObject()方法好吗?我需要更快上传。

1 个答案:

答案 0 :(得分:1)

总有很多方法可以制作东西,所以要将文件上传到S3存储桶,你可以:

  • 使用aws CLI并运行aws s3 cp ...
  • 使用aws CLI并运行aws s3api put-object ...
  • 使用aws SDK(您选择的语言)

您也可以使用sync方法,但对于单个文件,不需要同步整个目录,通常在寻找更好的性能时,最好启动多个cp实例以从多个线程与同步单线程。

基本上所有这些方法都是aws S3 API调用的包装器。来自amazon doc

  

直接从代码中调用REST API可能很麻烦。它要求您编写必要的代码以计算有效签名以验证您的请求。我们建议使用以下替代方案:

     
      
  • 使用AWS软件开发工具包发送您的请求(请参阅示例代码和库)。使用此选项,您无需编写代码来计算请求身份验证的签名,因为SDK客户端使用您提供的访问密钥对您的请求进行身份验证。 除非您有充分理由不这样做,否则应始终使用AWS软件开发工具
  •   
  • 使用AWS CLI进行Amazon S3 API调用。有关设置AWS CLI和示例Amazon S3命令的信息,请参阅以下主题:   在Amazon Simple Storage Service开发人员指南中设置AWS CLI。   在AWS Command Line Interface用户指南中使用Amazon S3和AWS Command Line Interface。
  •   

所以亚马逊会建议使用SDK。在一天结束时,我认为这对你最舒服的事情以及如何将这段代码集成到你的程序的其余部分非常重要。对于一次性操作,我总是去CLI。

就性能而言,使用其中一个或另一个不会再次产生差异,它们只是AWS API调用的包装。对于传输优化,您应该查看aws s3 transfer acceleration并查看是否可以启用它