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 编码的并且你希望平衡器在之前对其进行解码将其返回给浏览器。
我有一个 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 编码的并且你希望平衡器在之前对其进行解码将其返回给浏览器。