📢 New Service – Announced at re:Invent 2025
AWS Lambda Durable Functions were announced at re:Invent 2025 (December 2025) and are now generally available across ~31 AWS Regions as of mid-2026. They support Python, JavaScript/TypeScript, and Java runtimes.
Certification Relevance: DVA-C02 (Developer Associate), SAA-C03 (Solutions Architect Associate) — expect questions on choosing between Durable Functions, Step Functions, and SQS+Lambda patterns.
What are AWS Lambda Durable Functions?
- Lambda Durable Functions extend the Lambda programming model to build fault-tolerant, multi-step, stateful applications and AI workflows using familiar programming languages.
- They enable multi-step coordination without idle compute costs — functions can suspend execution (wait) for up to one year without incurring compute charges.
- Durable Functions use a checkpoint and replay mechanism (durable execution) to track progress, automatically recover from failures, and resume from where they left off.
- You write sequential code in your preferred language (Python, JavaScript/TypeScript, Java), and the SDK handles state management, retries, and orchestration transparently.
- Durable execution must be enabled at function creation time — it cannot be added to existing Lambda functions.
- The open-source AWS Durable Execution SDK provides the primitives (steps, waits, callbacks, parallel, map) needed to build resilient workflows.
Validate Order
Charge Payment
Human Approval
(up to 1 year)
Ship Order
💰 No charge during waits
Architecture – Checkpoint and Replay Pattern
- Orchestrator Pattern: A durable function acts as an orchestrator that coordinates multiple steps in a workflow using sequential code.
- Durable Execution: The complete lifecycle of a durable function run — from start to completion — is called a durable execution.
- Checkpointing: Each durable operation (step, wait) creates a checkpoint that records the result. Progress is persisted automatically.
- Replay: When execution resumes after a pause or failure, the function replays from the beginning, skipping completed checkpoints using stored results instead of re-executing them.
- Sub-invocations: A single durable execution may involve multiple Lambda invocations (sub-invocations) — the initial invocation plus resumptions after waits, retries, or infrastructure failures.
- Determinism Requirement: Code between durable operations must be deterministic — the replay mechanism depends on consistent execution paths across replays.
Core Primitives (Durable Operations)
- Steps (
context.step()) — Execute business logic with built-in retries and automatic checkpointing. Once completed, steps are skipped during replay. - Waits (
context.wait()) — Suspend execution for a specified duration (seconds to one year). The function terminates and does not incur compute charges during the wait. - Callbacks (
context.create_callback()) — Pause execution until an external event (API call, human approval) signals completion via the Lambda API. - Wait for Condition (
context.wait_for_condition()) — Suspend until a specific condition is met, such as polling a REST API for process completion. - Parallel (
context.parallel()) — Execute different independent operations concurrently. - Map (
context.map()) — Apply the same operation to every item in a collection concurrently (fan-out/fan-in).
How It Works – Flow
- Create a Lambda function with durable execution enabled at creation time.
- Add the Durable Execution SDK to your function code.
- Wrap your handler with
@durable_executiondecorator (Python) or equivalent. - Use
context.step()for business logic with automatic checkpointing and retries. - Use
context.wait()orcontext.create_callback()to suspend execution without compute charges. - On resume, the SDK replays from the beginning, skipping completed steps using stored results.
- Monitor execution progress in the Lambda console Durable executions tab.
Key Features
Automatic State Persistence
- Every durable operation automatically checkpoints its result to durable storage.
- No need to manually manage state in DynamoDB, S3, or external databases.
- State is retained for a configurable period (1–90 days, default 14 days) after execution completes.
- Execution history is available via the
GetDurableExecutionHistoryAPI for debugging and auditing.
Exactly-Once Execution Semantics
- Steps that complete successfully are never re-executed during replay — their stored results are used instead.
- Built-in idempotency: invoking a function twice with the same execution name returns the existing execution result instead of creating a duplicate.
- Configurable retry strategies with max attempts, backoff rate, and custom error handling per step.
Timer and Wait Support
- Waits can suspend execution from seconds up to one year (max ExecutionTimeout: 31,622,400 seconds).
- During wait operations, on-demand functions do not incur compute charges — you only pay for storage.
- Ideal for scheduled delays, polling intervals, and time-based business rules.
Human Approval Workflows
- Callbacks allow execution to pause until an external system (or human) signals completion.
- External systems call
SendDurableExecutionCallbackSuccessorSendDurableExecutionCallbackFailureAPIs. - Callbacks support configurable timeouts — if no response within the timeout, execution can handle the timeout gracefully.
- Can be sent directly from the Lambda console for testing.
Sub-Orchestrations and Concurrency
- Parallel: Execute different independent tasks concurrently and collect results.
- Map: Fan-out the same operation across a collection of items and fan-in the results.
- Child contexts: Compose complex workflows from smaller, reusable durable function patterns.
- All concurrent operations are checkpointed and replayed correctly.
EventBridge Integration
- Lambda automatically sends Durable Execution Status Change events to the default EventBridge bus.
- Build downstream workflows, notifications, or monitoring based on execution state changes.
- Event source:
aws.lambda, detail-type:Durable Execution Status Change.
Lambda Versions for Safe Deployments
- Use Lambda versions to ensure replay always happens on the same code version that started the execution.
- Prevents inconsistencies from code changes during long-running workflows.
- Critical for production deployments where executions may be suspended for days or weeks.
Lambda Durable Functions vs Step Functions
| Feature | Lambda Durable Functions | AWS Step Functions |
|---|---|---|
| Primary Focus | Application development within Lambda | Workflow orchestration across AWS services |
| Service Type | Runs within Lambda | Standalone, dedicated workflow service |
| Programming Model | Standard languages (Python, JS/TS, Java) | Amazon States Language (ASL) / Visual Designer |
| Development Tools | IDE, LLM agents, unit test frameworks, SAM, CDK | Visual Workflow Builder, CDK, Toolkit |
| AWS Integrations | Lambda event sources | 220+ AWS services, 16,000+ APIs natively |
| Max Execution Duration | Up to 1 year | Up to 1 year (Standard Workflows) |
| Pricing Model | Lambda compute + $8/million durable operations + data written + data retention | $25/million state transitions (Standard) or per-request (Express) |
| Wait Cost | No compute charges during waits (storage only) | No charges during waits |
| Visual Design | No — code-first approach | Yes — Workflow Studio visual designer |
| Stakeholder Visibility | Requires code reading | Visual graph for non-technical stakeholders |
| Infrastructure Management | Managed within Lambda (SDK updates needed) | Fully managed, zero maintenance |
| Best For | Distributed transactions, stateful app logic, AI workflows | Business process automation, multi-service orchestration |
When to Use Lambda Durable Functions
- Your team prefers writing workflows in standard programming languages.
- Application logic is primarily within Lambda functions (Lambda-centric).
- You want fine-grained control over execution state in code.
- Business logic and workflow are tightly coupled.
- You want to iterate quickly without switching between code and visual/JSON designers.
- You’re building AI agent orchestration that requires code-level control.
When to Use Step Functions
- You need visual workflow representation for cross-team visibility.
- You’re orchestrating multiple AWS services and want native integrations without custom SDK code.
- Non-technical stakeholders need to understand and validate workflow logic.
- You want fully managed, zero-maintenance infrastructure (no patching, runtime updates, SDK bundling).
- You need integration with 220+ AWS services without writing Lambda functions for each.
Hybrid Architectures
- Many applications benefit from using both services together.
- Common pattern: Use durable functions for application-level logic within Lambda, while Step Functions coordinates high-level workflows across multiple AWS services.
- Start with durable functions for Lambda-centric workflows; add Step Functions when multi-service orchestration is needed.
Lambda Durable Functions vs SQS + Lambda Pattern
| Aspect | Lambda Durable Functions | SQS + Lambda |
|---|---|---|
| State Management | Automatic via SDK checkpoints | Manual (DynamoDB, S3, or message attributes) |
| Error Handling | Built-in retries, automatic recovery | Dead-letter queues, manual retry logic |
| Workflow Visibility | Execution history in Lambda console | CloudWatch logs, custom tracing |
| Long Waits | Native wait up to 1 year, no compute cost | SQS delay (max 15 min), needs workarounds |
| Ordering | Sequential by default, parallel when needed | FIFO queues or custom ordering |
| Code Complexity | Single function, sequential code | Multiple functions, queue config, DLQ setup |
| Idempotency | Built-in via execution names | Must implement manually |
| Best For | Multi-step workflows, long-running processes | Decoupled event-driven processing, high throughput message processing |
Use Cases
Saga Pattern (Distributed Transactions)
- Coordinate payments, inventory, and shipping across multiple services with automatic rollback on failures.
- Each step is checkpointed — if a later step fails, compensating actions can be triggered for earlier steps.
- Example: Order processing → Payment authorization → Inventory allocation → Fulfillment, with compensation logic.
Human Approval Workflows
- Suspend execution waiting for human decisions (loan approvals, expense reports, content moderation).
- Use callbacks to pause for days or weeks without compute charges.
- External approval systems call the Lambda API to resume execution with approval/rejection results.
Fan-Out / Fan-In
- Use
map()to process a collection of items concurrently (e.g., batch image processing, parallel API calls). - Use
parallel()for different independent tasks that must all complete before proceeding. - Results are automatically collected and available after all concurrent operations complete.
Long-Running Processes
- Employee onboarding workflows spanning days or weeks (account creation → training assignments → equipment provisioning → check-ins).
- Insurance claim processing with document analysis, human review (7+ days), and payment processing.
- Compliance workflows with scheduled checks and waiting periods.
AI Agent Orchestration
- Chain multiple LLM calls with intermediate processing, human feedback loops, and tool use.
- Build multi-agent workflows where agents collaborate asynchronously.
- Integrate with Amazon Bedrock for AI-powered analysis steps within durable workflows.
- Handle long-running AI tasks (model training jobs, batch inference) with wait-and-resume patterns.
Polling and Condition-Based Workflows
- Poll external APIs or systems until a condition is met (e.g., payment settlement, third-party processing).
- Use
wait_for_condition()to efficiently check conditions at intervals without continuous compute.
Pricing
- Pay only for active compute: During wait operations, on-demand functions suspend and do not incur duration charges.
- Standard Lambda charges apply: Requests ($0.20/million) and compute duration (per GB-second) for active execution time, including sub-invocations from replays.
- Durable Operations: $8.00 per million operations (start execution, complete step, create wait, etc.).
- Data Written: $0.25 per GB of data written by durable operations (step results, invocation payloads).
- Data Retention: $0.15 per GB-month for data stored during execution and after completion (configurable 1–90 days, default 14 days, prorated).
- Free Tier: Standard Lambda free tier (1M requests + 400,000 GB-seconds) applies to the compute portion.
Pricing Example
- 1 million claims processed/month, each with: 30s analysis step + 7-day human review wait + 2s payment step.
- Compute: ~$421 (32M GB-seconds at 1GB memory).
- Durable Operations: $32 (4M operations — 1 start + 2 steps + 1 wait per execution).
- Data Written: $26 (104GB at $0.25/GB).
- Data Retention: ~$11 (during wait + 14-day post-completion retention).
- Total: ~$490/month for 1M executions with 7-day waits — no compute charges during the wait period.
Limitations
- Immutable configuration: Durable execution can only be enabled at function creation time — cannot be added to or removed from existing functions.
- Language support: Currently supports Python (3.13/3.14), JavaScript/TypeScript (Node.js 22/24), and Java. No support for Go, .NET, or Ruby as of mid-2026.
- Determinism requirement: Code between durable operations must be deterministic — no random values, timestamps, or non-deterministic API calls outside of steps.
- SDK dependency: Requires bundling the open-source Durable Execution SDK with your function code and managing SDK version updates.
- Max execution timeout: 31,622,400 seconds (~1 year). Executions exceeding this are terminated.
- Retention period: Execution history retained 1–90 days after completion (default 14 days).
- State size: Large state objects increase storage costs and can impact replay performance. Keep state minimal.
- Replay overhead: On resume, the entire handler replays from the beginning (skipping completed steps). Complex workflows with many steps incur replay compute costs.
- No visual designer: Unlike Step Functions, there is no graphical workflow builder — code-only approach.
- Cold starts: Each sub-invocation (resume) is subject to normal Lambda cold start behavior.
Supported Runtimes and Availability
- Languages: Python 3.13/3.14, Node.js 22/24 (JavaScript/TypeScript), Java (bundled SDK).
- Regions: Available in ~31 AWS Regions as of mid-2026.
- SDK: Open source — Python SDK, JavaScript/TypeScript SDK.
- IaC Support: AWS CloudFormation, AWS SAM, AWS CDK.
- Testing: Local testing SDK available (pytest integration) + AWS SAM CLI for integration testing.
AWS Certification Exam Relevance
DVA-C02 (Developer Associate)
- Understand when to use Durable Functions vs Step Functions vs SQS+Lambda.
- Know the checkpoint/replay mechanism and determinism requirements.
- Understand durable operations: steps, waits, callbacks, parallel, map.
- Know that durable execution must be enabled at creation time.
- Understand idempotency via execution names.
SAA-C03 (Solutions Architect Associate)
- Architecture decisions: choosing the right orchestration service for workflow requirements.
- Cost optimization: no compute charges during waits vs Step Functions pricing model.
- Use case mapping: saga pattern, approval workflows, long-running processes.
- Hybrid architectures: combining Durable Functions with Step Functions.
Practice Questions
Question 1
A company needs to build an order processing workflow that coordinates payment authorization, inventory allocation, and shipping across three microservices. The workflow must automatically roll back completed steps if a later step fails. The development team prefers writing workflow logic in Python rather than using a visual designer. Which solution meets these requirements with the LEAST operational overhead?
- AWS Step Functions with Lambda tasks and error handling states
- AWS Lambda durable functions with steps and compensation logic
- Amazon SQS queues between Lambda functions with DynamoDB for state tracking
- Amazon EventBridge with Lambda targets and Step Functions for rollback
Show Answer
Answer: B –
Lambda durable functions provide automatic state management, built-in retries, and a code-first approach in Python. The saga pattern with compensation logic can be implemented as sequential code with steps and error handling, meeting the requirement for Python-based workflow logic with minimal operational overhead.
Question 2
A healthcare company is building a patient referral system where a referral is submitted, requires physician approval (which may take up to 2 weeks), and then triggers appointment scheduling. The solution must minimize costs during the waiting period. Which approach is MOST cost-effective?
- AWS Step Functions Standard Workflow with a Wait state
- Lambda function polling DynamoDB every hour using EventBridge Scheduler
- AWS Lambda durable functions with a callback that suspends execution until approval
- Amazon SQS with a delay queue and Lambda consumer
Show Answer
Answer: C –
Lambda durable functions with callbacks suspend execution without incurring compute charges during the wait. The function resumes only when the physician approval triggers the callback API. This is the most cost-effective approach as there are no compute charges during the 2-week wait — only minimal data retention costs. Step Functions Standard Workflows also don’t charge during waits, but durable functions eliminate the per-state-transition cost for simple workflows.
Question 3
A solutions architect is designing a workflow that coordinates image processing across 10 AWS services including S3, Rekognition, DynamoDB, SNS, and SQS. The workflow needs to be understood by non-technical business stakeholders and must require minimal custom code. Which service is MOST appropriate?
- AWS Lambda durable functions with parallel and map operations
- AWS Step Functions with native service integrations
- Amazon EventBridge Pipes connecting the services
- AWS Lambda durable functions with AWS SDK calls in steps
Show Answer
Answer: B –
AWS Step Functions provides native integrations with 220+ AWS services without requiring custom Lambda code, and offers a visual workflow designer that non-technical stakeholders can understand. Lambda durable functions would require writing SDK calls for each service integration and doesn’t provide a visual representation.
Question 4
A developer is implementing a Lambda durable function that processes financial transactions. During testing, the function occasionally produces different results when replayed. What is the MOST likely cause?
- The function’s memory configuration is too low for replay operations
- The function contains non-deterministic code (random values, timestamps) outside of durable steps
- The ExecutionTimeout is configured incorrectly
- The function is using an unsupported runtime version
Show Answer
Answer: B –
Lambda durable functions use a replay mechanism that re-executes code from the beginning on resume. Code between durable operations must be deterministic — any non-deterministic operations (random number generation, current timestamps, external API calls) must be wrapped inside context.step() to be checkpointed and skipped during replay.
Question 5
A company wants to add durable execution capabilities to their existing production Lambda function that processes insurance claims. The function currently runs on Python 3.13 and handles 500,000 invocations per day. What should the developer do?
- Update the function configuration to enable DurableConfig with the appropriate ExecutionTimeout
- Create a new Lambda function with durable execution enabled, migrate the code, and redirect traffic
- Add the Durable Execution SDK to the existing function and use the @durable_execution decorator
- Enable durable execution on the existing function using the UpdateFunctionConfiguration API
Show Answer
Answer: B –
Durable execution can only be enabled at function creation time — it cannot be added to or modified on existing Lambda functions. The developer must create a new function with durable execution enabled in the DurableConfig, migrate the code to use the Durable Execution SDK, and redirect traffic to the new function.
Frequently Asked Questions
What are AWS Lambda Durable Functions?
Lambda Durable Functions let you build multi-step stateful workflows directly in Lambda code. They automatically checkpoint state, can wait for up to one year for external events, and you only pay for active compute time — not idle waiting.
How do Durable Functions differ from Step Functions?
Durable Functions define workflows in code (Python/Node.js) with inline orchestration logic. Step Functions use a visual designer with JSON/YAML state machine definitions. Use Durable Functions for code-first teams; Step Functions for visual workflows with 200+ service integrations.
Do Durable Functions charge for wait time?
No. Unlike Step Functions which charge per state transition including waits, Durable Functions only charge for active compute. Waiting for a human approval or external event costs nothing beyond state storage.

