调用持久性 Lambda 函数 - AWS Lambda

调用持久性 Lambda 函数

可以使用与默认 Lambda 函数相同的方法来调用持久性 Lambda 函数,但针对长时间运行的执行有一些重要注意事项。本节介绍持久性函数的调用模式、执行管理和最佳实践。

同步调用限制

持久性 Lambda 函数的同步调用限制为 15 分钟,这与默认 Lambda 函数相同。如果您的持久性函数需要运行超过 15 分钟,则必须异步调用该函数。

何时使用同步调用:适用于那些在 15 分钟内即可完成的持久性函数,以及那些您需要即时结果的情况,例如快速审批流程或短时间的数据处理任务。

长时间运行的工作流程的异步调用

对于运行时间可能超过 15 分钟的持久性函数,请使用异步调用。这使得该函数能够在您的客户端接收到即时确认的同时继续运行。

TypeScript
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda"; const client = new LambdaClient({}); // Asynchronous invocation const command = new InvokeCommand({ FunctionName: "my-durable-function", InvocationType: "Event", // Asynchronous Payload: JSON.stringify({ orderId: "12345" }) }); await client.send(command);
Python
import boto3 import json client = boto3.client('lambda') # Asynchronous invocation response = client.invoke( FunctionName='my-durable-function', InvocationType='Event', # Asynchronous Payload=json.dumps({'order_id': '12345'}) )

执行管理 API

Lambda 提供相关 API 来管理和监控持久性函数的执行情况,包括列出执行记录、获取执行状态以及停止正在运行的执行。

TypeScript
// Get execution status const statusCommand = new InvokeCommand({ FunctionName: "my-durable-function", InvocationType: "RequestResponse", Payload: JSON.stringify({ action: "getStatus", executionId: "exec-123" }) }); const result = await client.send(statusCommand);
Python
# Get execution status response = client.invoke( FunctionName='my-durable-function', InvocationType='RequestResponse', Payload=json.dumps({ 'action': 'get_status', 'execution_id': 'exec-123' }) )