例如这样的代码:
os.Stderr.WriteString(rec.(string))
我知道我可以在登录后发生恐慌并在API网关上捕获它(反对将堆栈跟踪发送到客户端) - 没有别的方法吗? Documentation没有提到类似的事情。
答案 0 :(得分:0)
似乎不可能。我假设您正在查看Amazon CloudWatch中的指标
AWS Lambda代表您自动监控功能并进行报告 通过Amazon CloudWatch进行指标。这些指标包括总计 调用,错误,持续时间,限制,DLQ错误和迭代器年龄 用于基于流的调用。 https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-metrics.html
现在,让我们看看他们如何定义错误
度量标准"错误"测量因错误而失败的调用次数 功能(响应代码4XX)。
因此,如果您想查看该图表上的错误,则必须使用正确的代码进行回复。如果你担心暴露错误堆栈跟踪,那么这是一个很好的读取Error handling with API Gateway and Go Lambda functions。其基本思想是创建一个自定义的lambdaError类型,意味着Lambda处理函数在返回错误之前将其用于包装错误。此自定义错误消息
{
"code": "TASK_NOT_FOUND",
"public_message": "Task not found",
"private_message": "unknown task: foo-bar"
}
将包含在标准的
中{
"errorMessage": "{\"code\":\"TASK_NOT_FOUND\",\"public_message\":\"Task not found\",\"private_message\":\"unknown task: foo-bar\"}",
"errorType": "lambdaError"
}
以及稍后在API网关中映射,因此,终端客户端将只看到公共消息
{
"code": "TASK_NOT_FOUND",
"message": "Task not found"
}