我将 AWS Lambda@Edge 函数与 Amazon CloudFront 分配关联起来。现在我收到了 500、502 或 503 错误。如何对这些错误进行问题排查?
简短描述
Lambda@Edge 500、502 和 503 错误表示以下情况:
-
HTTP 500 状态代码表示 Lambda 函数返回了运行错误。
-
HTTP 502 状态代码表示 Lambda 函数响应的格式不正确或包含无效的内容。
-
HTTP 503 状态代码表示 CloudFront 由于 Lambda 服务限额(以前称为限值)而受到限制。
有关错误原因以及如何进行问题排查,请参阅以下部分。
解决方法
Lambda@Edge 函数返回 500 错误
如果 CloudFront 没有收到 Lambda 的响应,则会导致 500 运行错误。发生这种情况是因为函数中存在未处理的异常,代码中存在错误,或者运行环境不受支持。
要解决 Lambda@Edge 生成的 500 错误,您必须通过为 Lambda 函数添加日志记录语句来调试代码。要了解更多信息,请参阅在 AWS 上调试内容交付的四个步骤,并查看 I – 执行错误下的信息。这些日志记录语句将消息写入监控 CloudFront 函数运行情况的 CloudWatch 日志文件。您可以查看 CloudWatch 日志文件中的这些语句,以验证该函数是否正常工作。
有关更多信息,请参阅 Node.js 中的 Lambda 函数错误和 Python 中的 Lambda 函数错误。
Lambda@Edge 函数返回 502 错误
函数运行后,CloudFront 会收到来自 Lambda 的响应。如果响应的对象结构不符合 Lambda@Edge 事件结构,则会返回 502 错误。如果响应包含无效标头或其他无效字段,也会返回 502 错误。
要解决 Lambda@Edge 生成的 502 错误,请检查 Lambda@Edge 函数以了解以下常见问题:
- 返回 JSON 对象
- 缺少必填字段
- 响应中有一个无效的对象
- 不允许添加或更新或存在只读标头
- 超过最大正文大小
- 字符或值无效
有关更多信息,请参阅测试和调试 Lambda@Edge 函数以及边缘函数限制。
Lambda@Edge 函数返回 503 错误
Lambda 服务限制每个区域的执行,如果超出限额,则返回 503 错误。
要解决 503 错误,请检查 Lambda@Edge CloudWatch 指标和日志文件以了解以下常见问题:
有关更多信息,请参阅 Lambda@Edge 的限额。
**注意:**您必须查看正确区域中的 CloudWatch 日志文件,才能查看 CloudFront 执行 Lambda 函数时创建的日志文件。
相关信息
Lambda@Edge 设计最佳实践