지속성 Lambda 함수 간접 호출
지속성 Lambda 함수는 기본 Lambda 함수와 동일한 방법을 사용하여 호출할 수 있지만 장기 실행에는 중요한 고려 사항이 있습니다. 이 섹션에서는 간접 호출 패턴, 실행 관리 및 지속성 함수에 대한 모범 사례를 다룹니다.
동기식 간접 호출 제한
지속성 Lambda 함수의 동기식 간접 호출은 기본 Lambda 함수와 동일하게 15분으로 제한됩니다. 지속성 함수를 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'
})
)