3

我试图在调用 lambda 函数后检索特定于 lambda 函数的日志。调用函数后是否有适当的 aws java sdk 方法来检索 lambda 执行的日志?

4

1 回答 1

1

AWS Lambda - 日志记录 (Java)文档提出了三个建议:

  • 在 CloudWatch Logs 中查找日志。上下文对象(在 aws-lambda-java-core 库中)提供 getLogStreamName() 和 getLogGroupName() 方法。使用这些方法,您可以找到写入日志的特定日志流。

这种情况最符合您的问题。从您的上下文对象中获取 CloudWatch 日志组和日志流,然后将它们传递到开发工具包的AWSLogsClient getLogEvents()方法以检索您的日志。

  • 如果您通过控制台调用 Lambda 函数,则调用类型始终为 RequestResponse(即同步执行),并且控制台会显示 Lambda 函数使用 LambdaLogger 对象写入的日志。AWS Lambda 还从 System.out 和 System.err 方法返回日志。

这种情况对于从控制台进行手动测试/调试很有用。

  • 如果您以编程方式调用 Lambda 函数,则可以添加 LogType 参数以检索写入 CloudWatch Logs 的最后 4 KB 日志数据。有关详细信息,请参阅调用。AWS Lambda 在响应的 x-amz-log-results 标头中返回此日志信息。如果您使用 AWS 命令​​行界面调用该函数,则可以指定 --log-type 参数和值为 Tail。

这种情况在开发环境中可能对您特别有用,并且更容易获得,因为您只需要在 Java SDK InvokeRequest 上设置日志类型。然后,在响应中,只需检查getLogResult

根据您的使用情况,在生产中使用此案例之前请仔细考虑。例如,这会将您的日志泄露给您的客户吗?即使没有,您的音量是否足以使这不切实际?

于 2017-03-26T01:41:27.087 回答