Skip to content

Add lambda.DurableFunction blueprint (vs2026)#2445

Draft
GarrettBeatty wants to merge 1 commit into
durabletesting2from
gcbeatty/durable-function-blueprint
Draft

Add lambda.DurableFunction blueprint (vs2026)#2445
GarrettBeatty wants to merge 1 commit into
durabletesting2from
gcbeatty/durable-function-blueprint

Conversation

@GarrettBeatty

Copy link
Copy Markdown
Contributor

Summary

Adds a new dotnet new template — lambda.DurableFunction — under Blueprints/BlueprintDefinitions/vs2026 that scaffolds a Lambda durable execution workflow.

  • Uses the Annotations class-library programming model ([LambdaFunction] + [DurableExecution]) on the managed dotnet10 runtime (durable execution requires dotnet10).
  • Sample ProcessOrder workflow demonstrates the core durable primitives:
    • StepAsync — checkpointed step
    • StepAsync + RetryStrategy.Exponential with StepSemantics.AtMostOncePerRetry
    • WaitAsync — suspend timer (no compute charge while suspended)
    • RunInChildContextAsync — grouping related steps
  • Generated serverless.template includes DurableConfig and the AWSLambdaBasicDurableExecutionRolePolicy managed policy (kept in sync by the source generator).
  • Includes a test project that drives the workflow locally via Amazon.Lambda.DurableExecution.Testing (no AWS resources needed).
  • Registers the template in Blueprints/README.md.

vs2026 only for now (matches the existing vs2026 layout convention).

Testing

Validated locally (durable preview packages packed into a local NuGet feed):

  • dotnet build of the function project succeeds on net10.0; source generator emits Function_ProcessOrder_Generated::ProcessOrder, matching the handler in serverless.template.
  • dotnet test — both unit tests pass, no warnings.
  • dotnet new lambda.DurableFunction --name <X> instantiates correctly and the shortName resolves.

Notes

  • Amazon.Lambda.DurableExecution.Testing is not yet published to NuGet; the template references 0.0.1-preview. The test project will restore once that package is published (or via a local feed in the meantime).
  • Blueprint-only change — no .autover change file needed (autover tracks Libraries/src projects only).

Adds a new 'dotnet new' template (shortName: lambda.DurableFunction) under
Blueprints/BlueprintDefinitions/vs2026 that scaffolds a Lambda durable
execution workflow using the Annotations class-library programming model on
the managed dotnet10 runtime.

The sample workflow demonstrates the core durable primitives: StepAsync, a
step with an exponential RetryStrategy and AtMostOncePerRetry semantics,
WaitAsync (suspend timer), and RunInChildContextAsync. The generated
serverless.template includes DurableConfig and the
AWSLambdaBasicDurableExecutionRolePolicy managed policy. A test project drives
the workflow locally via Amazon.Lambda.DurableExecution.Testing.

Also registers the template in Blueprints/README.md.
@GarrettBeatty GarrettBeatty added the Release Not Needed Add this label if a PR does not need to be released. label Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release Not Needed Add this label if a PR does not need to be released.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant