aws-samples / aws-samples/serverless-patterns
New pattern submission - cdk-dotnet-durablefunction-imageprocessing
- Dominant language
- Python
- Stars
- 1.8k
- Forks
- 1.1k
- Avg merge
- 7d 14h
- Merged PRs (30d)
- 6
Description
# New Pattern Submission — cdk-dotnet-durablefunction-imageprocessing
## Pattern Details
- **Title:** Lambda Durable Function — Image Processing Pipeline with Fan-Out/Fan-In (.NET)
- **Description:** A durable function that processes an uploaded image in parallel (thumbnail, watermark, metadata extraction), then writes aggregated results to DynamoDB.
- **Language:** .NET (C#)
- **Framework:** CDK
- **Level:** 300
- **Services:** AWS Lambda, Amazon S3, Amazon DynamoDB
## How It Works
This pattern deploys a Lambda durable function triggered by S3 uploads. When an image is uploaded, the function fans out to three parallel branches: generate a thumbnail, apply a watermark, and extract metadata.
All three branches execute concurrently using ParallelAsync and are independently checkpointed. Once all complete, the function aggregates results and writes them to DynamoDB.
This demonstrates the fan-out/fan-in pattern with durable functions for parallel image processing, with built-in resilience — if any branch fails, only that branch retries on replay.
## GitHub PR for template:
https://github.com/aws-samples/serverless-patterns/pull/3238
## Author
- **Name:** Doug Perkes
- **Bio:** Senior Solutions Architect at AWS, focused on .NET and serverless.
- **LinkedIn:** dougperkes
Contributor guide
Research direction
Start by reviewing the linked GitHub PR #3238 against this submission's C#, CDK, Lambda, S3, and DynamoDB details. Confirm that it implements the described image-processing fan-out/fan-in pattern; done means the linked pattern is reviewed and accepted.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, csharp
- Domain
- backend, cloud
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100