从Node.js中的Lambda返回音频缓冲区时,AWS ALB返回502 Bad Gateway

时间:2019-04-25 00:34:11

标签: node.js amazon-web-services aws-lambda aws-sdk-nodejs aws-alb

我有一个 lambda 函数,该函数确实会返回音频缓冲区, 当我从代码中调用 lambda 时,它可以正常工作,但是当我在ALB后面调用 lambda 时,出现错误-

  

502错误的网关

// 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,
    }),
  };
};

2 个答案:

答案 0 :(得分:2)

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

这怎么办?

return

答案 1 :(得分:1)

您有isBase64Encoded: true,但应将其设置为false

唯一要将此参数设置为true的情况是 entire response.body是base64编码的,并且您希望平衡器在将其返回浏览器之前对其进行解码