node.js - 使用 URL 将 2000 万张图片上传到 s3 存储桶
问题描述
我想将 2000 万张图片上传到 S3 存储桶。我正在使用以下代码。
s3.putObject(objectParams, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
我有正在使用的云图像 URL,我想将这些图像上传到 S3。
最快的方法是什么?我目前正在按顺序运行此代码,但这会花费很多时间。我可以使用 rest api 更快地运行它吗?
有人可以帮忙吗?
解决方案
就个人而言,我会做以下事情:
- 编写一个接受 URL 的AWS Lambda 函数,然后为每个 URL:
- 下载文件(最大临时存储空间 = 512MB)
- 将文件上传到 S3
- 删除本地(临时)文件
- 创建一个Amazon SQS 队列并将其配置为在收到消息时触发 Lambda 函数(一次最多传递 10 条消息)
- 编写一个小脚本将 URL 推送到 SQS 队列中
这将并行启动许多 Lambda 函数(默认限制为 1000 个并发函数),它们都将为您复制文件。
唯一的问题是文件是否超过 512MB,这是 Lambda 提供的临时存储大小。
推荐阅读
- windows - 为什么 GetCommandLineArgs 在运行 pwsh.exe 时会返回 DLL?
- if-statement - 如何将另一个 ImportXML 函数添加到同一个单元格并在另一个单元格中有特定文本时激活该 XML 函数?
- excel - vba如何插入空格删除双线
- kubernetes - 具有自签名证书的 eks 自动扩缩器和港口注册表
- rust - 如何禁用驼峰式警告
- c# - 即使在修改后也无法从 .NET Core 本地服务器提供某些文件扩展名
在 applicationHost.config - r - 带条件的子串 R
- java - if item *in* array java
- php - 为包括未经授权的用户的一组用户实施某种@can
- postgresql - Hibernate - Spring Boot - 将具有外键的对象保存到另一个表