我一直在研究如何调用lambda函数的AWS文档,并且遇到了不同的实现方法。通常,通过调用Invoke()
函数来完成Lambda调用,该函数可用于同步或异步调用lambda函数。
当前,我正在通过HTTP请求(作为REST API)调用Lambda函数,但是,HTTP请求在30秒后超时,而据我所知,异步调用在15分钟后超时。
除了我已经提到的时间之外,与使用HTTP Request调用lambda相比,异步lambda调用还有什么优势。此外,在生产中调用lambda的最佳(推荐)方法是什么?在AWS文档(Go的SDK-https://docs.aws.amazon.com/sdk-for-go/api/service/lambda/#InvokeAsyncInput)上,我看到InvokeAsyncInput
和InvokeAsyncOutput
已被描述。因此,我想知道异步实现的实际效果如何。
答案 0 :(得分:2)
Lambda实际上与事件驱动的计算有关。这意味着Lambda总是会响应事件而触发。此事件可以源自广泛的range of AWS Services以及AWS CLI和SDK。
所有这些事件都调用Lambda函数并以event
和context
对象的形式传递某种信息。此事件的外观取决于触发lambda的服务。您可以在this documentation中找到有关上下文的更多信息。
没有真正的“最佳”方法来调用Lambda-这主要取决于您的用例-如果您要构建Web服务,请让API Gateway为您调用Lambda。如果要在S3上处理新文件-让S3触发Lambda。如果您只是测试Lambda函数,则可以通过CLI调用它。如果您有需要触发Lambda函数的自定义软件,则可以使用SDK。如果要按计划运行Lambda,请配置CloudWatch事件...
如果您需要对可用选项进行更详细的评估,请提供有关您的用例的更多信息-现在这非常广泛。