【问题标题】:Using AWS API in order to invoke Lambda functions Asynchronously使用 AWS API 以异步方式调用 Lambda 函数
【发布时间】:2019-11-11 15:58:11
【问题描述】:

我一直在研究有关如何调用 lambda 函数的 AWS 文档,并且遇到了不同的方法。 Lambda调用主要是通过调用Invoke()函数来完成的,可以用来同步或异步调用lambda函数。

目前我正在通过 HTTP 请求(作为 REST API)调用我的 Lambda 函数,但是,HTTP 请求在 30 秒后超时,而据我所知,异步调用在 15 分钟后超时。

除了我已经提到的时间之外,与使用 HTTP 请求调用 lambda 相比,异步 lambda 调用有哪些优势。此外,在生产中调用 lambda 的最佳(推荐)方法是什么?在 AWS 文档(Go 的 SDK - https://docs.aws.amazon.com/sdk-for-go/api/service/lambda/#InvokeAsyncInput)上,我看到 InvokeAsyncInputInvokeAsyncOutput 已被贬低。所以我想知道异步实现实际上是什么样子的。

【问题讨论】:

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


    【解决方案1】:

    Lambda 真的是关于事件驱动的计算。这意味着 Lambda 总是被触发以响应 事件。此事件可能源自广泛的 range of AWS Services 以及 AWS CLI 和 SDK。

    所有这些事件都会调用 Lambda 函数并以 eventcontext 对象的形式传递某种信息。此事件的外观取决于触发 lambda 的服务。您可以在this documentation 中找到有关上下文的更多信息。

    调用 Lambda 没有真正的“最佳”方式 - 这主要取决于您的使用案例 - 如果您正在构建 Web 服务,请让 API Gateway 为您调用 Lambda。如果您想在 S3 上处理新文件 - 让 S3 触发 Lambda。如果您只是测试 Lambda 函数,则可以通过 CLI 调用它。如果您有需要触发 Lambda 函数的自定义软件,您可以使用 SDK。如果您想按计划运行 Lambda,请配置 CloudWatch 事件...

    如果您需要对可用选项进行更详细的评估,请提供有关您的用例的更多信息 - 目前这非常广泛。

    【讨论】:

    • 我希望同时允许同步和异步调用。例如,如果需要,我希望我的 Lambda 作为 Rest API 调用,或者使用一些 JSON Payload 异步调用。为了实现这一点,我是否需要创建InvokeInput 对象并将其传递给Invoke() 函数?
    • 您应该在 Lambda 前面使用 API Gateway。对于异步请求(请求排队并立即确认),包括 HTTP 标头 X-Amz-Invocation-Type=Event。
    猜你喜欢
    • 2018-01-19
    • 2016-09-18
    • 1970-01-01
    • 2020-01-31
    • 2021-12-30
    • 2020-04-30
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多