如何使用nodejs中的AWS lambda将文件从公共网络复制到aws s3?

时间:2017-12-03 11:33:18

标签: amazon-web-services amazon-s3 aws-lambda

我想从公共网络复制文件,例如: http://myvideo.com/porn/tca-333.mp4 进入我的s3桶: 让我们说: S3://mypublicstorage.example.com/porn/tca-333.mp4 使用AWS Lambda。

问题是,视频的大小可能相当于2~10 GB。 如果我使用像superagent这样的请求库来获取它,所有这些都可能存储在RAM中,因此它还不够。

AWS Lambda本身的限制只有500个MB磁盘iirc。 毕竟,AWS Lambda无法完成这项任务吗?

我当前的代码或多或少类似于:

request.get(srcUrl).then(resp => S3.putObject({Body: resp.body, ...}))

任何建议?

1 个答案:

答案 0 :(得分:1)

对于这种工作,不可能简单地使用Lambda。您可以按如下方式设置架构。

  • AWS Lambda函数将作业推送到Amazon SQS中的队列。
  • 设置要执行的EC2实例以从队列中提取作业并下载文件并将其上载到S3。 (可选择在作业完成后停止EC2)
  • 对于低频率工作负载,您可以选择从Lambda启动EC2实例,并在处理作业后编程为自行关闭,并发现Queue为空。