首页 > 解决方案 > AWS ALB 从 lambda 返回 502 Bad Gateway

问题描述

我有一个返回 base64 字符串的 lambda 函数,当我从代码中调用 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;
  };

标签: node.jsaws-lambdaaws-sdk-nodejsnodejs-streamaws-alb

解决方案


检查您是否没有超出限制。根据 AWS 文档,当使用 Lambda 作为 ALB 目标时,最大响应大小为 1MB;如果响应超过 1MB,您将收到错误消息。

您可以查看此链接以获取有关使用 Lambda 作为 ALB 目标的更多信息:https ://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html


推荐阅读