CodeGenieApp / serverless-express

Run Express and other Node.js frameworks on AWS Serverless technologies such as Lambda, API Gateway, Lambda@Edge, and more.
https://codegenie.codes
Apache License 2.0
5.17k stars 670 forks source link

ALB responds with HTTP code 502 #688

Open marovargovcik opened 2 months ago

marovargovcik commented 2 months ago

Hey, I am attempting to deploy a small Express app to AWS as a Lambda connected to ALB via target group.

const serverless = require('@codegenie/serverless-express')
const express = require('express')

const app = express()

app.get('/200', function(req, res) {
    res.json({ message: 'all good' })
})

app.get('/404', function(req, res) {
    res.status(404).json({ message: 'not found' })
})

app.post('/test', function(req, res) {
    res.sendStatus(400)
})

module.exports.handler = serverless({ app })

I am able to successfully make a request to /200 and see the JSON response but I am not successful with requests that modify the status. In those I just see this response from ALB:

<html>

<head>
    <title>502 Bad Gateway</title>
</head>

<body>
    <center>
        <h1>502 Bad Gateway</h1>
    </center>
</body>

</html>

Can I please ask for guidance how would I go about debugging this? I don't see anything useful in my Cloudwatch logs of the Lambda function. Should I enable ALB logs?

Thank you.

brettstack commented 2 months ago

You can set the log level to get additional logs https://github.com/CodeGenieApp/serverless-express/tree/mainline?tab=readme-ov-file#logsettings. It's possible there is a bug with the ALB response mapper https://github.com/CodeGenieApp/serverless-express/blob/mainline/src/event-sources/aws/alb.js#L45