首页 > 解决方案 > 使用 URL 将 2000 万张图片上传到 s3 存储桶

问题描述

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

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

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

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

有人可以帮忙吗?

标签: node.jsrestamazon-s3cloudinaryknox-amazon-s3-client

解决方案


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

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

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

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


推荐阅读