AWS ALB returns 502 Bad Gateway when return 来自 nodejs 中 Lambda 的音频缓冲区

AWS ALB returns 502 Bad Gateway when return audio buffer from Lambda in nodejs

我有一个 lambda 函数,它会 return 音频缓冲区作为响应, 当我从代码调用 lambda 时,它工作正常但是当我在 ALB 后面调用 lambda 时,我得到一个错误 -

502 Bad Gateway

// Lambda function handler

'use strict';


module.exports.handler = async (event, context) => {
  // ALB expects following response format
  // see: https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html
  const response = {
    headers: {
      'Access-Control-Allow-Origin': '*',
      'Content-Type': 'application/json',
    },
    isBase64Encoded: true,
    statusCode: 200,
    statusDescription: '200 OK',
  };
// getting buffer from backend api
  const answer = 'This is my audio buffer'.toString('base64');
  return {
    response,
    body: JSON.stringify({
      id: 123,
      myBuffer: answer,
    }),
  };
};

根据 JSON 格式,您的 return 参数似乎不正确。

这个呢?

  ...
  const answer = 'This is my audio buffer'.toString('base64');
  response.body = JSON.stringify({
    id: 123,
    myBuffer: answer
  });
  return response;
};

您有 isBase64Encoded: true,但这应该设置为 false

你唯一想将它设置为 true 的情况是 整个 response.body 是 base64 编码的并且你希望平衡器在之前对其进行解码将其返回给浏览器。