![]() |
VOOZH | about |
dotnet add package MinimalLambda.Envelopes.Sns --version 2.6.0
NuGet\Install-Package MinimalLambda.Envelopes.Sns -Version 2.6.0
<PackageReference Include="MinimalLambda.Envelopes.Sns" Version="2.6.0" />
<PackageVersion Include="MinimalLambda.Envelopes.Sns" Version="2.6.0" />Directory.Packages.props
<PackageReference Include="MinimalLambda.Envelopes.Sns" />Project file
paket add MinimalLambda.Envelopes.Sns --version 2.6.0
#r "nuget: MinimalLambda.Envelopes.Sns, 2.6.0"
#:package MinimalLambda.Envelopes.Sns@2.6.0
#addin nuget:?package=MinimalLambda.Envelopes.Sns&version=2.6.0Install as a Cake Addin
#tool nuget:?package=MinimalLambda.Envelopes.Sns&version=2.6.0Install as a Cake Tool
Strongly-typed SNS event handling for the MinimalLambda framework.
This package provides SnsEnvelope<T>, which extends the base
SNSEvent
class with strongly-typed Records collection that deserializes message bodies into strongly-typed
objects. Instead of manually parsing JSON from record.Sns.Message, you access deserialized
payloads directly via record.Sns.MessageContent.
| Envelope Class | Base Class | Use Case |
|---|---|---|
SnsEnvelope<T> |
SNSEvent |
SNS event with deserialized message bodies |
Define your message type and handler:
using Amazon.Lambda.SNSEvents;
using MinimalLambda.Builder;
using MinimalLambda.Envelopes.Sns;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
var builder = LambdaApplication.CreateBuilder();
var lambda = builder.Build();
// SnsEnvelope<Message> provides access to the SNS event and deserialized Message payloads
lambda.MapHandler(
([FromEvent] SnsEnvelope<Message> envelope, ILogger<Program> logger) =>
{
foreach (var record in envelope.Records)
{
logger.LogInformation("Message: {Content}", record.Sns.MessageContent?.Content);
}
}
);
await lambda.RunAsync();
// Your message payload - will be deserialized from SNS message body
internal record Message(string Content);
To implement custom deserialization logic, extend SnsEnvelopeBase<T> and override the
ExtractPayload method:
// Example: Custom XML deserialization
public sealed class SnsXmlEnvelope<T> : SnsEnvelopeBase<T>
{
private static readonly XmlSerializer Serializer = new(typeof(T));
public override void ExtractPayload(EnvelopeOptions options)
{
foreach (var record in Records)
{
using var stringReader = new StringReader(record.Sns.Message);
using var xmlReader = XmlReader.Create(stringReader, options.XmlReaderSettings);
record.Sns.MessageContent = (T)Serializer.Deserialize(xmlReader)!;
}
}
}
This pattern allows you to support multiple serialization formats while maintaining the same envelope interface.
When using .NET Native AOT, register both the envelope and payload types in your
JsonSerializerContext:
[JsonSerializable(typeof(SnsEnvelope<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;
});
The context must be registered as the type resolver for both the envelope options and the Lambda serializer because the Lambda event and envelope payload are deserialized at different steps: the Lambda serializer deserializes the raw event, and the envelope options deserialize the envelope content into your payload type.
Additional packages in the minimal-lambda framework for abstractions, observability, and event source handling.
This project is licensed under the MIT License. See for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on MinimalLambda.Envelopes.Sns:
| Package | Downloads |
|---|---|
|
MinimalLambda.Envelopes.Sqs
Strongly-typed SQS event envelopes |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.6.0 | 100 | 6/12/2026 |
| 2.5.0 | 120 | 5/9/2026 |
| 2.4.0 | 130 | 4/17/2026 |
| 2.3.1 | 128 | 3/23/2026 |
| 2.3.0 | 120 | 3/21/2026 |
| 2.2.0 | 150 | 1/12/2026 |
| 2.2.0-beta.1 | 80 | 1/9/2026 |
| 2.1.1 | 219 | 12/22/2025 |
| 2.1.0-beta.6 | 128 | 12/20/2025 |
| 2.1.0-beta.5 | 158 | 12/19/2025 |
| 2.1.0-beta.4 | 171 | 12/19/2025 |
| 2.1.0-beta.3 | 171 | 12/19/2025 |
| 2.1.0-beta.2 | 173 | 12/19/2025 |
| 2.1.0-beta.1 | 245 | 12/19/2025 |
| 2.0.0 | 318 | 12/18/2025 |
| 2.0.0-beta.11 | 255 | 12/17/2025 |
| 2.0.0-beta.10 | 252 | 12/17/2025 |
| 2.0.0-beta.9 | 245 | 12/15/2025 |
| 2.0.0-beta.8 | 237 | 12/15/2025 |
| 2.0.0-beta.7 | 190 | 12/15/2025 |