長期間実行が可能となる AWS Lambda Durable Function が発表されました#AWSreInvent

長期間実行が可能となる AWS Lambda Durable Function が発表されました#AWSreInvent

2025.12.03

こんにちは、森田です。

現在ラスベガスで開催中 re:Invent 2025 のキーノート で AI ワークフローや multi-stepアプリケーションに特化した AWS Lambda Durable Function が発表されました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/12/lambda-durable-multi-step-applications-ai-workflows/

Durable Function

Durable Functionでは、ワークロードを中断し、再開することができる機能を有しています。

また、最大1年間実行を一時停止することが可能となっています。

アーキテクチャ

image.png
引用:https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html

Durable Functions は、内部は通常の Lambda 関数と同じとなります。
相違点としては、checkpoint/replayを有しているという点になります。

関数が待機や再試行などの中断ポイントから再開する際、システムはreplayを実行します。
replay中、コードは最初から実行されますが、既に完了したcheckpointの部分はスキップされます。

この際、完了した操作が再実行される代わりに、保存されていた結果を再利用するようにします。
なお、これらを利用するために、AWS Lambdaのソースコード側に「Durable Execution SDK」を追加する必要があります。

Durable Execution SDK では、Lambda のイベントハンドラーをラップすることで、DurableContext が適用され、checkpoint/replayを制御することが可能となります。

sample.py
from aws_durable_execution_sdk_python import (
    DurableContext,
    durable_execution,
    durable_step,
)
from aws_durable_execution_sdk_python.config import Duration

@durable_step
def validate_order(step_context, order_id):
    step_context.logger.info(f"Validating order {order_id}")
    return {"orderId": order_id, "status": "validated"}

@durable_step
def process_payment(step_context, order_id):
    step_context.logger.info(f"Processing payment for order {order_id}")
    return {"orderId": order_id, "status": "paid", "amount": 99.99}

@durable_step
def confirm_order(step_context, order_id):
    step_context.logger.info(f"Confirming order {order_id}")
    return {"orderId": order_id, "status": "confirmed"}

@durable_execution
def lambda_handler(event, context: DurableContext):
    order_id = event['orderId']

    # Step 1: Validate order
    validation_result = context.step(validate_order(order_id))

    # Step 2: Process payment
    payment_result = context.step(process_payment(order_id))

    # Wait for 10 seconds to simulate external confirmation
    context.wait(Duration.from_seconds(10))

    # Step 3: Confirm order
    confirmation_result = context.step(confirm_order(order_id))

    return {
        "orderId": order_id,
        "status": "completed",
        "steps": [validation_result, payment_result, confirmation_result]
    }

実行を一時停止する必要がある場合は、待機を追加することで、関数を一時停止でき、この間は課金が発生しません。

さいごに

AWS Lambda の Durable Function は、AI ワークフローやマルチステップアプリケーションといった、長時間実行や中断・再開が必要なワークロードにとって、非常に強力な選択肢となりそうです。

特に、最大1年間の実行一時停止と、その間の課金が発生しないという点は、コスト効率の面でもメリットがありそうですね。

この記事をシェアする

FacebookHatena blogX

関連記事