AwsLambda.Host.Envelopes.Sqs
1.0.0-beta.1
dotnet add package AwsLambda.Host.Envelopes.Sqs --version 1.0.0-beta.1
NuGet\Install-Package AwsLambda.Host.Envelopes.Sqs -Version 1.0.0-beta.1
<PackageReference Include="AwsLambda.Host.Envelopes.Sqs" Version="1.0.0-beta.1" />
<PackageVersion Include="AwsLambda.Host.Envelopes.Sqs" Version="1.0.0-beta.1" />
<PackageReference Include="AwsLambda.Host.Envelopes.Sqs" />
paket add AwsLambda.Host.Envelopes.Sqs --version 1.0.0-beta.1
#r "nuget: AwsLambda.Host.Envelopes.Sqs, 1.0.0-beta.1"
#:package AwsLambda.Host.Envelopes.Sqs@1.0.0-beta.1
#addin nuget:?package=AwsLambda.Host.Envelopes.Sqs&version=1.0.0-beta.1&prerelease
#tool nuget:?package=AwsLambda.Host.Envelopes.Sqs&version=1.0.0-beta.1&prerelease
AwsLambda.Host.Envelopes.Sqs
Strongly-typed SQS event handling for the AwsLambda.Host framework.
Overview
This package provides SqsEnvelope<T>, which extends the base SQSEvent
class with a generic Records collection that deserializes message bodies into strongly-typed
objects. Instead of manually parsing JSON from record.Body, you access deserialized payloads
directly via record.BodyContent.
| Envelope Class | Base Class | Use Case |
|---|---|---|
SqsEnvelope<T> |
SQSEvent |
SQS event with deserialized message bodies |
Quick Start
Define your message type and handler:
using AwsLambda.Host;
using AwsLambda.Host.Envelopes.Sqs;
// Your message payload - will be deserialized from SQS message body
record Message(string Name);
var builder = LambdaApplication.CreateBuilder();
var lambda = builder.Build();
// SqsEnvelope<Message> provides access to the SQS event and deserialized Message payloads
lambda.MapHandler(([Event] SqsEnvelope<Message> envelope, ILogger<Program> logger) =>
{
foreach (var record in envelope.Records)
{
logger.LogInformation("Message: {Name}", record.BodyContent?.Name);
}
});
await lambda.RunAsync();
record Message(string Name);
AOT Support
When using .NET Native AOT, register both the envelope and payload types in your
JsonSerializerContext:
[JsonSerializable(typeof(SqsEnvelope<Message>))]
[JsonSerializable(typeof(Message))]
internal partial class SerializerContext : JsonSerializerContext;
Register the serializer and configure envelope options to use the context:
builder.Services.AddLambdaSerializerWithContext<SerializerContext>();
builder.Services.ConfigureEnvelopeOptions(options =>
{
options.JsonOptions.TypeInfoResolver = SerializerContext.Default;
});
Note: The context must be registered in both places because the Lambda event and payload are deserialized at different steps: the Lambda serializer deserializes the raw SQS event, and the envelope options deserialize the message bodies into your payload type.
See the example project for a complete working example.
Related Resources
- Amazon.Lambda.SQSEvents – Base SQS event types
- AwsLambda.Host – Core framework documentation
License
This project is licensed under the MIT License. See LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Amazon.Lambda.Core (>= 2.7.1)
- Amazon.Lambda.SQSEvents (>= 2.2.0)
- AwsLambda.Host.Abstractions (>= 1.0.0-beta.1)
-
net8.0
- Amazon.Lambda.Core (>= 2.7.1)
- Amazon.Lambda.SQSEvents (>= 2.2.0)
- AwsLambda.Host.Abstractions (>= 1.0.0-beta.1)
-
net9.0
- Amazon.Lambda.Core (>= 2.7.1)
- Amazon.Lambda.SQSEvents (>= 2.2.0)
- AwsLambda.Host.Abstractions (>= 1.0.0-beta.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-beta.1 | 83 | 11/15/2025 |