我能否通过 Amazon API 网关异步启动长时间运行的 AWS Lambda 进程



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

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

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

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

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

API 网关支持这种情况,但您无法从控制台设置集成。您必须使用 CLI 工具或开发工具包才能执行此操作。

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

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'

相关内容

最新更新