こんにちは、クラウドネイティブ技術部の関です。AWS re:Invent 2025に参加してきました。
AWS re:Invent 2025にて、Lambdaの新機能「AWS Lambda Durable Functions」 が発表されました。
私はセッション 「CNS380: Deep dive on AWS Lambda durable functions」 に参加し、その詳細とデモを見てきました。Lambdaの使い方が大きく変わるような革新的な機能でしたので紹介させていただきます。
1. Lambda Durable Functionsの概要
簡単に言うと、処理を「停止(スリープ)」「再開(ウェイクアップ)」することで、最大1年間まで実行可能なステートフルなLambdaです 。
これまでのLambdaは、一度実行すると最大15分で強制終了され、状態を持つこともできませんでした。今回発表された Durable Functions も、個々のLambda実行自体には引き続き15分の制限がありますが、Durable Execution SDKを使用し、Lambda関数内に組み込むことで状態を維持し、長期間の処理を利用できます。
コード上の設定一つでDurableモードを有効化でき、以下のような機能を可能にします。
最大1年の実行可能
処理を一時停止(サスペンド)することで、最大1年間にわたり実行コンテキストを維持できます 。停止中は関数が終了した扱いとなるため、停止している間の課金は発生しません。
自動セーブとリプレイ
SDKが裏側で自動的にチェックポイントを保存します 。もし処理が中断したり再開したりする際は、完了済みのステップをスキップし、「未実行の行」から処理を再開してくれます 。
いつもの言語で書ける
ワークフローを定義するために、独自の定義方法を覚える必要はありません。Node.js (TypeScript/JavaScript) や Python といった普段使い慣れた言語で、上から下へ流れる普通のコードとして記述できます 。
2. Durable Functionsのなにがいいのか?
この機能のメリットについて、セッションでは開発者が抱える「マイクロサービスの複雑さ」というジレンマへの回答として紹介されていました 。この機能のメリットを2つのポイントで説明します。
Lambda 1つでワークフロー処理が可能
バッチ処理などで15分を超えるワークフローを作成する際に、これまではStep FunctionsやEventBridgeなどを使用して、複数のLambdaを組み合わせて作成する必要がありました。
個人的にはそれがもう当たり前として管理してきたのですが、セッション内では、これらについてビジネスロジックとは無関係な「配管コード(Plumbing Code)」が大量に必要になることが課題として挙げられていました。実際、Step FunctionsをCDKなどのIaCで定義しようとすると記述が複雑になりがちです。
この問題に対して、Durable Functionsを使えば、1つのファイルに上から下へロジックを書くだけで分散可能なワークフロー処理が可能になります 。
クラウドを使わない「ローカルテスト」が可能
これまではStep Functionsなどのワークフローはクラウドにデプロイしないと動作確認が難しいものでした。
しかし、Durable Functionsには PDK (Project Development Kit) に含まれるテストランナーがあり 、クラウドに接続することなくローカル環境で「停止→再開」や「リトライ」の挙動を含めた完全なテストが可能です 。デモでも、ローカルでテストをパスさせてからデプロイする様子が実演されました 。
3. Serverlesspressoによるデモ
セッションでは、会場内でも実際に使用されていたカフェの注文システム「Serverlesspresso」を題材にしたデモが行われました 。 このアプリでは、「注文の受付」→「在庫確認」→「支払い」→「バリスタの承認(商品の準備完了)」→「完了」というワークフローが実行されていました。
デモの中で特に注目すべき機能として、以下の3点が紹介されました。
人の操作を待つ「Human-in-the-loop」の実装
このワークフローの中で課題なのが、「バリスタがコーヒーを作り終わるのを待つ」といった、人間や外部システムの完了待ちです。
Durable Functionsでは、以下のようにシンプルに実装されていました。
待機(スリープ): コード内で waitForCallback を呼び出すと、Lambdaは一意の「トークン」を発行して、処理を一時停止(スリープ)します 。
外部からの再開: バリスタが注文管理画面で「完了」ボタンを押すと、その裏でAPIがトークンを使ってLambdaを呼び出します 。
続きから実行: シグナルを受け取ったLambdaは、スリープしていた行の直後から処理を再開します 。
この間、Lambdaのプロセスは停止しているため、数分でも数日でも、追加のコストをかけずに待ち続けることができます 。

実行状況の可視化
デモでは、AWSマネジメントコンソールに新しく追加された 「Durable execution」 タブも披露されました 。 ここでは、コード内で定義したステップごとの「成功・失敗」や「入力・出力データ」がテーブル形式で視覚的に確認できます 。
Step Functionsで可視化されたワークフローを確認するように、Lambdaでも確認できます。

ローカルでの完全なテスト
さきほども書きましたが、この一連の流れ(注文〜承認待ち〜再開)を、クラウドにデプロイせずにローカル環境だけで完結させるデモが実演されました 。 ローカルで動くテストランナーに対し、手動でコールバックの完了シグナルを送ることで、Lambdaが「再起動」して処理を完了させていました。
4. まとめ
AWS Lambda Durable Functionsは、AWS Step Functionsを完全に置き換えるものではありませんが、新しい1つの選択肢として注目すべき新機能だと思います。
今後活用例が増えてくるのが楽しみです!
おまけ
Serverlesspressoで実際に注文した際にお土産でタンブラーをいただきました!記念に載せておきます。
