【问题标题】:aws s3 putObject vs syncaws s3 putObject 与同步
【发布时间】:2016-12-29 19:27:57
【问题描述】:

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

我将 aws-sdk 用于 node.js 用于 s3 上传。 node.js 的 aws-sdk 不包含 s3-sync 方法。 s3-sync 是否优于 s3.putObject() 方法?我需要更快的上传速度。

【问题讨论】:

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


    【解决方案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 命令​​行界面用户指南中的将 Amazon S3 与 AWS 命令​​行界面结合使用。

    因此亚马逊会推荐使用 SDK。归根结底,我认为这实际上取决于您最喜欢什么以及如何将这段代码集成到程序的其余部分中。对于一次性操作,我总是使用 CLI。

    但就性能而言,使用其中一种不会有什么不同,因为它们只是 AWS API 调用的包装器。对于传输优化,你应该看看aws s3 transfer acceleration,看看你是否可以启用它

    【讨论】:

    • 我在 aws-lambda 上部署了我的代码。 sdk 或 aws-cli 命令更适合 lambda?
    • 如果你的代码在 lambda 上运行,node js sdk 是一个不错的选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2016-10-08
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    相关资源
    最近更新 更多