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

Ruby 中的 AWS Lambda 函数日志记录

您的 Lambda 函数带有一个 CloudWatch Logs 日志组,其中包含您的函数的每个实例的日志流。运行时会将每个调用的详细信息发送到该日志流,然后中继日志和来自您的函数代码的其他输出。

要从函数代码输出日志,您可以使用 puts 语句或使用写入到 stdoutstderr 的任何日志记录库。以下示例记录环境变量和事件对象的值。

例 lambda_function.rb

# lambda_function.rb def handler(event:, context:) puts "## ENVIRONMENT VARIABLES" puts ENV.to_a puts "## EVENT" puts event.to_a end

当您在函数配置页上测试函数时,Lambda 控制台会显示日志输出。要查看所有调用的日志,请使用 CloudWatch Logs 控制台。

查看 Lambda 函数的日志

  1. 打开 CloudWatch 控制台的日志页面

  2. 选择您的函数 (/aws/lambda/function-name) 的日志组。

  3. 选择列表中的第一个流。

每个日志流对应一个函数实例。当您更新函数以及创建更多实例以处理多个并发调用时,会显示新的流。要找到特定调用的日志,您可以使用 X-Ray 分析您的函数并在跟踪中记录有关请求和日志流的详细信息。如需将日志和跟踪与 X-Ray 相关联的示例应用程序,请参阅AWS Lambda 错误处理器示例应用程序

要从命令行获取调用的日志,请使用 --log-type 选项。响应包含一个 LogResult 字段,该字段包含来自调用的多达 4 KB 的 base64 编码日志。

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

您可以使用 base64 实用程序来解码日志。

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 73 MB

base64 实用工具在 Linux、macOS 和 Ubuntu on Windows 上可用。对于 macOS,命令为 base64 -D

在删除函数时,不会自动删除日志组。为避免存储无限的日志,请删除日志组或者配置保留期,在该期限后会自动删除日志。