【问题标题】:AWS ALB returns 502 Bad Gateway from lambdaAWS ALB 从 lambda 返回 502 Bad Gateway
【发布时间】:2019-09-15 07:55:39
【问题描述】:

我有一个返回 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.js aws-lambda aws-sdk-nodejs nodejs-stream aws-alb


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这可能是由于AWS ALB docs 中提到的几个原因-

      • 响应正文超过 1 MB
      • 在达到其配置的超时之前没有响应的 Lambda 函数

      如果达到有效负载大小限制,则无能为力。如果 lambda 被配置为 ALB 的目标,则 1 MB 是限制。

      如果原因是由于 lambda 超时,那么这可以在 lambda 配置中进行扩展。默认值为 3 秒,最长可延长至 15 分钟。如果达到 15 分钟的限制,则无能为力。 docs

      【讨论】:

      • 知道什么时候没有这些东西吗?我可以看到我的 lambda 运行成功,但我总是收到 502 Bad Gateway 响应?
      • @user1751825 你知道为什么会发生这种情况吗?面临同样的问题。
      • @bob 是的,我通过向exports.handler 添加第三个“回调”参数来解决我的问题,然后我不只是返回响应对象,而是回调(null,响应);
      • @bob 我添加了一个可能有帮助的答案。
      【解决方案3】:

      以防万一它对某人有帮助。我可以通过将代码更改为这样来解决类似的问题...

      // Lambda function handler
      
      'use strict';
      
      //note the 3rd 'callback' parameter
      module.exports.handler = (event, context, callback) => {
      
        // Construct the response object like normal
      
        callback(null, response);
      };
      

      【讨论】:

        猜你喜欢
        • 2020-11-02
        • 2019-08-24
        • 1970-01-01
        • 2020-06-14
        • 2021-02-24
        • 1970-01-01
        • 1970-01-01
        • 2018-11-28
        • 1970-01-01
        相关资源
        最近更新 更多