Exceeded maximum allowed payload size
- Lingua principale
- C#
- Stelle
- 1.7k
- Fork
- 503
- Merge medio
- 1g 5h
- PR unite (30g)
- 18
Descrizione
### Describe the bug
Hi,
We have an ASP.NET Core Web API running, hosted in a Lambda function. The API uses Top Level Statements and the package [Amazon.Lambda.AspNetCoreServer.Hosting](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.AspNetCoreServer.Hosting).
The function acts as a Proxy Server which enables our API clients to access a lot of legacy SOAP services. In front of the Lambda function there is an API Gateway.
Some of the responses from the SOAP Services exceeds the Lambda response limit of 6MB. When this occurs the underlying Lambda runtime client receives an HTTP 413 error and [throws an exception](https://github.com/aws/aws-lambda-dotnet/blob/e24c52fa59db72bc83824020d267321a81410c07/Libraries/src/Amazon.Lambda.RuntimeSupport/Client/InternalClientAdapted.cs#L406) which crashes the whole application, because this happens during startup of the .net application.
I'm not sure if it is a bug or not. How can we handle those errors. In such cases the calling client application should also receive HTTP 413 and not 500.
### Regression Issue
- [ ] Select this option if this issue appears to be a regression.
### Expected Behavior
Application doesn't crash, exception can be handled and send back to the client.
### Current Behavior
When response size is greater than 6 MB, Lambda function receives an HTTP 413 error and crashes. The calling client receives a HTTP 500 error, probably because of the crashed application. The exception occurs during startup of the application:
`{"errorMessage":"Exceeded maximum allowed payload size (6291556 bytes).","errorType":"RequestEntityTooLarge"}`
```
at Amazon.Lambda.RuntimeSupport.InternalRuntimeApiClient.ResponseAsync(String awsRequestId, Stream outputStream, CancellationToken cancellationToken)
at Amazon.Lambda.RuntimeSupport.RuntimeApiClient.SendResponseAsync(String awsRequestId, Stream outputStream, CancellationToken cancellationToken)
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.InvokeOnceAsync(CancellationToken cancellationToken)
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.RunAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.b__15_1(IHostedService service, CancellationToken token)
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at Program.$(String[] args) in Program.cs:line 56
```
### Reproduction Steps
n/a
### Possible Solution
_No response_
### Additional Information/Context
_No response_
### AWS .NET SDK and/or Package version used
Amazon.Lambda.AspNetCoreServer.Hosting 1.7.0
### Targeted .NET Platform
.NET Core 8.0
### Operating System and version
Docker container
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con InternalClientAdapted.cs intorno alla riga 406 e segui l’eccezione attraverso LambdaBootstrap.InvokeOnceAsync e l’avvio dell’hosting ASP.NET Core mostrato nello stack trace. Riproduci o ispeziona il percorso della risposta da 6 MB per Amazon.Lambda.AspNetCoreServer.Hosting 1.7.0 su .NET 8. Il lavoro è completato quando una risposta sovradimensionata non causa il crash dell’avvio e il client chiamante riceve HTTP 413 invece di 500.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- aws, csharp, docker
- Ambito
- api, backend, cloud
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 42/100