查看 Amazon CloudWatch Lambda 函数日志
您可以使用 Lambda 控制台、CloudWatch Logs 控制台或 AWS Command Line Interface(AWS CLI)查看 Lambda 函数的 CloudWatch 日志。按照以下各节中的说明访问函数的日志。
使用控制台访问日志
使用 Lambda 控制台查看日志
打开 Lamba 控制台的函数页面
。 -
选择一个函数。
-
选择监控选项卡。
-
选择查看 CloudWatch 日志。
-
向下滚动,选择要查看的函数调用的日志流。
您也可以直接从 CloudWatch 控制台访问函数的日志。
使用 CloudWatch 控制台查看日志
-
打开 CloudWatch 控制台的日志组页面
-
选择函数的日志组。CloudWatch 日志组默认的名称格式为
/aws/lambda/<function_name>
。 -
选择要查看的函数调用的日志流。
使用 AWS CLI 访问日志
AWS CLI 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互。要完成本节中的步骤,您必须满足以下条件:
您可以通过 AWS CLI,使用 --log-type
命令选项检索调用的日志。响应包含一个 LogResult
字段,其中包含多达 4KB 来自调用的 base64 编码日志。
例 检索日志 ID
以下示例说明如何从 LogResult
字段中检索名为 my-function
的函数的日志 ID。
aws lambda invoke --function-name my-function out --log-type Tail
您应看到以下输出:
{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
例 解码日志
在同一命令提示符下,使用 base64
实用程序解码日志。以下示例说明如何为 my-function
检索 base64 编码的日志。
aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
如果使用 cli-binary-format 版本 2,则 AWS CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out
。有关更多信息,请参阅版本 2 的 AWS Command Line Interface 用户指南中的 AWS CLI 支持的全局命令行选项。
您应看到以下输出:
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: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB
base64
实用程序在 Linux、macOS 和 Ubuntu on Windowsbase64 -D
。
例 get-logs.sh 脚本
在同一命令提示符下,使用以下脚本下载最后五个日志事件。此脚本使用 sed
从输出文件中删除引号,并休眠 15 秒以等待日志可用。输出包括来自 Lambda 的响应,以及来自 get-log-events
命令的输出。
复制以下代码示例的内容并将其作为 get-logs.sh
保存在 Lambda 项目目录中。
如果使用 cli-binary-format 版本 2,则 AWS CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out
。有关更多信息,请参阅版本 2 的 AWS Command Line Interface 用户指南中的 AWS CLI 支持的全局命令行选项。
#!/bin/bash aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out sed -i'' -e 's/"//g' out sleep 15 aws logs get-log-events --log-group-name /aws/lambda/
my-function
--log-stream-namestream1
--limit 5
例 macOS 和 Linux(仅限)
在同一命令提示符下,macOS 和 Linux 用户可能需要运行以下命令以确保脚本可执行。
chmod -R 755 get-logs.sh
例 检索最后五个日志事件
在同一命令提示符下,运行以下脚本以获取最后五个日志事件。
./get-logs.sh
您应看到以下输出:
{ "StatusCode": 200, "ExecutedVersion": "$LATEST" } { "events": [ { "timestamp": 1559763003171, "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n", "ingestionTime": 1559763003309 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r \"key\": \"value\"\r}\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n", "ingestionTime": 1559763018353 } ], "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795", "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080" }