【问题标题】:Can I initiate a long-running AWS Lambda process via the Amazon API gateway asynchronously?我可以通过 Amazon API 网关异步启动长时间运行的 AWS Lambda 进程吗?
【发布时间】:2016-03-09 02:54:28
【问题描述】:

我需要启动一个长时间运行的 AWS Lambda 作业(几分钟),它将其输出写入 S3。它将用 Java 编写(实际上是 Kotlin,但这不重要)。

我正在研究将 Amazon API Gateway 作为此和其他 AWS Lambda 作业之间的接口,以及与之对话的 iOS 移动应用程序。

是否可以直接从 API 网关或其他 Lambda 函数异步调用此类长时间运行的 Lambda 进程?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    我认为您不能直接通过 API Gateway 异步调用 Lambda,但您可以通过 API 从另一个 lambda 调用 lambda。在 Java 中,您可以使用 AWSLambdaClient.invoke()InvocationTypeEvent

    在长时间运行的作业中使用 Lambda 时要小心:Lambda 调用有 300 秒的硬性限制。我建议在 EC2 等持久资源中使用 Lambda 调用代码,以用于长时间运行的后端进程。

    【讨论】:

      【解决方案2】:

      API Gateway 支持这种情况,但您无法从控制台设置集成。您必须使用 CLI 工具或 SDK 来执行此操作。

      这里有一个提示可以引导你到那里。

      aws apigateway put-integration \
          --rest-api-id <value> \
          --resource-id <value> \
          --http-method POST \
          --type AWS \
          --integration-http-method POST \
          --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:Hello_World/invocations?Qualifier=$LATEST \
          --credentials arn:aws:iam::123456789012:role/lambda \
          --request-parameters integration.request.header.X-Amz-Invocation-Type='Event'
      

      【讨论】:

        猜你喜欢
        • 2020-10-03
        • 2021-06-28
        • 2020-11-10
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 2013-09-05
        • 2012-09-28
        相关资源
        最近更新 更多