Project Templates¶
MinimalLambda ships dotnet new templates for starting AWS Lambda projects with the same layout and deployment defaults used by AWS Lambda tooling.
Install templates¶
To update later, run the install command again. To remove the templates:
Basic Lambda¶
Create a standard MinimalLambda function and an integration test project:
When run from a parent folder, the template creates a new MyLambda folder:
MyLambda/
src/MyLambda/
MyLambda.csproj
Program.cs
aws-lambda-tools-defaults.json
README.md
test/MyLambda.Tests/
MyLambda.Tests.csproj
LambdaTests.cs
Run tests:
To add a function to an existing repository or solution folder, generate into the current directory:
dotnet new mlambda -n MyLambda -o .
dotnet sln add src/MyLambda/MyLambda.csproj
dotnet sln add test/MyLambda.Tests/MyLambda.Tests.csproj
This creates src/MyLambda and test/MyLambda.Tests beside your existing solution instead of nesting them under a new MyLambda folder.
Native AOT Lambda¶
Create a Native AOT-ready MinimalLambda function:
Use -o . when adding Native AOT to an existing repository or solution folder:
dotnet new mlambda-aot -n MyAotLambda -o .
dotnet sln add src/MyAotLambda/MyAotLambda.csproj
dotnet sln add test/MyAotLambda.Tests/MyAotLambda.Tests.csproj
The AOT template includes a JsonSerializerContext, PublishAot, TrimMode=partial, and aws-lambda-tools-defaults.json settings for AWS Lambda deployment.
Run tests:
Available templates¶
| Template | Short name | Use when |
|---|---|---|
| Standard Lambda | mlambda |
Starting a standard MinimalLambda function |
| Native AOT Lambda | mlambda-aot |
Starting a Native AOT MinimalLambda function |
AWS profile and region¶
Both templates accept --profile and --region. These values replace placeholders in aws-lambda-tools-defaults.json.
Central Package Management¶
The templates emit versioned PackageReference items, matching built-in .NET and AWS Lambda template behavior. In a repository that uses Central Package Management, move those versions into Directory.Packages.props after generation:
<ItemGroup>
<PackageVersion Include="MinimalLambda" Version="2.6.0-beta.1" />
<PackageVersion Include="MinimalLambda.Testing" Version="2.6.0-beta.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.6.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
Then remove Version="..." from generated PackageReference items.
Deploy¶
Install the AWS Lambda .NET CLI tool if needed:
Deploy from the generated project directory:
If you generated into an existing repository with -o ., use cd src/MyLambda instead.