耐久性のある Lambda 関数の呼び出し - AWS Lambda

耐久性のある 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' }) )