【问题标题】:Upload 20 million images to s3 bucket using URL使用 URL 将 2000 万张图片上传到 s3 存储桶
【发布时间】:2020-07-06 21:38:01
【问题描述】:

我想将 2000 万张图片上传到 S3 存储桶。我正在使用以下代码。

s3.putObject(objectParams, (err, data) => {
            if (err) {
              reject(err);
            } else {
              resolve(data);
            }

我有正在使用的云图像 URL,我想将这些图像上传到 S3。

最快的方法是什么?我目前正在按顺序运行此代码,但这会花费很多时间。我可以使用 rest api 更快地运行它吗?

有人可以帮忙吗?

【问题讨论】:

  • 为什么不运行多个线程?
  • 我有一个应该使用 node.js 推送到 s3 的 URL 数组?你能指导我如何在 node.js(单线程)中执行你的建议吗?

标签: node.js rest amazon-s3 cloudinary knox-amazon-s3-client


【解决方案1】:

就个人而言,我会做以下事情:

  • 编写一个接受 URL 的 AWS Lambda 函数,然后为每个 URL:
    • 下载文件(最大临时存储空间 = 512MB)
    • 将文件上传到 S3
    • 删除本地(临时)文件
  • 创建 Amazon SQS 队列并将其配置为在收到消息时触发 Lambda 函数(一次最多传递 10 条消息)
  • 编写一个小脚本来将 URL 推送到 SQS 队列中

这将并行启动许多 Lambda 函数(默认限制为 1000 个并发函数),它们都会为您复制文件。

唯一的问题是文件是否超过 512MB,这是 Lambda 提供的临时存储大小。

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 2019-06-14
    • 2018-08-29
    • 2018-02-07
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    相关资源
    最近更新 更多