// open_source
GOA
High-performance .NET framework for AWS Lambda with native AOT support, lightweight service clients, and minimal cold start overhead
View on GitHubGoa is my high-performance, minimal-overhead .NET framework for building AWS Lambda functions with native AOT support. Goa provides lightweight clients for AWS services and streamlined function development patterns that replace the heavyweight AWS SDK.
Motivation
The AWS SDK for .NET carries significant overhead that impacts Lambda function performance. Goa addresses this by providing lean, purpose-built packages:
- Modern .NET: Built with HttpClientFactory, native AOT support, dependency injection, and source generators
- Performance: Massively reduced memory allocations and cold start times through minimal dependencies
- Security: Exposes only essential operations, preventing reconfiguration issues
Key Features
- Native ahead-of-time (AOT) compilation support
- Minimal dependencies with lean implementations
- Full C# type safety with source generators
- Multi-target support for .NET 9.0 and .NET 10.0
- Project templates for rapid scaffolding
Getting Started
Install the project templates and scaffold a new function:
dotnet new install Goa.Templates
dotnet new goa.apigw -n "MyApiFunction"
cd MyApiFunction
dotnet buildTemplates are available for API Gateway, DynamoDB streams, EventBridge, Kinesis, S3, and SQS triggers.
Components
| Package | Description |
|---|---|
| Goa.Core | Core utilities and extensions |
| Goa.Functions.Core | Runtime and bootstrapping functionality |
| Goa.Functions.ApiGateway | API Gateway integration (V1/V2 payload support) |
| Goa.Functions.Dynamo | DynamoDB stream processing |
| Goa.Functions.EventBridge | EventBridge event processing |
| Goa.Functions.Kinesis | Kinesis stream processing |
| Goa.Functions.S3 | S3 event processing |
| Goa.Functions.Sqs | SQS message processing |
| Goa.Clients.Dynamo | DynamoDB client with source generator support |
| Goa.Clients.EventBridge | EventBridge client for event routing |
| Goa.Clients.Lambda | Lambda client for function invocation |
| Goa.Clients.S3 | S3 client for object storage |
| Goa.Clients.Sqs | SQS client for queue operations |
| Goa.Clients.SecretsManager | Secrets Manager client |
| Goa.Clients.ParameterStore | Systems Manager Parameter Store client |
| Goa.Templates | Project templates for rapid development |
All packages are available on NuGet.