-
Notifications
You must be signed in to change notification settings - Fork 494
Open
@Dreamescaper
Description
Describe the feature
It's the same feature request as #342 - to dispose function handler when Lambda service deletes the execution environment.
It was closed because there was no hook from lambda service at that time. But now there is - Lambda sends SIGTERM to runtime before reclaiming the environment.
Use Case
Any features which requires some cleanup.
Flushing logs and traces, closing DB connections, etc.
Proposed Solution
I have implemented it for my handlers via smth like that:
public abstract class AbstractLambdaHandler : IDisposable { private readonly PosixSignalRegistration sigTermRegistration; protected AbstractLambdaHandler() { // AWS Lambda service sends SIGTERM signal before killing lambda container, but // lambda-dotnet runtime does not handle it yet - https://github.com/aws/aws-lambda-dotnet/issues/342 . // Until it is implemented, we use custom signal registration to dispose lambda handler. sigTermRegistration = PosixSignalRegistration.Create(PosixSignal.SIGTERM, _ => { Logger?.LogDebug("SIGTERM signal received. Disposing Lambda Handler."); Dispose(); }); } public virtual void Dispose() { sigTermRegistration?.Dispose(); // Dispose other things. } }
It would be nice to have it provided by the runtime itself though.
Other Information
No response
Acknowledgements
- I may be able to implement this feature request
- This feature might incur a breaking change
AWS .NET SDK and/or Package version used
Amazon.Lambda.Core 2.7.1
Targeted .NET Platform
.NET 8
Operating System and version
AmazonLinux