是否可以打印错误?

时间:2018-05-19 07:44:34

标签: go aws-lambda

例如这样的代码:

os.Stderr.WriteString(rec.(string))

但这不会显示为错误: aws lambda monitoring

我知道我可以在登录后发生恐慌并在API网关上捕获它(反对将堆栈跟踪发送到客户端) - 没有别的方法吗? Documentation没有提到类似的事情。

1 个答案:

答案 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"
}