DEV Community 中文 关注 Web API 和批处理作业对失败的传达方式不同 Web API 通常通过 HTTP 状态码有效指示失败,但批处理作业在其执行环境中需要不同的方式来识别错误。最初,作者发现了一个现有的 Lambda 函数,其本意是通过返回 false 或 status: 500 对象来指示错误。然而,从 Lambda 的角度来看,这些操作仍被视为成功调用,导致错误未被记录到 CloudWatch。因此,配置的 CloudWatch 警报未能触发,也未发送 Slack 通知。作者意识到,在 Web API 中常见的返回 500 状态码的模式并不适用于批处理作业。相反,对于批处理作业,整个调用必须失败,执行环境才能检测到问题。为解决此问题,错误处理逻辑被重构为抛出异常,从而导致 Lambda 调用真正失败。该失败随后正确反映在 CloudWatch 的 Errors 指标中,使警报得以触发并发送通知。这一经历表明,错误处理不仅限于应用程序代码本身,还必须确保外部监控和告警系统能够观测到失败。因此,在考虑错误处理时,不仅要思考如何在内部管理错误,还需考虑如何让外部系统知晓失败。这样才能确保监控和告警机制在批处理过程中按预期运行。 Web APIs and Batch Jobs Communicate Failure Differently dev.to DEV Community 中文 RSS thenote.app
false或status: 500对象来指示错误。然而,从 Lambda 的角度来看,这些操作仍被视为成功调用,导致错误未被记录到 CloudWatch。因此,配置的 CloudWatch 警报未能触发,也未发送 Slack 通知。作者意识到,在 Web API 中常见的返回 500 状态码的模式并不适用于批处理作业。相反,对于批处理作业,整个调用必须失败,执行环境才能检测到问题。为解决此问题,错误处理逻辑被重构为抛出异常,从而导致 Lambda 调用真正失败。该失败随后正确反映在 CloudWatch 的 Errors 指标中,使警报得以触发并发送通知。这一经历表明,错误处理不仅限于应用程序代码本身,还必须确保外部监控和告警系统能够观测到失败。因此,在考虑错误处理时,不仅要思考如何在内部管理错误,还需考虑如何让外部系统知晓失败。这样才能确保监控和告警机制在批处理过程中按预期运行。