我有一个lambda函数,该函数返回base64字符串,当我从代码中调用lambda时它可以工作,但是当我在ALB后面调用lambda并且base64字符串很大时,ALB给我错误502 Bad Gateway。 注意:对于小尺寸的字符串ALB也可以。
// 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',
};
// ALB gives error 502 when buffer size is large
const answer = 'This is my audio buffer'.toString('base64');
response.body = answer
return response;
};
答案 0 :(得分:1)
请检查您没有超出限制。根据AWS文档,将Lambda用作ALB目标时,最大响应大小为1MB。如果响应超过1MB,您将收到错误消息。
有关将Lambda用作ALB的目标的更多信息,请参见以下链接:https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html
答案 1 :(得分:0)
由hephalump回答我们。不幸的是,lambda可以作为有效负载发送的限制为1 MB。
答案 2 :(得分:0)
这可能是由于AWS ALB docs-
中提到的几个原因造成的。如果达到有效负载大小限制,则无能为力。如果将lambda配置为ALB的目标,则限制为1 MB。
如果原因是由于lambda超时,则可以在lambda配置中扩展它。默认值为3秒,最多可以延长15分钟。如果达到15分钟的限制,则无能为力。 docs