Invocação de funções do Lambda duráveis - AWS Lambda

Invocação de funções do Lambda duráveis

As funções do Lambda duráveis podem ser invocadas usando os mesmos métodos das funções do Lambda padrão, mas com considerações importantes para execuções de longa duração. Esta seção aborda padrões de invocação, gerenciamento de execuções e práticas recomendadas para funções duráveis.

Limites de invocação síncrona

As invocações síncronas de funções do Lambda duráveis são limitadas a 15 minutos, o mesmo que as funções do Lambda padrão. Se a sua função durável precisar ser executada por mais de 15 minutos, ela deverá ser invocada de forma assíncrona.

Quando usar a invocação síncrona: use para funções duráveis que sejam concluídas em 15 minutos e quando você precisar de resultados imediatos, como fluxos de trabalho de aprovação rápida ou tarefas curtas de processamento de dados.

Invocação assíncrona para fluxos de trabalho de longa duração

Para funções duráveis que possam ser executadas por mais de 15 minutos, use a invocação assíncrona. Isso permite que a função continue em execução enquanto seu cliente recebe uma confirmação imediata.

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'}) )

APIs de gerenciamento de execução

O Lambda fornece APIs para gerenciar e monitorar execuções de funções duráveis, incluindo listar execuções, obter status de execução e interromper o andamento de execuções.

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' }) )