Start Debugging

AWS Lambda unterstützt .NET 10: Was Sie prüfen sollten, bevor Sie die Laufzeit umschalten

AWS Lambda unterstützt jetzt .NET 10, aber das Laufzeit-Upgrade ist nicht der schwierige Teil. Hier ist eine praktische Checkliste, die Cold Starts, Trimming, Native AOT und Deployment-Form abdeckt.

Die Unterstützung von AWS Lambda für .NET 10 taucht heute in Community-Kanälen auf, und es ist die Art von Änderung, die “fertig” aussieht, bis Sie auf Cold Starts, Trimming oder eine native Abhängigkeit in der Produktion stoßen.

Quelldiskussion: r/dotnet thread

Laufzeit-Unterstützung ist der einfache Teil; Ihre Deployment-Form ist der schwierige Teil

Eine Lambda von .NET 8/9 auf .NET 10 zu verschieben ist nicht nur eine Target-Framework-Anhebung. Die ausgewählte Laufzeit treibt:

Wenn Sie .NET 10 primär aus Leistungsgründen wollen, gehen Sie nicht davon aus, dass das Lambda-Laufzeit-Upgrade der Gewinn ist. Messen Sie Cold Starts mit Ihrem echten Handler, echten Abhängigkeiten, echten Umgebungsvariablen und echten Speichereinstellungen.

Ein minimaler .NET 10 Lambda-Handler, den Sie benchmarken können

Hier ist ein kleiner Handler, der leicht zu benchmarken und leicht mit Trimming zu brechen ist. Er zeigt auch ein Muster, das mir gefällt: Den Handler winzig halten, alles andere hinter DI oder explizite Codepfade schieben.

using Amazon.Lambda.Core;

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

public sealed class Function
{
    // Use a static instance to avoid per-invocation allocations.
    private static readonly HttpClient Http = new();

    public async Task<Response> FunctionHandler(Request request, ILambdaContext context)
    {
        // Touch something typical: logging + a small outbound call.
        context.Logger.LogLine($"RequestId={context.AwsRequestId} Name={request.Name}");

        var status = await Http.GetStringAsync("https://example.com/health");
        return new Response($"Hello {request.Name}. Upstream says: {status.Length} chars");
    }
}

public sealed record Request(string Name);
public sealed record Response(string Message);

Jetzt veröffentlichen Sie auf eine Weise, die Ihrem beabsichtigten Produktionspfad entspricht. Wenn Sie Trimming testen, machen Sie es explizit:

dotnet publish -c Release -f net10.0 -p:PublishTrimmed=true

Wenn Sie planen, mit Native AOT in .NET 10 weiter zu gehen, veröffentlichen Sie auch so und validieren Sie, dass Ihre Abhängigkeiten tatsächlich AOT-kompatibel sind (Serialisierung, Reflection, native Libs).

Eine praktische Checkliste für das erste .NET 10 Rollout

Wenn Sie einen sicheren ersten Schritt wollen, aktualisieren Sie die Laufzeit auf .NET 10 und behalten Sie Ihre Deployment-Strategie bei. Sobald sie stabil ist, experimentieren Sie mit Trimming oder AOT in einem Branch und liefern Sie es nur aus, wenn Ihr Monitoring sagt, dass es langweilig ist.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Zurück