InvalidLambdaresponse : While calling a Java Handler sitting behind an ALB

0

I'm trying to invoke a Lambda (Java 8) using a DNS endpoint --> ALB --> Lambda as the target group. Lambda does what its supposed to do (Upload a file in S3) upon its invocation but on the postman or curl command i see a 502 error . When i check the ALB logs it says InvalidLambdaResponse

My lambda is returning a Map (String , Object). When i print the JSON it looks good as well. What am i missing here ?

{ "headers": { "Cache-Control": "no-store", "Content-Type": "application/json" }, "isBase64Encoded": "False", "statusCode ": "200", "statusDescription ": "200 OK", "body": "Lambda S3 Upload" }

asked 2 years ago555 views
1 Answer
0
Accepted Answer

It looks like there are a few small errors in the format of the object you're returning. There are some additional spaces in some of the keys (might just be an effect of copy and paste), isBase64Encoded should be boolean, and statusCode should be an integer. https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html#respond-to-load-balancer

This slightly modified version seems to work:

{
  "headers": {
    "Cache-Control": "no-store",
    "Content-Type": "application/json"
  },
  "isBase64Encoded": false,
  "statusCode": 200,
  "statusDescription": "200 OK",
  "body": "Lambda S3 Upload"
}
Ed
answered 2 years ago
  • Thanks Ed ! Yes the spaces on statusCode and statusDescription were the culprit .

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions