aws / aws/aws-lambda-dotnet

The statusDescription header must contain the status code and reason phrase, separated by a single space -- ALB returning 502 from Lambda

Open
#507 12 comments 0 reactions 0 assignees View on GitHub
feature-request module/aspnetcore-support p2 queued
Dominant language
C#
Stars
1.7k
Forks
503
Avg merge
1d 5h
Merged PRs (30d)
18

Description

I've created a Lambda that check on a DynamoDB table the existence of a record matching host and request path and, if found, returns a redirect to the matching URL.

My Lambda returns this response but the ALB returns 502.
```
{
"statusCode": 301,
"statusDescription": null,
"headers": {
"Location": "https://www.my-target.co.uk/"
},
"multiValueHeaders": null,
"body": "Redirecting to https://www.my-target.co.uk/",
"isBase64Encoded": false
}
```

This is the log I find in CloudWatch for the Lambda function
```
START RequestId: 8b5a28f2-c56d-4418-a7b9-66ebe0ba2470 Version: $LATEST
[Information] EMG.ApplicationLoadBalancerRequestHandler: Received: GET /
[Information] EMG.ApplicationLoadBalancerRequestHandler: Processing: my-test.net /
[Information] EMG.RedirectManagers.RedirectTableRedirectManager: Fetching item: my-test.net / from table redirect-table
[Information] EMG.ApplicationLoadBalancerRequestHandler: Found: https://www.target.co.uk/ Permanent
END RequestId: 8b5a28f2-c56d-4418-a7b9-66ebe0ba2470
REPORT RequestId: 8b5a28f2-c56d-4418-a7b9-66ebe0ba2470 Duration: 69.59 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 39 MB
```

This is the response I get

```
HTTP/1.1 502
status: 502
Server: awselb/2.0
Date: Thu, 15 Aug 2019 19:13:58 GMT
Content-Type: text/html
Content-Length: 138
Connection: keep-alive

502 Bad Gateway

502 Bad Gateway




```

I couldn't find anything saying we can't return non-200 responses from Lambda, so I really have no idea...

Contributor guide

Open the contributing guide

Research direction

Start with the AWS Application Load Balancer Lambda response contract and the provided response, focusing on the null statusDescription and the 301 redirect. Trace how this repository handles statusCode and statusDescription, then verify the required status-code/reason-phrase format and the resulting non-200 response behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, csharp
Domain
backend-api-design, cloud
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.