aws / aws/aws-lambda-dotnet

Support IDisposable for Function Handlers

Aperta
#2,159 2 commenti 1 reazione 0 assegnatari Vedi su GitHub
feature-request module/lambda-client-lib needs-investigation p2
Lingua principale
C#
Stelle
1.7k
Fork
503
Merge medio
1g 5h
PR unite (30g)
18

Descrizione

### Describe the feature

It's the same feature request as https://github.com/aws/aws-lambda-dotnet/issues/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:
```csharp
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

- [x] 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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia esaminando il comportamento dell'handler di Amazon.Lambda.Core 2.7.1 e il ciclo di vita di SIGTERM descritto in questa issue, quindi confrontalo con la precedente issue 342. Il lavoro è completo quando il runtime fornisce un modo definito per effettuare il dispose dei function handler quando Lambda invia SIGTERM, inclusa la pulizia, ad esempio il flush dei log o la chiusura delle connessioni.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
aws, csharp
Ambito
backend, cloud
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.