AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Node.js 中的 AWS Lambda 函数日志记录

您的 Lambda 函数可包含日志记录语句。AWS Lambda 将这些日志写入 CloudWatch。如果您使用 Lambda 控制台调用 Lambda 函数,控制台将显示相同的日志。

以下 Node.js 语句生成了日志条目:

  • console.log()

  • console.error()

  • console.warn()

  • console.info()

例如,请考虑以下 Node.js 代码示例:

  • 第一个示例可使用运行时 6.10 或 4.3 中的任一版本编写。

    console.log('Loading function'); exports.handler = function(event, context, callback) { //console.log('Received event:', JSON.stringify(event, null, 2)); console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); callback(null, event.key1); // Echo back the first key value };
  • 第二个示例使用 Node.js async 功能,仅适用于运行时 8.10 或更高版本。

    console.log('Loading function'); exports.handler = async function(event) { //console.log('Received event:', JSON.stringify(event, null, 2)); console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); return event.key1 // Echo back the first key value };

无论哪种情况,都会在 Lambda 控制台中显示如下屏幕快照中的示例日志输出部分。您可以在 CloudWatch Logs 中看到相同的信息。有关更多信息,请参阅 访问 AWS Lambda 的 Amazon CloudWatch 日志

控制台在调用该函数时使用 RequestResponse 调用类型(同步调用),因此它会获得控制台显示的来自 AWS Lambda 的返回值 (value1)。

在 AWS Lambda 控制台中测试上述 Node.js 代码

  1. 在控制台中,使用 hello-world 蓝图创建 Lambda 函数。确保选择 Node.js 作为 runtime。有关如何执行此操作的说明,请参阅 使用控制台创建 Lambda 函数

  2. 使用 Lambda 控制台中提供的名为 Hello WorldSample event template 测试 Lambda 函数。您也可以更新该代码并尝试本部分中讨论的其他日志记录方法和属性。

如需分步指导,请参阅 开始使用 AWS Lambda

查找日志

可以通过以下方式找到您的 Lambda 函数写入的日志:

  • 在 AWS Lambda 控制台中 – AWS Lambda 控制台中的日志输出部分显示日志。

  • 在响应标头中,当您以编程方式调用 Lambda 函数时 – 如果您以编程方式调用 Lambda 函数,则可添加 LogType 参数以检索已写入 CloudWatch 日志的最后 4 KB 的日志数据。AWS Lambda 在响应的 x-amz-log-results 标头中返回该日志信息。有关更多信息,请参阅调用

    如果您使用 AWS CLI 调用该函数,则可指定带有值 Tail --log-type parameter 来检索相同信息。

  • 在 CloudWatch 日志中 – 要在 CloudWatch 中查找您的日志,您需要知道日志组名称和日志流名称。您可通过在代码中添加 context.logGroupNamecontext.logStreamName 方法来获取这类信息。当您运行 Lambda 函数时,在控制台或 CLI 中生成的日志将为您显示日志组名称和日志流名称。

本页内容: