跳至内容

如何解决 Lambda@Edge 函数在 CloudFront 中造成的 502 和 503 错误?

1 分钟阅读
0

我想解决我在将 AWS Lambda@Edge 函数与 Amazon CloudFront 分配相关联时收到的 502 和 503 错误。

解决方法

Lambda@Edge 函数返回 502 错误

当 Lambda@Edge 函数返回格式错误的响应,或者 Lambda@Edge 函数包含无效的内容时,就会出现“502”错误。响应的对象结构必须与 Lambda@Edge 事件结构相匹配。

要解决“502”错误,请执行以下操作:

  • 验证 Lambda@Edge 函数是否返回有效的 JSON 对象。
  • 确保响应包含基于事件类型的所有必填字段。
  • 验证响应中的对象是否有效并符合预期结构。
  • 检查您的 edge 函数是否添加了不允许使用的 HTTP 标头
  • 移除只读标头
  • 确保 Lambda@Edge 函数原始请求事件的请求正文大小不超过 1 MB,查看器请求事件的请求正文大小不超过 40 KB。
  • 检查响应字段中是否存在无效的字符或值。

有关详细信息,请参阅测试和调试 Lambda@Edge 函数对 Lambda@Edge 的限制

Lambda@Edge 函数返回 503 错误

当函数代码中有未处理的异常或错误时,就会出现“503”错误。

要解决此问题,请在您的 Lambda@Edge 函数中添加日志记录语句(例如 console.log())),以写入 Amazon CloudWatch Logs。查看 CloudFront 运行该函数的 AWS 区域中的 CloudWatch 日志

有关详细信息,请参阅 Four steps for debugging your content delivery on AWS(在 AWS 上调试内容传输的四个步骤)对 Lambda 中的执行问题进行故障排除

当您超出 Lambda@Edge 配额时,Lambda 会阻止函数执行。检查 Lambda@Edge CloudWatch 指标是否存在问题,例如每个 AWS 区域的并发执行量超出和函数超出限制。

AWS 官方已更新 3 个月前