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" }

已提问 2 年前562 查看次数
1 回答
0
已接受的回答

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
已回答 2 年前
  • Thanks Ed ! Yes the spaces on statusCode and statusDescription were the culprit .

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则