0

我有一个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,
    }),
  };
};
4

2 回答 2

2

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

那这个呢?

  ...
  const answer = 'This is my audio buffer'.toString('base64');
  response.body = JSON.stringify({
    id: 123,
    myBuffer: answer
  });
  return response;
};
于 2019-04-25T00:39:31.707 回答
1

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

唯一要设置的情况true是,如果整个 response.body代码是 base64 编码的,并且您希望平衡器在将其返回给浏览器之前对其进行解码。

于 2019-04-25T13:16:07.170 回答