{"id":48501626,"url":"https://github.com/aws/aws-durable-execution-sdk-java","last_synced_at":"2026-04-07T15:01:25.952Z","repository":{"id":340836041,"uuid":"1124528661","full_name":"aws/aws-durable-execution-sdk-java","owner":"aws","description":"Java SDK for AWS Lambda Durable Functions","archived":false,"fork":false,"pushed_at":"2026-04-06T21:39:38.000Z","size":14206,"stargazers_count":26,"open_issues_count":28,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-06T23:23:01.960Z","etag":null,"topics":["aws","durable-execution","java","lambda","serverless"],"latest_commit_sha":null,"homepage":"https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aws.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-29T07:06:31.000Z","updated_at":"2026-04-06T21:37:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aws/aws-durable-execution-sdk-java","commit_stats":null,"previous_names":["aws/aws-durable-execution-sdk-java"],"tags_count":3,"template":false,"template_full_name":"amazon-archives/__template_Apache-2.0","purl":"pkg:github/aws/aws-durable-execution-sdk-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Faws-durable-execution-sdk-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Faws-durable-execution-sdk-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Faws-durable-execution-sdk-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Faws-durable-execution-sdk-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aws","download_url":"https://codeload.github.com/aws/aws-durable-execution-sdk-java/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aws%2Faws-durable-execution-sdk-java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31516839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","durable-execution","java","lambda","serverless"],"created_at":"2026-04-07T15:00:54.406Z","updated_at":"2026-04-07T15:01:25.915Z","avatar_url":"https://github.com/aws.png","language":"Java","readme":"# AWS Lambda Durable Execution SDK for Java\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Java](https://img.shields.io/badge/java-%3E%3D17-brightgreen)](https://openjdk.org/)\n[![Build](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/build.yml/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/build.yml)\n[![Javadoc](https://img.shields.io/badge/JavaDoc-Online-green)](https://aws.github.io/aws-durable-execution-sdk-java/javadoc/)\n[![Maven](https://badges.mvnrepository.com/badge/software.amazon.lambda.durable/aws-durable-execution-sdk-java/badge.svg?label=Maven)](https://mvnrepository.com/artifact/software.amazon.lambda.durable/aws-durable-execution-sdk-java)\n[![Coverage](https://raw.githubusercontent.com/aws/aws-durable-execution-sdk-java/refs/heads/docs/coverage/jacoco.svg)](https://aws.github.io/aws-durable-execution-sdk-java/coverage/)\n[![E2E Tests](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/e2e-tests.yml/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/e2e-tests.yml)\n[![CodeQL](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/github-code-scanning/codeql)\n[![Spotless](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/check-spotless.yml/badge.svg)](https://github.com/aws/aws-durable-execution-sdk-java/actions/workflows/check-spotless.yml)\n[![Roadmap](https://raw.githubusercontent.com/aws/aws-durable-execution-sdk-java/refs/heads/docs/milestone/badge.svg)](https://github.com/orgs/aws/projects/346/views/6)\n\nBuild resilient, long-running AWS Lambda functions that automatically checkpoint progress and resume after failures. Durable functions can run for up to one year while you pay only for active compute time.\n\n## Key Features\n\n- **Automatic Checkpointing** – Progress is saved after each step; failures resume from the last checkpoint\n- **Cost-Effective Waits** – Suspend execution for minutes, hours, or days without compute charges\n- **Configurable Retries** – Built-in retry strategies with exponential backoff and jitter\n- **Replay Safety** – Functions deterministically resume from checkpoints after interruptions\n- **Type Safety** – Full generic type support for step results\n- **Data-Driven Concurrency** – Apply a function across a collection with `map()`, with per-item error isolation and configurable completion criteria\n\n## How It Works\n\nYour durable function extends `DurableHandler\u003cI, O\u003e` and implements `handleRequest(I input, DurableContext ctx)`. The `DurableContext` is your interface to durable operations:\n\n- `ctx.step()` – Execute code and checkpoint the result\n- `ctx.wait()` – Suspend execution without compute charges\n- `ctx.createCallback()` – Wait for external events (approvals, webhooks)\n- `ctx.waitForCallback()` – Simplify callback handling by combining callback creation and submission in one operation\n- `ctx.invoke()` – Invoke another Lambda function and wait for the result\n- `ctx.runInChildContext()` – Run an isolated child context with its own checkpoint log\n- `ctx.map()` – Apply a function to each item in a collection concurrently\n- `ctx.parallel()` - Run multiple operations concurrently with optional concurrency control\n- `ctx.waitForCondition()` – Poll a condition function until it signals done, suspending between polls\n\n## Quick Start\n\n### Installation\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003esoftware.amazon.lambda.durable\u003c/groupId\u003e\n    \u003cartifactId\u003eaws-durable-execution-sdk-java\u003c/artifactId\u003e\n    \u003cversion\u003eVERSION\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Your First Durable Function\n\n```java\npublic class OrderProcessor extends DurableHandler\u003cOrder, OrderResult\u003e {\n\n    @Override\n    protected OrderResult handleRequest(Order order, DurableContext ctx) {\n        // Step 1: Validate and reserve inventory\n        var reservation = ctx.step(\"reserve-inventory\", Reservation.class, \n            stepCtx -\u003e inventoryService.reserve(order.getItems()));\n\n        // Step 2: Process payment\n        var payment = ctx.step(\"process-payment\", Payment.class,\n            stepCtx -\u003e paymentService.charge(order.getPaymentMethod(), order.getTotal()));\n\n        // Wait for warehouse processing (no compute charges)\n        ctx.wait(null, Duration.ofHours(2));\n\n        // Step 3: Confirm shipment\n        var shipment = ctx.step(\"confirm-shipment\", Shipment.class,\n            stepCtx -\u003e shippingService.ship(reservation, order.getAddress()));\n\n        return new OrderResult(order.getId(), shipment.getTrackingNumber());\n    }\n}\n```\n\n## Deployment\n\nSee [examples/README.md](./examples/README.md) for complete instructions on local testing and running cloud integration tests.\n\nSee [Deploy and invoke Lambda durable functions with the AWS CLI](https://docs.aws.amazon.com/lambda/latest/dg/durable-getting-started-cli.html) for more information on deploying and invoking durable functions.\n\nSee [Deploy Lambda durable functions with Infrastructure as Code](https://docs.aws.amazon.com/lambda/latest/dg/durable-getting-started-iac.html) for more information on deploying durable functions using infrastructure-as-code.\n\n## Documentation\n\n- [\u003cu\u003eAWS Documentation\u003c/u\u003e](https://docs.aws.amazon.com/lambda/latest/dg/durable-functions.html) – Official AWS Lambda durable functions guide\n- [\u003cu\u003eBest Practices\u003c/u\u003e](https://docs.aws.amazon.com/lambda/latest/dg/durable-best-practices.html) – Patterns and recommendations\n- [\u003cu\u003eSDK Design\u003c/u\u003e](docs/design.md) – Details of SDK internal architecture\n\n**Core Operations**\n\n- [\u003cu\u003eSteps\u003c/u\u003e](docs/core/steps.md) – Execute code with automatic checkpointing and retry support\n- [\u003cu\u003eWait\u003c/u\u003e](docs/core/wait.md) - Pause execution without blocking Lambda resources\n- [\u003cu\u003eCallbacks\u003c/u\u003e](docs/core/callbacks.md) - Wait for external systems to respond\n- [\u003cu\u003eInvoke\u003c/u\u003e](docs/core/invoke.md) - Call other durable functions\n- [\u003cu\u003eChild Contexts\u003c/u\u003e](docs/core/child-contexts.md) - Organize complex workflows into isolated units\n- [\u003cu\u003eMap\u003c/u\u003e](docs/core/map.md) - Apply a function across a collection concurrently\n- [\u003cu\u003eParallel\u003c/u\u003e](docs/core/parallel.md) - Run multiple operations concurrently with optional concurrency control\n- [\u003cu\u003eWait for Condition\u003c/u\u003e](docs/core/wait-for-condition.md) - Poll a condition until it's met, with configurable backoff\n\n**Examples**\n\n- [\u003cu\u003eExamples\u003c/u\u003e](examples/README.md) - Working examples of each operation\n\n**Advanced Topics**\n\n- [\u003cu\u003eConfiguration\u003c/u\u003e](docs/advanced/configuration.md) - Customize SDK behaviour\n- [\u003cu\u003eError Handling\u003c/u\u003e](docs/advanced/error-handling.md) - SDK exceptions for handling failures\n- [\u003cu\u003eLogging\u003c/u\u003e](docs/advanced/logging.md) - How to use DurableLogger\n- [\u003cu\u003eTesting\u003c/u\u003e](docs/advanced/testing.md) - Utilities for local development and cloud-based integration testing\n\n## Related SDKs\n\n- [JavaScript/TypeScript SDK](https://github.com/aws/aws-durable-execution-sdk-js)\n- [Python SDK](https://github.com/aws/aws-durable-execution-sdk-python)\n\n## Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for information about reporting security issues.\n\n## License\n\nThis project is licensed under the Apache-2.0 License. See [LICENSE](LICENSE) for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws%2Faws-durable-execution-sdk-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faws%2Faws-durable-execution-sdk-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faws%2Faws-durable-execution-sdk-java/lists"}