node.js - 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;
};
解决方案
检查您是否没有超出限制。根据 AWS 文档,当使用 Lambda 作为 ALB 目标时,最大响应大小为 1MB;如果响应超过 1MB,您将收到错误消息。
您可以查看此链接以获取有关使用 Lambda 作为 ALB 目标的更多信息:https ://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html
推荐阅读
- android - 用户和当前进程都没有 android.permission.ACCESS_NETWORK_STATE Nativescript
- r - 在 R 中的多个 csv 文件中查找最大列值
- c - 如何删除结构数组中的重复元素并打印输出
- amazon-web-services - Celery Redis 后端 - 使队列中的任务作为项目存在
- javascript - 完全强制 SPA 刷新,忽略缓存、service worker 等
- thread-safety - GNUTLS 线程安全吗?是根据自己的文件吗?
- makefile - Make 找不到要执行的程序。/bin/sh: 1: rm: 未找到
- javascript - 将 SVG 文件保存到带有多个图像的 JavaScript 变量中,并引用每个图像并单独附加它们
- python - 将字符串和字符串列表合并到一个大列表中
- c# - 如何在c#中替换url中的主机名?