Amazon web services 就如何将大文件从带宽受限的服务器下载到AWS S3存储桶征求建议

Amazon web services 就如何将大文件从带宽受限的服务器下载到AWS S3存储桶征求建议,amazon-web-services,amazon-s3,amazon-ec2,aws-lambda,Amazon Web Services,Amazon S3,Amazon Ec2,Aws Lambda,对于我正在进行的项目,需要下拉一个每天更新并在特定客户URL上可用的较大文本文件,并将其存储在AWS S3中,然后触发文件的下游处理(细节不重要) 我曾考虑让AWS Lambda每隔24小时由CloudWatch触发一次S3中的download+存储,这会起作用,但有一个问题:该文件大小为36MB,由一台主机提供服务,该主机将下载速度限制为100kB/s(我无法控制)。这意味着至少需要360秒(即6分钟)才能完全下载文件。但是,AWS Lambda函数的运行时间上限为300秒,这实际上使Lamb

对于我正在进行的项目,需要下拉一个每天更新并在特定客户URL上可用的较大文本文件,并将其存储在AWS S3中,然后触发文件的下游处理(细节不重要)

我曾考虑让AWS Lambda每隔24小时由CloudWatch触发一次S3中的download+存储,这会起作用,但有一个问题:该文件大小为36MB,由一台主机提供服务,该主机将下载速度限制为100kB/s(我无法控制)。这意味着至少需要360秒(即6分钟)才能完全下载文件。但是,AWS Lambda函数的运行时间上限为300秒,这实际上使Lambda无法用于此任务,因为Lambda会在文件完全下载之前超时并退出

我正在寻找解决AWS Lambda 300秒运行时间限制的方法建议,以实现这一目标

只要我坚持使用AWS,我看到的唯一替代方法就是在EC2实例上设置cron作业,但这似乎代价高昂/太高了,特别是如果我最终不需要在EC2上执行任何其他操作


谢谢

我会让Lambda启动一个运行复制作业的小EC2实例。您可以使用EC2实例的自定义AMI,也可以使用设置所有内容的cloud init脚本。让EC2上的程序运行一段时间,记住不管你需要多少时间,你都会收到一小时的账单。但是,如果整个过程需要15分钟(因为无法保证不会出现交通堵塞),并且您使用的是t2.nano,那么您将收到0.006美元(十分之六美分)的账单,外加一些I/O和可能的EBS空间。我敢打赌你会花很少的钱

一旦作业完成,它就会终止正在其上运行的EC2实例


我意识到这有点麻烦-CloudWatch触发Lambda触发EC2。但是单凭CloudWatch无法满足EC2的需要。

您是否考虑过压缩文本文件以减小其大小?@TimChild,这是我的第一个想法,但遗憾的是,该文件由第三方提供,并且仅作为文本文件。@stdunbar,谢谢,这听起来是个很好的建议,我已经把它标记为回答了我的问题。我做了更多的研究,发现了一个AWS知识中心页面,描述了通过Lambda停止和重新启动EC2实例:让Lambda启动一个小EC2(来自自定义AMI),是否可以包含URL之类的元数据以供下载?@I'll-Be-Back-在创建实例时传递用户数据非常容易,但这可能是一个新问题。