目前,我们的一个 EC2 实例(运行 C# .NET)上有一个函数,它根据请求打开到外部站点的 HTTP 连接(为了论证的目的,我们假设https://www.example.com/file.csv(需要基本身份验证)来下载文件。将文件存储到内存后,我们便会连接到 S3 并将该文件存储到存储桶中。
我正在将周围的功能从 EC2 移出并移到触发一系列 lambda 的步进函数中。
我正在尝试寻找最佳服务来处理打开 HTTP 连接并将文件存储到 S3 的过程。使用 Lambda 的问题在于外部站点很慢而且通常需要一个多小时才能从他们那里检索文件。
对于满足这一需求有什么好的选择吗?
答案1
问题是 Lambda 的最大值是 15 分钟。
您需要实现某种链,以便您的函数从上次 Lambda 执行停止的地方开始。
例如,您的 Lambda 从 0% 开始下载,当下载时间接近 15 分钟时,您的函数下载了文件的 20%。然后踢出该函数的另一个实例来接管 20% 并终止第一个实例,否则它会在达到 15 分钟时超时。然后保持相同的逻辑,直到您下载文件。
由于您提到下载需要一个多小时,我建议您使用 EC2 实例进行下载,然后使用 Lambda 执行任何其他简短任务。