【问题标题】:Can AWS Lambda functions be invoked as a background service?AWS Lambda 函数可以作为后台服务调用吗?
【发布时间】:2020-06-21 22:31:59
【问题描述】:
我是 Lambda 函数的新手,我正在使用 serverless 框架来创建它们,特别是使用 python。我正在尝试创建一个对文件进行大量处理的函数。工作类型并不重要,但每项工作可能需要几分钟才能完成。
我不希望调用请求打开这么长时间,而是希望 Lambda 立即返回,但在返回后继续处理。工作完成后,它可以使用 SMS 将处理后的文件通过电子邮件发送给我。
这可以通过 AWS Lambda 实现吗?
【问题讨论】:
标签:
amazon-web-services
aws-lambda
serverless-framework
【解决方案1】:
AWS Lambda 支持两种调用类型:
RequestResponse 将等到 Lambda 调用完成后再返回响应。 Event 将调用 Lambda 函数,然后返回一个成功状态,表明该函数已成功启动。你可以阅读更多关于这个here的信息。
【解决方案2】:
事实上,Lambda 函数“几乎”总是异步请求。
对于您的特定用例,您可以让 lambda 在文件上传到 s3 时被“触发”(而不是以编程方式调用它)。这意味着每次将文件上传到 s3 时,都会触发 lambda 并处理该文件。
这样,在处理期间不会打开任何连接。该函数可以在完成后通知它。