feat(conformance): add map suite (#555)
- feat(conformance): add map suite (13 handlers, 9-4 declared NOT_IMPLEMENTED)
- 13 map handlers ported; MapEmpty (9-4) intentionally withheld: known SDK divergence (empty-items map emits InvocationCompleted without ContextStarted), declared NotImplemented with reason instead of shipping a failing handler
- 6 additional gaps (9-2, 9-6, 9-13, 9-14, 9-19, 9-20) formalized as NotImplemented declarations (Java SDK API limitations), attached to MapBasic’s TestingMetadata since CloudFormation rejects unknown top-level template sections
- CI matrix extended to include map (9 suites total)
Validated live: 13 PASSED, 7 NOT_IMPLEMENTED, 0 FAILED, 0 UNCOVERED
- ci: reuse a stable per-suite stack, skip cleanup
- –name conformance-java- with no run-id suffix: each run updates the same CloudFormation stack in place (faster, warm resources)
- –no-cleanup: keep the stack between runs
- serialize the workflow globally (queue, no cancel) since concurrent runs would now contend on the same stacks – mirrors e2e-tests.yml
ci: drop 9-4 NotImplemented declaration (handler coming in a separate CR)
chore: load templates via direct CfnLoader instantiation
CfnLoader extends SafeLoader, so semantics are unchanged; avoids the yaml.load API that untrusted-data scanners flag.
- chore: factor template loading into _safe_load_cfn helper
Aligns with aws-durable-execution-sdk-js#750 so both repos’ scripts stay line-for-line consistent.
- chore: ignore sam build output dir; drop accidentally committed artifacts
The conformance runner invokes ‘sam build –build-dir build/‘ relative to its CWD; running it from this directory leaves large local artifacts under build/.
Co-authored-by: Alex Wang wangyb@amazon.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
AWS Lambda Durable Execution SDK for Java
Build 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.
Key Features
map(), with per-item error isolation and configurable completion criteriaHow It Works
Your durable function extends
DurableHandler<I, O>and implementshandleRequest(I input, DurableContext ctx). TheDurableContextis your interface to durable operations:ctx.step()– Execute code and checkpoint the resultctx.wait()– Suspend execution without compute chargesctx.createCallback()– Wait for external events (approvals, webhooks)ctx.waitForCallback()– Simplify callback handling by combining callback creation and submission in one operationctx.invoke()– Invoke another Lambda function, durable or standard, and wait for the resultctx.runInChildContext()– Run an isolated child context with its own checkpoint logctx.map()– Apply a function to each item in a collection concurrentlyctx.parallel()- Run multiple operations concurrently with optional concurrency controlctx.waitForCondition()– Poll a condition function until it signals done, suspending between pollsQuick Start
Installation
Your First Durable Function
Deployment
See examples/README.md for complete instructions on local testing and running cloud integration tests.
See Deploy and invoke Lambda durable functions with the AWS CLI for more information on deploying and invoking durable functions.
See Deploy Lambda durable functions with Infrastructure as Code for more information on deploying durable functions using infrastructure-as-code.
Documentation
Core Operations
Examples
Advanced Topics
v1.2.1Related SDKs
Security
See CONTRIBUTING for information about reporting security issues.
License
This project is licensed under the Apache-2.0 License. See LICENSE for details.